js1新增线路处理相关逻辑。ikanbot2作为示例更新

This commit is contained in:
hjdhnx 2023-10-03 23:35:18 +08:00
parent da6b683f5a
commit 32b7a352f5
8 changed files with 154 additions and 5 deletions

View File

@ -52,6 +52,14 @@ var rule = {
cate_exclude:'', cate_exclude:'',
// 除开全局动态线路名过滤之外还需要过滤哪些线路名标题不视为线路 // 除开全局动态线路名过滤之外还需要过滤哪些线路名标题不视为线路
tab_exclude:'', tab_exclude:'',
//移除某个线路及相关的选集|js1
tab_remove:['tkm3u8'],
//线路顺序,按里面的顺序优先,没写的依次排后面|js1
tab_order:['lzm3u8','wjm3u8','1080zyk','zuidam3u8','snm3u8'],
//线路名替换如:lzm3u8替换为量子资源|js1
tab_rename:{'lzm3u8':'量子','1080zyk':'1080看','zuidam3u8':'最大资源','kuaikan':'快看',
'bfzym3u8':'暴风','ffm3u8':'非凡','snm3u8':'索尼','tpm3u8':'淘片','tkm3u8':'天空',},
// 服务器解析播放 // 服务器解析播放
play_parse:true, play_parse:true,
// play_json 传数组或者  true/false 比如 0,1 如果不传会内部默认处理 不传和传0可能效果不同 // play_json 传数组或者  true/false 比如 0,1 如果不传会内部默认处理 不传和传0可能效果不同

View File

@ -1,4 +1,11 @@
###### 2023/10/03 ###### 2023/10/03
- [X] 更新版本号到 3.9.48beta2 增加了线路处理相关属性(线路排序,移除,重命名)
```
tab_remove:[],//移除某个线路及相关的选集
tab_order:['lzm3u8','wjm3u8','1080zyk','zuidam3u8','snm3u8'],//线路顺序,按里面的顺序优先,没写的依次排后面
tab_rename:{'lzm3u8':'量子','1080zyk':'1080看','zuidam3u8':'最大资源','kuaikan':'快看',
'bfzym3u8':'暴风','ffm3u8':'非凡','snm3u8':'索尼','tpm3u8':'淘片','tkm3u8':'天空',},//线路名替换如:lzm3u8替换为量子资源
```
- [X] 更新版本号到 3.9.48beta1 - [X] 更新版本号到 3.9.48beta1
- [X] 调整自建解析及首页js0/js1配置快速切换 - [X] 调整自建解析及首页js0/js1配置快速切换
自建解析调整如下: 自建解析调整如下:

View File

@ -107,6 +107,10 @@ var rule = {
class_url:'movie&tv', class_url:'movie&tv',
play_parse:true, play_parse:true,
double:true, double:true,
tab_remove:['wjm3u8','ikm3u8','sdm3u8','M3U8','jinyingm3u8','fsm3u8','ukm3u8'],//移除某个线路及相关的选集
tab_order:['lzm3u8','gsm3u8','zuidam3u8','bjm3u8','snm3u8','wolong','ffm3u8','xlm3u8','yhm3u8'],//线路顺序,按里面的顺序优先,没写的依次排后面
tab_rename:{'lzm3u8':'量子','1080zyk':'1080看','zuidam3u8':'最大资源','kuaikan':'快看',
'bfzym3u8':'暴风','ffm3u8':'非凡','snm3u8':'索尼','tpm3u8':'淘片','tkm3u8':'天空','wolong':'卧龙'},//线路名替换如:lzm3u8替换为量子资源
推荐:'.v-list;div.item;*;*;*;*', //这里可以为空,这样点播不会有内容 推荐:'.v-list;div.item;*;*;*;*', //这里可以为空,这样点播不会有内容
// 一级:'.v-list&&div.item;p&&Text;img&&src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配 // 一级:'.v-list&&div.item;p&&Text;img&&src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配
一级:'.v-list&&div.item;p&&Text;img&&data-src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配 一级:'.v-list&&div.item;p&&Text;img&&data-src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配

View File

@ -1 +1 @@
3.9.48beta1 3.9.48beta2

View File

@ -55,7 +55,7 @@ function pre(){
} }
let rule = {}; let rule = {};
const VERSION = 'drpy1 3.9.47beta32 20230911'; const VERSION = 'drpy1 3.9.48beta2 20231003';
/** /**
* 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼最新的文件发现这问题已经解决了] * 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼最新的文件发现这问题已经解决了]
* Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下) * Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下)
@ -2032,11 +2032,71 @@ function detailParse(detailObj){
let t2 = (new Date()).getTime(); let t2 = (new Date()).getTime();
console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`); console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);
// print(vod); // print(vod);
vod = vodDeal(vod);
// print(vod);
return JSON.stringify({ return JSON.stringify({
list: [vod] list: [vod]
}) })
} }
/**
* 获取二级待返回的播放线路没处理时的索引关系
* @param vod
* @returns {{}}
*/
function get_tab_index(vod){
let obj = {};
vod.vod_play_from.split('$$$').forEach((it,index)=>{
obj[it] = index;
});
return obj
}
/**
* 处理待返回的vod数据|线路去除,排序,重命名
* @param vod
* @returns {*}
*/
function vodDeal(vod){
let vod_play_from = vod.vod_play_from.split('$$$');
let vod_play_url = vod.vod_play_url.split('$$$');
// 移除指定线路后的列表
let tab_removed_list = vod_play_from;
// 排序后的线路列表
let tab_ordered_list = vod_play_from;
// 线路重命名后的列表
let tab_renamed_list = vod_play_from;
// 选集列表根据线路排序
let play_ordered_list = vod_play_url;
// 判断有移除线路或者线路排序
if((rule.tab_remove&&rule.tab_remove.length>0)||(rule.tab_order&&rule.tab_order.length>0)){
// 获取原来线路的索引下标
let tab_index_dict = get_tab_index(vod);
if(rule.tab_remove&&rule.tab_remove.length>0){
tab_removed_list = vod_play_from.filter(it=>!rule.tab_remove.includes(it));
}
if(rule.tab_order&&rule.tab_order.length>0){
let tab_order = rule.tab_order;
tab_ordered_list = tab_removed_list.sort((a, b) => {
return (tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a)) - (tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))
});
play_ordered_list = tab_ordered_list.map(it=>vod_play_url[tab_index_dict[it]]);
}
}
if(rule.tab_rename&&typeof(rule.tab_rename)==='object'&Object.keys(rule.tab_rename).length>0){
tab_renamed_list = tab_ordered_list.map(it=>rule.tab_rename[it]||it);
}
vod.vod_play_from = tab_renamed_list.join('$$$');
vod.vod_play_url = play_ordered_list.join('$$$');
return vod
}
/** /**
* 判断是否需要解析 * 判断是否需要解析
* @param url * @param url
@ -2252,6 +2312,11 @@ function isVideoParse(isVideoObj){
rule.sniffer = !!(rule.sniffer && rule.sniffer!=='0' && rule.sniffer!=='false'); rule.sniffer = !!(rule.sniffer && rule.sniffer!=='0' && rule.sniffer!=='false');
rule.isVideo = rule.hasOwnProperty('isVideo')?rule.isVideo:''; rule.isVideo = rule.hasOwnProperty('isVideo')?rule.isVideo:'';
rule.tab_remove = rule.hasOwnProperty('tab_remove')?rule.tab_remove:[];
rule.tab_order = rule.hasOwnProperty('tab_order')?rule.tab_order:[];
rule.tab_rename = rule.hasOwnProperty('tab_rename')?rule.tab_rename:{};
if(rule.headers && typeof(rule.headers) === 'object'){ if(rule.headers && typeof(rule.headers) === 'object'){
try { try {
let header_keys = Object.keys(rule.headers); let header_keys = Object.keys(rule.headers);

2
libs/drpy.min.js vendored

File diff suppressed because one or more lines are too long

View File

@ -41,7 +41,7 @@ function pre(){
let rule = {}; let rule = {};
let vercode = typeof(pdfl) ==='function'?'drpy2.1':'drpy2'; let vercode = typeof(pdfl) ==='function'?'drpy2.1':'drpy2';
const VERSION = vercode+' 3.9.47beta32 20230911'; const VERSION = vercode+' 3.9.48beta2 20231003';
/** /**
* 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼最新的文件发现这问题已经解决了] * 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼最新的文件发现这问题已经解决了]
* Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下) * Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下)
@ -1894,11 +1894,71 @@ function detailParse(detailObj){
let t2 = (new Date()).getTime(); let t2 = (new Date()).getTime();
console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`); console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);
// print(vod); // print(vod);
vod = vodDeal(vod);
// print(vod);
return JSON.stringify({ return JSON.stringify({
list: [vod] list: [vod]
}) })
} }
/**
* 获取二级待返回的播放线路没处理时的索引关系
* @param vod
* @returns {{}}
*/
function get_tab_index(vod){
let obj = {};
vod.vod_play_from.split('$$$').forEach((it,index)=>{
obj[it] = index;
});
return obj
}
/**
* 处理待返回的vod数据|线路去除,排序,重命名
* @param vod
* @returns {*}
*/
function vodDeal(vod){
let vod_play_from = vod.vod_play_from.split('$$$');
let vod_play_url = vod.vod_play_url.split('$$$');
// 移除指定线路后的列表
let tab_removed_list = vod_play_from;
// 排序后的线路列表
let tab_ordered_list = vod_play_from;
// 线路重命名后的列表
let tab_renamed_list = vod_play_from;
// 选集列表根据线路排序
let play_ordered_list = vod_play_url;
// 判断有移除线路或者线路排序
if((rule.tab_remove&&rule.tab_remove.length>0)||(rule.tab_order&&rule.tab_order.length>0)){
// 获取原来线路的索引下标
let tab_index_dict = get_tab_index(vod);
if(rule.tab_remove&&rule.tab_remove.length>0){
tab_removed_list = vod_play_from.filter(it=>!rule.tab_remove.includes(it));
}
if(rule.tab_order&&rule.tab_order.length>0){
let tab_order = rule.tab_order;
tab_ordered_list = tab_removed_list.sort((a, b) => {
return (tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a)) - (tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))
});
play_ordered_list = tab_ordered_list.map(it=>vod_play_url[tab_index_dict[it]]);
}
}
if(rule.tab_rename&&typeof(rule.tab_rename)==='object'&Object.keys(rule.tab_rename).length>0){
tab_renamed_list = tab_ordered_list.map(it=>rule.tab_rename[it]||it);
}
vod.vod_play_from = tab_renamed_list.join('$$$');
vod.vod_play_url = play_ordered_list.join('$$$');
return vod
}
/** /**
* 判断是否需要解析 * 判断是否需要解析
* @param url * @param url
@ -2117,6 +2177,11 @@ function init(ext) {
rule.sniffer = !!(rule.sniffer && rule.sniffer!=='0' && rule.sniffer!=='false'); rule.sniffer = !!(rule.sniffer && rule.sniffer!=='0' && rule.sniffer!=='false');
rule.isVideo = rule.hasOwnProperty('isVideo')?rule.isVideo:''; rule.isVideo = rule.hasOwnProperty('isVideo')?rule.isVideo:'';
rule.tab_remove = rule.hasOwnProperty('tab_remove')?rule.tab_remove:[];
rule.tab_order = rule.hasOwnProperty('tab_order')?rule.tab_order:[];
rule.tab_rename = rule.hasOwnProperty('tab_rename')?rule.tab_rename:{};
if(rule.headers && typeof(rule.headers) === 'object'){ if(rule.headers && typeof(rule.headers) === 'object'){
try { try {
let header_keys = Object.keys(rule.headers); let header_keys = Object.keys(rule.headers);

2
libs/drpy2.min.js vendored

File diff suppressed because one or more lines are too long