PandaPT-审种助手自用版,仅供参考,发布资源还是要自己仔细检查!
// ==UserScript== // @name Panda-Torrent-Assistant // @namespace http://tampermonkey.net/ // @version 0.0.2 // @description PandaPT-审种助手自用版,仅供参考,发布资源还是要自己仔细检查! // @author PandaPT-Unofficial // @match *://*.pandapt.net/details.php* // @icon https://pandapt.net/favicon.ico // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js // @grant GM_setValue // @grant GM_getValue // @grant GM_registerMenuCommand // @grant GM_xmlhttpRequest // @run-at document-end // @license MIT // ==/UserScript== (function () { 'use strict'; var isWaitImgLoad = true; // 自定义参数 var review_info_position = 3; // 错误提示信息位置:1:页面最上方,2:主标题正下方,3:主标题正上方 var timeout = 200; // 弹出页内鼠标点击间隔,单位毫秒,设置越小点击越快,但是对网络要求更高 var biggerbuttonsize = '40pt'; // 放大的按钮大小 var autoback = 0; // 一键通过后返回上一页面 // 获取当前页面的域名 const currentDomain = window.location.hostname; // 配置信息 const config = { base_url: `https://${currentDomain}/details.php`, base_url_dialog: `https://${currentDomain}/web/torrent-approval-page?torrent_id=`, official_tags: ["Panda", "AilMWeb","AilMTV","AilMUpscale"] }; const userAgent = navigator.userAgent; const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent); if (isMobile) { biggerbuttonsize = '120pt'; autoback = 1; } var cat_constant = { 401: '电影', 402: '电视剧', 403: '综艺', 404: '纪录片', 405: '动漫', 411: '音乐', 412: '软件', 413: '游戏', 415: '电子书', 417: '学习教辅', 418: '图片', 407: '体育', 408: '音频', 409: '其他' }; var type_constant = { 11: 'UHD Blu-ray', 1: 'Blu-ray', 3: 'Remux', 7: 'Encode', 10: 'WEB-DL', 13: 'MiniBD', 5: 'HDTV', 6: 'DVDR', 8: 'CD', 9: 'Track', 12: 'UHDTV' }; var encode_constant = { 1: 'AVC/H.264/x264', 6: 'HEVC/H.265/x265', 2: 'VC-1', 4: 'MPEG-2', 7: 'VP8/VP9', 5: 'Other' }; var audio_constant = { 11: 'FLAC', 7: 'AAC', 9: 'LPCM/PCM', 8: 'TrueHD Atmos', 6: 'DDP/EAC3', 5: 'DD/AC3', 1: 'TrueHD', 2: 'DTS-X', 3: 'DTS-HD', 4: 'DTS', 18: 'DTS-HR', 19: 'AV3A', 16: 'Other' }; var resolution_constant = { 7: 'SD', 3: '720p', 1: '1080p', 2: '1080i', 5: '2160p/4K', 6: '4320p/8K' }; var group_constant = { 6: 'FROG', 7: 'FROGE', 8: 'FROGWeb', 9: 'GodDramas ', 5: 'Other', }; const brief = $('#kdescr').text().toLowerCase(); // 获取元素的文本内容 const Brief = $('#kdescr').text(); const containsIMDbLink = brief.includes('imdb.com'); // 检查内容是否包含 imdb.com 链接 const containsDoubanLink = brief.includes('douban.com'); // 检查内容是否包含 douban.com 链接 const containsTMDBLink = brief.includes('themoviedb.org'); // 检查内容是否包含 themoviedb.org 链接 const containsBGMLink = brief.includes('bgm.tv'); var dbUrl; // 是否包含影片链接 if (containsIMDbLink || containsDoubanLink || containsTMDBLink || containsBGMLink) { dbUrl = true; } else { dbUrl = false; } var find_season_episod = function (text) { if (title.match(/\bS\d\d/)) { if (title.match(/\bS\d+\s?E\d+/)) return 0; if (title.match(/\bS\d+-/)) return 2; //multi seasons case return 1; } return -1; }; var find_info = function (text) { if (text.includes('Complete name') && text.includes('Video')) return 0; if (text.includes('General') && text.includes('Video')) return 0; if (text.includes('File name') && text.includes('General') && text.includes('Video')) { //旧版本mediainfo return 0; } if (text.includes('DISC INFO') || text.includes('Disc Title:') || text.includes('Disc Label:')) return 1; if (text.includes('概览') && text.includes('视频') && text.includes('音频')) { return 0; } return -1; }; var isBriefContainsInfo = false; //是否包含Mediainfo if (Brief.includes('Complete name') && Brief.includes('Movie name') && Brief.includes('Video')) { isBriefContainsInfo = true; } if (Brief.includes('Complete name') && Brief.includes('General') && Brief.includes('Video')) { isBriefContainsInfo = true; } if (Brief.includes('File name') && Brief.includes('General') && Brief.includes('Video')) { //旧版本mediainfo isBriefContainsInfo = true; } if ( Brief.includes('DISC INFO') || Brief.includes('Disc Title:') || Brief.includes('Disc Label:') ) { isBriefContainsInfo = true; } var isBriefContainsMovieBrief = true; if (!(brief.replace(/\s/g, '').includes("片名") || brief.replace(/\s/g, '').includes("译名") || brief.replace(/\s/g, '').includes("title"))) { isBriefContainsMovieBrief = false; } var isBriefContainsScreenshot = true; if (!(brief.includes("screenshot") || brief.includes("截图") || brief.includes("img"))) { isBriefContainsScreenshot = false; } var title = $('#top').text(); title = title .replace( /禁转|\((已审|冻结|待定)\)|\[(免费|50%|2X免费|30%|2X 50%)\]|\(限时\d+.*\)|\[2X\]|\[(推荐|热门|经典|已审)\]/g, '' ) .trim(); title = title.replace(/剩余时间.*/g, '').trim(); title = title.replace('(禁止)', '').trim(); var title_lowercase = title.toLowerCase(); var officialSeed = 0; //官组种子 var godDramaSeed = 0; //驻站短剧组种子 var officialMusicSeed = 0; //官组音乐种子 var isVCBStudio = false; //VCB-Studio if (containsOfficialTag(title_lowercase, config.official_tags)) { officialSeed = 1; } // 定义函数来判断字符串是否包含 official_tags 中的任何一个字符串 function containsOfficialTag(inputString, officialTags) { for (let tag of officialTags) { if (inputString.includes(tag.toLowerCase())) { return true; } } return false; } // 预留,不影响判断 if (title_lowercase.includes('frogmus')) { officialMusicSeed = 1; } // 预留,不影响判断 if (title_lowercase.includes('goddramas')) { godDramaSeed = 1; } if (title_lowercase.includes('vcb-studio')) { isVCBStudio = 1; } var title_type, title_encode, title_audio, title_resolution, title_group, title_is_complete, title_is_episode, title_x265, title_x264; var title_DVD720 = false; let title_wrongBD = title.match(/Blu[Rr]ay|Blu-Ray|BDMV|BLURAY/); let title_wrongBDrip = title.match(/BD[Rr]ip|Blu-?ray|Blu-Ray|BLURAY/); let title_HEVC = title.includes(' HEVC'); let title_AVC = title.includes(' AVC'); let title_10bit = title.includes('10bit'); let title_resolution_pos = title.search(/\b((4320|2160|1080|720|576|480)[pi])/i); let title_source_pos = title.search( /BLU-?RAY|MiniBD|Blu-?[Rr]ay|WEB[- ]?DL|Remux|REMUX|(BD|DVD|WEB)[Rr]ip|BDMV|\bBD\b|\bDVD[5|9]?\b|\bU?HDTV/ ); let title_HDR_pos = title.search(/\b(DV|DoVi|HDR|HLG|HDR10+)\b/i); let title_video_pos = title.search(/\b(AVS3|HEVC|AVC|AV1|VP9|VC-1|MPEG-?[24]|(H\.?|x)26[45])/); let title_audio_pos = title .replace('WAVVE', 'WAAAE') .search(/\b(AAC|(E-?)?AC3|\bDD|TrueHD|DTS|FLAC|USAC|LPCM|OPUS|MPEG|WAV|MP[123]|M4A|APE|AV3A)/); let title_area_pos = title.search(/\b(CAN|ITA|USA|JPN|HKG|TWN|EUR|GRE|FRA|GBR|AUS|IND|NOR)/); let title_ES = find_season_episod(title); let title_encode_system = title.match(/\b(NTSC|PAL)/); let title_audio_complete = title.match( /\b(DD[P\+]?|FLAC|LPCM|AC3|AV3A|OPUS|TrueHD|DTS([: -]?X|-?HD ?(M|HR)A)?) ?(\d[ \.]?\d)?/ ); let title_AC3 = title.includes(' AC3'); let title_HQ = title.includes(' HQ'); let title_FPS = title.match(/\s\d{2,3}FPS\s/i); let title_EDR = title.includes(' EDR'); let title_4K = title.includes(' 4K'); let title_SDR = title.includes(' SDR'); // 媒介 if (title_lowercase.includes('minibd')) { title_type = 13; } else if (title_lowercase.includes('web-dl') || title_lowercase.includes('webdl')) { title_type = 10; } else if (title_lowercase.includes('frds') || title_lowercase.includes('x265') || title_lowercase.includes('x264') || title_lowercase.includes('mnHD') || title_lowercase.includes('mUHD')) { title_type = 7; } else if (title_lowercase.includes('remux')) { title_type = 3; } else if (title_lowercase.includes('uhd blu-ray') || title_lowercase.includes('uhd bluray')) { title_type = 11; } else if (title_lowercase.includes('hdtv')) { title_type = 5; } else if (title_lowercase.includes('blu-ray') || title_lowercase.includes('bluray')) { title_type = 1; } else if (title.includes(' DVD')) { title_type = 6; } else if (title_lowercase.includes('cd')) { title_type = 8; } else if (title_lowercase.includes('track')) { title_type = 9; } else if (title_lowercase.includes('uhdtv')) { title_type = 12; } // 视频编码 if (title_lowercase.includes('x264') || title_lowercase.includes('avc')) { title_encode = 1; } else if (title_lowercase.includes('x265') || title_lowercase.includes('hevc')) { title_encode = 6; } else if (title_lowercase.includes('vc-1') || title_lowercase.includes('vc1')) { title_encode = 2; } else if (title_lowercase.includes('mpeg-2') || title_lowercase.includes('mpeg2')) { title_encode = 4; } else if (title_lowercase.includes('vp9') || title_lowercase.includes('vp-9')) { title_encode = 7; } // 音频 if (title_lowercase.includes('truehd') && title_lowercase.includes('atmos')) { title_audio = 8; } else if (title_lowercase.includes('truehd')) { title_audio = 1; } else if (title_lowercase.includes('dts-x') || title_lowercase.includes('dtsx')) { title_audio = 2; } else if (title_lowercase.includes('dts-hd')) { title_audio = 3; } else if (title_lowercase.includes('dts-hr')) { title_audio = 18; } else if (title_lowercase.includes('dts')) { title_audio = 4; } else if (title_lowercase.includes('flac')) { title_audio = 11; } else if (title_lowercase.includes('lpcm') || title_lowercase.includes('pcm')) { title_audio = 9; } else if (title_lowercase.includes('ddp') || title_lowercase.includes('eac3') || title_lowercase.includes('dd+')) { title_audio = 6; } else if (title_lowercase.includes('dd') || title_lowercase.includes('ac3')) { title_audio = 5; } else if (title_lowercase.includes('av3a')) { title_audio = 19; } else if (title_lowercase.includes('aac')) { title_audio = 7; } // 分辨率 if (title_lowercase.includes('1080p')) { title_resolution = 1; } else if (title_lowercase.includes('2160p') || title_lowercase.includes('4k') || title_lowercase.includes('uhd')) { title_resolution = 5; } else if (title_lowercase.includes('4320p') || title_lowercase.includes('8k')) { title_resolution = 6; } else if (title_lowercase.includes('1080i')) { title_resolution = 2; } else if (title_lowercase.includes('720p') || title_lowercase.includes('720i')) { title_resolution = 3; } else if (title_lowercase.includes('sd') || title_lowercase.includes('480p') || title_lowercase.includes('576p')) { title_resolution = 7; } if (title_lowercase.includes('complete')) { title_is_complete = true; } if (title_lowercase.match(/s\d+e\d+/i) || title_lowercase.match(/ep\d+/i)) { title_is_episode = true; } if (title_lowercase.includes('x265')) { title_x265 = true; } if (title_lowercase.includes('x264')) { title_x264 = true; } if (title.includes(' DVD') && title_resolution == 3) { title_DVD720 = true; } var subtitle, cat, type, encode, audio, resolution, area, group, anonymous, category; var poster; var fixtd, douban, imdb, mediainfo, mediainfo_short, mediainfo_err; var isGroupSelected = false; //是否选择了制作组 var isMediainfoEmpty = false; //Mediainfo栏内容是否为空 var isInfoCorrect = false; //检查info信息是否正确 var isBiggerThan1T = false; //种子体积是否大于1T // 禁转 官方 中字 国语 粤语 完结 VCB-Studio DIY 原生原盘 Remux 杜比视界 HDR HDR10+ 合集 驻站 var isReseedProhibited = false; //禁转 var isOfficialSeedLabel = false; //官方 var isTagTextChinese = false; //中字 var isTagAudioMandarin = false; //国语 var isTagAudioCantonese = false; //粤语 var isTagVCBStudio = false; //VCB-Studio var isTagResident = false; //标签是否选择驻站 var isAudioMandarin = false; var isAudioCantonese = false; var isTextChinese = false; var isTextEnglish = false; var isTagComplete = false; var isTagIncomplete = false; var isTagCollection = false; var mi_x265 = false; var mi_x264 = false; var mi_type; var isTagDIY = false; var isTagUNTOUCHED = false; var isTagREMUX = false; var isTagDV = false; var isTagHDR = false; var isTagHDR10 = false; var isTagHDR10P = false; var isTagVivid = false; var isDV = false; var isHDR = false; var isHDR10 = false; var isHDR10P = false; var isVivid = false; var isDIY = title.match(/(-|@)(BHYS|sGnb|SPM|HDSky|HDHome|D[Ii]Y|UBits)/); var tdlist = $('#outer').find('td'); for (var i = 0; i < tdlist.length; i++) { var td = $(tdlist[i]); if (td.text() == '副标题' || td.text() == '副標題') { subtitle = td.parent().children().last().text(); if (subtitle.includes('DIY')) isDIY = true; } if (td.text() == '添加') { var text = td.parent().children().last().text(); if (text.indexOf('匿名') >= 0) { anonymous = 1; } } if (td.text() == '标签') { var text = td.parent().children().last().text(); if (text.includes('禁转')) { isReseedProhibited = true; } if (text.includes('官方') || text.includes('官种')) { isOfficialSeedLabel = true; } if (text.includes('国语')) { isTagAudioMandarin = true; } if (text.includes('粤语')) { isTagAudioCantonese = true; } if (text.includes('中字')) { isTagTextChinese = true; } if (text.indexOf('完结') >= 0) { isTagComplete = true; } if (text.includes('分集')) { isTagIncomplete = true; } if (text.includes('合集')) { isTagCollection = true; } if (text.includes('驻站')) { isTagResident = true; } if (text.includes('DIY')) { isTagDIY = true; } if (text.includes('原生') || text.includes('原盘') || text.includes('Untouched')) { isTagUNTOUCHED = true; } if (text.includes('杜比视界') || text.includes('Dolby Vision')) { isTagDV = true; isTagHDR = true; } if (text.includes('菁彩HDR') || text.includes('HDR Vivid')) { isTagVivid = true; isTagHDR = true; } if (text.includes('HDR10+') || text.includes('HDR10 Plus') || text.includes('HDR 10+')) { isTagHDR10P = true; isTagHDR = true; } if (text.includes('HDR10') && !text.includes('HDR10+')) { isTagHDR10 = true; isTagHDR = true; } if (text === 'HDR') { isTagHDR = true; } } if (td.text() == '基本信息') { var text = td.parent().children().last().text(); if (text.includes('制作组')) { isGroupSelected = true; } if (text.includes('TB')) { isBiggerThan1T = true; } // 类型 Object.keys(cat_constant).some((key) => { if (text.indexOf(cat_constant[key]) >= 0) { cat = Number(key); return true; } }); // 媒介 Object.keys(type_constant).some((key) => { if (text.indexOf('媒介: ' + type_constant[key]) >= 0) { type = Number(key); return true; } }); // 编码 let text_no_audio = text.replace(/音频编码/, 'AUDIO'); Object.keys(encode_constant).some((key) => { if (text_no_audio.indexOf('编码: ' + encode_constant[key]) >= 0) { encode = Number(key); return true; } }); // 音频编码 const sortedAudioKeys = Object.keys(audio_constant).sort((a, b) => audio_constant[b].length - audio_constant[a].length); sortedAudioKeys.some((key) => { if (text.indexOf('音频编码: ' + audio_constant[key]) >= 0) { audio = Number(key); return true; } }); // 分辨率 Object.keys(resolution_constant).some((key) => { if (text.indexOf('分辨率: ' + resolution_constant[key]) >= 0) { resolution = Number(key); return true; } }); if (text.indexOf('720i') >= 0) { resolution = 3; } if ( text.indexOf('480p') >= 0 || text.indexOf('480i') >= 0 || text.indexOf('360p') >= 0 || text.indexOf('360i') >= 0 ) { resolution = 4; } // 制作组 Object.keys(group_constant).some((key) => { if (text.indexOf('制作组: ' + group_constant[key]) >= 0) { category = Number(key); return true; } }); } if (td.text() == '副标题' || td.text() == '副標題') { subtitle = td.parent().children().last().text(); } if (td.text() == '行为') { fixtd = td.parent().children().last(); } if (td.text().trim() == '海报') { poster = $('#kposter').children().attr('src'); } if (td.text() == 'MediaInfo') { //$(this).find("") let md = td.parent().children().last(); if (md == undefined || md.text().trim() == '') { isMediainfoEmpty = true; } mi_type = find_info(md.text()); if (md.children('div').length > 0) { mediainfo_short = md.text().replace(/\s+/g, ''); mediainfo = md.text().replace(/\s+/g, ''); } else if (md.children('table').length > 0) { mediainfo_short = md.children().children().children().eq(0).text().replace(/\s+/g, ''); mediainfo = md.children().children().children().eq(1).text().replace(/\s+/g, ''); } if ( (containsBBCode(mediainfo) || containsBBCode(mediainfo_short)) && mediainfo_short === mediainfo ) { mediainfo_err = 'MediaInfo中含有bbcode'; } // 根据 Mediainfo 判断标签选择 const audioMatch = mediainfo.matchAll(/Audio.*?Language:(\w+)/g) || []; for (let audioOne of audioMatch) { const audioLanguage = audioOne[1]; if (audioOne[0].includes('Text')) { continue; } if (audioLanguage.includes('Chinese')) { if (subtitle.includes('粤')) { isAudioCantonese = true; } else { isAudioMandarin = true; } if (subtitle.includes('国语') || subtitle.includes('国配') || subtitle.includes('国粤')) { isAudioMandarin = true; } } if (audioLanguage.includes('Mandarin')) { isAudioMandarin = true; } if (audioLanguage.includes('Cantonese')) { isAudioCantonese = true; } } const textMatches = mediainfo.match(/Text.*?Language:(\w+)/g) || []; const textLanguages = textMatches.map((text) => { const match = text.match(/Language:(\w+)/); return match ? match[1] : 'Not found'; }); var textLanguage = textLanguages.join(','); if (textLanguage.includes('Chinese')) { isTextChinese = true; } if (textLanguage.includes('English')) { isTextEnglish = true; } if (mediainfo.includes('x264')) { mi_x264 = true; } if (mediainfo.includes('x265')) { mi_x265 = true; } // alert(isAudioChinese.toString() + isTextChinese.toString() + isTextEnglish.toString()); if (md.text().includes('dvhe.') || md.text().includes('Dolby Vision')) { isDV = true; isHDR = true; } const mediaintext = md.text(); isHDR = isHDR || /\bVivid\b|\bBT.2020\b|SMPTE ST 2086/i.test(mediaintext); if (/\bVivid\b/i.test(mediaintext)) { isVivid = true; } if (mediaintext.includes('HDR10 compatible')) { isHDR10 = true; } if (md.text().includes('SMPTE ST 2094') || mediainfo.includes('HDR10+')) { isHDR10P = true; isHDR = true; } if (isHDR10P || isVivid || isDV) { if (isTagHDR10P || isTagVivid || isTagDV) { isHDR10 = isTagHDR10; } else { isHDR10 = false; } } } } function containsBBCode(str) { // 创建一个正则表达式来匹配 [/b]、[/color] 等结束标签 const regex = /\[\/(b|color|i|u|img)\]/; // 使用正则表达式的 test 方法来检查字符串 return regex.test(str); } var screenshot = ''; var pngCount = 0; var imgCount = 0; $('#kdescr img').each(function (index, element) { var src = $(element).attr('src'); if (src != undefined) { if (index != 0) { screenshot += '\n'; } screenshot += src.trim(); } if (src.indexOf('.png') >= 0) { pngCount++; } imgCount++; }); let error = false; let warning = false; switch (review_info_position) { case 1: $('#outer').prepend( '<div style="display: inline-block; padding: 10px 30px; color: black; background: #ffdd59; font-weight: bold; border-radius: 5px; margin: 4px"; display: block; position: fixed;bottom: 0;right: 0;box-shadow: 0 0 10px rgba(0,0,0,0.5); id="assistant-tooltips-warning"></div><br>' ); $('#outer').prepend( '<div style="display: inline-block; padding: 10px 30px; color: white; background: #F44336; font-weight: bold; border-radius: 5px; margin: 4px"; display: block; position: fixed;bottom: 0;right: 0;box-shadow: 0 0 10px rgba(0,0,0,0.5); id="assistant-tooltips"></div><br>' ); break; case 2: $('#top').after( '<div style="display: inline-block; padding: 10px 30px; color: white; background: #F44336; font-weight: bold; border-radius: 5px; margin: 0px"; display: block; position: fixed;bottom: 0;right: 0;box-shadow: 0 0 10px rgba(0,0,0,0.5); id="assistant-tooltips"></div><br><div style="display: inline-block; padding: 10px 30px; color: black; background: #ffdd59; font-weight: bold; border-radius: 5px; margin: 4px"; display: block; position: fixed;bottom: 0;right: 0;box-shadow: 0 0 10px rgba(0,0,0,0.5); id="assistant-tooltips-warning"></div><br>' ); break; case 3: $('#top').before( '<div style="display: inline-block; padding: 10px 30px; color: white; background: #F44336; font-weight: bold; border-radius: 5px; margin: 0px"; display: block; position: fixed;bottom: 0;right: 0;box-shadow: 0 0 10px rgba(0,0,0,0.5); id="assistant-tooltips"></div><br><div style="display: inline-block; padding: 10px 30px; color: black; background: #ffdd59; font-weight: bold; border-radius: 5px; margin: 4px"; display: block; position: fixed;bottom: 0;right: 0;box-shadow: 0 0 10px rgba(0,0,0,0.5); id="assistant-tooltips-warning"></div><br>' ); break; default: $('#top').after( '<div style="display: inline-block; padding: 10px 30px; color: white; background: #F44336; font-weight: bold; border-radius: 5px; margin: 0px"; display: block; position: fixed;bottom: 0;right: 0;box-shadow: 0 0 10px rgba(0,0,0,0.5); id="assistant-tooltips"></div><br><div style="display: inline-block; padding: 10px 30px; color: black; background: #ffdd59; font-weight: bold; border-radius: 5px; margin: 4px"; display: block; position: fixed;bottom: 0;right: 0;box-shadow: 0 0 10px rgba(0,0,0,0.5); id="assistant-tooltips-warning"></div><br>' ); } $('#assistant-tooltips').append(''); $('#assistant-tooltips-warning').append(''); /* if (/[\u4e00-\u9fa5\uff01-\uff60]+/.test(title)) { $('#assistant-tooltips').append('主标题包含中文或中文字符<br/>'); error = true; } */ /* if (/Complete/i.test(title) && type != 1 && type != 8) { $('#assistant-tooltips').append('主标题: Complete 需删除<br/>'); error = true; } */ /* if ( /\s(18[8-9][0-9]|19[0-9]{2}|200[0-9]|201[0-9]|202[0-9]|2030)\s.*S(0[1-9]|[12][0-9]|30)/.test( title ) ) { $('#assistant-tooltips').append('标题:季集应在年份前<br/>'); error = true; } */ /* if (/\sHDR10\s/.test(title)) { $('#assistant-tooltips').append('标题:HDR10 需要改为 HDR<br/>'); error = true; } */ /* if (isTagHDR10P && !/(^|\s)HDR10\+\s/.test(title)) { $('#assistant-tooltips').append('标题:HDR类型 缺少/错误<br/>'); error = true; } */ /* if (isTagHDR && !isTagHDR10P && !/(^|\s)(HLG|HDR|HDR10\+)(\s|$)/.test(title)) { $('#assistant-tooltips').append('标题:HDR类型 缺少/错误<br/>'); error = true; } */ /* if (type == 7 && /\s(HEVC|H265)\s/i.test(title)) { $('#assistant-tooltips').append('标题:WEB 资源, HEVC 或 H265 应改为 H.265<br/>'); error = true; } */ /* if (cat == 401 && /\bS\d{2}(?:E\d{2}(?:-\d{2}|E\d{2})*)?\b/gi.test(title)) { $('#assistant-tooltips').append( '经脚本检查标题包含 <b>S**E**</b>,但选择了电影类别,请再次确认<br/>' ); error = true; } */ /* if (cat == 402 && !/\bS\d{2}(?:E\d{2}(?:-\d{2}|E\d{2})*)?\b/gi.test(title)) { $('#assistant-tooltips').append( '选择了剧集类别,但是经脚本检查标题未包含 <b>S**E**</b>,请再次确认<br/>' ); error = true; } */ /* if (type == 7 && /\s(AVC|H264)\s/i.test(title)) { $('#assistant-tooltips').append('标题:WEB 资源, AVC 或 H264 应改为 H.264<br/>'); error = true; } */ /* if (type == 4 && /\s(HEVC|H\.265)\s/.test(title)) { $('#assistant-tooltips').append('标题:HDTV 资源, HEVC 或 H.265 应改为 H265<br/>'); error = true; } */ /* if (type == 4 && /\s(AVC|H\.264)\s/.test(title)) { $('#assistant-tooltips').append('标题:HDTV 资源, AVC 或 H.264 应改为 H264<br/>'); error = true; } */ /* if ( /(-|@)(FGT|NSBC|BATWEB|GPTHD|DreamHD|BlackTV|CatWEB|Xiaomi|Huawei|MOMOWEB|DDHDTV|SeeWeb|TagWeb|SonyHD|MiniHD|BitsTV|ALT|LelveTV|NukeHD|ZeroTV|HotTV|EntTV|GameHD|SmY|SeeHD|ParkHD|VeryPSP|DWR|XLMV|XJCTV|Mp4Ba|Huluwa)/i.test( title ) ) { $('#assistant-tooltips').append('主标题包含禁发小组,请检查<br/>'); error = true; } */ /* if (/(-|@)(CTRLHD)/.test(title)) { $('#assistant-tooltips').append('主标题包含禁发小组,请检查<br/>'); error = true; } */ if (!subtitle) { $('#assistant-tooltips').append('副标题为空<br/>'); error = true; } if (!cat) { $('#assistant-tooltips').append('未选择分类<br/>'); error = true; } if (!type) { $('#assistant-tooltips').append('未选择媒介<br/>'); error = true; } else { if (title_type && title_type !== type) { $('#assistant-tooltips').append( '标题检测媒介为' + type_constant[title_type] + ',选择媒介为' + type_constant[type] + '<br/>' ); error = true; } } if (!encode) { $('#assistant-tooltips').append('未选择主视频编码<br/>'); error = true; } else { if (title_encode && title_encode !== encode) { $('#assistant-tooltips').append( '标题检测视频编码为' + encode_constant[title_encode] + ',选择视频编码为' + encode_constant[encode] + '<br/>' ); error = true; } } if (!audio) { $('#assistant-tooltips').append('未选择主音频编码<br/>'); error = true; } else { if (title_audio && title_audio !== audio) { $('#assistant-tooltips').append( '标题检测音频编码为' + audio_constant[title_audio] + ',选择音频编码为' + audio_constant[audio] + '<br/>' ); error = true; } } if (!resolution) { $('#assistant-tooltips').append('未选择分辨率<br/>'); error = true; } else { if (title_resolution && title_resolution !== resolution) { $('#assistant-tooltips').append( '标题检测分辨率为' + resolution_constant[title_resolution] + ',选择分辨率为' + resolution_constant[resolution] + '<br/>' ); error = true; } } /* if (/(480|720|1080|2160|4320)P/.test(title)) { $('#assistant-tooltips').append('标题:分辨率 P 应改为 p<br/>'); error = true; } */ /* if (/atmos.*truehd/.test(title_lowercase)) { $('#assistant-tooltips').append('标题:Atmos 应置于 声道 之后<br/>'); error = true; } */ /* if (/(avc|hevc|h\.265|h\.264|x265|x264).*(bluray|blu-ray|web-dl|remux)/.test(title_lowercase)) { $('#assistant-tooltips').append('标题:片源类型与规格应置于视频编码前面<br/>'); error = true; } */ /* if (title_resolution_pos == -1) { if (title_type == 2 || title_type == 9) { if (!title_encode_system) { $('#assistant-tooltips').append('标题中缺少分辨率或制式<br/>'); error = true; } } else { $('#assistant-tooltips').append('标题中缺少分辨率<br/>'); error = true; } } */ /* if (title_source_pos == -1) { $('#assistant-tooltips').append('标题中缺少来源 or 媒介<br/>'); error = true; } */ /* if (title_resolution_pos != -1 && title_source_pos != -1) { if (title_resolution_pos > title_source_pos) { $('#assistant-tooltips').append('将标题中的分辨率置于来源/媒介前<br/>'); error = true; } } */ /* if (title_video_pos == -1) { $('#assistant-tooltips').append('标题中缺少视频编码<br/>'); error = true; } */ /* if (title_audio_pos == -1) { $('#assistant-tooltips').append('标题中缺少音频编码<br/>'); error = true; } */ /* if (title_AC3) { $('#assistant-tooltips').append('AC3改为 DD<br/>'); error = true; } */ /* if (title_HQ) { $('#assistant-tooltips').append('删除标题中的 HQ<br/>'); error = true; } */ /* if (title_FPS) { $('#assistant-tooltips').append('删除标题中的 FPS<br/>'); error = true; } */ /* if (title_EDR) { $('#assistant-tooltips').append('删除标题中的 EDR<br/>'); error = true; } */ /* if (title_SDR) { $('#assistant-tooltips').append('删除标题中的 SDR<br/>'); error = true; } */ /* if (title_4K) { $('#assistant-tooltips').append('4K 改为 2160p,<br/>'); error = true; } */ /* if (title_audio_complete) { if (!title_audio_complete[0].match(/\d\.\d/)) { $('#assistant-tooltips').append('标题中未正确标示声道数<br/>'); error = true; } } */ /* if (title_video_pos != -1 && title_audio_pos != -1) { if (title_video_pos > title_audio_pos) { $('#assistant-tooltips').append('将标题中的视频编码置于音频编码前面<br/>'); error = true; } if (title_HDR_pos > title_video_pos) { $('#assistant-tooltips').append('将标题中的HDR类型置于视频编码前面<br/>'); error = true; } if (title_HDR_pos > title_audio_pos) { $('#assistant-tooltips').append('将标题中的HDR类型置于视频编码前面<br/>'); error = true; } } */ if (title_type == type) { if (title_type == 1 || title_type == 8 || title_type == 11) { if (title_wrongBD) { $('#assistant-tooltips').append(`标题中${title_wrongBD}应为Blu-ray<br/>`); error = true; } if (mi_type == 0) { $('#assistant-tooltips').append('Mediainfo栏应填写BDinfo<br/>'); error = true; } if (mi_type == 1) { //检查DIY和原生原盘标签 var TagError = false; if (isDIY) { if (!isTagDIY) { $('#assistant-tooltips').append(`未选择DIY标签<br/>`); TagError = true; } if (isTagUNTOUCHED) { $('#assistant-tooltips').append(`不应选择原生原盘标签<br/>`); TagError = true; } } if (!isTagDIY && !isTagUNTOUCHED) { $('#assistant-tooltips').append(`Blu-ray 类型,未选择 原生 或 DIY 标签<br/>`); TagError = true; } if (isTagDIY && isTagUNTOUCHED) { $('#assistant-tooltips').append(`原生 或 DIY 标签只能使用一个<br/>`); TagError = true; } if (TagError) { error = true; } } } else { if (mi_type == 1) { $('#assistant-tooltips').append('Mediainfo栏应填写mediainfo<br/>'); error = true; } } /* if (title_type == 10) { if (title_wrongBDrip) { $('#assistant-tooltips').append(`标题中${title_wrongBDrip}应为BluRay<br/>`); error = true; } } */ } if (/^(?!Encoding).*HLG/im.test(mediainfo_short) && !isTagHDR) { $('#assistant-tooltips').append(`HLG 需要添加 HDR 标签<br/>`); error = true; } /* if (title_10bit) { $('#assistant-tooltips').append('删除标题中的10bit<br/>'); error = true; } */ /* // Other || SD(480 || 360) if ( (resolution === 5 || resolution === 4 || title_resolution === 4) && !(godDramaSeed || officialSeed) ) { $('#assistant-tooltips-warning').append('请检查是否有更高清的资源<br/>'); warning = true; } */ if (title_DVD720) { $('#assistant-tooltips-warning').append('请检查该DVD来源的资源分辨率有否错标<br/>'); warning = true; } if (title_ES >= 1 && !isTagComplete) { $('#assistant-tooltips').append('完结剧集请添加完结标签<br/>'); error = true; } if (title_ES == 0 && !isTagIncomplete) { $('#assistant-tooltips').append( '未完结剧集请添加分集标签,如果无法勾选,请前往站点首页公告处查看并申请分集标签权限或举报删除<br/>' ); error = true; } if (isTagHDR !== isHDR) { $('#assistant-tooltips').append('HDR标签选择与MediaInfo不符<br/>'); error = true; } if (isTagHDR10P !== isHDR10P) { $('#assistant-tooltips').append('HDR10+标签选择与MediaInfo不符<br/>'); error = true; } if (isTagHDR10 !== isHDR10) { $('#assistant-tooltips').append('HDR10标签选择与MediaInfo不符<br/>'); error = true; } if (isTagDV !== isDV) { $('#assistant-tooltips').append('杜比视界标签选择与MediaInfo不符<br/>'); error = true; } if (isTagVivid !== isVivid) { $('#assistant-tooltips').append('菁彩HDR标签选择与MediaInfo不符<br/>'); error = true; } if (title_ES >= 0 && title_ES < 2 && isTagCollection) { $('#assistant-tooltips').append('不应选择合集标签<br/>'); error = true; } if (!dbUrl && !godDramaSeed) { $('#assistant-tooltips-warning').append('简介中未检测到IMDb或豆瓣链接<br/>'); warning = true; } if (mediainfo_err) { $('#assistant-tooltips').append(mediainfo_err).append('<br/>'); error = true; } if (officialSeed && !isGroupSelected) { $('#assistant-tooltips').append('未选择制作组<br/>'); error = true; } if (!officialSeed && isOfficialSeedLabel) { $('#assistant-tooltips').append('非官种不可选择官方标签<br/>'); error = true; } if (officialSeed && !isOfficialSeedLabel) { $('#assistant-tooltips').append('官种未选择官方标签<br/>'); error = true; } if (isBriefContainsInfo) { $('#assistant-tooltips').append('简介中包含Mediainfo<br/>'); error = true; } if (isAudioMandarin && !isTagAudioMandarin) { $('#assistant-tooltips').append('未选择国语标签<br/>'); error = true; } if (isAudioCantonese && !isTagAudioCantonese) { $('#assistant-tooltips').append('未选择粤语标签<br/>'); error = true; } if (isTextChinese && !isTagTextChinese) { $('#assistant-tooltips').append('未选择中字标签<br/>'); error = true; } if (isVCBStudio && !isTagVCBStudio) { $('#assistant-tooltips').append('VCB资源未选择VCB-Studio标签<br/>'); error = true; } if ((isHDR || isHDR10P) && !isTagHDR) { $('#assistant-tooltips').append('未选择 HDR 标签<br/>'); error = true; } if (!(isHDR || isHDR10P) && isTagHDR) { $('#assistant-tooltips').append('选择 HDR 标签,未识别到 HDR<br/>'); error = true; } if (isHDR10P && !isTagHDR10P) { $('#assistant-tooltips').append('未选择 HDR10+ 标签<br/>'); error = true; } if (!isHDR10P && isTagHDR10P) { $('#assistant-tooltips').append('选择 HDR10+ 标签,未识别到 HDR10+ <br/>'); error = true; } if (!isDV && isTagDV) { $('#assistant-tooltips').append('选择 杜比视界 标签,未识别到 杜比视界<br/>'); error = true; } if (isDV && !isTagDV) { $('#assistant-tooltips').append('未选择杜比视界标签<br/>'); error = true; } if (title_type == 9 && !isTagREMUX) { $('#assistant-tooltips').append('未选择Remux标签<br/>'); error = true; } if (imgCount < 1) { $('#assistant-tooltips').append('缺少海报或截图<br/>'); error = true; } if (isMediainfoEmpty) { $('#assistant-tooltips').append('Mediainfo栏为空<br/>'); error = true; } else if (mi_type == -1) { $('#assistant-tooltips').append('Mediainfo栏填写不正确<br/>'); error = true; } /* if (mi_x264 && !title_x264 && officialSeed && category === 7) { $('#assistant-tooltips').append('压制组-主标题中编码应为 x264<br/>'); error = true; } */ /* if (mi_x265 && !title_x265 && officialSeed && category === 7) { $('#assistant-tooltips').append('压制组-主标题中编码应为 x265<br/>'); error = true; } */ if (officialMusicSeed) { $('#assistant-tooltips').empty(); error = false; if (!isGroupSelected) { $('#assistant-tooltips').append('未选择制作组<br/>'); error = true; } } if (cat === 408) { $('#assistant-tooltips').empty(); error = false; $('#assistant-tooltips-warning').empty(); warning = false; } if (cat === 409) { $('#assistant-tooltips').empty(); error = false; $('#assistant-tooltips-warning').empty(); warning = false; } if (cat === 408 && !title_lowercase.includes('khz')) { $('#assistant-tooltips').append('主标题缺少采样频率<br/>'); error = true; } if (cat === 408 && !title_lowercase.includes('bit')) { $('#assistant-tooltips').append('主标题缺少比特率<br/>'); error = true; } const dialogRegexPattern = new RegExp(`^${config.base_url_dialog}`); registerMenuCommand(); // 注册脚本菜单 function registerMenuCommand() { GM_registerMenuCommand(`${GM_getValue("biggerbutton", false) ? '✅' : '❌'} 审核按钮放大`, function () { var biggerbutton = !GM_getValue("biggerbutton", false); GM_setValue("biggerbutton", biggerbutton); location.reload(); }); GM_registerMenuCommand(`${GM_getValue("autoclose", false) ? '✅' : '❌'} 自动关闭页面`, function () { var autoclose = !GM_getValue("autoclose", false); GM_setValue("autoclose", autoclose); location.reload(); }); } function addApproveLink() { var tdlist = $('#outer').find('td'); for (var i = 0; i < tdlist.length; i++) { var td = $(tdlist[i]); if (td.text() == '行为') { var elements = td.parent().children().last(); var isFoundReviewLink = elements.find('a[href*="web/torrent-approval-page"]').length > 0; if (isFoundReviewLink) { var approveBtn = $('<a href="javascript:;" id="approvelink" class="small"><b><font color="#8BC34A"> 一键通过</font></b></a>'); elements.append(' | ').append(approveBtn); approveBtn.on('click', function (event) { event.preventDefault(); if (error) { alert("当前种子仍有错误,请手动修正!"); return; } const TARGET_ID = new URLSearchParams(window.location.search).get('id'); // 先获取token GM_xmlhttpRequest({ method: "GET", url: `${config.base_url_dialog}${TARGET_ID}`, onload: function (res) { const token = $(res.responseText).find('input[name="_token"]').val(); // 提交审核请求 GM_xmlhttpRequest({ method: "POST", url: `https://${currentDomain}/web/torrent-approval`, headers: { "Content-Type": "application/x-www-form-urlencoded" }, data: `_token=${encodeURIComponent(token)}&torrent_id=${TARGET_ID}&approval_status=1&comment=审核通过`, onload: function (res) { const response = JSON.parse(res.responseText); if (response.ret === 0) { const $msg = $('<div style="position:fixed;top:20px;right:20px;padding:15px;color:white;background:#5FB878;border-radius:5px;z-index:9999">审核已完成</div>'); $('body').append($msg); if (GM_getValue("autoclose", false)) { setTimeout(() => window.close(), 1000); } else { setTimeout(() => $msg.remove(), 3000); } } else { alert(`失败:${response.msg}`); } } }); } }); }); } } } } var startTime = new Date().getTime(); var intervalId = setInterval(function () { var allload = true; $('#kdescr img').each(function (index, element) { var src = $(element).attr('src'); if (src != undefined) { var height = $(element).height(); if (height == 0) { allload = false; } } }); var diff = ~~((new Date().getTime() - startTime) / 1000); if (diff > 30) { $('#assistant-tooltips-warning').append('页面图片加载30秒超时<br/>'); window.stop(); allload = true; } if (allload) { isWaitImgLoad = false; clearInterval(intervalId); $('#kdescr img').each(function (index, element) { var src = $(element).attr('src'); if (src != undefined) { var height = $(element).height(); if (height <= 24) { warning = true; $('#assistant-tooltips-warning').append( '异常图片:<a href=' + src + ' target="_blank">' + src + '</a><br/>' ); $('#assistant-tooltips-warning').show(); } } }); if (error) { $('#assistant-tooltips').show(); $('#assistant-tooltips').css('background', '#EA2027'); } else { $('#assistant-tooltips').empty(); $('#assistant-tooltips').append('此种子未检测到错误'); $('#assistant-tooltips').css('background', '#8BC34A'); } if (!warning) { $('#assistant-tooltips-warning').hide(); } else { $('#assistant-tooltips-warning').show(); } if (!error && warning) { $('#assistant-tooltips').hide(); } } }, 200); // 主页面操作 if (regexPattern.test(window.location.href)) { addApproveLink(); } if ( /https:\/\/(.*\.)?(pandapt\.net)\/details\.php\?id=.*/.test( window.location.href ) ) { if (GM_getValue("biggerbutton", false)) { // 实现逻辑在 addApproveLink 中内联 } } // 弹出页的操作 if ( /https:\/\/(.*\.)?(pandapt\.net)\/web\/torrent-approval-page\?torrent_id=.*/.test( window.location.href ) ) { // 使用延迟来等待页面可能的异步加载 setTimeout(function () { if (GM_getValue('autoCheckAndConfirm', false)) { var radioPassButton = document .querySelector( 'body > div.form-comments > form > div:nth-child(3) > div > div:nth-child(4) > div' ) .click(); if (radioPassButton) { radioPassButton.checked = true; } var confirmButton = document.querySelector( 'body > div.form-comments > form > div:nth-child(5) > div > button:nth-child(1)' ); if (confirmButton) { // 完成操作后,清除标记 GM_setValue('autoCheckAndConfirm', false); GM_setValue('autoFillErrorInfo', false); confirmButton.click(); } } if (GM_getValue('autoFillErrorInfo', false)) { var radioDenyButton = document .querySelector( 'body > div.form-comments > form > div:nth-child(3) > div > div:nth-child(6)' ) .click(); if (radioDenyButton) { radioDenyButton.checked = true; } var errorInfo = GM_getValue('errorInfo', ''); errorInfo = errorInfo.replace('【错误】: ', ''); errorInfo = errorInfo.replace( 'MediaInfo中含有bbcode', '请将MediaInfo中多余的标签删除,例如:[b][color=royalblue]******[/color][/b]' ); errorInfo = errorInfo.replace('简介中包含Mediainfo', '请删去简介中的MediaInfo'); errorInfo = errorInfo.replace( '媒体信息未解析', '请使用通过MediaInfo或者PotPlayer获取的正确的mediainfo信息,具体方法详见教程第四步https://www.agsvpt.com/forums.php?action=viewtopic&forumid=4&topicid=8' ); errorInfo = errorInfo.replace('简介中未检测到IMDb或豆瓣链接', '请补充imdb/豆瓣链接'); errorInfo = errorInfo.replace('副标题为空', '请补充副标题'); $('#approval-comment').text(errorInfo); } }, timeout); // 可能需要根据实际情况调整延迟时间 } // 快捷键 ctrl+e 一键通过 document.addEventListener('keydown', function (e) { if (e.key === 'F4') { let btn = document.querySelector('#approvelink') || document.querySelector('#approval'); if (btn) btn.click(); } if (e.key === 'F3') { window.close(); } }); // 种子存在错误便设置变量 if (error && isFoundReviewLink) { GM_setValue('autoFillErrorInfo', true); GM_setValue('errorInfo', document.getElementById('assistant-tooltips').innerHTML); } else if (!error) { GM_setValue('autoFillErrorInfo', false); } if (!isWaitImgLoad) { if (error) { $('#assistant-tooltips').css('background', '#EA2027'); } else { $('#assistant-tooltips').empty(); $('#assistant-tooltips').append('此种子未检测到错误'); $('#assistant-tooltips').css('background', '#8BC34A'); } if (!warning) { $('#assistant-tooltips-warning').hide(); } if (!error && warning) { $('#assistant-tooltips').hide(); } } else { $('#assistant-tooltips').hide(); $('#assistant-tooltips-warning').hide(); } })();