js1新增线路处理相关逻辑。ikanbot2作为示例更新
This commit is contained in:
parent
da6b683f5a
commit
32b7a352f5
@ -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可能效果不同
|
||||||
|
|||||||
@ -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配置快速切换
|
||||||
自建解析调整如下:
|
自建解析调整如下:
|
||||||
|
|||||||
@ -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', //一级的内容是推荐或者点播时候的一级匹配
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
3.9.48beta1
|
3.9.48beta2
|
||||||
67
libs/drpy.js
67
libs/drpy.js
@ -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
2
libs/drpy.min.js
vendored
File diff suppressed because one or more lines are too long
@ -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
2
libs/drpy2.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user