Files

61 lines
5.3 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* Read-only result adapter. Login state and URLs alone are never acceptance evidence. */
(function(root,factory){
const api=factory();
if(typeof module==='object'&&module.exports)module.exports=api;
else root.DWW11Results=api;
})(typeof window==='undefined'?null:window,()=>{
'use strict';
const clean=value=>String(value||'').replace(/\s+/g,' ').trim();
function parameter(href,key,base){try{return new URL(href,base).searchParams.get(key);}catch{return null;}}
function aid(image){return String(image.getAttribute('aid')||image.id||'').match(/(?:attachimg_|aimg_)?(\d+)$/)?.[1]||null;}
function inspect(doc,url,snapshot={}) {
const prompt=doc.querySelector('#messagetext, .messagetext');
const text=clean(prompt?.textContent);
const message='新主题需要审核,您的帖子通过审核后才能显示';
if(text.includes(message))return {
kind:'accepted_prompt',state:'accepted_pending_moderation',
evidence:{adapter:'moderation_prompt',message,observed_text:text,observed_url:url}
};
if(/^(?:抱歉[,,]\s*)?(?:您填写的)?(?:帖子)?标题.{0,40}(?:超过|超出).{0,40}(?:字符|长度|限制)/.test(text))return {kind:'rejected',error:text};
return {kind:'waiting',prompt:text};
// 暂停详情页核对:按用户要求注释保留,待恢复时启用。
// const titleNode=doc.querySelector('#thread_subject');
// if(!titleNode) {
// const prompt=doc.querySelector('#messagetext, .messagetext');
// const text=clean(prompt?.textContent);
// if(/^(?:抱歉[,,]\s*)?(?:您填写的)?(?:帖子)?标题.{0,40}(?:超过|超出).{0,40}(?:字符|长度|限制)/.test(text))return {kind:'rejected',error:text};
// return {kind:'waiting',prompt:text,candidate:prompt?.querySelector('a[href]')?.href||''};
// }
// const region=titleNode.closest('td')||titleNode.closest('h1')?.parentElement;
// if(!region)return {kind:'incomplete',error:'缺少标题状态区域'};
// const ids=new Set([...region.querySelectorAll('a[href]')].filter(a=>parameter(a.href,'mod',url)==='viewthread').map(a=>parameter(a.href,'tid',url)).filter(x=>/^\d+$/.test(x)));
// if(ids.size!==1)return {kind:'incomplete',error:'详情页真实主题编号缺失或冲突'};
// const thread_id=[...ids][0],body=doc.querySelector('[id^="postmessage_"]');
// const pid=body?.id.match(/^postmessage_(\d+)$/)?.[1];
// const post=pid&&doc.querySelector('#post_'+pid);
// if(!post||clean(post.querySelector('#postnum'+pid)?.textContent)!=='楼主')return {kind:'incomplete',error:'无法确认当前正文属于首帖'};
// const authors=post?[...post.querySelectorAll('.plc .pti .authi a[href], .pls .authi a[href]')]:[];
// const uids=new Set(authors.map(a=>parameter(a.href,'uid',url)).filter(x=>/^\d+$/.test(x)));
// const fids=new Set([...doc.querySelectorAll('#pt a[href], .mumucms_pt a[href]')].filter(a=>parameter(a.href,'mod',url)==='forumdisplay').map(a=>parameter(a.href,'fid',url)).filter(x=>/^\d+$/.test(x)));
// if(!body||!pid||uids.size!==1||fids.size!==1)return {kind:'incomplete',error:'首帖作者、正文或版块证据不足'};
// const moderation=[...region.querySelectorAll('span.xg1')].some(n=>/\(\s*审核中\s*\)|(\s*审核中\s*)/.test(n.textContent));
// // A public-page sample is not available yet. Absence of moderation is not proof of publication.
// if(!moderation)return {kind:'incomplete',error:'尚无可验证的公开或审核中状态'};
// const allImages=[...body.querySelectorAll('img')];
// const images=allImages.filter(img=>aid(img)).map(img=>({aid:aid(img),src:img.getAttribute('src'),loaded:img.complete&&img.naturalWidth>0&&!/\/none\.gif(?:[?#]|$)/.test(img.src||img.getAttribute('src')||''),file:img.getAttribute('file')||img.getAttribute('zoomfile')}));
// const expected=(snapshot.images||[]).map(img=>String(img.aid||img.id||'').match(/(?:attachimg_|aimg_)?(\d+)$/)?.[1]).filter(Boolean);
// const issues=[];
// if(allImages.some(img=>!aid(img)))issues.push('正文存在无法关联附件的图片');
// if(expected.length!==(snapshot.images||[]).length)issues.push('提交快照存在无法识别附件编号的图片');
// if(JSON.stringify(expected)!==JSON.stringify(images.map(img=>img.aid)))issues.push('首帖正文图片引用或顺序与提交快照不一致');
// if(images.some(img=>!img.loaded))issues.push('结果页正文图片尚未加载或加载失败');
// if(snapshot.text&&clean(body.innerText||body.textContent)!==clean(snapshot.text))issues.push('结果正文与最终提交快照存在文字差异');
// const attachments=post?[...post.querySelectorAll('.pattl img, .attm img')].map(img=>({aid:aid(img),src:img.getAttribute('src')})):[];
// if(attachments.length)issues.push('结果页存在附件区图片,请核对正文位置');
// return {kind:'accepted',thread_id,first_post_pid:pid,post_url:url,title:clean(titleNode.textContent),author_uid:[...uids][0],fid:Number([...fids][0]),state:'accepted_pending_moderation',
// evidence:{adapter:1,thread_id,first_post_pid:pid,title:clean(titleNode.textContent),author_uid:[...uids][0],fid:Number([...fids][0]),moderation:true,images,attachments,integrity_issues:issues}};
}
return {inspect,clean};
});