提交 65daaf65 编写于 作者: H hjdhnx

抄了一波最新的代码

上级 79b12c1a
3.8.3beta2
\ No newline at end of file
3.8.4
\ No newline at end of file
var rule = Object.assign(muban.mxpro,{
var rule = Object.assign(muban.mxone5,{
title:'看视界',
host:'https://www.1080kan.cc',
url:'/show/fyclass--------fypage---.html',
searchUrl:'/search/**----------fypage---.html',
searchable:2,
class_parse:'.navbar-items li:gt(1):lt(6);a&&Text;a&&href;.*/(.*?).html',
});
\ No newline at end of file
此差异已折叠。
......@@ -371,8 +371,8 @@ function getCryptoJS(){
return 'console.log("CryptoJS已装载");'
}
globalThis.VODS = [];// 一级或者搜索需要的数据列表
globalThis.VOD = {};// 二级的单个数据
let VODS = [];// 一级或者搜索需要的数据列表
let VOD = {};// 二级的单个数据
globalThis.encodeUrl = urlencode;
globalThis.urlencode = urlencode;
......@@ -499,10 +499,18 @@ const parseTags = {
},
jq:{
pdfh(html, parse, base_url) {
if (!parse || !parse.trim()){
if (!parse || !parse.trim()) {
return ''
}
let eleFind = typeof html === 'object';
let option = undefined;
if (eleFind && parse.startsWith('body&&')) {
parse = parse.substr(6);
if (parse.indexOf('&&') < 0) {
option = parse.trim();
parse = '*=*';
}
}
if (parse.indexOf('&&') > -1) {
let sp = parse.split('&&');
option = sp[sp.length - 1];
......@@ -521,23 +529,23 @@ const parseTags = {
parse = sp.join(' ');
}
let result = '';
const $ = cheerio.load(html);
let ret = $(parse);
const $ = eleFind ? html.rr : cheerio.load(html);
let ret = eleFind ? ((parse === '*=*' || $(html.ele).is(parse)) ? html.ele : $(html.ele).find(parse)) : $(parse);
if (option) {
if (option === 'Text'){
if (option === 'Text') {
result = $(ret).text();
}
else if (option === 'Html'){
else if (option === 'Html') {
result = $(ret).html();
}
else{
else {
result = $(ret).attr(option);
}
if (result && base_url && DOM_CHECK_ATTR.test(option)) {
if(/http/.test(result)){
if (/http/.test(result)) {
result = result.substr(result.indexOf('http'));
}else{
result = urljoin(base_url,result)
} else {
result = urljoin(base_url, result)
}
}
} else {
......@@ -546,9 +554,10 @@ const parseTags = {
return result;
},
pdfa(html, parse) {
if (!parse || !parse.trim()){
if (!parse || !parse.trim()) {
return [];
}
let eleFind = typeof html === 'object';
if (parse.indexOf('&&') > -1) {
let sp = parse.split('&&');
for (let i in sp) {
......@@ -558,12 +567,12 @@ const parseTags = {
}
parse = sp.join(' ');
}
const $ = cheerio.load(html);
let ret = $(parse);
const $ = eleFind ? html.rr : cheerio.load(html);
let ret = eleFind ? ($(html.ele).is(parse) ? html.ele : $(html.ele).find(parse)) : $(parse);
let result = [];
if (ret) {
ret.each(function (idx, ele) {
result.push($(ele).toString());
result.push({ rr: $, ele: ele });
});
}
return result;
......@@ -914,6 +923,7 @@ function homeParse(homeObj) {
try {
let html = getHtml(homeObj.MY_URL);
if (html) {
homeHtmlCache = html;
let list = pdfa(html, p[0]);
if (list && list.length > 0) {
list.forEach((it,idex) => {
......@@ -929,8 +939,8 @@ function homeParse(homeObj) {
}
classes.push({
'type_id': url,
'type_name': name
'type_id': url.trim(),
'type_name': name.trim()
});
} catch (e) {
console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`);
......@@ -993,7 +1003,8 @@ function homeVodParse(homeVodObj){
let is_json = p[0].startsWith('json:');
p[0] = p[0].replace(/^(jsp:|json:|jq:)/,'');
// print(p[0]);
let html = getHtml(MY_URL);
let html = homeHtmlCache || getHtml(MY_URL);
homeHtmlCache = undefined;
if(is_json){
// print('是json,开始处理');
html = dealJson(html);
......@@ -1292,7 +1303,7 @@ function searchParse(searchObj) {
function detailParse(detailObj){
fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
let vod = {
vod_id: "id",
vod_id: detailObj.orId, //"id",
vod_name: "片名",
vod_pic: "",
type_name: "剧情",
......@@ -1328,10 +1339,12 @@ function detailParse(detailObj){
if(!html){
html = getHtml(MY_URL);
}
let _impJQP = true;
let _ps;
if(p.is_json){
_ps = parseTags.json;
html = dealJson(html);
_impJQP = false;
}else if(p.is_jsp){
_ps = parseTags.jsp;
}else if(p.is_jq){
......@@ -1339,6 +1352,10 @@ function detailParse(detailObj){
}else{
_ps = parseTags.jq;
}
if (_impJQP) {
let c$ = cheerio.load(html);
html = { rr: c$, ele: c$('html')[0] }
}
_pdfa = _ps.pdfa;
_pdfh = _ps.pdfh;
_pd = _ps.pd;
......@@ -1381,6 +1398,10 @@ function detailParse(detailObj){
let playFrom = [];
if(p.重定向&&p.重定向.startsWith('js:')){
html = eval(p.重定向.replace('js:',''));
if (_impJQP) {
let c$ = cheerio.load(html);
html = { rr: c$, ele: c$('html')[0] }
}
}
// console.log(2);
......@@ -1429,7 +1450,8 @@ function detailParse(detailObj){
vodList.forEach(it=>{
// 请注意,这里要固定pdfh解析body&&Text,不需要下划线,没写错
// new_vod_list.push(pdfh(it,'body&&Text')+'$'+_pd(it,'a&&href',MY_URL));
new_vod_list.push(cheerio.load(it).text()+'$'+_pd(it,'a&&href',MY_URL));
// new_vod_list.push(cheerio.load(it).text()+'$'+_pd(it,'a&&href',MY_URL));
new_vod_list.push(_pdfh(it, 'body&&Text') + '$' + _pd(it, 'a&&href', MY_URL));
});
let vlist = new_vod_list.join('#');
vod_tab_list.push(vlist);
......@@ -1569,6 +1591,8 @@ function playParse(playObj){
}
}
let homeHtmlCache = undefined;
/**
* js源获取首页分类和筛选特定返回对象中的函数
* @param filter 筛选条件字典对象
......@@ -1630,6 +1654,7 @@ function category(tid, pg, filter, extend) {
* @returns {string}
*/
function detail(vod_url) {
let orId = vod_url;
let fyclass = '';
if(vod_url.indexOf('$')>-1){
let tmp = vod_url.split('$');
......@@ -1646,6 +1671,7 @@ function detail(vod_url) {
url = detailUrl
}
let detailObj = {
orId: orId,
url:url,
二级:rule.二级,
detailUrl:detailUrl,
......
此差异已折叠。
......@@ -49,6 +49,7 @@
###### 2022/10/09
- [X] 1.v3.8.2 本地drpy.js抄了一下影魔代码实现了base64加解密和md5加密并且引入全局的CryptoJS对象
- [X] 2.v3.8.3 本地drpy.js抄了一下影魔代码不用import模板改成init加载模板解决换源冲突问题
- [X] 3.v3.8.4 抄了影魔最新的代码并更新版本
###### 2022/10/08
- [X] 1.v3.8.1 本地drpy.js优化优酷兼容,已全部完善
###### 2022/10/07
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册