// ==UserScript==
// @name PTerClub Torrent Checker
// @namespace http://tampermonkey.net/
// @version 1.0.20
// @description Have fun!
// @author PTerClub-Helpers
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @connect greasyfork.org
// @match https://pterclub.com/details.php?id=*
// @icon https://pterclub.com/favicon.ico
// @license MIT
// @link https://greasyfork.org/zh-CN/scripts/522428-pterclub-torrent-checker
// ==/UserScript==
(function () {
'use strict';
var error = [];
//用户排除列表
//var list = [];
//白名单组列表
var whitelist = ['FRDS', 'CMCT', 'EPiC', 'WiKi', 'TTG', 'QHstudIo', 'DBTV', 'CHD', 'HDH', 'PbK', 'MTeam', 'HDChina', 'Dream', 'TLF', 'BMDru', 'PuTao', 'GodDramas', 'OPS'];
//页面提醒元素
var icons = [' <img src="https://s9.gifyu.com/images/SUUsH.png" title="待修改"> ', ' <img src="https://s9.gifyu.com/images/SUUsx.png" title="还没有审核"> ', ' <img src="https://s9.gifyu.com/images/SUUsK.png" title="已通过审核"> ', ' <img src="https://i.ibb.co/W25pttZ/add.png" title="需要添加"> '];
var h1 = document.getElementById('top');
var span_correct;
var a = document.createElement('div');
a.id = 'CheckBox';
a.style = "max-height: 1080px; max-width: 300px; opacity: 1; overflow: auto; display: block; position: fixed; left: 1%; bottom: 70%; opacity: 1; z-index: 90; background-color: white";
//版本检查
if (typeof GM_getValue === 'function') {
// 从 `@downloadURL` 或 `@updateURL` 中提取脚本 ID
const scriptUrl = GM_info.scriptMetaStr.match(/@downloadURL\s+(.*)/)[1];
const scriptIdMatch = scriptUrl.match(/\/scripts\/(\d+)/);
const scriptId = scriptIdMatch ? scriptIdMatch[1] : null;
if (scriptId) {
console.log(`自动获取的脚本 ID: ${scriptId}`);
// 示例:使用脚本 ID 进行版本检查
const currentVersion = GM_info.script.version;
// 获取当前时间戳(单位:毫秒)
const now = Date.now();
// 获取上次检查的时间戳(默认值为 0)
const lastCheckTime = GM_getValue('lastCheckTime', 0);
// 检查是否超过一小时(3600000 毫秒)
if (now - lastCheckTime > 3600000) {
console.log('超过一小时未检查版本,开始检查...');
// 调用 Greasy Fork API 获取脚本信息
GM_xmlhttpRequest({
method: 'GET',
url: `https://greasyfork.org/scripts/${scriptId}.json`,
onload: function (response) {
if (response.status === 200) {
const scriptData = JSON.parse(response.responseText);
// 获取最新版本号
const latestVersion = scriptData.version;
console.log(`当前版本: ${currentVersion}`);
console.log(`最新版本: ${latestVersion}`);
// 比较版本号
if (currentVersion !== latestVersion) {
a.innerHTML += `<span style="color: orange">检测到新版本,请更新。</span><br>`;
} else {
console.log('脚本已是最新版本。');
}
// 更新检查时间戳
GM_setValue('lastCheckTime', now);
} else {
console.error('无法获取脚本信息。');
}
},
onerror: function () {
console.error('请求 Greasy Fork API 失败。');
},
});
} else {
console.log(`未超过一小时,无需检查版本。(${Math.floor((3600000 - (now - lastCheckTime)) / 60000)} 分钟后再检查)`);
}
} else {
console.error('无法自动获取脚本 ID,请检查脚本的 @downloadURL 或 @updateURL 是否正确。');
}
}
//Info 初始化
const TORRENT_INFO = {
titleinfo: {
origin: '',
logo: '',
name: '',
season: '',
chapter1: '-1',
chapter2: '',
year: '',
resolution: '',
source: '',
remux: false,
vcodec: '',
bitdepth: '',
fps: '',
hdr: '',
dv: false,
acodec: '',
channels: '',
aobject: '',
group: '',
freeinfo: '',
minibd: false,
format3d: '',
},
tableinfo: {
torrentfilename: '',
subtitle: '',
chapter1: '-1',
chapter2: '',
size: '',
category: '',
zhiliang: '',
area: '',
files: 1,
imdburl: '',
doubanurl: '',
tags: '',
hasChineseExternalsubtitles: '',
hasEnglishExternalsubtitles: '',
hasTagMandarin: false,
hasTagCantonese: false,
hasTagChineseSubtitles: false,
hasTagEnglishSubtitles: false,
hasTagDIY: false,
imageHostBlacklist:false
},
descrinfo: {
moviename: '',
imdburl: '',
doubanurl: '',
area: '',
lang: '',
chapters: '',
category: '', //已废弃
categorys: '',
publishdate: ''
},
mediainfo: {
full: '',
filesize: '',
video: {
format: '',
bitrates: '',
hdr: '',
dv: false,
fps: '',
width: '',
height: '',
bitdepth: '',
scantype: '',
codec: '',
},
audios: {},
audio_lang: 0,
subtitles: {},
hasMandarin: false,
hasCantonese: false,
hasChineseSubtitles: false,
hasEnglishSubtitles: false,
standard: ''
},
bdinfo: {
full: '',
DIY: false,
video: {
format: '',
bitrates: '1 kbps',
hdr: '',
dv: false,
resolution: '',
},
video_dv: '0 kbps',
audios: {},
subtitles: []
},
results: {
title: '',
season: '',
chapter1: '-1',
chapter2: '',
files: 1,
resolution: '',
source: '',
remux: false,
vcodec: '',
hdr: '',
dv: false,
acodec: '',
channels: '',
aobject: '',
group: '',
dupe: false,
subtitle: '',
category: '',
zhiliang: '',
standard: ''
},
}
var match;
var splitflag;
//获取:tableinfo(帖子内容的表格)
//table = document.getElementById('bookmark0').parentNode.parentNode.parentNode;//1.0.3.0602 以前
var table = document.querySelectorAll(' td#outer > table ')[0];
for (var i = 0; i < table.rows.length; i++) {
//console.log(`table.rows[${i}].cells[0] is ${table.rows[i].cells[0].textContent}`);
if (table.rows[i].cells[0].textContent == '下载') {
//console.log(table.rows[i].cells[0])
//获取种子文件名
var torrentfilename = table.rows[i].cells[1].firstChild.textContent;
TORRENT_INFO.tableinfo.torrentfilename = torrentfilename.match(/(?<=\[PTer\]\.).*?(?=\.torrent)/)[0];
//用户排除
// var elements = table.rows[i].cells[1].querySelectorAll('a');
// for (let j = 0; j < elements.length; j++) {
// if (elements[j].href.match(/userdetails/i)) {
// var uploader = elements[j].textContent;
// if (list.includes(uploader)) {
// console.log('被排除的用户');
// return;
// } else {
// console.log(uploader);
// }
// }
// }
} else if (table.rows[i].cells[0].textContent == '副标题') {
//获取副标题
TORRENT_INFO.tableinfo.subtitle = table.rows[i].cells[1].textContent;
if (TORRENT_INFO.tableinfo.subtitle.match(/((全|共)\s?[0-9]{1,4}\s?(集|话|期)|[0-9]{1,4}\s?(集|话|期)全)/)) {
TORRENT_INFO.tableinfo.chapter1 = '';
TORRENT_INFO.tableinfo.chapter2 = TORRENT_INFO.tableinfo.subtitle.match(/((全|共)\s?[0-9]{1,4}\s?(集|话|期)|[0-9]{1,4}\s?(集|话|期)全)/)[0].replace(/(全|共|集|话|期)/g, '').trim();
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第?\s?[0-9]{1,4}-[0-9]{1,4}\s?(集|话|期)/)) {
let chapterArr = TORRENT_INFO.tableinfo.subtitle.match(/第?\s?[0-9]{1,4}-[0-9]{1,4}\s?(集|话|期)/)[0].replace(/(第|集|话|期)/g, '').split('-');
TORRENT_INFO.tableinfo.chapter1 = chapterArr[0].trim();
TORRENT_INFO.tableinfo.chapter2 = chapterArr[1].trim();
error.push("不审核单集")
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第?\s?[0-9]{1,4}\s?(集|话|期)/)) {
TORRENT_INFO.tableinfo.chapter2 = TORRENT_INFO.tableinfo.subtitle.match(/第?\s?[0-9]{1,4}\s?(集|话|期)/)[0].replace(/(第|集|话|期)/g, '').trim();
error.push("不审核单集")
}
} else if (table.rows[i].cells[0].textContent == '类别与标签') {
//获取标签
if (TORRENT_INFO.tableinfo.tags == '') {
TORRENT_INFO.tableinfo.tags = table.rows[i].cells[1].textContent.trim();
if (TORRENT_INFO.tableinfo.tags.match(/国语/)) {
TORRENT_INFO.tableinfo.hasTagMandarin = true;
}
if (TORRENT_INFO.tableinfo.tags.match(/粤语/)) {
TORRENT_INFO.tableinfo.hasTagCantonese = true;
}
if (TORRENT_INFO.tableinfo.tags.match(/中字/)) {
TORRENT_INFO.tableinfo.hasTagChineseSubtitles = true;
}
if (TORRENT_INFO.tableinfo.tags.match(/英字/)) {
TORRENT_INFO.tableinfo.hasTagEnglishSubtitles = true;
}
if (TORRENT_INFO.tableinfo.tags.match(/DIY原盘/)) {
TORRENT_INFO.tableinfo.hasTagDIY = true;
}
}
} else if (table.rows[i].cells[0].textContent == '基本信息') {
//获取基本信息
var info = table.rows[i].cells[1].textContent;
if (info.match(/地区.*/)) {
TORRENT_INFO.tableinfo.area = info.match(/地区.*/)[0].trim();
info = info.replace(TORRENT_INFO.tableinfo.area, '');
}
if (info.match(/质量.*/)) {
TORRENT_INFO.tableinfo.zhiliang = info.match(/质量.*/)[0].replace('Remux', 'REMUX').trim();
info = info.replace(TORRENT_INFO.tableinfo.zhiliang, '');
TORRENT_INFO.tableinfo.zhiliang = TORRENT_INFO.tableinfo.zhiliang.replace('质量: ', '');
}
if (info.match(/类型.*/)) {
TORRENT_INFO.tableinfo.category = info.match(/类型.*/)[0].trim();
info = info.replace(TORRENT_INFO.tableinfo.category, '');
}
if (info.match(/大小.*/)) {
TORRENT_INFO.tableinfo.size = info.match(/大小.*/)[0].replace('大小:', '').trim();
}
} else if (table.rows[i].cells[0].textContent == 'IMDb链接') {
//获取 IMDb 链接
TORRENT_INFO.tableinfo.imdburl = table.rows[i].cells[1].textContent.trim();
} else if (table.rows[i].cells[0].textContent == '豆瓣链接') {
//获取豆瓣链接
TORRENT_INFO.tableinfo.doubanurl = table.rows[i].cells[1].textContent.trim();
} else if (table.rows[i].cells[0].textContent == '字幕') {
//获取外挂字幕信息
if(table.rows[i].cells[1].querySelector('img[src="pic/flag/hongkong.gif"], img[src="pic/flag/china.gif"]') !== null){
TORRENT_INFO.tableinfo.hasChineseExternalsubtitles = '外挂中字';
//console.log("检测到外挂中文字幕");
}
if(table.rows[i].cells[1].querySelector('img[src="pic/flag/uk.gif"]')){
TORRENT_INFO.tableinfo.hasEnglishExternalsubtitles = '外挂英字';
//console.log("检测到外挂英文字幕");
} else if(!table.rows[i].cells[1].textContent.includes("该种子暂无字幕")){
//console.log("无外挂字幕");
}
} else if (table.rows[i].cells[0].textContent.match('简介')) {
//获取:descrinfo(帖子正文)
var descr = table.rows[i].cells[1].firstChild.textContent;
var descr_rows = descr.split('\n');
// var htmlContent = table.rows[i].cells[1].firstChild.innerHTML
//图床匹配
let regexList = [
/^(http|https):\/\/.*loli\.net\/.*\.(jpg|png|gif)$/ // 正则1
// 正则2
];
let matchedLinks = Array.from(table.rows[i].cells[1].firstChild.querySelectorAll("img"))
.map(img => img.src)
.filter(src => {
let isMatch = regexList.some(regex => regex.test(src)); // 检查是否匹配任意正则
if (isMatch) TORRENT_INFO.tableinfo.imageHostBlacklist = true; // 如果匹配成功,设置 A = true
return isMatch;
});
//首图 gifyu 图床判断
let firstimg = document.querySelector(' #kdescr > img ');
if (firstimg) {
if (firstimg.src.match(/gifyu/i)) {
a.innerHTML += '<span style="color: red">第一张图片不能是 gifyu 图床</span><br>';
error.push("第一张图片不能是 gifyu 图床");
}
}
descr_rows.forEach((r) => {
//console.log(r);
var match;
if (r.match(/.*(片.*?名|名.*?字).*/)) {//' '
match = r.match(/.*(片.*?名|名.*?字)/);
TORRENT_INFO.descrinfo.moviename = TORRENT_INFO.descrinfo.moviename + '/' + r.replace(match[0], '').replace(/\*/g, '0').trim();
} else if (r.match(/.*(译.*?名|又.*?名|别.*?名).*/)) {
match = r.match(/.*(译.*?名|又.*?名|别.*?名)/);
TORRENT_INFO.descrinfo.moviename = TORRENT_INFO.descrinfo.moviename + '/' + r.replace(match[0], '').replace(/\*/g, '0').trim();
} else if (r.match(/(http|https):\/\/www\.imdb\.com\/title\/tt[0-9]{0,8}/)) { //https://www.imdb.com/title/tt11873134/
TORRENT_INFO.descrinfo.imdburl = 'http:\/\/' + r.match(/www\.imdb\.com\/title\/tt[0-9]{0,8}/)[0].trim();
} else if (r.match(/douban\.com\/subject\/[0-9]{0,8}/)) {
TORRENT_INFO.descrinfo.doubanurl = 'https:\/\/movie\.' + r.match(/douban\.com\/subject\/[0-9]{0,8}/)[0].trim();
} else if (r.match(/(制\s*片|产\s*地|国\s*家|地\s*区)/) && !r.match(/(制\s*片\s*人|压.*制.*片.*源)/) && TORRENT_INFO.descrinfo.area == '') {
match = r.match(/.*(制\s*片|产\s*地|国\s*家|地\s*区)/);
r = r.replace(match[0], '').replace('中国香港', '香港').replace('中国台湾', '台湾').trim();
//console.log(r);
//console.log(`r length is ${r.trim().length}`);
if (r.length < 30) {
TORRENT_INFO.descrinfo.area = r;
}
} else if (r.match(/.*语.*言.*/) && TORRENT_INFO.descrinfo.lang == '') {
match = r.match(/.*语.*言/);
TORRENT_INFO.descrinfo.lang = r.replace(match[0], '').trim();
} else if (r.match(/.*集.*数.*/) && TORRENT_INFO.descrinfo.chapters == '') {
match = r.match(/.*集.*数/);
TORRENT_INFO.descrinfo.chapters = r.replace(match[0], '').trim();
//console.log(TORRENT_INFO.descrinfo.chapters);
if (!TORRENT_INFO.descrinfo.chapters.match(/^[0-9]{1,4}$/)) {
TORRENT_INFO.descrinfo.chapters = '';
}
// } else if (r.match(/.*单集片长.*/) && TORRENT_INFO.descrinfo.chapters == '') {
// TORRENT_INFO.descrinfo.chapters = '0';
// } else if (r.match(/.*(类.*型|类.*别).*/) && (TORRENT_INFO.descrinfo.category == '' || TORRENT_INFO.descrinfo.category == '电影') && !r.match(/我们的TG/) && !r.match(/原创抓取/)) {
// match = r.match(/.*(类.*型|类.*别)/);
// TORRENT_INFO.descrinfo.category = r.replace(match[0], '').trim();
// if (TORRENT_INFO.descrinfo.category.match(/纪录片/)) {
// TORRENT_INFO.descrinfo.category = '纪录片';
// } else if (TORRENT_INFO.descrinfo.category.match(/动画/)) {
// TORRENT_INFO.descrinfo.category = '动画';
// } else if (TORRENT_INFO.descrinfo.category.match(/真人秀/)) {
// TORRENT_INFO.descrinfo.category = '综艺';
// } else if (TORRENT_INFO.descrinfo.category.match(/(4K|HDR)/i)) {
// TORRENT_INFO.descrinfo.category = '';
// }
} else if (r.match(/.*(类.*型|类.*别).*/)) {
match = r.match(/.*(类.*型|类.*别)/);
TORRENT_INFO.descrinfo.categorys += r.replace(match[0], '').trim() + ' ';
} else if (r.match(/(首\s*映|上映日期|年\s*代|年\s*份)/) && TORRENT_INFO.descrinfo.publishdate == '') {
match = r.match(/(首\s*映|上映日期|年\s*代|年\s*份)/);
TORRENT_INFO.descrinfo.publishdate = r.replace(match[0], '').trim();
if (TORRENT_INFO.descrinfo.publishdate.match(/[1-2][0-9]{3}/)) {
TORRENT_INFO.descrinfo.publishdate = TORRENT_INFO.descrinfo.publishdate.match(/[1-2][0-9]{3}/)[0];
//console.log(`年份为 ${TORRENT_INFO.descrinfo.publishdate}`);
} else {
TORRENT_INFO.descrinfo.publishdate = '';
}
}
})
}
}
//获取 MediaInfo
var codehides = document.getElementsByClassName('hide');
var quote = document.getElementsByTagName('fieldset');
var mediainfo = '';
var bdinfo = '';
var infosp;
if (codehides) {
for (let i = 0; i < codehides.length; i++) {
if (codehides[i].textContent.match(/(General|概览|概要)\s*(ID|Complete\sname|完整名称|File\sname|Unique\sID|唯一ID|CompleteName)/i) ) {
//if (codehides[i].textContent.replace(/This release.*\n/i, '').trim().match(/^(General|概览)/i) && !codehides[i].textContent.match(/General Information/i)) {
mediainfo = codehides[i].textContent;
if (codehides[i].getElementsByTagName('img').length != 0 || mediainfo.match(/\[img\][\S\s]*?\[\/img\]/i)) {
a.innerHTML += '<span style="color: red">Info 中含有图片</span><br>';
}
break;
} else if (bdinfo == '' && (codehides[i].textContent.trim().match(/Disc.Title:/i) || codehides[i].textContent.trim().match(/Disc.Label:/i) || codehides[i].textContent.trim().match(/DISC.INFO:/i))) {//放宽了对 BDInfo 格式的要求
bdinfo = codehides[i].textContent;
if (codehides[i].getElementsByTagName('img').length != 0 || bdinfo.match(/\[img\][\S\s]*?\[\/img\]/i)) {
a.innerHTML += '<span style="color: red">Info 中含有图片</span><br>';
}
}
}
}
if (quote && !mediainfo && !bdinfo) {
//console.log('quote');
for (let i = 0; i < quote.length; i++) {
let quotet = quote[i].textContent.replace('引用', '').trim();
if (quotet.match(/(General|概览|概要)\s*(ID|Complete\sname|完整名称|File\sname|Unique\sID|唯一ID|CompleteName)/i)) {
mediainfo = quotet.replace(/This release.*\n/i, '');
if (quote[i].getElementsByTagName('img').length != 0 || mediainfo.match(/\[img\][\S\s]*?\[\/img\]/i)) {
a.innerHTML += '<span style="color: red">Info 中含有图片</span><br>';
}
break;
} else if (quotet.match(/(★★★★★ General Information ★★★★★)\n\n(Complete name)/i)) {//非标准 MediaInfo
//console.log('非标准 MediaInfo');
mediainfo = quotet;
if (quote[i].getElementsByTagName('img').length != 0 || mediainfo.match(/\[img\][\S\s]*?\[\/img\]/i)) {
a.innerHTML += '<span style="color: red">Info 中含有图片</span><br>';
}
break;
} else if (quotet.match(/^(Disc\sTitle|Disc\sLabel|DISC\sINFO|QUICK SUMMARY):/i)) {
if (bdinfo == '') {
bdinfo = quotet;
if (quote[i].getElementsByTagName('img').length != 0 || bdinfo.match(/\[img\][\S\s]*?\[\/img\]/i)) {
a.innerHTML += '<span style="color: red">Info 中含有图片</span><br>';
}
}
} else if (!infosp && (quotet.match(/(General\sInformation|参.*数.*:|★General★|★概述★|文件名称.*iNT-TLF|中上英下|\[RELEASE INFORMATION\]|MNHD-FRDS|mUHD-FRDS|cXcY@FRDS|QHstudIo小组作品NFO信息|\.Release\.Info|【出品小组】|Release\sGroup:\sBMDru|【制作团队】.*(NGB|HDCTV))/i) || (quotet.match(/Video/i) && quotet.match(/Audio/i) && quotet.match(/Subtitle/i)))) {
infosp = quotet;
if (quote[i].getElementsByTagName('img').length != 0 || infosp.match(/\[img\][\S\s]*?\[\/img\]/i)) {
a.innerHTML += '<span style="color: red">Info 中含有图片</span><br>';
}
//console.log(infosp);
}
}
}
if (mediainfo) {
TORRENT_INFO.mediainfo.full = mediainfo.replace(/\u2002/g, ' ');
mediainfo = TORRENT_INFO.mediainfo.full.replace('Audio Video Interleave', '').replace(/[\s\S]*?General/i, '').replace(/(?<=Video) \#[1-9]\n/ig, '\n').replace(/(?<=Audio) \#[1-9]\n/ig, '\n').replace(/(?<=Text) \#[1-9]\n/ig, '\n');
//console.log(mediainfo.match(/Menu.*\n00:00:00\.000[\S\s]*$/i)[0]);
mediainfo = mediainfo.replace(/(Menu|菜单).*\n00:00:00\.000[\S\s]*$/i, '');
//console.log(mediainfo);
let stream;
//General
match = mediainfo.match(/[\s\S]*?(?=((Video|视频).*\nID|(Audio|音频).*\nID|(Text|文本).*\nID|$))/ig)[0];
if (match.match(/(File size|文件大小).*(?=\n)/i)) {
TORRENT_INFO.mediainfo.filesize = match.match(/(File size|文件大小).*(?=\n)/i)[0];
}
mediainfo = mediainfo.replace(match, '');
//Video
match = mediainfo.match(/(Video|视频)[\s\S]*?(?=(\n(Video|视频).*\nID|\n(Audio|音频).*\nID|\n(Text|文本).*\nID|$))/ig);
//console.log(`video ${match}`);
if (match) {
stream = match[0];
mediainfo = mediainfo.replace(stream, '');
if (stream.match(/(Format|格式).*/i)) {
mediainfo = mediainfo.replace(stream, '');
} else {
stream = match[1];
mediainfo = mediainfo.replace(stream, '');
}
if (stream.match(/(Format|格式).*/i)) {
TORRENT_INFO.mediainfo.video.format = stream.match(/(Format|格式).*/i)[0];
if (TORRENT_INFO.mediainfo.video.format.match(/MPEG/) && stream.match(/Format version.*Version 2/)) {
TORRENT_INFO.mediainfo.video.format = 'MPEG-2';
} else if (TORRENT_INFO.mediainfo.video.format.match(/AV1/)) {
TORRENT_INFO.mediainfo.video.format = 'AV1';
}
}
if (stream.match(/HDR (format|格式).*/i)) {
let hdr_format = stream.match(/HDR (format|格式).*/i)[0];
if (hdr_format.match(/Dolby Vision/i)) {
TORRENT_INFO.mediainfo.video.dv = true;
TORRENT_INFO.results.dv = true;
}
// if (hdr_format.match(/HDR/i)) {
// TORRENT_INFO.mediainfo.video.hdr = true;
// TORRENT_INFO.results.hdr = true;
// }
// if (hdr_format.match(/HDR/i)) {
// TORRENT_INFO.mediainfo.video.hdr = true;
// TORRENT_INFO.results.hdr = true;
// }
if (hdr_format.match(/HDR10\+/i)) {
TORRENT_INFO.mediainfo.video.hdr = 'HDR10+';
TORRENT_INFO.results.hdr = 'HDR10+';
} else if (hdr_format.match(/HDR\sVivid/i)) {
TORRENT_INFO.mediainfo.video.hdr = 'HDR Vivid';
TORRENT_INFO.results.hdr = 'HDR Vivid';
} else if (hdr_format.match(/HDR10/i)) {
TORRENT_INFO.mediainfo.video.hdr = 'HDR10';
TORRENT_INFO.results.hdr = 'HDR10';
}
} else if (stream.match(/(Transfer characteristics|Transfer_characteristics_Original).*PQ.*/i)) {
TORRENT_INFO.mediainfo.video.hdr = 'HDR10';
TORRENT_INFO.results.hdr = 'HDR10';
}
if (stream.match(/(Transfer characteristics|Transfer_characteristics_Original).*HLG.*/i)) {
TORRENT_INFO.mediainfo.video.hdr = 'HLG';
TORRENT_INFO.results.hdr = 'HLG';
}
if (stream.match(/(Bit rate).*/i)) {
TORRENT_INFO.mediainfo.video.bitrates = stream.match(/(Bit rate).*/i)[0].replace(/\s/g, '');
if (TORRENT_INFO.mediainfo.video.bitrates.match(/Mb/i)) {
TORRENT_INFO.mediainfo.video.bitrates = parseFloat(TORRENT_INFO.mediainfo.video.bitrates.replace(/Bitrate:/i, '').replace(/Mb\/s/i, '')) * 1024;
} else if (TORRENT_INFO.mediainfo.video.bitrates.match(/kb/i)) {
TORRENT_INFO.mediainfo.video.bitrates = parseInt(TORRENT_INFO.mediainfo.video.bitrates.replace(/Bitrate:/i, '').replace(/kb\/s/i, ''));
}
}
if (stream.match(/Frame rate.*FPS\n/i)) {
if (stream.match(/Frame rate.*23.976.*FPS\n/i)) {
TORRENT_INFO.mediainfo.video.fps = '24FPS';
} else if (stream.match(/Frame rate.*24.975.*FPS\n/i)) {
TORRENT_INFO.mediainfo.video.fps = '25FPS';
} else if (stream.match(/Frame rate.*29.970.*FPS\n/i)) {
TORRENT_INFO.mediainfo.video.fps = '30FPS';
} else if (stream.match(/Frame rate.*59.*FPS\n/i)) {
TORRENT_INFO.mediainfo.video.fps = '60FPS';
} else if (stream.match(/Frame rate.*119.*FPS\n/i)) {
TORRENT_INFO.mediainfo.video.fps = '120FPS';
} else {
TORRENT_INFO.mediainfo.video.fps = stream.match(/Frame rate.*FPS(?=\n)/i)[0].replace(/\s/g, '').replace(/\.000/g, '').match(/[0-9]{2,3}FPS/i)[0];
}
}
if (stream.match(/(Width|宽度).*/i)) {
TORRENT_INFO.mediainfo.video.width = parseInt(stream.match(/(Width|宽度).*/i)[0].replace(/\s/g, '').match(/[0-9]{3,4}(?=(pixels|像素))/i)[0]);
}
if (stream.match(/(Height|高度).*/i)) {
TORRENT_INFO.mediainfo.video.height = parseInt(stream.match(/(Height|高度).*/i)[0].replace(/\s/g, '').match(/[0-9]{3,4}(?=(pixels|像素))/i)[0]);
}
if (stream.match(/(Bit depth|位深).*10 (bits|位)\s*\n/i)) {
//Bit depth : 10 bits
TORRENT_INFO.mediainfo.video.bitdepth = '10';
} else if (stream.match(/(Bit depth|位深).*8 (bits|位)\s*\n/i)) {
//Bit depth : 8 bits
TORRENT_INFO.mediainfo.video.bitdepth = '8';
}
if (stream.match(/(Scan type|扫描类型|扫描方式).*/i)) {
TORRENT_INFO.mediainfo.video.scantype = stream.match(/(?<=(Scan type|扫描类型|扫描方式)[\s]*: ).*/i)[0];
}
if (stream.match(/(Writing library|编码函数库).*/i)) {
TORRENT_INFO.mediainfo.video.codec = stream.match(/(Writing library|编码函数库).*/i)[0];
if (TORRENT_INFO.mediainfo.video.codec.match(/x264/)) {
TORRENT_INFO.mediainfo.video.codec = 'x264';
} else if (TORRENT_INFO.mediainfo.video.codec.match(/x265/)) {
TORRENT_INFO.mediainfo.video.codec = 'x265';
} else if (TORRENT_INFO.mediainfo.video.codec.match(/XviD/)) {
TORRENT_INFO.mediainfo.video.codec = 'XviD';
} else if (TORRENT_INFO.mediainfo.video.codec.match(/DivX/)) {
TORRENT_INFO.mediainfo.video.codec = 'DivX';
} else {
console.log(TORRENT_INFO.mediainfo.video.codec);
}
} else {
console.log(`Writing library 识别:
宽松匹配:${stream.match(/Writing library.*(?=\n)/i)}
严格匹配:${stream.match(/Writing library(.|\n)*(?=audio)/i)}`);
}
if (stream.match(/Standard.*NTSC/i)) {
TORRENT_INFO.mediainfo.standard = 'NTSC';
} else if (stream.match(/Standard.*PAL/i)) {
TORRENT_INFO.mediainfo.standard = 'PAL';
}
}
//console.log(mediainfo);
//Audios
match = mediainfo.match(/\n(Audio|音频).*\n[\s\S]*?(?=(\n(Audio|音频).*\nID|\n(Text|文本).*\nID|$))/ig);
for (let i = 1; match; i++) {
stream = match[0].trim();
//console.log(stream);
mediainfo = mediainfo.replace(stream, '');
let audioTitle = 0;
let audioLang = 0;
let audioAdd = 0;
var audio_x = {
format: '',
channels: '',
object: '',
title: '',
lang: '',
};
if (stream.match(/(Format|格式).*/)) {
audio_x.format = stream.match(/(Format|格式).*/)[0];
if (audio_x.format.match(/MLP FBA 16-ch/)) {
audio_x.format = 'TrueHD';
audio_x.object = 'Atmos';
} else if (audio_x.format.match(/DTS XLL X/)) {
audio_x.format = 'DTS:X';
audio_x.channels = '7.1';
} else if (audio_x.format.match(/MLP FBA/)) {
audio_x.format = 'TrueHD';
} else if (audio_x.format.match(/(DTS XLL|DTS ES XLL|DTS ES XXCH XLL|DTS 96\/24 XLL)/)) {
audio_x.format = 'DTS-HD MA';
} else if (audio_x.format.match(/(DTS XBR)/)) {
audio_x.format = 'DTS-HD HR';
} else if (audio_x.format.match(/PCM/)) {
audio_x.format = 'LPCM';
} else if (audio_x.format.match(/FLAC/)) {
audio_x.format = 'FLAC';
} else if (audio_x.format.match(/DTS LBR/)) {
audio_x.format = 'DTSE';
} else if (audio_x.format.match(/Opus/)) {
audio_x.format = 'Opus';
} else if (audio_x.format.match(/AAC/)) {
audio_x.format = 'AAC';
} else if (audio_x.format.match(/DTS/)) {
audio_x.format = 'DTS';
} else if (audio_x.format.match(/E-AC-3 JOC/)) {
audio_x.format = 'DDP';
audio_x.object = 'Atmos';
} else if (audio_x.format.match(/E-AC-3/)) {
audio_x.format = 'DDP';
} else if (audio_x.format.match(/AC-3/)) {
audio_x.format = 'DD';
} else if (audio_x.format.match(/MPEG Audio/)) {
audio_x.format = 'MPEG';
}
}
if (audio_x.format == 'MPEG' && stream.match(/Format profile.*Layer 2/)) {
audio_x.format = 'MP2';
} else if (audio_x.format == 'MPEG' && stream.match(/Format profile.*Layer 3/)) {
audio_x.format = 'MP3';
}
//console.log(`audio match ${stream.match(/(Channel layout|ChannelLayout_Original|声道布局).*/i)}`);
if (stream.match(/(Channel layout|ChannelLayout_Original|声道布局).*/i) && audio_x.channels == '') {
let channel_layout = stream.match(/(?<=(Channel layout|ChannelLayout_Original|声道布局)).*/i)[0];
let channels = 0;
if (channel_layout.match(/LFE/i)) {
channels += 0.1;
channel_layout = channel_layout.replace(channel_layout.match(/LFE/i), '');
//console.log(channel_layout);
}
if (channel_layout.match(/Lss?/i)) {
channels += 1;
channel_layout = channel_layout.replace(channel_layout.match(/Lss?/i), '');
//console.log(channel_layout);
}
if (channel_layout.match(/Lrs?/i)) {
channels += 1;
channel_layout = channel_layout.replace(channel_layout.match(/Lrs?/i), '');
//console.log(channel_layout);
}
if (channel_layout.match(/Rss?/i)) {
channels += 1;
channel_layout = channel_layout.replace(channel_layout.match(/Rss?/i), '');
//console.log(channel_layout);
}
if (channel_layout.match(/Rrs?/i)) {
channels += 1;
channel_layout = channel_layout.replace(channel_layout.match(/Rrs?/i), '');
//console.log(channel_layout);
}
if (channel_layout.match(/Cb/i)) {
channels += 1;
channel_layout = channel_layout.replace(channel_layout.match(/Cb/i), '');
//console.log(channel_layout);
}
if (channel_layout.match(/Lb/i)) {
channels += 1;
channel_layout = channel_layout.replace(channel_layout.match(/Lb/i), '');
//console.log(channel_layout);
}
if (channel_layout.match(/Rb/i)) {
channels += 1;
channel_layout = channel_layout.replace(channel_layout.match(/Rb/i), '');
//console.log(channel_layout);
}
if (channel_layout.match(/(C|M)s?/i)) {
channels += 1;
channel_layout = channel_layout.replace(channel_layout.match(/C/i), '');
//console.log(channel_layout);
}
if (channel_layout.match(/L/i)) {
channels += 1;
channel_layout = channel_layout.replace(channel_layout.match(/L/i), '');
//console.log(channel_layout);
}
if (channel_layout.match(/R/i)) {
channels += 1;
}
audio_x.channels = channels.toFixed(1).toString();
//console.log('Channel layout');
} else if (stream.match(/Channel positions.*Front: L C R, Side: L R, Back: L R, LFE/i)) {
audio_x.channels = '7.1';
} else if (stream.match(/Channel positions.*Front: L C R, Side: L R, LFE/i)) {
audio_x.channels = '5.1';
} else if (stream.match(/Channel positions.*Front: L C R, Back: C/i)) {
audio_x.channels = '4.0';
} else if (stream.match(/Channel\(s\).*6\schannels/i)) {
audio_x.channels = '5.1';
} else if (stream.match(/Channel\(s\).*[12].*/i)) {
audio_x.channels = stream.match(/Channel\(s\).*[12].*/i)[0].match(/[12]/)[0] + '.0';
}
//判断音轨语言
if (stream.match(/Title.*/)) {
TORRENT_INFO.mediainfo.video.audio_lang += 1;
audio_x.title = stream.match(/Title.*/)[0];
if (audio_x.title.match(/(国语|普通话|国配|台配|Mandarin)/)) {
audioTitle = 1;
}
if (audio_x.title.match(/(粤语|粵語|粤配|Cantonese|Contonese)/)) {
audioTitle = 3;
}
} else {
audio_x.title = null;
}
if (stream.match(/(Language|语言).*/)) {
TORRENT_INFO.mediainfo.video.audio_lang += 1;
audio_x.lang = stream.match(/(Language|语言).*/)[0];
if (audio_x.lang.match(/(Chinese|Mandarin)/i)) {
audioLang = 5;
}
if (audio_x.lang.match(/(Cantonese)/i)) {
audioLang = 9;
}
} else {
audio_x.lang = null;
}
audioAdd = audioTitle + audioLang;
//console.log(`audioAdd ${audioAdd}`);
if (audioAdd == 1) {
TORRENT_INFO.mediainfo.hasMandarin = true;
} else if (audioAdd == 3) {
TORRENT_INFO.mediainfo.hasCantonese = true;
} else if (audioAdd == 6) {
TORRENT_INFO.mediainfo.hasMandarin = true;
} else if (audioAdd == 12) {
TORRENT_INFO.mediainfo.hasCantonese = true;
} else if (audioAdd == 5) {
TORRENT_INFO.mediainfo.hasMandarin = true;
} else if (audioAdd == 9 || audioAdd == 8) {
TORRENT_INFO.mediainfo.hasCantonese = true;
}
let key = 'audio' + i;
TORRENT_INFO.mediainfo.audios[key] = audio_x;
match = mediainfo.match(/\n(Audio|音频).*\n[\s\S]*?(?=(\n(Audio|音频).*\nID|\n(Text|文本).*\nID|$))/ig);
}
//console.log(mediainfo);
//Subtitles
match = mediainfo.match(/\n(Text|文本).*\n[\s\S]*?(?=(\n(Text|文本).*\nID|$))/ig);
for (let i = 1; match; i++) {
stream = match[0].trim();
//console.log(stream);
mediainfo = mediainfo.replace(stream, '');
/* let textTitleCHN = 0;
let textTitleENG = 0;
let textLang = 0;
let textAdd = 0; */
var text_x = {
title: '',
lang: '',
};
if (stream.match(/(Language|语言).*(Chinese|Mandarin)/i)) {
TORRENT_INFO.mediainfo.hasChineseSubtitles = true;
if (stream.match(/Title.*(cht&eng|中英|chs&eng)/i)) {
TORRENT_INFO.mediainfo.hasEnglishSubtitles = true;
}
}
if (stream.match(/(Language|语言).*English/i)) {
TORRENT_INFO.mediainfo.hasEnglishSubtitles = true;
}
if (stream.match(/Title.*(中上.下|.下中上|简.双语|繁.双语)/i)) {
TORRENT_INFO.mediainfo.hasChineseSubtitles = true;
TORRENT_INFO.mediainfo.hasEnglishSubtitles = true;
}
let key = 'text' + i;
TORRENT_INFO.mediainfo.subtitles[key] = text_x;
match = mediainfo.match(/\n(Text|文本).*\n[\s\S]*?(?=(\n(Text|文本).*\nID|$))/ig);
}
}
if (bdinfo && !mediainfo) {
bdinfo = bdinfo.replace(/\u2002/g, ' ');
//console.log(bdinfo);
TORRENT_INFO.bdinfo.full = bdinfo;
if (TORRENT_INFO.tableinfo.subtitle.match(/DIY/i)) {
TORRENT_INFO.bdinfo.DIY = true;
}
let ai = 1;
let si = 1;
//Video
var bdinfo_rows = [];
bdinfo.split('\n').forEach( (r) => { if (r.match(/ kbps/)) { bdinfo_rows.push(r); } } );
bdinfo_rows.forEach((r) => {
//console.log(r);
if (r.match(/Video/) && TORRENT_INFO.bdinfo.video.format == '') {
//format
if (r.match('AVC')) {TORRENT_INFO.bdinfo.video.format = 'AVC';}
else if (r.match('HEVC')) {TORRENT_INFO.bdinfo.video.format = 'HEVC';}
else if (r.match('VC-1')) {TORRENT_INFO.bdinfo.video.format = 'VC-1';}
else if (r.match('MPEG-2')) {TORRENT_INFO.bdinfo.video.format = 'MPEG-2';}
//bitrates
if (r.match(/[0-9]{1,5} kbps/)) {
TORRENT_INFO.bdinfo.video.bitrates = r.match(/[0-9]{1,5} kbps/)[0];
}
//resolution
if (r.match(/[1-2][0-9]{3}(p|i)/)) {
TORRENT_INFO.bdinfo.video.resolution = r.match(/[1-2][0-9]{3}(p|i)/)[0];
}
//HDR
if (r.match(/HDR10\+/)) {
TORRENT_INFO.bdinfo.video.hdr = 'HDR10+';
TORRENT_INFO.results.hdr = 'HDR10+';
} else if (r.match(/HDR/)) {
TORRENT_INFO.bdinfo.video.hdr = 'HDR';
TORRENT_INFO.results.hdr = 'HDR';
}
}
else if (r.match(/Video/) && r.match(/Dolby Vision/)) {
//DV
if (r.match(/[0-9]{1,5} kbps/)) {
TORRENT_INFO.bdinfo.video_dv = r.match(/[0-9]{1,5} kbps/)[0];
}
TORRENT_INFO.bdinfo.video.dv = true;
TORRENT_INFO.results.dv = true;
}
//Subtitles
else if (r.match(/(Subtitle|Presentation Graphics)/)) {
if (r.match('Chinese')) {
TORRENT_INFO.bdinfo.subtitles.push('Mandarin');
TORRENT_INFO.mediainfo.hasChineseSubtitles = true;
}
if (r.match('English') || r.match('英')) {
TORRENT_INFO.bdinfo.subtitles.push('English');
TORRENT_INFO.mediainfo.hasEnglishSubtitles = true;
}
TORRENT_INFO.bdinfo.subtitles.push('有字幕');
}
//Audios
else if (r.match(/(Audio|kHz)/)) {
var audio_x = {
format: '',
channels: '',
lang: '',
object: '',
};
//format
if (r.match(/Dolby TrueHD\/Atmos Audio/)) {
audio_x.format = 'TrueHD';
audio_x.channels = '7.1';
audio_x.object = 'Atmos'
} else if (r.match(/Dolby TrueHD Audio/)) {
audio_x.format = 'TrueHD';
} else if (r.match(/DTS-HD Master Audio/)) {
audio_x.format = 'DTS-HD MA';
} else if (r.match(/DTS-HD High-Res/)) {
audio_x.format = 'DTS-HD HR';
} else if (r.match(/DTS/)) {
audio_x.format = 'DTS';
} else if (r.match(/Dolby Digital Plus Audio/)) {
audio_x.format = 'DDP';
} else if (r.match(/Dolby Digital Audio/)) {
audio_x.format = 'DD';
} else if (r.match(/LPCM Audio/)) {
audio_x.format = 'LPCM';
} else {
audio_x.format = 'Unknown';
}
//channels
if (r.match(/[1-7]\.[0-1]( |-ES )\//) && audio_x.channels == '') {
audio_x.channels = r.match(/[1-7]\.[0-1]( |-ES )\//)[0].replace('-ES', '').replace(' /', '');
}
//language
if (r.match('Chinese')) {
audio_x.lang = 'Mandarin';
TORRENT_INFO.mediainfo.hasMandarin = true;
} else if (r.match('Cantonese')) {
audio_x.lang = 'Cantonese';
TORRENT_INFO.mediainfo.hasCantonese = true;
}
let key = 'audio' + ai;
ai++;
TORRENT_INFO.bdinfo.audios[key] = audio_x;
}
})
}
//获取 titleinfo
var title = document.getElementById('top');
//分离主标题和免费信息
TORRENT_INFO.titleinfo.origin = title.firstChild.textContent.trim();
TORRENT_INFO.titleinfo.freeinfo = title.textContent.replace(TORRENT_INFO.titleinfo.origin, '');
TORRENT_INFO.results.title = TORRENT_INFO.titleinfo.origin;
//获取台标
if (TORRENT_INFO.results.title.match(/^(CCTV4K|CHC|CWJDTV)/i)) {
match = TORRENT_INFO.results.title.match(/^(CCTV4K|CHC|CWJDTV)/i);
TORRENT_INFO.titleinfo.logo = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Logo##');
} else if (TORRENT_INFO.results.title.match(/^Jade/i) && TORRENT_INFO.tableinfo.hasTagCantonese == true) {
match = TORRENT_INFO.results.title.match(/^Jade/i);
TORRENT_INFO.titleinfo.logo = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Logo##');
}
//获取:标题 REMUX 信息
if (TORRENT_INFO.results.title.match(/REMUX/i)) {
TORRENT_INFO.titleinfo.remux = true;
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(TORRENT_INFO.results.title.match(/REMUX/i)[0], '##REMUX##');
}
//获取:标题媒介1
if (TORRENT_INFO.results.title.match(/Blu-?ray/i)) {
match = TORRENT_INFO.results.title.match(/Blu-?ray/i);
TORRENT_INFO.titleinfo.source = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Source##');
TORRENT_INFO.results.source = 'Blu-ray';
//获取:标题媒介2
} else if (TORRENT_INFO.results.title.match(/WEBRip/i)) {
match = TORRENT_INFO.results.title.match(/WEBRip/i);
TORRENT_INFO.titleinfo.source = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Source##');
TORRENT_INFO.results.source = 'WEBRip';
//获取标题媒介3
} else if (TORRENT_INFO.results.title.match(/WEB-?D?L?/i)) {//删除了对“WEB”和“WEBDL”的匹配
match = TORRENT_INFO.results.title.match(/WEB-?D?L?/i);
TORRENT_INFO.titleinfo.source = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Source##');
TORRENT_INFO.results.source = 'WEB-DL';
//获取标题媒介4
} else if (TORRENT_INFO.results.title.match(/HDTVRip/i)) {
match = TORRENT_INFO.results.title.match(/HDTVRip/i);
TORRENT_INFO.titleinfo.source = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Source##');
TORRENT_INFO.results.source = 'HDTVRip';
//获取标题媒介5
} else if (TORRENT_INFO.results.title.match(/U?HDTV/i)) {
match = TORRENT_INFO.results.title.match(/U?HDTV/i);
TORRENT_INFO.titleinfo.source = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Source##');
TORRENT_INFO.results.source = 'HDTV';
//获取标题媒介6
} else if (TORRENT_INFO.results.title.match(/DVDRip/i)) {
match = TORRENT_INFO.results.title.match(/DVDRip/i);
TORRENT_INFO.titleinfo.source = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Source##');
TORRENT_INFO.results.source = 'DVDRip';
//获取标题媒介7
} else if (TORRENT_INFO.results.title.match(/DVD[59]?/i) && TORRENT_INFO.results.title.match(/(PAL|NTSC)/i)) {
match = TORRENT_INFO.results.title.match(/DVD[59]?/i);
TORRENT_INFO.titleinfo.source = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Source##');
TORRENT_INFO.results.source = 'DVD';
match = TORRENT_INFO.results.title.match(/(PAL|NTSC)/i);
TORRENT_INFO.titleinfo.standard = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Standard##');
} else if (TORRENT_INFO.results.title.match(/DVD[59]?/i) && TORRENT_INFO.titleinfo.remux) {
match = TORRENT_INFO.results.title.match(/DVD[59]?/i);
TORRENT_INFO.titleinfo.source = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Source##');
TORRENT_INFO.results.source = 'DVD';
}
//获取标题视频编码
if (TORRENT_INFO.results.title.match(/(HEVC|AVC|x264|x265|H(\.|\s)?264|H(\.|\s)?265|Xvid|VC-?1|MPEG-?2|AV1|VP9)/i)) {
match = TORRENT_INFO.results.title.match(/(HEVC|AVC|x264|x265|H(\.|\s)?264|H(\.|\s)?265|Xvid|VC-?1|MPEG-?2|AV1|VP9)/i);
TORRENT_INFO.titleinfo.vcodec = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Vcodec##');
}
// if (TORRENT_INFO.results.source != 'DVDRip') {
//获取标题视频分辨率1
if (TORRENT_INFO.results.title.match(/(480p|576p|720p|1080p|2160p|4320p)/i)) {
match = TORRENT_INFO.results.title.match(/(480p|576p|720p|1080p|2160p|4320p)/i);
TORRENT_INFO.titleinfo.resolution = match[0].trim();
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Resolution##');
//获取标题视频分辨率2
} else if (TORRENT_INFO.results.title.match(/8K/i)) {
match = TORRENT_INFO.results.title.match(/8K/i);
TORRENT_INFO.titleinfo.resolution = '4320p';
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Resolution##');
//获取标题视频分辨率3
} else if (TORRENT_INFO.results.title.match(/4K/i)) {
match = TORRENT_INFO.results.title.match(/4K/i);
TORRENT_INFO.titleinfo.resolution = '2160p';
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Resolution##');
//获取标题视频分辨率3
} else if (TORRENT_INFO.results.title.match(/480i|576i|1080i/i)) {
match = TORRENT_INFO.results.title.match(/480i|576i|1080i/i);
TORRENT_INFO.titleinfo.resolution = match[0].trim();
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Resolution##');
}
// } else {
// //获取 DVDRip 标题视频分辨率1
// if (TORRENT_INFO.results.title.match(/(480p|576p|720p|1080p)/i)) {
// match = TORRENT_INFO.results.title.match(/(480p|576p|720p|1080p)/i);
// TORRENT_INFO.titleinfo.resolution = match[0].trim();
// TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Resolution##');
// }
// }
//获取标题音频对象1
if (TORRENT_INFO.results.title.match(/(Atmos|DDPA)/i)) {
TORRENT_INFO.titleinfo.aobject = 'Atmos';
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(/Atmos/i, '##Atmos##').replace(/DDPA/i, 'DDP##Atmos##');
}
//title = TORRENT_INFO.titleinfo.origin.replace('-HDC', '');
//获取前置:标题拆分
//console.log(`TORRENT_INFO.titleinfo.origin ${TORRENT_INFO.titleinfo.origin}`);
if (TORRENT_INFO.titleinfo.source != '') {
title = TORRENT_INFO.titleinfo.origin.replace(TORRENT_INFO.titleinfo.source, '##Source##').split('##Source##');
title[1] = TORRENT_INFO.titleinfo.origin.replace(title[0], '').replace(TORRENT_INFO.titleinfo.source, '').replace(TORRENT_INFO.titleinfo.resolution, '').replace('Remux', '').replace(TORRENT_INFO.titleinfo.vcodec, '');//剩下制作组、音频编码、音频通道、HDR 信息、HQ 等
title[0] = title[0].replace(TORRENT_INFO.titleinfo.resolution, '').replace('Remux', '').replace(TORRENT_INFO.titleinfo.vcodec, '');//剩下片名、年份、季数、集数、剪辑版本、Hybrid 等
} else if (TORRENT_INFO.titleinfo.resolution != '') {
title = TORRENT_INFO.titleinfo.origin.replace(TORRENT_INFO.titleinfo.resolution, '##Resolution##').split('##Resolution##');
title[1] = TORRENT_INFO.titleinfo.origin.replace(title[0], '').replace(TORRENT_INFO.titleinfo.resolution, '').replace(TORRENT_INFO.titleinfo.source, '').replace('Remux', '').replace(TORRENT_INFO.titleinfo.vcodec, '');//剩下片名、年份、季数、集数、剪辑版本、Hybrid 等
title[0] = title[0].replace(TORRENT_INFO.titleinfo.source, '').replace('Remux', '').replace(TORRENT_INFO.titleinfo.vcodec, '');//剩下制作组、音频通道、HDR 信息、HQ 等
}
if (title[0] && title[1]) {
//console.log(`title[0] is ${title[0]}`);
//console.log(`title[1] is ${title[1]}`);
//获取标题音频编码1
if (title[1].match(/(DTS(-|\s|\.)?HD.?MA|DTS(-|\s\.)?HD.?HR|DD\+|DDP|LPCM|DTS.?X|MP2|EAC-?3|FLAC|TrueHD|AAC|OPUS)/ig)) {
match = title[1].match(/(DTS(-|\s|\.)?HD.?MA|DTS(-|\s\.)?HD.?HR|DD\+|DDP|LPCM|DTS.?X|MP2|EAC-?3|FLAC|TrueHD|AAC|OPUS)/ig);
TORRENT_INFO.titleinfo.acodec = match[0].replace('.', ' ').trim();
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Acodec##');
title[1] = title[1].replace(match[0], '');
//获取标题音频编码2
} else if (title[1].match(/(DTS|DD|PCM|AC-?3)/ig)) {
match = title[1].match(/(DTS|DD|PCM|AC-?3)/ig);
TORRENT_INFO.titleinfo.acodec = match[0].trim();
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Acodec##');
title[1] = title[1].replace(match[0], '');
}
//获取标题音频通道
if (title[1].match(/[1-7]\.[0-1]/ig)) {
match = title[1].match(/[1-7]\.[0-1]/ig);
TORRENT_INFO.titleinfo.channels = match[0].trim();
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Channels##');
title[1] = title[1].replace(match[0], '');
}
//获取标题制作组
if (title[1].match(/£.*(-|@)FRDS/i)) {
TORRENT_INFO.titleinfo.group = title[1].match(/£.*(-|@)FRDS/i)[0].trim();
} else {
try {
let groups = title[1].split('-');
//console.log(`group length is ${groups.length}`);
if (groups.length > 1) {
TORRENT_INFO.titleinfo.group += groups[1].trim();
}
for (let i = 2; i < groups.length; i++) {
TORRENT_INFO.titleinfo.group += '-';
TORRENT_INFO.titleinfo.group += groups[i].trim();
}
if (TORRENT_INFO.titleinfo.group == '') {
TORRENT_INFO.titleinfo.group = title[1].split('@')[1].trim();
}
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(TORRENT_INFO.titleinfo.group, '##Group##')
} catch (e) {
//console.log('无制作组');
}
}
//获取季数
if (title[0].match(/S[0-2][0-9]/i)) {
match = title[0].match(/S[0-2][0-9]/i);
TORRENT_INFO.titleinfo.season = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Season##');
title[0] = title[0].replace(match[0], '');
}
//获取集数
if (title[0].match(/E[0-9]{1,4}-E?[0-9]{1,4}/)) {
match = title[0].match(/E[0-9]{1,4}-E?[0-9]{1,4}/);
let chapterArr = match[0].replaceAll('E', '').split('-');
TORRENT_INFO.titleinfo.chapter1 = chapterArr[0];
TORRENT_INFO.titleinfo.chapter2 = chapterArr[1];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Chapters##');
title[0] = title[0].replace(match[0], '');
} else if (title[0].match(/E[0-9]{1,4}/)) {
match = title[0].match(/E[0-9]{1,4}/);
TORRENT_INFO.titleinfo.chapter1 = '-1';
TORRENT_INFO.titleinfo.chapter2 = match[0].replaceAll('E', '');
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##Chapters##');
title[0] = title[0].replace(match[0], '');
} else {
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace('##Season##', '##Season####Chapters##');
}
//获取片名和年份
//console.log(TORRENT_INFO.results.title);
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(/\*/g, '0');
TORRENT_INFO.titleinfo.name = TORRENT_INFO.results.title.replace('##Logo##', '').split('##', 1)[0].trim();//先获取一个片名
if (TORRENT_INFO.descrinfo.moviename.match(TORRENT_INFO.titleinfo.name)) {
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(TORRENT_INFO.titleinfo.name, '##Name##');//如果直接匹配,说明主标题没有年份可以获取或在季数后面
match = TORRENT_INFO.results.title.match(/[1-2][0-9]{3}/g);
if (match) {
TORRENT_INFO.titleinfo.year = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(TORRENT_INFO.titleinfo.year, '##Year##');
}
} else if (title[0].match(/[1-2][0-9]{3}/g)) {//否则先获取年份再获取片名
match = title[0].match(/[1-2][0-9]{3}/g);
TORRENT_INFO.titleinfo.year = match[match.length - 1];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(TORRENT_INFO.titleinfo.year, '##Year##');
TORRENT_INFO.titleinfo.name = TORRENT_INFO.results.title.replace('##Logo##', '').split('##', 1)[0].trim();
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(TORRENT_INFO.titleinfo.name, '##Name##');
} else {
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(TORRENT_INFO.titleinfo.name, '##Name##');//说明主标题没有年份可以获取
}
}
// TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(TORRENT_INFO.titleinfo.name, '##Name##');
//获取标题 FPS
if (TORRENT_INFO.results.title.match(/[0-9]{2,3}FPS/i)) {
match = TORRENT_INFO.results.title.match(/[0-9]{2,3}FPS/i)
TORRENT_INFO.titleinfo.fps = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##FPS##');
}
//获取标题 HDR
if (TORRENT_INFO.results.title.match(/HDR10(\+|P)/i)) {
match = TORRENT_INFO.results.title.match(/HDR10(\+|P)/i);
TORRENT_INFO.titleinfo.hdr = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##HDR##');
} else if (TORRENT_INFO.results.title.match(/HDR.Vivid/i)) {
match = TORRENT_INFO.results.title.match(/HDR.Vivid/i);
TORRENT_INFO.titleinfo.hdr = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##HDR##');
} else if (TORRENT_INFO.results.title.match(/HDR(10)?/i)) {
match = TORRENT_INFO.results.title.match(/HDR(10)?/i);
TORRENT_INFO.titleinfo.hdr = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##HDR##');
} else if (TORRENT_INFO.results.title.match(/HLG/i)) {
TORRENT_INFO.titleinfo.hdr = 'HLG';
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace('HLG', '##HDR##');
}
//获取标题 DV
if (TORRENT_INFO.results.title.match(/(DV|DoVi|Dolby Vision)/i)) {
match = TORRENT_INFO.results.title.match(/(DV|DoVi|Dolby Vision)/i);
TORRENT_INFO.titleinfo.dv = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##DoVi##');
}
//获取 10bit
if (TORRENT_INFO.results.title.match(/10bits?/i)) {
match = TORRENT_INFO.results.title.match(/10bits?/i);
TORRENT_INFO.titleinfo.bitdepth = match[0];
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace(match[0], '##BitDepth##');
}
TORRENT_INFO.results.title = TORRENT_INFO.results.title.replace('##Name####', '##Name## ##');
//获取 MiniBD
if (TORRENT_INFO.results.title.match(/MiniBD/)) {
TORRENT_INFO.titleinfo.minibd = true;
}
//获取 3D HOU/HSBS
if (TORRENT_INFO.results.title.match(/HOU|HSBS/)) {
TORRENT_INFO.titleinfo.format3d = TORRENT_INFO.results.title.match(/HOU|HSBS/)[0];
}
//获取解析 Info
//公开版本不提供 General Information 的判断,请务必附上完整正确的 MediaInfo
//逻辑:重要检查
//逻辑:MediaInfo 检查
if (TORRENT_INFO.bdinfo.full != '' && TORRENT_INFO.mediainfo.full == '') {
//逻辑:标题媒介检查
if (TORRENT_INFO.titleinfo.minibd) {
//console.log('质量为 Encode');
TORRENT_INFO.results.zhiliang = 'Encode';
} else if (TORRENT_INFO.bdinfo.video.resolution == '2160p') {
//console.log('质量为 UHD Discs');
TORRENT_INFO.results.zhiliang = 'UHD';
TORRENT_INFO.results.source = 'Blu-ray';
} else if (TORRENT_INFO.bdinfo.video.resolution.match(/1080/)) {
//console.log('质量为 BD Discs');
TORRENT_INFO.results.zhiliang = 'BD';
TORRENT_INFO.results.source = 'Blu-ray';
} else {
console.log('BDInfo 质量为 Unknown');
}
//逻辑:分辨率检查
TORRENT_INFO.results.resolution = TORRENT_INFO.bdinfo.video.resolution;
//逻辑:视频编码检查
if (TORRENT_INFO.results.zhiliang == 'Encode') {
if (TORRENT_INFO.bdinfo.video.format.match(/AVC/)) {
//console.log('视频编码为 x264');
TORRENT_INFO.results.vcodec = 'x264';
} else if (TORRENT_INFO.bdinfo.video.format.match(/HEVC/)) {
//console.log('视频编码为 x265');
TORRENT_INFO.results.vcodec = 'x265';
}
} else {
TORRENT_INFO.results.vcodec = TORRENT_INFO.bdinfo.video.format;
}
//逻辑:音频编码检查
} else if (TORRENT_INFO.mediainfo.full != '' || infosp) {
//逻辑:标题媒介检查
if (TORRENT_INFO.titleinfo.remux) {
//console.log('质量为 REMUX');
TORRENT_INFO.results.zhiliang = 'REMUX';
} else if (TORRENT_INFO.results.source == 'Blu-ray' && (TORRENT_INFO.mediainfo.video.codec.match(/(x264|x265)/i) || TORRENT_INFO.mediainfo.video.format == 'AV1')) {//TORRENT_INFO.titleinfo.source.match(/(Blu-?ray|DVD)/i)
// if (false) {
// console.log('质量为 REMUX');
// TORRENT_INFO.results.zhiliang = 'REMUX';
// } else {
//console.log('质量为 Encode');
TORRENT_INFO.results.zhiliang = 'Encode';
// }
} else if (TORRENT_INFO.results.source == 'Blu-ray' && TORRENT_INFO.titleinfo.group.match(/(FRDS|beAst|WScode|Dream|WiKi|CMCT|ANK-Raws|TLF|HDH$|HDS$)/i)) {//TORRENT_INFO.titleinfo.source.match(/(Blu-?ray|DVD)/i)
// if (TORRENT_INFO.mediainfo.video.bitrates > 50000 && TORRENT_INFO.results.resolution > 1080) {
// console.log('质量可能为 REMUX');
// TORRENT_INFO.results.zhiliang = 'REMUX';
// } else if (TORRENT_INFO.mediainfo.video.bitrates > 15600 && TORRENT_INFO.results.resolution <= 1080) {
// console.log('质量可能为 REMUX');
// TORRENT_INFO.results.zhiliang = 'REMUX';
// } else {
//console.log('质量为 Encode');
TORRENT_INFO.results.zhiliang = 'Encode';
// }
} else if (TORRENT_INFO.results.source == 'WEB-DL' && TORRENT_INFO.titleinfo.group.match(/(FRDS)/i)) {//TORRENT_INFO.titleinfo.source.match(/(Blu-?ray|DVD)/i)
//console.log('质量为 Encode');
TORRENT_INFO.results.zhiliang = 'Encode';
} else if (TORRENT_INFO.results.source == 'WEB-DL') {//TORRENT_INFO.titleinfo.source.match(/(Blu-?ray|DVD)/i)
//console.log('质量为 WEB-DL');
TORRENT_INFO.results.zhiliang = 'WEB-DL';
} else if (TORRENT_INFO.results.source == 'WEBRip') {//TORRENT_INFO.titleinfo.source.match(/(Blu-?ray|DVD)/i)
//console.log('质量为 Encode');
TORRENT_INFO.results.zhiliang = 'Encode';
} else if (TORRENT_INFO.results.source == 'HDTVRip') {//TORRENT_INFO.titleinfo.source.match(/(Blu-?ray|DVD)/i)
//console.log('质量为 Encode');
TORRENT_INFO.results.zhiliang = 'Encode';
} else if (TORRENT_INFO.results.source == 'HDTV') {//TORRENT_INFO.titleinfo.source.match(/(Blu-?ray|DVD)/i)
//console.log('质量为 HDTV');
TORRENT_INFO.results.zhiliang = 'HDTV';
} else if (TORRENT_INFO.results.source == 'DVDRip' || (TORRENT_INFO.mediainfo.video.codec.match(/(Xvid|DivX)/i))) {//TORRENT_INFO.titleinfo.source.match(/(Blu-?ray|DVD)/i)
//console.log('质量为 Encode');
TORRENT_INFO.results.zhiliang = 'Encode';
} else if (TORRENT_INFO.results.source == 'DVD') {//TORRENT_INFO.titleinfo.source.match(/(Blu-?ray|DVD)/i)
//console.log('质量为 DVD');
TORRENT_INFO.results.zhiliang = 'DVD';
} else {
console.log('MediaInfo 质量为 Unknown');
}
//逻辑:视频编码检查
if (TORRENT_INFO.mediainfo.video.format == 'MPEG-2') {
//console.log('视频编码为 MPEG2');
TORRENT_INFO.results.vcodec = 'MPEG-2';
} else if (TORRENT_INFO.mediainfo.video.codec == 'XviD') {
//console.log('视频编码为 XviD');
TORRENT_INFO.results.vcodec = 'XviD';
} else if (TORRENT_INFO.mediainfo.video.format.match(/AV1/)) {
//console.log('视频编码为 AV1');
TORRENT_INFO.results.vcodec = 'AV1';
} else if (TORRENT_INFO.mediainfo.video.format.match(/VP9/i)) {
//console.log('视频编码为 VP9');
TORRENT_INFO.results.vcodec = 'VP9';
} else if (TORRENT_INFO.mediainfo.video.format.match(/VC-1/)) {
//console.log('视频编码为 VC-1');
TORRENT_INFO.results.vcodec = 'VC-1';
} else if (TORRENT_INFO.results.zhiliang == 'REMUX') {
if (TORRENT_INFO.mediainfo.video.format.match(/AVC/)) {
//console.log('视频编码为 AVC');
TORRENT_INFO.results.vcodec = 'AVC';
} else if (TORRENT_INFO.mediainfo.video.format.match(/HEVC/)) {
//console.log('视频编码为 HEVC');
TORRENT_INFO.results.vcodec = 'HEVC';
} else if (TORRENT_INFO.mediainfo.video.format.match(/VC-1/)) {
//console.log('视频编码为 VC-1');
TORRENT_INFO.results.vcodec = 'VC-1';
}
} else if (TORRENT_INFO.results.zhiliang == 'Encode') {
if (TORRENT_INFO.mediainfo.video.format.match(/AVC/) || TORRENT_INFO.mediainfo.video.codec.match(/x264/)) {
//console.log('视频编码为 x264');
TORRENT_INFO.results.vcodec = 'x264';
} else if (TORRENT_INFO.mediainfo.video.format.match(/HEVC/) || TORRENT_INFO.mediainfo.video.codec.match(/x265/)) {
//console.log('视频编码为 x265');
TORRENT_INFO.results.vcodec = 'x265';
}
} else if (TORRENT_INFO.mediainfo.video.codec.match(/(x264|x265|Xvid)/i)) {
//console.log(`视频编码为 ${TORRENT_INFO.mediainfo.video.codec}`);
TORRENT_INFO.results.vcodec = TORRENT_INFO.mediainfo.video.codec;
} else if (TORRENT_INFO.mediainfo.video.format.match(/AVC/)) {
//console.log('视频编码为 H264');
TORRENT_INFO.results.vcodec = 'H264';
} else if (TORRENT_INFO.mediainfo.video.format.match(/HEVC/)) {
//console.log('视频编码为 H265');
TORRENT_INFO.results.vcodec = 'H265';
} else if (false) {//(TORRENT_INFO.mediainfo.video.format.match(/MPEG/)) {
//console.log('视频编码为 MPEG2');
TORRENT_INFO.results.vcodec = 'MPEG-2';
} else {
error.push( `MediaInfo 视频编码为 ${TORRENT_INFO.mediainfo.video.format}`)
console.log(`MediaInfo 视频编码为 ${TORRENT_INFO.mediainfo.video.format}`);
}
//逻辑:音频编码检查
//逻辑:分辨率检查
var minusresult = TORRENT_INFO.mediainfo.video.width - TORRENT_INFO.mediainfo.video.height;
//console.log(minusresult);
if (TORRENT_INFO.mediainfo.video.width < TORRENT_INFO.mediainfo.video.height) {
minusresult = 0 - minusresult;
console.log(`竖屏短剧宽小于高 ${minusresult}`);
}
// if (TORRENT_INFO.mediainfo.video.height == 1080 && (TORRENT_INFO.mediainfo.video.scantype == 'Interlaced' || TORRENT_INFO.mediainfo.video.scantype == 'MBAFF')) {
// console.log('分辨率为 1080i');
// TORRENT_INFO.results.resolution = '1080i';
// } else if (minusresult > (4096 - 1592)) {
// console.log('分辨率为 4320p');
// TORRENT_INFO.results.resolution = '4320p';
// } else if (minusresult > (1920 - 696) || (TORRENT_INFO.mediainfo.video.width > TORRENT_INFO.mediainfo.video.height && TORRENT_INFO.mediainfo.video.height == 2160)) {
// console.log('分辨率为 2160p');
// TORRENT_INFO.results.resolution = '2160p';
// } else if (minusresult > (1280 - 528) || (TORRENT_INFO.mediainfo.video.width > TORRENT_INFO.mediainfo.video.height && TORRENT_INFO.mediainfo.video.height == 1080)) {
// console.log('分辨率为 1080p');
// TORRENT_INFO.results.resolution = '1080p';
// } else if (minusresult > (1024 - 520) || (TORRENT_INFO.mediainfo.video.width > 1260 && TORRENT_INFO.mediainfo.video.width <= 1280) || TORRENT_INFO.mediainfo.video.height == 720) {
// console.log('分辨率为 720p');
// TORRENT_INFO.results.resolution = '720p';
// } else if (TORRENT_INFO.mediainfo.video.height > 480 && TORRENT_INFO.mediainfo.video.height <= 576) {
// console.log('分辨率为 576p');
// TORRENT_INFO.results.resolution = '576p';
// } else if (TORRENT_INFO.mediainfo.video.height > 350 && TORRENT_INFO.mediainfo.video.height <= 480) {
// console.log('分辨率为 480p');
// TORRENT_INFO.results.resolution = '480p';
// } else {
// console.log(`MediaInfo 分辨率为 ${TORRENT_INFO.titleinfo.resolution}?`);
// }
if (minusresult > (4096 - 1248)) {
//console.log('分辨率为 4320p');
TORRENT_INFO.results.resolution = '4320';
} else if (minusresult > (1920 - 672) || (TORRENT_INFO.mediainfo.video.width > TORRENT_INFO.mediainfo.video.height && TORRENT_INFO.mediainfo.video.height == 2160)) {
//console.log('分辨率为 2160p');
TORRENT_INFO.results.resolution = '2160';
} else if (minusresult > (1280 - 480) || (TORRENT_INFO.mediainfo.video.width > TORRENT_INFO.mediainfo.video.height && TORRENT_INFO.mediainfo.video.height == 1080)) {
//console.log('分辨率为 1080');
TORRENT_INFO.results.resolution = '1080';
} else if (minusresult > (1024 - 520) || (TORRENT_INFO.mediainfo.video.width > 1260 && TORRENT_INFO.mediainfo.video.width <= 1280) || TORRENT_INFO.mediainfo.video.height == 720) {
//console.log('分辨率为 720p');
TORRENT_INFO.results.resolution = '720';
} else if (TORRENT_INFO.mediainfo.video.height > 480 && TORRENT_INFO.mediainfo.video.height <= 576) {
//console.log('分辨率为 576p');
TORRENT_INFO.results.resolution = '576';
} else if (TORRENT_INFO.mediainfo.video.height > 350 && TORRENT_INFO.mediainfo.video.height <= 480) {
//console.log('分辨率为 480p');
TORRENT_INFO.results.resolution = '480';
} else {
//console.log(`MediaInfo 分辨率为 ${TORRENT_INFO.titleinfo.resolution}?`);
}
if (TORRENT_INFO.mediainfo.full != '' && TORRENT_INFO.results.resolution != '') {
if (TORRENT_INFO.mediainfo.video.scantype.match(/(Interlaced|MBAFF|隔行扫描)/i)) {
TORRENT_INFO.results.resolution += 'i';
} else {
TORRENT_INFO.results.resolution += 'p';
}
} else if (TORRENT_INFO.results.resolution != '') {
if (TORRENT_INFO.results.source == 'HDTV' && TORRENT_INFO.results.resolution != '2160') {
TORRENT_INFO.results.resolution += 'i';
} else {
TORRENT_INFO.results.resolution += 'p';
}
}
}
//逻辑:类型
// if (TORRENT_INFO.descrinfo.category == '纪录片') {
// TORRENT_INFO.results.category = '纪录片';
// } else if (TORRENT_INFO.tableinfo.subtitle.match('演唱会')) {
// TORRENT_INFO.results.category = '舞台演出';
// } else if (TORRENT_INFO.descrinfo.category == '动画') {
// TORRENT_INFO.results.category = '动画';
// } else if (TORRENT_INFO.descrinfo.category == '综艺') {
// TORRENT_INFO.results.category = '综艺';
// } else if (TORRENT_INFO.descrinfo.chapters != '' || TORRENT_INFO.tableinfo.subtitle.match(/短剧/) || TORRENT_INFO.tableinfo.chapter2 != '') {
// TORRENT_INFO.results.category = '电视剧';
// } else if (TORRENT_INFO.descrinfo.category != '') {
// TORRENT_INFO.results.category = '电影';
// }
if (TORRENT_INFO.descrinfo.categorys.indexOf('纪录片') != -1) {
TORRENT_INFO.results.category = '纪录片';
} else if (TORRENT_INFO.tableinfo.subtitle.match('演唱会')) {
TORRENT_INFO.results.category = '舞台演出';
} else if (TORRENT_INFO.descrinfo.categorys.indexOf('动画') != -1) {
TORRENT_INFO.results.category = '动画';
} else if (TORRENT_INFO.descrinfo.categorys.indexOf('综艺') != -1 || TORRENT_INFO.descrinfo.categorys.indexOf('真人秀') != -1 || TORRENT_INFO.descrinfo.categorys.indexOf('脱口秀') != -1) {
TORRENT_INFO.results.category = '综艺';
} else if (TORRENT_INFO.descrinfo.chapters != '' || TORRENT_INFO.tableinfo.subtitle.match(/短剧/) || TORRENT_INFO.tableinfo.chapter2 != '') {
TORRENT_INFO.results.category = '电视剧';
} else {
TORRENT_INFO.results.category = '电影';
}
//逻辑:季数
if (TORRENT_INFO.titleinfo.season != '') {
if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?0?(1|一)\s?季/)) {
TORRENT_INFO.results.season = 'S01';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?0?(2|二)\s?季/)) {
TORRENT_INFO.results.season = 'S02';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?0?(3|三)\s?季/)) {
TORRENT_INFO.results.season = 'S03';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?0?(4|四)\s?季/)) {
TORRENT_INFO.results.season = 'S04';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?0?(5|五)\s?季/)) {
TORRENT_INFO.results.season = 'S05';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?0?(6|六)\s?季/)) {
TORRENT_INFO.results.season = 'S06';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?0?(7|七)\s?季/)) {
TORRENT_INFO.results.season = 'S07';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?0?(8|八)\s?季/)) {
TORRENT_INFO.results.season = 'S08';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?0?(9|九)\s?季/)) {
TORRENT_INFO.results.season = 'S09';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(10|十)\s?季/)) {
TORRENT_INFO.results.season = 'S10';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(11|十一)\s?季/)) {
TORRENT_INFO.results.season = 'S11';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(12|十二)\s?季/)) {
TORRENT_INFO.results.season = 'S12';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(13|十三)\s?季/)) {
TORRENT_INFO.results.season = 'S13';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(14|十四)\s?季/)) {
TORRENT_INFO.results.season = 'S14';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(15|十五)\s?季/)) {
TORRENT_INFO.results.season = 'S15';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(16|十六)\s?季/)) {
TORRENT_INFO.results.season = 'S16';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(17|十七)\s?季/)) {
TORRENT_INFO.results.season = 'S17';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(18|十八)\s?季/)) {
TORRENT_INFO.results.season = 'S18';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(19|十九)\s?季/)) {
TORRENT_INFO.results.season = 'S19';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(20|二十)\s?季/)) {
TORRENT_INFO.results.season = 'S20';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(21|二十一)\s?季/)) {
TORRENT_INFO.results.season = 'S21';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(22|二十二)\s?季/)) {
TORRENT_INFO.results.season = 'S22';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(23|二十三)\s?季/)) {
TORRENT_INFO.results.season = 'S23';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(24|二十四)\s?季/)) {
TORRENT_INFO.results.season = 'S24';
} else if (TORRENT_INFO.tableinfo.subtitle.match(/第\s?(25|二十五)\s?季/)) {
TORRENT_INFO.results.season = 'S25';
} else {
TORRENT_INFO.results.season = 'S01';
}
}
//逻辑:文件
var filelist;
jQuery.ajax({
async: false,
type: "get",
url: window.location.href.replace('details', 'viewfilelist'),
datatype: 'json',
success: function (data) {
filelist = data;
}
});
//console.log(filelist);
let filelistArr = filelist.split('<tr>');
TORRENT_INFO.results.files = filelistArr.length - 2;
let errorFileNum = 0;
let fileTypes = [];
if (TORRENT_INFO.results.category == '动画' || TORRENT_INFO.titleinfo.minibd) {
} else if (TORRENT_INFO.results.zhiliang.match(/(BD|UHD)/)) {
for (let i = 2; i < filelistArr.length; i++) {
let fileTemp = filelistArr[i];
let num1 = fileTemp.indexOf('>');
fileTemp = fileTemp.slice(num1 + 1);
let num2 = fileTemp.indexOf('</');
fileTemp = fileTemp.slice(0, num2);
let fileLastDotNum = fileTemp.lastIndexOf('.');
let fileType = fileTemp.slice(fileLastDotNum);
// if (fileType.match(/\.mkv|\.mp4|\.nfo|\.txt|\.srt/ig)) {
// errorFileNum += 1;
// fileTypes.push(fileType);
// } else {
// }
if (filelistArr[i].match(/\/dbmv\/stream|\/dbmv\/clipinf|\/dbmv\/playlist|\/bdmv\/backup\/clipinf|\/bdmv\/backup\/playlist/ig)) {
if (fileType.match(/\.clpi|\.mpls|\.m2ts/ig)) {
} else {
errorFileNum += 1;
fileTypes.push(fileType);
}
}
}
} else if (TORRENT_INFO.results.zhiliang == 'DVD') {
for (let i = 2; i < filelistArr.length; i++) {
let num1 = filelistArr[i].indexOf('>');
filelistArr[i] = filelistArr[i].slice(num1 + 1);
let num2 = filelistArr[i].indexOf('</');
filelistArr[i] = filelistArr[i].slice(0, num2);
let fileLastDotNum = filelistArr[i].lastIndexOf('.');
let fileType = filelistArr[i].slice(fileLastDotNum);
if (fileType.match(/\.vob|\.iso|\.ifo|\.bup/ig)) {
} else {
errorFileNum += 1;
fileTypes.push(fileType);
}
}
} else {
for (let i = 2; i < filelistArr.length; i++) {
let num1 = filelistArr[i].indexOf('>');
filelistArr[i] = filelistArr[i].slice(num1 + 1);
let num2 = filelistArr[i].indexOf('</');
filelistArr[i] = filelistArr[i].slice(0, num2);
let fileLastDotNum = filelistArr[i].lastIndexOf('.');
let fileType = filelistArr[i].slice(fileLastDotNum);
if (fileType.match(/\.mkv|\.mp4|\.vob|\.m2ts|\.ts|\.avi|\.mov|\.nfo|\.md5/ig)) {//|\.ass|\.srt|\.md5|\.nfo
} else {
errorFileNum += 1;
fileTypes.push(fileType);
}
}
}
//逻辑:集数
if (TORRENT_INFO.titleinfo.minibd) {
} else if (TORRENT_INFO.tableinfo.chapter2 == '') {
TORRENT_INFO.results.chapter2 = TORRENT_INFO.descrinfo.chapters;
} else {
TORRENT_INFO.results.chapter1 = TORRENT_INFO.tableinfo.chapter1;
TORRENT_INFO.results.chapter2 = TORRENT_INFO.tableinfo.chapter2;
}
console.log(TORRENT_INFO);
//页面提醒
span_correct = '<br><span>' + TORRENT_INFO.results.title + '</span>';
span_correct = span_correct.replace('##Logo##', TORRENT_INFO.titleinfo.logo);
//预处理
span_correct = span_correct.replace(/HQ/i, '<span style="color: white">HQ</span>').replace(/EDR/i, '<span style="color: white">EDR</span>')
match = span_correct.match(/[2-9]?Audios?/i);
if (match) {
span_correct = span_correct.replace(/[2-9]?Audios?/i, `<span style="color: white">${match[0]}</span>`);
}
if (TORRENT_INFO.titleinfo.origin.match(/.*?bit.*khz/i)) {
span_correct = '<br>歌手 - 歌曲名 发行年份 - 格式 位深 频率 - 制作组';
} else {
if (TORRENT_INFO.results.source == '') {
a.innerHTML += '<span class="title_rules_break">主标题缺少来源</span><br>';
error.push("主标题缺少来源");
}
if (TORRENT_INFO.results.vcodec == '') {
a.innerHTML += '<span class="title_rules_break">主标题缺少视频编码</span><br>';
error.push("主标题缺少视频编码");
}
if (TORRENT_INFO.titleinfo.resolution == '' && TORRENT_INFO.results.source != 'DVDRip') {
a.innerHTML += '<span class="title_rules_break">主标题缺少分辨率</span><br>';
error.push("主标题缺少分辨率");
}
for (let i = 0; i < table.rows.length; i++) {
if (table.rows[i].cells[0].textContent == '类别与标签' && !table.rows[i].cells[1].textContent.match(/\(.*\)/)) {
var as = table.rows[i].cells[1].getElementsByTagName('img');
var imgs = [];
//以下循环引起页面崩溃(图片长度问题?):https://pterclub.com/details.php?id=458971
if (as.length == 3) {
while (as.length > 0) {
imgs.push(as[0].cloneNode());
as[0].parentNode.remove();
}
} else if (as.length == 4) {
while (as.length > 1) {
imgs.push(as[0].cloneNode());
as[0].parentNode.remove();
}
}
//判断:类型
table.rows[i].cells[1].append(imgs[0]);
if (TORRENT_INFO.tableinfo.category.match(TORRENT_INFO.results.category) && TORRENT_INFO.results.category != '') {
a.innerHTML += '<span>必有 1:类型选择正确</span><br>';
table.rows[i].cells[1].innerHTML += icons[2];
//https://pterclub.com/pic/checked.png
} else if (TORRENT_INFO.results.category == '') {
a.innerHTML += '<span style="color: orange">必有 1:类型未判断</span><br>';
error.push("必有 1:类型未判断")
table.rows[i].cells[1].innerHTML += icons[1];
//https://pterclub.com/pic/questionmark.png
} else {
a.innerHTML += `<span style="color: red">必有 1:类型选择错误,类型应为 ${TORRENT_INFO.results.category}</span><br>`;
if(!TORRENT_INFO.titleinfo.group.match(/CatEDU/i)){
error.push( `必有 1:类型选择错误,类型应为 ${TORRENT_INFO.results.category}`)
}
table.rows[i].cells[1].innerHTML += icons[0];
table.rows[i].cells[1].innerHTML += `<font size="3"><b><span style="color: red" id="Category"> ${TORRENT_INFO.results.category} </span></b></font>`;
//https://pterclub.com/pic/close.png
}
//判断:质量
table.rows[i].cells[1].append(imgs[1]);
if (TORRENT_INFO.tableinfo.zhiliang.match(TORRENT_INFO.results.zhiliang) && TORRENT_INFO.results.zhiliang != '') {
a.innerHTML += '<span>必有 2:质量选择正确</span><br>';
table.rows[i].cells[1].innerHTML += icons[2];
} else if (TORRENT_INFO.results.zhiliang == '') {
a.innerHTML += '<span style="color: orange">必有 2:质量未判断</span><br>';
error.push("必有 2:质量未判断")
table.rows[i].cells[1].innerHTML += icons[1];
} else {
a.innerHTML += `<span style="color: red">必有 2:质量选择错误,应为 ${TORRENT_INFO.results.zhiliang}</span><br>`;
error.push("必有 2:质量选择错误")
table.rows[i].cells[1].innerHTML += icons[0];
table.rows[i].cells[1].innerHTML += `<font size="3"><b><span style="color: red" id="Quality"> ${TORRENT_INFO.results.zhiliang} </span></b></font>`;
}
//判断:地区
table.rows[i].cells[1].append(imgs[2]);
if (TORRENT_INFO.tableinfo.area.match(/大陆/) && TORRENT_INFO.descrinfo.area.match(/(大陆|中国)/)) {
a.innerHTML += '<span>必有 3:地区一致,为中国大陆</span><br>';
table.rows[i].cells[1].innerHTML += icons[2];
} else if (TORRENT_INFO.tableinfo.area.match(/香港/) && TORRENT_INFO.descrinfo.area.match(/香港/)) {
a.innerHTML += '<span>必有 3:地区一致,为香港</span><br>';
table.rows[i].cells[1].innerHTML += icons[2];
} else if (TORRENT_INFO.tableinfo.area.match(/台湾/) && TORRENT_INFO.descrinfo.area.match(/台湾/)) {
a.innerHTML += '<span>必有 3:地区一致,为台湾</span><br>';
table.rows[i].cells[1].innerHTML += icons[2];
} else if (TORRENT_INFO.tableinfo.area.match(/欧美/) && TORRENT_INFO.descrinfo.area.trim().match(/(俄罗斯|土耳其|阿尔巴尼亚|爱尔兰|爱沙尼亚|安道尔|奥地利|白俄罗斯|保加利亚|北马其顿|比利时|冰岛|波黑|波兰|丹麦|德国|法国|梵蒂冈|芬兰|荷兰|黑山|捷克|克罗地亚|拉脱维亚|立陶宛|列支敦士登|卢森堡|罗马尼亚|马耳他|摩尔多瓦|摩纳哥|挪威|葡萄牙|瑞典|瑞士|塞尔维亚|塞浦路斯|圣马力诺|斯洛伐克|斯洛文尼亚|乌克兰|西班牙|希腊|匈牙利|意大利|英国|安提瓜和巴布达|巴巴多斯|巴哈马|巴拿马|伯利兹|多米尼加|多米尼克|格林纳达|哥斯达黎加|古巴|海地|洪都拉斯|加拿大|美国|墨西哥|尼加拉瓜|萨尔瓦多|圣基茨和尼维斯|圣卢西亚|圣文森特和格林纳丁斯|特立尼达和多巴哥|危地马拉|牙买加|阿根廷|巴拉圭|巴西|秘鲁|玻利维亚|厄瓜多尔|哥伦比亚|圭亚那|苏里南|委内瑞拉|乌拉圭|智利|捷克斯洛伐克|澳大利亚|西德|新西兰)/)) {
a.innerHTML += '<span>必有 3:地区一致,为欧美</span><br>';
table.rows[i].cells[1].innerHTML += icons[2];
} else if (TORRENT_INFO.tableinfo.area.match(/日本/) && TORRENT_INFO.descrinfo.area.match(/日本/)) {
a.innerHTML += '<span>必有 3:地区一致,为日本</span><br>';
table.rows[i].cells[1].innerHTML += icons[2];
} else if (TORRENT_INFO.tableinfo.area.match(/韩国/) && TORRENT_INFO.descrinfo.area.match(/韩国/)) {
a.innerHTML += '<span>必有 3:地区一致,为韩国</span><br>';
table.rows[i].cells[1].innerHTML += icons[2];
} else if (TORRENT_INFO.tableinfo.area.match(/印度/) && TORRENT_INFO.descrinfo.area.match(/印度/)) {
a.innerHTML += '<span>必有 3:地区一致,为印度</span><br>';
table.rows[i].cells[1].innerHTML += icons[2];
} else if (TORRENT_INFO.tableinfo.area.match(/其它/) && TORRENT_INFO.descrinfo.area.match(/(阿联酋|约旦|尼日利亚|阿富汗|柬埔寨|刚果|黎巴嫩|菲律宾|泰国|苏联|南非|埃及|马来西亚|印度尼西亚|以色列|伊朗|古巴|新加坡|越南|老挝|巴基斯坦|巴勒斯坦|蒙古)/)) {
a.innerHTML += '<span>必有 3:地区一致,为 Other</span><br>';
table.rows[i].cells[1].innerHTML += icons[2];
} else if (TORRENT_INFO.descrinfo.area != '') {
a.innerHTML += `<span style="color: red">必有 3:地区不一致,应为 ${TORRENT_INFO.descrinfo.area}</span><br>`;
error.push(`必有 3:地区不一致,应为 ${TORRENT_INFO.descrinfo.area}`)
table.rows[i].cells[1].innerHTML += icons[0];
table.rows[i].cells[1].innerHTML += `<font size="3"><b><span style="color: red"> ${TORRENT_INFO.descrinfo.area} </span></b></font>`;
} else {
a.innerHTML += '<span style="color: orange">必有 3:地区未判断</span><br>';
error.push(`必有 3:地区未判断`)
table.rows[i].cells[1].innerHTML += icons[1];
}
// if (a.childNodes.length != 6) {
// a.innerHTML += '<span style="color: red">缺少必有项目</span><br>';
// console.log(a);
// }
table.rows[i].cells[1].firstChild.remove();
as = table.rows[i].cells[1].getElementsByTagName('a');
for (let j = 0; j < as.length; j++) {
table.rows[i].cells[1].append(as[0]);
}
// for (let i = 0; i < 50; i++) {
// if (table.rows[2].cells[1].firstChild.tagName == 'TEXT') {
// table.rows[2].cells[1].firstChild.remove();
// } else if (table.rows[2].cells[1].firstChild.tagName == 'A') {
// table.rows[2].cells[1].append(table.rows[2].cells[1].firstChild);
// if (table.rows[2].cells[1].firstChild.tagName == 'Text')
// }
}
}
//判断:显著错误
if (TORRENT_INFO.titleinfo.origin.replace(TORRENT_INFO.titleinfo.group, '').match(/(BDRip|BDMV|[^\x00-\xff])/i)) {
console.log(TORRENT_INFO.titleinfo.origin.replace(TORRENT_INFO.titleinfo.group, '').match(/(BDRip|BDMV|[^\x00-\xff])/i));
a.innerHTML += '<span style="color: red" class="title_rules_break">如有:主标题不符合命名规范(其他)</span><br>';
error.push(`如有:主标题不符合命名规范(其他)`);
} else if (TORRENT_INFO.results.title.match(/\./)) {
a.innerHTML += '<span style="color: red">如有:标题中有多余的点需要删除</span><br>';
error.push(`如有:标题中有多余的点需要删除`);
} else if (TORRENT_INFO.titleinfo.origin.match(/2\.05\.1/)) {
a.innerHTML += '<span style="color: red">如有:音频通道错误</span><br>';
error.push(`如有:音频通道错误`);
} else if (TORRENT_INFO.titleinfo.format == 'TrueHD' && TORRENT_INFO.titleinfo.channels != '7.1' && TORRENT_INFO.titleinfo.aobject == 'Atmos') {
a.innerHTML += '<span style="color: red">如有:音频对象错误</span><br>';
error.push(`如有:音频对象错误`);
} else if (TORRENT_INFO.titleinfo.group.match(/\s/)) {
a.innerHTML += '<span style="color: red">如有:标题中有扩展名等需要删除</span><br>';
error.push(`如有:标题中有扩展名等需要删除`);
} else if (TORRENT_INFO.results.title.match(/\(.*?\)/)) {
a.innerHTML += '<span style="color: red">如有:标题中有多余括号需要删除</span><br>';
error.push(`如有:标题中有多余括号需要删除`);
}
//判断:MediaInfo 检查
if (TORRENT_INFO.mediainfo.full == '' && TORRENT_INFO.bdinfo.full == '' && !infosp) {
//MediaInfo、BDInfo、infosp 都为空
//a.innerHTML += '<br><font size="2"><b><span style="color: red">缺少 MediaInfo 或 BDInfo</span></b><font><br><br>';
span_correct = span_correct.replace('##Resolution##', TORRENT_INFO.titleinfo.resolution);
span_correct = span_correct.replace('##Vcodec##', TORRENT_INFO.titleinfo.vcodec);
span_correct = span_correct.replace('##Acodec##', TORRENT_INFO.titleinfo.acodec);
span_correct = span_correct.replace('##Channels##', TORRENT_INFO.titleinfo.channels);
span_correct = span_correct.replace('##Atmos##', TORRENT_INFO.titleinfo.aobject);
span_correct = span_correct.replace('##Group##', TORRENT_INFO.titleinfo.group);
//span_correct = span_correct + TORRENT_INFO.titleinfo.freeinfo;
//span_correct += '<br><span style="color: red">缺少 MediaInfo 或 BDInfo</span>';
span_correct = '<br><span style="color: red">缺少 MediaInfo 或 BDInfo</span>';
error.push(`缺少 MediaInfo 或 BDInfo`)
} else if (TORRENT_INFO.mediainfo.full != '' || infosp) {
if (TORRENT_INFO.mediainfo.full == '' && infosp) {
a.innerHTML += `<br><span style="color: orange">如有:通过 ${TORRENT_INFO.titleinfo.group} 的解析 Info 进行分析</span><br>`;
}
//判断:分辨率
if (TORRENT_INFO.titleinfo.resolution == TORRENT_INFO.results.resolution) {
span_correct = span_correct.replace('##Resolution##', `<span style="color: #00FF00">${TORRENT_INFO.results.resolution}</span>`);
} else if (TORRENT_INFO.results.resolution == '') {
span_correct = span_correct.replace('##Resolution##', `<span style="color: orange">${TORRENT_INFO.titleinfo.resolution}</span>`);
} else {
span_correct = span_correct.replace('##Resolution##', `<span style="color: red">${TORRENT_INFO.results.resolution}</span>`);
if(!(TORRENT_INFO.titleinfo.group.match(/TLF/) && TORRENT_INFO.titleinfo.origin.match(/MiniSD/))){
error.push(`红色标题//判断:分辨率`)
}
}
//判断:视频编码
if (TORRENT_INFO.titleinfo.vcodec == TORRENT_INFO.results.vcodec) {
span_correct = span_correct.replace('##Vcodec##', `<span style="color: #00FF00">${TORRENT_INFO.results.vcodec}</span>`);
} else if (TORRENT_INFO.titleinfo.vcodec.match(/(H.?264|H.?265)/i)) {
match = TORRENT_INFO.titleinfo.vcodec.match(/(H.?264|H.?265)/i)[0];
if (match.replace('.', '') == TORRENT_INFO.results.vcodec) {
span_correct = span_correct.replace('##Vcodec##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.vcodec}</span>`);
} else if (match.replace(' ', '') == TORRENT_INFO.results.vcodec) {
span_correct = span_correct.replace('##Vcodec##', `<span style="color: red">${TORRENT_INFO.results.vcodec}</span>`);
error.push(`红色标题//判断:视频编码`)
} else if (TORRENT_INFO.results.vcodec == '') {
span_correct = span_correct.replace('##Vcodec##', `<span style="color: orange">${TORRENT_INFO.titleinfo.vcodec}</span>`);
} else {
span_correct = span_correct.replace('##Vcodec##', `<span style="color: red">${TORRENT_INFO.results.vcodec}</span>`);
error.push(`红色标题//判断:视频编码`)
}
} else if (TORRENT_INFO.results.vcodec == 'MPEG-2') {
if (TORRENT_INFO.titleinfo.vcodec.match(/MPEG-?2/i)) {
span_correct = span_correct.replace('##Vcodec##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.vcodec}</span>`);
} else {
span_correct = span_correct.replace('##Vcodec##', `<span style="color: red">${TORRENT_INFO.results.vcodec}</span>`);
error.push(`红色标题//判断:视频编码`)
}
} else if (TORRENT_INFO.results.zhiliang == '' || TORRENT_INFO.mediainfo.video.format == '') {
span_correct = span_correct.replace('##Vcodec##', `<span style="color: orange">${TORRENT_INFO.titleinfo.vcodec}</span>`);
} else {
span_correct = span_correct.replace('##Vcodec##', `<span style="color: red">${TORRENT_INFO.results.vcodec}</span>`);
error.push(`红色标题//判断:视频编码`)
}
//判断:音频编码
if (Object.keys(TORRENT_INFO.mediainfo.audios).length == 1) {
//对象
if (TORRENT_INFO.mediainfo.audios.audio1.object == 'Atmos' && TORRENT_INFO.titleinfo.aobject == 'Atmos') {
span_correct = span_correct.replace('##Atmos##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.aobject}</span>`);
} else if (TORRENT_INFO.mediainfo.audios.audio1.object == 'Atmos' && TORRENT_INFO.titleinfo.aobject == '') {
span_correct = span_correct.replace('##Acodec##', '##Acodec## ##Atmos## ').replace('##Atmos##', '<span style="color: red">Atmos</span>');
} else {
span_correct = span_correct.replace('##Atmos##', TORRENT_INFO.titleinfo.aobject);
}
//编码
if (TORRENT_INFO.mediainfo.audios.audio1.format.toLowerCase() == TORRENT_INFO.titleinfo.acodec.replace('EAC3', 'DDP').replace('DD+', 'DDP').toLowerCase()) {
span_correct = span_correct.replace('##Acodec##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.acodec}</span>`);
} else if (TORRENT_INFO.mediainfo.audios.audio1.format == TORRENT_INFO.titleinfo.acodec.replace(/AC-?3/i, 'DD')) {
span_correct = span_correct.replace('##Acodec##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.acodec}</span>`);
} else if (TORRENT_INFO.mediainfo.audios.audio1.format != '') {
span_correct = span_correct.replace('##Acodec##', `<span style="color: red">${TORRENT_INFO.mediainfo.audios.audio1.format}</span>`);
error.push(`红色主标题//编码`)
} else {
span_correct = span_correct.replace('##Acodec##', TORRENT_INFO.titleinfo.acodec);
}
//通道
if (TORRENT_INFO.mediainfo.audios.audio1.channels == TORRENT_INFO.titleinfo.channels) {
span_correct = span_correct.replace('##Channels##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.channels}</span>`);
} else if (TORRENT_INFO.titleinfo.channels != '') {
span_correct = span_correct.replace('##Channels##', `<span style="color: red">${TORRENT_INFO.mediainfo.audios.audio1.channels}</span>`);
error.push(`红色主标题//通道`)
//span_correct = span_correct.replace('##Channels##', TORRENT_INFO.titleinfo.channels);
}
} else {
//console.log(Object.keys(TORRENT_INFO.mediainfo.audios).length);
span_correct = span_correct.replace('##Acodec##', TORRENT_INFO.titleinfo.acodec);
span_correct = span_correct.replace('##Channels##', TORRENT_INFO.titleinfo.channels);
span_correct = span_correct.replace('##Atmos##', TORRENT_INFO.titleinfo.aobject);
}
span_correct = span_correct.replace('##Group##', TORRENT_INFO.titleinfo.group);
span_correct = span_correct + TORRENT_INFO.titleinfo.freeinfo;
} else if (TORRENT_INFO.bdinfo.full != '') {
//判断:分辨率
if (TORRENT_INFO.titleinfo.resolution == TORRENT_INFO.results.resolution) {
span_correct = span_correct.replace('##Resolution##', `<span style="color: #00FF00">${TORRENT_INFO.results.resolution}</span>`);
} else {
span_correct = span_correct.replace('##Resolution##', `<span style="color: red">${TORRENT_INFO.results.resolution}</span>`);
error.push(`红色主标题//判断:分辨率`)
}
//判断:视频编码
if (TORRENT_INFO.titleinfo.vcodec == TORRENT_INFO.results.vcodec) {
span_correct = span_correct.replace('##Vcodec##', `<span style="color: #00FF00">${TORRENT_INFO.results.vcodec}</span>`);
} else {
span_correct = span_correct.replace('##Vcodec##', `<span style="color: red">${TORRENT_INFO.results.vcodec}</span>`);
error.push(`红色主标题//判断:视频编码`)
}
//判断:音频编码
//console.log(Object.keys(TORRENT_INFO.bdinfo.audios).length);
if (Object.keys(TORRENT_INFO.bdinfo.audios).length == 1) {
if (TORRENT_INFO.bdinfo.audios.audio1.object == 'Atmos' && TORRENT_INFO.titleinfo.aobject == 'Atmos') {
span_correct = span_correct.replace('##Atmos##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.aobject}</span>`);
} else if (TORRENT_INFO.bdinfo.audios.audio1.object == 'Atmos' && TORRENT_INFO.titleinfo.aobject == '') {
span_correct = span_correct.replace('##Acodec##', '##Acodec## ##Atmos##').replace('##Atmos##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.aobject}</span>`);
} else {
span_correct = span_correct.replace('##Atmos##', TORRENT_INFO.titleinfo.aobject);
}
if (TORRENT_INFO.bdinfo.audios.audio1.format == TORRENT_INFO.titleinfo.acodec.replace('EAC3', 'DDP').replace('DD+', 'DDP')) {
span_correct = span_correct.replace('##Acodec##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.acodec}</span>`);
} else if (TORRENT_INFO.bdinfo.audios.audio1.format == TORRENT_INFO.titleinfo.acodec.replace('AC3', 'DD')) {
span_correct = span_correct.replace('##Acodec##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.acodec}</span>`);
} else if (TORRENT_INFO.bdinfo.audios.audio1.format != '') {
span_correct = span_correct.replace('##Acodec##', `<span style="color: red">${TORRENT_INFO.bdinfo.audios.audio1.format}</span>`);
error.push(`红色主标题//判断:音频编码`)
} else {
span_correct = span_correct.replace('##Acodec##', TORRENT_INFO.titleinfo.acodec);
}
if (TORRENT_INFO.bdinfo.audios.audio1.channels == TORRENT_INFO.titleinfo.channels) {
span_correct = span_correct.replace('##Channels##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.channels}</span>`);
} else if (TORRENT_INFO.titleinfo.channels != '') {
span_correct = span_correct.replace('##Channels##', `<span style="color: red">${TORRENT_INFO.bdinfo.audios.audio1.channels}</span>`);
error.push(`红色主标题//判断:音频编码`)
//span_correct = span_correct.replace('##Channels##', TORRENT_INFO.titleinfo.channels);
}
} else {
span_correct = span_correct.replace('##Acodec##', TORRENT_INFO.titleinfo.acodec);
span_correct = span_correct.replace('##Channels##', TORRENT_INFO.titleinfo.channels);
span_correct = span_correct.replace('##Atmos##', TORRENT_INFO.titleinfo.aobject);
}
span_correct = span_correct.replace('##Group##', TORRENT_INFO.titleinfo.group);
span_correct = span_correct.replace('DDPAtmos', 'DDPA');
span_correct = span_correct + TORRENT_INFO.titleinfo.freeinfo;
}
//判断 DVD 制式
if (TORRENT_INFO.mediainfo.standard == TORRENT_INFO.titleinfo.standard && TORRENT_INFO.mediainfo.standard != '') {
span_correct = span_correct.replace('##Standard##', `<span style="color: #00FF00">${TORRENT_INFO.mediainfo.standard}</span>`);
} else {
span_correct = span_correct.replace('##Standard##', `<span style="color: red">${TORRENT_INFO.mediainfo.standard}</span>`);
if(TORRENT_INFO.mediainfo.standard && TORRENT_INFO.mediainfo.standard != ''){
}
}
//判断:标题片名
match = TORRENT_INFO.descrinfo.moviename.replace(/\+/g, '@@').toLowerCase().match(TORRENT_INFO.titleinfo.name.replace(/\+/g, '@@').toLowerCase());
if (match && TORRENT_INFO.titleinfo.name.toLowerCase() != '') {
span_correct = span_correct.replace('##Name##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.name}</span>`);
} else if (TORRENT_INFO.titleinfo.name.toLowerCase() != '') {
span_correct = span_correct.replace('##Name##', `<span style="color: orange">${TORRENT_INFO.titleinfo.name}</span>`);
} else {
span_correct = span_correct.replace('##Name##', '');
a.innerHTML += '<span style="color: red" class="title_rules_break">如有:主标题不符合命名规范(片名)</span><br>';
error.push(`如有:主标题不符合命名规范(片名)`)
}
//判断:标题年份
if (TORRENT_INFO.results.category == '电影' && TORRENT_INFO.titleinfo.year == '') {
a.innerHTML += '<span style="color: red" class="title_rules_break">如有:标题缺少年份</span><br>';
error.push(`如有:标题缺少年份`)
} else if (Math.abs(parseInt(TORRENT_INFO.titleinfo.year) - parseInt(TORRENT_INFO.descrinfo.publishdate)) <= 1 && TORRENT_INFO.descrinfo.publishdate != '') {
span_correct = span_correct.replace('##Year##', `<span style="color: #00FF00">${TORRENT_INFO.descrinfo.publishdate}</span>`);
} else if (TORRENT_INFO.descrinfo.publishdate == '') {
span_correct = span_correct.replace('##Year##', `<span style="color: orange">${TORRENT_INFO.titleinfo.year}</span>`);
} else {
span_correct = span_correct.replace('##Year##', `<span style="color: red">${TORRENT_INFO.descrinfo.publishdate}</span>`);
if(TORRENT_INFO.results.category != '电视剧' && TORRENT_INFO.results.category != '综艺'){
error.push(`红色主标题//判断:标题年份`)
}
}
//判断:标题季数
if (TORRENT_INFO.titleinfo.season == TORRENT_INFO.results.season) {
span_correct = span_correct.replace('##Season##', `<span style="color: #00FF00">${TORRENT_INFO.results.season}</span>`);
} else {
span_correct = span_correct.replace('##Season##', `<span style="color: red">${TORRENT_INFO.results.season}</span>`);
error.push(`红色主标题//判断:标题季数`)
}
//判断:年份季数至少含一个
if (TORRENT_INFO.titleinfo.year == '' && TORRENT_INFO.titleinfo.season == '') {
a.innerHTML += '<span style="color: red" class="title_rules_break">如有:主标题不符合命名规范(季数)</span><br>';
error.push(`如有:主标题不符合命名规范(季数)`)
}
//判断:标题集数
if (TORRENT_INFO.tableinfo.chapter1 == '-1' && TORRENT_INFO.tableinfo.chapter2 != '') {
if (parseInt(TORRENT_INFO.titleinfo.chapter1) == parseInt(TORRENT_INFO.tableinfo.chapter1) && parseInt(TORRENT_INFO.titleinfo.chapter2) == parseInt(TORRENT_INFO.tableinfo.chapter2)) {
span_correct = span_correct.replace('##Chapters##', `<span style="color: #00FF00">E${TORRENT_INFO.titleinfo.chapter2}</span>`);
} else {
span_correct = span_correct.replace('##Chapters##', `<span style="color: red">E${TORRENT_INFO.results.chapter2}</span>`);
error.push(`红色主标题//判断:标题集数`)
}
} else if (TORRENT_INFO.tableinfo.chapter1 != '-1' && TORRENT_INFO.tableinfo.chapter1 != '') {
if (parseInt(TORRENT_INFO.titleinfo.chapter1) == parseInt(TORRENT_INFO.tableinfo.chapter1) && parseInt(TORRENT_INFO.titleinfo.chapter2) == parseInt(TORRENT_INFO.tableinfo.chapter2)) {
span_correct = span_correct.replace('##Chapters##', `<span style="color: #00FF00">E${TORRENT_INFO.titleinfo.chapter1}-E${TORRENT_INFO.titleinfo.chapter2}</span>`);
} else {
span_correct = span_correct.replace('##Chapters##', `<span style="color: red">E${TORRENT_INFO.results.chapter1}-E${TORRENT_INFO.results.chapter2}</span>`);
error.push(`红色主标题//判断:标题集数`)
}
} else {
span_correct = span_correct.replace('##Chapters##', '');
}
//判断:标题媒介
//span_correct = span_correct.replace('##Source##', TORRENT_INFO.titleinfo.source);
if (TORRENT_INFO.results.zhiliang == 'WEB-DL' && TORRENT_INFO.titleinfo.source != TORRENT_INFO.results.zhiliang) {
span_correct = span_correct.replace('##Source##', `<span style="color: red">${TORRENT_INFO.results.zhiliang}</span>`);
error.push(`红色主标题//判断:标题媒介`);
}
if (TORRENT_INFO.results.zhiliang == TORRENT_INFO.results.source) {
span_correct = span_correct.replace('##Source##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.source}</span>`);
} else if (TORRENT_INFO.results.zhiliang == 'Encode' && TORRENT_INFO.results.source == 'DVDRip') {
span_correct = span_correct.replace('##Source##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.source}</span>`);
} else if ((TORRENT_INFO.results.zhiliang == 'BD' || TORRENT_INFO.results.zhiliang == 'UHD' || TORRENT_INFO.results.zhiliang == 'REMUX' || TORRENT_INFO.results.zhiliang == 'Encode') && TORRENT_INFO.results.source == 'Blu-ray') {
span_correct = span_correct.replace('##Source##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.source}</span>`);
} else if ((TORRENT_INFO.results.zhiliang == 'DVD' || TORRENT_INFO.results.zhiliang == 'REMUX' || TORRENT_INFO.results.zhiliang == 'Encode') && TORRENT_INFO.results.source == 'DVD') {
span_correct = span_correct.replace('##Source##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.source}</span>`);
} else if (TORRENT_INFO.results.zhiliang == 'Encode' && TORRENT_INFO.results.source == 'HDTVRip') {
span_correct = span_correct.replace('##Source##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.source}</span>`);
} else if (TORRENT_INFO.results.zhiliang == 'Encode' && TORRENT_INFO.results.source == 'WEBRip') {
span_correct = span_correct.replace('##Source##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.source}</span>`);
} else if (TORRENT_INFO.results.zhiliang == 'Encode' && TORRENT_INFO.results.source == 'WEB-DL' && TORRENT_INFO.titleinfo.group.match(/FRDS/)) {
span_correct = span_correct.replace('##Source##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.source}</span>`);
} else if (TORRENT_INFO.results.zhiliang == '') {
span_correct = span_correct.replace('##Source##', `<span style="color: orange">${TORRENT_INFO.results.source}</span>`);
} else {
//console.log(TORRENT_INFO.titleinfo.group.match(/FRDS/));
span_correct = span_correct.replace('##Source##', `<span style="color: red">${TORRENT_INFO.results.source}</span>`);
error.push(`红色主标题//判断:标题媒介`);
}
//判断:标题 REMUX
if ((TORRENT_INFO.results.source == 'Blu-ray' || TORRENT_INFO.results.source == 'DVD') && TORRENT_INFO.results.zhiliang == 'REMUX') {
span_correct = span_correct.replace('##REMUX##', '<span style="color: #00FF00">REMUX</span>');
} else {
span_correct = span_correct.replace('##REMUX##', 'REMUX');
}
//判断:标题 FPS
match = TORRENT_INFO.titleinfo.fps.toLowerCase();
if (TORRENT_INFO.mediainfo.video.fps.toLowerCase() == match) {
span_correct = span_correct.replace('##FPS##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.fps}</span>`);
} else {
span_correct = span_correct.replace('##FPS##', `<span style="color: red">${TORRENT_INFO.mediainfo.video.fps}</span>`);
if(TORRENT_INFO.mediainfo.video.fps && TORRENT_INFO.mediainfo.video.fps != '24FPS'&& TORRENT_INFO.mediainfo.video.fps != '25FPS'&& TORRENT_INFO.mediainfo.video.fps != '30FPS'){
// error.push(`${TORRENT_INFO.mediainfo.video.fps}`)
}
}
//判断:HDR
//console.log(TORRENT_INFO.results.hdr);
//console.log(TORRENT_INFO.titleinfo.hdr);
if (TORRENT_INFO.titleinfo.hdr != '') {
if (TORRENT_INFO.results.hdr.match(TORRENT_INFO.titleinfo.hdr.replace('HDR10','HDR').replace('P', '+'))) {
span_correct = span_correct.replace('##HDR##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.hdr}</span>`);
} else if (TORRENT_INFO.results.hdr != 'Unknown') {
span_correct = span_correct.replace('##HDR##', `<span style="color: red">${TORRENT_INFO.results.hdr}</span>`);
error.push(`红色主标题//判断:HDR`)
} else if (TORRENT_INFO.results.hdr == 'Unknown') {
span_correct = span_correct.replace('##HDR##', `<span style="color: orange">${TORRENT_INFO.titleinfo.hdr}</span>`);
} else {
span_correct = span_correct.replace('##HDR##', '');
}
}
// if ((TORRENT_INFO.mediainfo.video.hdr == true || TORRENT_INFO.bdinfo.video.hdr == true) && TORRENT_INFO.titleinfo.hdr != '') {
// span_correct = span_correct.replace('##HDR##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.hdr}</span>`);
// } else if ((TORRENT_INFO.mediainfo.video.hdr == false || TORRENT_INFO.bdinfo.video.hdr == false) && TORRENT_INFO.titleinfo.group.match(/FRDS/i)) {
// span_correct = span_correct.replace('##HDR##', `<span style="color: orange">${TORRENT_INFO.titleinfo.hdr}</span>`);
// } else if ((TORRENT_INFO.mediainfo.video.hdr == false || TORRENT_INFO.bdinfo.video.hdr == false) && TORRENT_INFO.titleinfo.hdr != '') {
// span_correct = span_correct.replace('##HDR##', '');
// }
span_correct = span_correct.replace('##HDR##', '??');
//判断:DV
if ((TORRENT_INFO.mediainfo.video.dv == true || TORRENT_INFO.bdinfo.video.dv == true) && TORRENT_INFO.titleinfo.dv != '') {
span_correct = span_correct.replace('##DoVi##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.dv}</span>`);
} else if ((TORRENT_INFO.mediainfo.video.dv == false || TORRENT_INFO.bdinfo.video.dv == false) && TORRENT_INFO.titleinfo.dv != '') {
span_correct = span_correct.replace('##DoVi##', '');
error.push(`缺少 DV 信息`);
}
span_correct = span_correct.replace('##DoVi##', '??');
//判断:10 Bits
if (TORRENT_INFO.titleinfo.bitdepth.match(TORRENT_INFO.mediainfo.video.bitdepth) && TORRENT_INFO.mediainfo.video.bitdepth != '') {
span_correct = span_correct.replace('##BitDepth##', `<span style="color: #00FF00">${TORRENT_INFO.titleinfo.bitdepth}</span>`);
} else if (TORRENT_INFO.mediainfo.video.bitdepth == '') {
span_correct = span_correct.replace('##BitDepth##', `<span style="color: orange">${TORRENT_INFO.titleinfo.bitdepth}</span>`);
}
if (TORRENT_INFO.mediainfo.hasCantonese == false && TORRENT_INFO.tableinfo.hasTagCantonese == true) {
a.innerHTML += '<span style="color: red" id="Cantonese_N">没有 粤语</span><br>';
error.push(`没有 粤语`)
} else if (TORRENT_INFO.mediainfo.hasTagCantonese == false && TORRENT_INFO.tableinfo.hasTagMandarin == false && TORRENT_INFO.descrinfo.area.match(/香港/)) {
a.innerHTML += '<span style="color: red" id="Cantonese_Y">缺少国语或粤语标签</span><br>';
error.push(`缺少 粤语 标签`)
} else if (TORRENT_INFO.mediainfo.hasCantonese == true && TORRENT_INFO.tableinfo.hasTagCantonese == false) {
a.innerHTML += '<span style="color: red" id="Cantonese_Y">缺少 粤语 标签</span><br>';
error.push(`缺少 粤语 标签`)
}
if (TORRENT_INFO.mediainfo.hasMandarin == false && TORRENT_INFO.tableinfo.hasTagMandarin == true) {
a.innerHTML += '<span style="color: red">没有 国语</span><br>';
if (!TORRENT_INFO.tableinfo.area.match(/大陆/) && !TORRENT_INFO.descrinfo.area.match(/(大陆|中国)/)) {
error.push(`没有 国语`);
}
} else if ((TORRENT_INFO.mediainfo.hasMandarin == true || TORRENT_INFO.tableinfo.area.match(/大陆|台湾/)) && TORRENT_INFO.tableinfo.hasTagMandarin == false) {
a.innerHTML += '<span style="color: red">缺少 国语 标签</span><br>'
error.push(`缺少 国语 标签`)
}
//判断:字幕标签
if (Object.keys(TORRENT_INFO.mediainfo.subtitles).length == 0 && TORRENT_INFO.bdinfo.subtitles.length == 0 && TORRENT_INFO.tableinfo.hasTagChineseSubtitles == false && TORRENT_INFO.tableinfo.hasTagEnglishSubtitles == false) {//没有考虑解析 Info 获取到了字幕的情况(length = 0)
a.innerHTML += '<span style="color: red">检查是否有字幕</span><br>';
error.push(`检查是否有字幕`)
} else {
if (TORRENT_INFO.results.zhiliang != 'BD' && TORRENT_INFO.results.zhiliang != 'UHD') {
if ((TORRENT_INFO.tableinfo.area.match(/(大陆|台湾|香港)/) || TORRENT_INFO.mediainfo.hasChineseSubtitles == true || TORRENT_INFO.tableinfo.hasChineseExternalsubtitles == '外挂中字') && TORRENT_INFO.tableinfo.hasTagChineseSubtitles == false) {
a.innerHTML += '<span style="color: red">缺少 中字 标签</span><br>';
error.push(`缺少 中字 标签`)
} else if (!TORRENT_INFO.descrinfo.area.match(/(大陆|台湾|香港)/) && TORRENT_INFO.mediainfo.hasChineseSubtitles == false && TORRENT_INFO.tableinfo.hasChineseExternalsubtitles != '外挂中字' && TORRENT_INFO.tableinfo.hasTagChineseSubtitles == true) {
a.innerHTML += '<span style="color: orange">检查是否有硬中字字幕</span><br>';
error.push(`检查是否有硬中字字幕`)
}
} else {
if ((TORRENT_INFO.mediainfo.hasChineseSubtitles == true || TORRENT_INFO.tableinfo.subtitle.match(/内嵌中字|硬中字/) || TORRENT_INFO.tableinfo.hasChineseExternalsubtitles == '外挂中字') && TORRENT_INFO.tableinfo.hasTagChineseSubtitles == false) {
a.innerHTML += '<span style="color: red">缺少 中字 标签</span><br>';
error.push(`缺少 中字 标签`)
} else if (TORRENT_INFO.mediainfo.hasChineseSubtitles == false && TORRENT_INFO.tableinfo.hasChineseExternalsubtitles != '外挂中字'&& TORRENT_INFO.tableinfo.hasTagChineseSubtitles == true) {
a.innerHTML += '<span style="color: red">没有 中字</span><br>';
error.push(`没有 中字`)
}
}
//console.log(!TORRENT_INFO.descrinfo.area.match(/(大陆|台湾|香港)/));
if (TORRENT_INFO.mediainfo.hasEnglishSubtitles == false && TORRENT_INFO.tableinfo.hasEnglishExternalsubtitles != '外挂英字' && TORRENT_INFO.tableinfo.hasTagEnglishSubtitles == true) {
a.innerHTML += '<span style="color: orange">检查是否有硬英字字幕</span><br>';
error.push(`检查是否有硬英字字幕`)
}
}
if (TORRENT_INFO.bdinfo.DIY == true && TORRENT_INFO.tableinfo.hasTagDIY == false) {
a.innerHTML += '<span style="color: red" id="DIY_Y">缺少 DIY 标签</span><br>';
error.push(`缺少 DIY 标签`)
} else if (TORRENT_INFO.bdinfo.DIY == false && TORRENT_INFO.tableinfo.hasTagDIY == true) {
a.innerHTML += '<span style="color: red" id="DIY_N">非 DIY 原盘</span><br>';
error.push(`非 DIY 原盘`)
}
//判断:IMDb 链接
if (TORRENT_INFO.tableinfo.imdburl == '' && !TORRENT_INFO.descrinfo.area.match(/(大陆|台湾|香港)/)) {
a.innerHTML += '<br><span style="color: red">IMDb 链接为空</span><br>';
if(TORRENT_INFO.tableinfo.doubanurl == ''){
error.push(`IMDb 链接为空`)
}
} else if (TORRENT_INFO.tableinfo.imdburl != TORRENT_INFO.descrinfo.imdburl && TORRENT_INFO.descrinfo.imdburl != '') {
a.innerHTML += '<br><span style="color: red">IMDb 链接不一致</span><br>';
error.push(`IMDb 链接不一致`)
}
//判断:豆瓣链接
if (TORRENT_INFO.tableinfo.doubanurl == '') {
a.innerHTML += '<br><span style="color: red">豆瓣链接为空</span><br>';
if(TORRENT_INFO.tableinfo.imdburl == '' && TORRENT_INFO.titleinfo.group != 'GodDramas' ){
error.push(`豆瓣链接为空`)
}
} else if (TORRENT_INFO.tableinfo.doubanurl != TORRENT_INFO.descrinfo.doubanurl && TORRENT_INFO.descrinfo.doubanurl != '') {
a.innerHTML += '<br><span style="color: red">豆瓣链接不一致</span><br>';
error.push(`豆瓣链接不一致`)
}
//判断:图床
if(TORRENT_INFO.tableinfo.imageHostBlacklist){
a.innerHTML += '<br><span style="color: red">黑名单内的图床</span><br>';
error.push(`黑名单内的图床`)
}
//判断:文件
if (!TORRENT_INFO.results.zhiliang.match(/(BD|UHD|DVD)/i) && !TORRENT_INFO.titleinfo.group.match(/GodDramas/)) {
if (TORRENT_INFO.results.chapter2 != '' && TORRENT_INFO.results.chapter1 != '') {
if (TORRENT_INFO.results.chapter1 != '-1') {
if (TORRENT_INFO.results.files != parseInt(TORRENT_INFO.results.chapter2) - parseInt(TORRENT_INFO.results.chapter1) + 1) {
table.rows[4].cells[1].innerHTML += '<font size="3"><b><span style="color: red">错误的数量</font></b></font>';
a.innerHTML += '<br><span style="color: red">错误的文件数量</span><br>';
//console.log('第一种错误的文件数量');
error.push(`错误的文件数量`)
}
} else {
if ((TORRENT_INFO.tableinfo.chapter2 == '' && TORRENT_INFO.results.files != parseInt(TORRENT_INFO.descrinfo.chapters))
|| TORRENT_INFO.tableinfo.chapter2 != '' && TORRENT_INFO.results.files != 1) {
table.rows[4].cells[1].innerHTML += '<font size="3"><b><span style="color: red">错误的数量</font></b></font>';
a.innerHTML += '<br><span style="color: red">错误的文件数量</span><br>';
error.push(`错误的文件数量`)
}
}
} else if (TORRENT_INFO.results.chapter1 == '' && TORRENT_INFO.results.files != parseInt(TORRENT_INFO.results.chapter2)) {
table.rows[4].cells[1].innerHTML += '<font size="3"><b><span style="color: red">错误的数量</font></b></font>';
a.innerHTML += '<br><span style="color: red">错误的文件数量</span><br>';
error.push(`错误的文件数量`)
}
}
}
// if (TORRENT_INFO.results.chapter1 == '-1' && TORRENT_INFO.results.files != 1) {
// table.rows[4].cells[1].innerHTML += '<font size="3"><b><span style="color: red">错误的数量</font></b></font>';
// a.innerHTML += '<br><span style="color: red">错误的文件数量</span><br>';
// } else if ((TORRENT_INFO.tableinfo.chapter2 != '' && TORRENT_INFO.results.files != TORRENT_INFO.tableinfo.files)
// || (TORRENT_INFO.tableinfo.chapter2 == '' && TORRENT_INFO.descrinfo.chapters != '' && TORRENT_INFO.results.files != parseInt(TORRENT_INFO.descrinfo.chapters))) {
// table.rows[4].cells[1].innerHTML += '<font size="3"><b><span style="color: red">错误的数量</font></b></font>';
// a.innerHTML += '<br><span style="color: red">错误的文件数量</span><br>';
// }
if (fileTypes != '') {
a.innerHTML += `<span style="color: red">如有:包含多余文件(${[...new Set(fileTypes)].join(',')})</span>`;
table.rows[4].cells[1].innerHTML += `<font size="3"><b><span style="color: red">包含多余文件(${[...new Set(fileTypes)].join(',')})</font></b></font>`;
whitelist.forEach((g) => {
if (TORRENT_INFO.titleinfo.group.match(g)) {
match = true;
}
})
if (!(match && fileTypes.every(type => type === '.jpg' || type === '.png' || type === '.txt' || type === '.ass'))) {
error.push(`包含多余文件 ${fileTypes[0]}`);
}
}
//判断:重复
table = document.getElementById('kothercopy').firstChild;
if (table.tagName == 'TABLE') {
let season = false;
let dupe = false;
for (let i = 1; i < table.rows.length; i++) {
let otherTorrentTitle = table.rows[i].cells[1].textContent;
let otherTorrentSize = table.rows[i].cells[2].textContent;
if (otherTorrentSize == TORRENT_INFO.tableinfo.size && otherTorrentTitle.match(TORRENT_INFO.titleinfo.group) && otherTorrentTitle.match(TORRENT_INFO.titleinfo.format3d)) {
table.rows[i].bgColor = '#FFC6B0';
if (!dupe) {
a.innerHTML += '<br><span style="color: red">重复的种子!</span>';
table.parentNode.parentNode.firstChild.innerHTML += '<span style="color: red">重复!</span>';
error.push(`重复的种子`);
dupe = true;
}
} else if (otherTorrentSize == TORRENT_INFO.tableinfo.size && !TORRENT_INFO.titleinfo.group.match(/CatEDU/) && otherTorrentTitle.match(TORRENT_INFO.titleinfo.format3d)) {
table.rows[i].bgColor = '#FFFABE';
table.parentNode.parentNode.firstChild.innerHTML += '<span style="color: red">可能重复</span>';
a.innerHTML += '<br><span style="color: red">可能重复!</span>';
}
if (TORRENT_INFO.results.season != '' && TORRENT_INFO.results.season != 'S01' && !season) {
if (otherTorrentTitle.match('S01')) {
table.rows[i].bgColor = '#FFFABE';
if (!season) {
table.parentNode.parentNode.firstChild.innerHTML += '<span style="color: red">此种不为第一季但其他列表出现第一季!</span>';
season = true;
}
}
}
}
}
//判断:BDInfo 码率
if (TORRENT_INFO.bdinfo.video.bitrates.replace('kbps', '').trim() == '0') {
a.innerHTML += '<br><span style="color: red">BDInfo 码率为 0</span><br>';
error.push(`BDInfo 码率为 0`);
}
//判断:连续多个空格
if (TORRENT_INFO.titleinfo.origin.match(/\s{2,}/g)) {
a.innerHTML += '<br><span>主标题含连续多个空格</span><br>';
error.push(`主标题含连续多个空格`);
}
h1.innerHTML += span_correct;
// if (span_correct.match(/(red|orange)/i)) {
// h1.innerHTML += span_correct;
// } else if (TORRENT_INFO.mediainfo.full == '' && TORRENT_INFO.bdinfo.full == ''){
// h1.innerHTML += span_correct;
// a.innerHTML += '<span style="color: orange">主标题未检查</span>';
// } else {
// a.innerHTML += '<span>主标题片名、年份、分辨率、视频编码、音频编码正确</span>';
// }
//if (TORRENT_INFO.mediainfo.full != '' || TORRENT_INFO.bdinfo.full != '' || infosp) {
document.body.appendChild(a);
//}
console.log("checked", error);
if (error.some(item => item.trim() === "不审核单集")){
return ("不审核单集");
} else if (document.querySelector('img[title="猫站帮帮组徽章"]') != null) {
return ("有 Helper 意见");
} else if (error.length === 0) {
return ("未发现问题");
} else {
return error.join("\n");
}
})();