Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
言程序plus
dr_py
提交
995dbc03
dr_py
项目概览
言程序plus
/
dr_py
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
dr_py
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
995dbc03
编写于
10月 06, 2022
作者:
H
hjdhnx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复360二级和搜索进入,以及爱奇艺
上级
bc4b3e2e
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
280 addition
and
20 deletion
+280
-20
base/rules.db
base/rules.db
+0
-0
js/360影视.js
js/360影视.js
+3
-1
libs/drpy.js
libs/drpy.js
+267
-8
libs/es6py.js
libs/es6py.js
+2
-1
py/360二级.js
py/360二级.js
+8
-10
未找到文件。
base/rules.db
浏览文件 @
995dbc03
无法预览此类型文件
js/360影视.js
浏览文件 @
995dbc03
...
...
@@ -22,6 +22,7 @@ var rule = {
// lazy:'js:input="https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url="+input.split("?")[0];log(input);let html=JSON.parse(request(input));log(html);input=html.url||input',
推荐
:
'
json:data;title;cover;comment;cat+ent_id;description
'
,
一级
:
'
json:data.movies;title;cover;pubdate;id;description
'
,
二级
:
'
js:let html=JSON.parse(fetch(input,fetch_params));let data=html.data;let tilte=data.title;let img=data.cdncover;let vod_type=data.moviecategory.join(",");let area=data.area.join(",");let director=data.director.join(",");let actor=data.actor.join(",");let content=data.description;base_vod={vod_id:input,vod_name:tilte,type_name:vod_type,vod_actor:actor,vod_director:director,vod_content:content,vod_remarks:area,vod_pic:urljoin2(input,img)};let delta=200;let vod_play={};let sites=data.playlink_sites;for(let i in sites){let site=sites[i];let playList="";let vodItems=[];if(data.allupinfo){let total=parseInt(data.allupinfo[site]);for(let j=1;j<total;j+=delta){let end=Math.min(total,j+delta-1);let url2=buildUrl(input,{start:j,end:end,site:site});let vod_data=JSON.parse(fetch(url2),fetch_params).data;if(vod_data.allepidetail){vod_data=vod_data.allepidetail[site];vod_data.forEach(function(item,index){vodItems.push((item.playlink_num||"")+"$"+urlDeal(item.url||""))})}else{vod_data=vod_data.defaultepisode;vod_data.forEach(function(item,index){vodItems.push((item.period||"")+(item.name||"")+"$"+urlDeal(item.url)||"")})}}}else{let item=data.playlinksdetail[site];vodItems.push((item.sort||"")+"$"+urlDeal(item.default_url||""))}if(vodItems.length>0){playList=vodItems.join("#")}if(playList.length<1){continue}vod_play[site]=playList}let tabs=Object.keys(vod_play);let playUrls=[];for(let id in tabs){playUrls.push(vod_play[tabs[id]])}if(tabs.length>0){vod_play_from=tabs.join("$$$");vod_play_url=playUrls.join("$$$");base_vod.vod_play_from=vod_play_from;base_vod.vod_play_url=vod_play_url}VOD=base_vod;
'
,
二级
:
''
,
二级
:
'
js:let html=JSON.parse(fetch(input,fetch_params));let data=html.data;let tilte=data.title;let img=data.cdncover;let vod_type=data.moviecategory.join(",");let area=data.area.join(",");let director=data.director.join(",");let actor=data.actor.join(",");let content=data.description;let base_vod={vod_id:input,vod_name:tilte,type_name:vod_type,vod_actor:actor,vod_director:director,vod_content:content,vod_remarks:area,vod_pic:urljoin2(input,img)};let delta=200;let vod_play={};let sites=data.playlink_sites;sites.forEach(function(site){let playList="";let vodItems=[];if(data.allupinfo){let total=parseInt(data.allupinfo[site]);for(let j=1;j<total;j+=delta){let end=Math.min(total,j+delta-1);let url2=buildUrl(input,{start:j,end:end,site:site});let vod_data=JSON.parse(fetch(url2),fetch_params).data;if(vod_data.allepidetail){vod_data=vod_data.allepidetail[site];vod_data.forEach(function(item,index){vodItems.push((item.playlink_num||"")+"$"+urlDeal(item.url||""))})}else{vod_data=vod_data.defaultepisode;vod_data.forEach(function(item,index){vodItems.push((item.period||"")+(item.name||"")+"$"+urlDeal(item.url)||"")})}}}else{let item=data.playlinksdetail[site];vodItems.push((item.sort||"")+"$"+urlDeal(item.default_url||""))}if(vodItems.length>0){playList=vodItems.join("#")}if(playList.length<1){return}vod_play[site]=playList});let tabs=Object.keys(vod_play);let playUrls=[];for(let id in tabs){print("id:"+id);playUrls.push(vod_play[tabs[id]])}if(tabs.length>0){let vod_play_from=tabs.join("$$$");let vod_play_url=playUrls.join("$$$");base_vod.vod_play_from=vod_play_from;base_vod.vod_play_url=vod_play_url}VOD=base_vod;
'
,
搜索
:
'
json:data.longData.rows;titleTxt||titlealias;cover;cat_name;cat_id+en_id;description
'
,
}
\ No newline at end of file
libs/drpy.js
浏览文件 @
995dbc03
import
'
https://gitcode.net/qq_32394351/dr_py/-/raw/master/libs/es6py.js
'
;
//
import 'https://gitcode.net/qq_32394351/dr_py/-/raw/master/libs/es6py.js';
// import {是否正版,urlDeal,setResult,setResult2,setHomeResult,maoss,urlencode} from 'http://192.168.10.103:5705/libs/es6py.js';
// import 'http://192.168.1
0.103
:5705/libs/es6py.js';
// import 'http://192.168.1
.124
:5705/libs/es6py.js';
import
cheerio
from
'
https://gitcode.net/qq_32394351/dr_py/-/raw/master/libs/cheerio.min.js
'
;
// import cheerio from 'http://192.168.10.103:5705/libs/cheerio.min.js';
...
...
@@ -12,7 +12,7 @@ import muban from 'https://gitcode.net/qq_32394351/dr_py/-/raw/master/js/模板.
// const key = 'drpy_zbk';
// eval(req('http://192.168.1.124:5705/libs/es6py.js').content);
function
init_test
(){
console
.
log
(
"
init_test_start
"
);
console
.
log
(
RKEY
);
...
...
@@ -30,10 +30,17 @@ function init_test(){
let
rule
=
{};
/** 已知问题记录
* 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染
* Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来
* 2.import es6py.js但是里面的函数没有被装载进来.比如drpy规则报错setResult2 is undefiend
* 3.无法重复导入cheerio(怎么解决drpy和parseTag里都需要导入cheerio的问题) 无法在副文件导入cheerio (现在是全部放在drpy一个文件里了,凑合解决?)
* 4.有个错误不知道哪儿来的 executeScript: com.quickjs.JSObject$Undefined cannot be cast to java.lang.String 在 点击选集播放打印init_test_end后面打印
* todo: jsp:{pdfa,pdfh,pd},json:{pdfa,pdfh,pd},jq:{pdfa,pdfh,pd}
* * 电脑看日志调试
adb tcpip 5555
adb connect 192.168.10.192
adb devices -l
adb logcat -c
adb logcat | grep -i QuickJS
* **/
...
...
@@ -68,6 +75,248 @@ const DOM_CHECK_ATTR = /(url|src|href|data-original|data-src)$/;
const
SELECT_REGEX
=
/:eq|:lt|:gt|#/g
;
const
SELECT_REGEX_A
=
/:eq|:lt|:gt/g
;
/**
es6py扩展
*/
if
(
typeof
Object
.
assign
!=
'
function
'
)
{
Object
.
assign
=
function
()
{
var
target
=
arguments
[
0
];
for
(
var
i
=
1
;
i
<
arguments
.
length
;
i
++
)
{
var
source
=
arguments
[
i
];
for
(
var
key
in
source
)
{
if
(
Object
.
prototype
.
hasOwnProperty
.
call
(
source
,
key
))
{
target
[
key
]
=
source
[
key
];
}
}
}
return
target
;
};
}
if
(
!
String
.
prototype
.
includes
)
{
String
.
prototype
.
includes
=
function
(
search
,
start
)
{
if
(
typeof
start
!==
'
number
'
)
{
start
=
0
;
}
if
(
start
+
search
.
length
>
this
.
length
)
{
return
false
;
}
else
{
return
this
.
indexOf
(
search
,
start
)
!==
-
1
;
}
};
}
if
(
!
Array
.
prototype
.
includes
)
{
Object
.
defineProperty
(
Array
.
prototype
,
'
includes
'
,
{
value
:
function
(
searchElement
,
fromIndex
)
{
if
(
this
==
null
)
{
//this是空或者未定义,抛出错误
throw
new
TypeError
(
'
"this" is null or not defined
'
);
}
var
o
=
Object
(
this
);
//将this转变成对象
var
len
=
o
.
length
>>>
0
;
//无符号右移0位,获取对象length属性,如果未定义就会变成0
if
(
len
===
0
)
{
//length为0直接返回false未找到目标值
return
false
;
}
var
n
=
fromIndex
|
0
;
//查找起始索引
var
k
=
Math
.
max
(
n
>=
0
?
n
:
len
-
Math
.
abs
(
n
),
0
);
//计算正确起始索引,因为有可能是负值
while
(
k
<
len
)
{
//从起始索引处开始循环
if
(
o
[
k
]
===
searchElement
)
{
//如果某一位置与寻找目标相等,返回true,找到了
return
true
;
}
k
++
;
}
return
false
;
//未找到,返回false
}
});
}
if
(
typeof
String
.
prototype
.
startsWith
!=
'
function
'
)
{
String
.
prototype
.
startsWith
=
function
(
prefix
){
return
this
.
slice
(
0
,
prefix
.
length
)
===
prefix
;
};
}
if
(
typeof
String
.
prototype
.
endsWith
!=
'
function
'
)
{
String
.
prototype
.
endsWith
=
function
(
suffix
)
{
return
this
.
indexOf
(
suffix
,
this
.
length
-
suffix
.
length
)
!==
-
1
;
};
}
Object
.
prototype
.
myValues
=
function
(
obj
){
if
(
obj
==
null
)
{
throw
new
TypeError
(
"
Cannot convert undefined or null to object
"
);
}
var
res
=
[]
for
(
var
k
in
obj
){
if
(
obj
.
hasOwnProperty
(
k
)){
//需判断是否是本身的属性
res
.
push
(
obj
[
k
]);
}
}
return
res
;
}
if
(
typeof
Object
.
prototype
.
values
!=
'
function
'
)
{
Object
.
prototype
.
values
=
function
(
obj
){
if
(
obj
==
null
)
{
throw
new
TypeError
(
"
Cannot convert undefined or null to object
"
);
}
var
res
=
[]
for
(
var
k
in
obj
){
if
(
obj
.
hasOwnProperty
(
k
)){
//需判断是否是本身的属性
res
.
push
(
obj
[
k
]);
}
}
return
res
;
}
}
if
(
typeof
Array
.
prototype
.
join
!=
'
function
'
)
{
Array
.
prototype
.
join
=
function
(
emoji
)
{
// emoji = emoji||',';
emoji
=
emoji
||
''
;
let
self
=
this
;
let
str
=
""
;
let
i
=
0
;
if
(
!
Array
.
isArray
(
self
))
{
throw
String
(
self
)
+
'
is not Array
'
}
if
(
self
.
length
===
0
){
return
''
}
if
(
self
.
length
===
1
){
return
String
(
self
[
0
])}
i
=
1
;
str
=
this
[
0
];
for
(;
i
<
self
.
length
;
i
++
)
{
str
+=
String
(
emoji
)
+
String
(
self
[
i
]);
}
return
str
;
};
}
String
.
prototype
.
rstrip
=
function
(
chars
)
{
let
regex
=
new
RegExp
(
chars
+
"
$
"
);
return
this
.
replace
(
regex
,
""
);
};
Array
.
prototype
.
append
=
Array
.
prototype
.
push
;
String
.
prototype
.
strip
=
String
.
prototype
.
trim
;
function
是否正版
(
vipUrl
){
let
flag
=
new
RegExp
(
'
qq
\
.com|iqiyi
\
.com|youku
\
.com|mgtv
\
.com|bilibili
\
.com|sohu
\
.com|ixigua
\
.com|pptv
\
.com|miguvideo
\
.com|le
\
.com|1905
\
.com|fun
\
.tv
'
);
return
flag
.
test
(
vipUrl
);
}
function
urlDeal
(
vipUrl
){
if
(
!
vipUrl
){
return
''
}
if
(
!
是否正版
(
vipUrl
)){
return
vipUrl
}
if
(
!
/miguvideo/
.
test
(
vipUrl
)){
vipUrl
=
vipUrl
.
split
(
'
#
'
)[
0
].
split
(
'
?
'
)[
0
];
}
return
vipUrl
}
function
setResult
(
d
){
if
(
!
Array
.
isArray
(
d
)){
return
[]
}
VODS
=
[];
// console.log(JSON.stringify(d));
d
.
forEach
(
function
(
it
){
let
obj
=
{
vod_id
:
it
.
url
||
''
,
vod_name
:
it
.
title
||
''
,
vod_remarks
:
it
.
desc
||
''
,
vod_content
:
it
.
content
||
''
,
vod_pic
:
it
.
pic_url
||
it
.
img
||
''
,
};
let
keys
=
Object
.
keys
(
it
);
if
(
keys
.
includes
(
'
tname
'
)){
obj
.
type_name
=
it
.
tname
||
''
;
}
if
(
keys
.
includes
(
'
tid
'
)){
obj
.
type_id
=
it
.
tid
||
''
;
}
if
(
keys
.
includes
(
'
year
'
)){
obj
.
vod_year
=
it
.
year
||
''
;
}
if
(
keys
.
includes
(
'
actor
'
)){
obj
.
vod_actor
=
it
.
actor
||
''
;
}
if
(
keys
.
includes
(
'
director
'
)){
obj
.
vod_director
=
it
.
director
||
''
;
}
if
(
keys
.
includes
(
'
area
'
)){
obj
.
vod_area
=
it
.
area
||
''
;
}
VODS
.
push
(
obj
);
});
return
VODS
}
function
setResult2
(
res
){
VODS
=
res
.
list
||
[];
return
VODS
}
function
setHomeResult
(
res
){
if
(
!
res
||
typeof
(
res
)
!==
'
object
'
){
return
[]
}
return
setResult
(
res
.
list
);
}
// 千万不要用for in 推荐 forEach (for in 会打乱顺序)
//猫函数
function
maoss
(
jxurl
,
ref
,
key
)
{
eval
(
getCryptoJS
());
try
{
var
getVideoInfo
=
function
(
text
)
{
return
CryptoJS
.
AES
.
decrypt
(
text
,
key
,
{
iv
:
iv
,
padding
:
CryptoJS
.
pad
.
Pkcs7
}).
toString
(
CryptoJS
.
enc
.
Utf8
);
};
var
token_key
=
key
==
undefined
?
'
dvyYRQlnPRCMdQSe
'
:
key
;
if
(
ref
)
{
var
html
=
request
(
jxurl
,
{
headers
:
{
'
Referer
'
:
ref
}
});
}
else
{
var
html
=
request
(
jxurl
);
}
// print(html);
if
(
html
.
indexOf
(
'
&btwaf=
'
)
!=
-
1
)
{
html
=
request
(
jxurl
+
'
&btwaf
'
+
html
.
match
(
/&btwaf
(
.*
?)
"/
)[
1
],
{
headers
:
{
'
Referer
'
:
ref
}
})
}
var
token_iv
=
html
.
split
(
'
_token = "
'
)[
1
].
split
(
'
"
'
)[
0
];
var
key
=
CryptoJS
.
enc
.
Utf8
.
parse
(
token_key
);
var
iv
=
CryptoJS
.
enc
.
Utf8
.
parse
(
token_iv
);
// log("iv:"+iv);
// log(html);
// print(key);
// print(iv);
eval
(
html
.
match
(
/var config = {
[\s\S]
*
?
}/
)[
0
]
+
''
);
// config.url = config.url.replace(/,/g,'');
// print(config.url);
if
(
!
config
.
url
.
startsWith
(
'
http
'
))
{
//config.url = decodeURIComponent(AES(config.url, key, iv));
config
.
url
=
CryptoJS
.
AES
.
decrypt
(
config
.
url
,
key
,
{
iv
:
iv
,
padding
:
CryptoJS
.
pad
.
Pkcs7
}).
toString
(
CryptoJS
.
enc
.
Utf8
)
}
return
config
.
url
;
}
catch
(
e
)
{
return
''
;
}
}
function
urlencode
(
str
)
{
str
=
(
str
+
''
).
toString
();
return
encodeURIComponent
(
str
).
replace
(
/!/g
,
'
%21
'
).
replace
(
/'/g
,
'
%27
'
).
replace
(
/
\(
/g
,
'
%28
'
).
replace
(
/
\)
/g
,
'
%29
'
).
replace
(
/
\*
/g
,
'
%2A
'
).
replace
(
/%20/g
,
'
+
'
);
}
globalThis
.
VODS
=
[];
// 一级或者搜索需要的数据列表
globalThis
.
VOD
=
{};
// 二级的单个数据
/**
* url拼接
* @param fromPath 初始当前页面url
...
...
@@ -100,7 +349,7 @@ function urljoin(fromPath, nowPath) {
// return fromPath+nowPath
// }
}
var
urljoin2
=
urljoin
;
/**
* 重写pd方法-增加自动urljoin(没法重写,改个名继续骗)
* @param html
...
...
@@ -801,8 +1050,8 @@ function categoryParse(cateObj) {
// setItem('MY_URL',MY_URL);
console
.
log
(
MY_URL
);
p
=
p
.
trim
();
const
MY_CATE
=
cateObj
.
tid
;
if
(
p
.
startsWith
(
'
js:
'
)){
const
MY_CATE
=
cateObj
.
tid
;
var
MY_FL
=
cateObj
.
extend
;
const
TYPE
=
'
cate
'
;
var
input
=
MY_URL
;
...
...
@@ -829,8 +1078,13 @@ function categoryParse(cateObj) {
}
let
list
=
_pdfa
(
html
,
p
[
0
]);
list
.
forEach
(
it
=>
{
let
links
=
p
[
4
].
split
(
'
+
'
).
map
(
p4
=>
{
return
!
rule
.
detailUrl
?
_pd
(
p4
,
p
[
4
],
MY_URL
):
_pdfh
(
it
,
p
[
4
]);
});
let
link
=
links
.
join
(
'
$
'
);
let
vod_id
=
rule
.
detailUrl
?
MY_CATE
+
'
$
'
+
link
:
link
;
d
.
push
({
'
vod_id
'
:
_pd
(
it
,
p
[
4
],
MY_URL
)
,
'
vod_id
'
:
vod_id
,
'
vod_name
'
:
_pdfh
(
it
,
p
[
1
]).
replace
(
/
\n
|
\t
/g
,
''
).
trim
(),
'
vod_pic
'
:
_pd
(
it
,
p
[
2
],
MY_URL
),
'
vod_remarks
'
:
_pdfh
(
it
,
p
[
3
]).
replace
(
/
\n
|
\t
/g
,
''
).
trim
(),
...
...
@@ -841,7 +1095,7 @@ function categoryParse(cateObj) {
console
.
log
(
e
.
message
);
}
}
// print(d);
return
d
.
length
<
1
?
'
{}
'
:
JSON
.
stringify
({
'
page
'
:
parseInt
(
cateObj
.
pg
),
'
pagecount
'
:
999
,
...
...
@@ -912,8 +1166,12 @@ function searchParse(searchObj) {
}
let
list
=
_pdfa
(
html
,
p
[
0
]);
list
.
forEach
(
it
=>
{
let
links
=
p
[
4
].
split
(
'
+
'
).
map
(
p4
=>
{
return
!
rule
.
detailUrl
?
_pd
(
it
,
p4
,
MY_URL
):
_pdfh
(
it
,
p4
)
});
let
link
=
links
.
join
(
'
$
'
);
let
ob
=
{
'
vod_id
'
:
_pd
(
it
,
p
[
4
],
MY_URL
)
,
'
vod_id
'
:
link
,
'
vod_name
'
:
_pdfh
(
it
,
p
[
1
]).
replace
(
/
\n
|
\t
/g
,
''
).
trim
(),
'
vod_pic
'
:
_pd
(
it
,
p
[
2
],
MY_URL
),
'
vod_remarks
'
:
_pdfh
(
it
,
p
[
3
]).
replace
(
/
\n
|
\t
/g
,
''
).
trim
(),
...
...
@@ -975,6 +1233,7 @@ function detailParse(detailObj){
const
TYPE
=
'
detail
'
;
var
input
=
MY_URL
;
eval
(
p
.
trim
().
replace
(
'
js:
'
,
''
));
vod
=
VOD
;
console
.
log
(
JSON
.
stringify
(
vod
));
}
else
if
(
p
&&
typeof
(
p
)
===
'
object
'
){
if
(
!
html
){
...
...
libs/es6py.js
浏览文件 @
995dbc03
...
...
@@ -234,6 +234,7 @@ function urlencode (str) {
replace
(
/
\)
/g
,
'
%29
'
).
replace
(
/
\*
/g
,
'
%2A
'
).
replace
(
/%20/g
,
'
+
'
);
}
globalThis
.
VODS
=
[];
// 一级或者搜索需要的数据列表
globalThis
.
VOD
=
{};
// 二级的单个数据
globalThis
.
encodeUrl
=
urlencode
;
globalThis
.
urlencode
=
urlencode
;
globalThis
.
是否正版
=
是否正版
;
...
...
@@ -242,7 +243,7 @@ globalThis.setResult = setResult;
globalThis
.
setResult2
=
setResult2
;
globalThis
.
setHomeResult
=
setHomeResult
;
globalThis
.
maoss
=
maoss
;
globalThis
.
urljoin2
=
joinUrl
;
//
globalThis.urljoin2 = joinUrl;
// export default {
// 是否正版:是否正版,
...
...
py/360二级.js
浏览文件 @
995dbc03
...
...
@@ -17,7 +17,7 @@ let director = data.director.join(",");
let
actor
=
data
.
actor
.
join
(
"
,
"
);
// let content = jsp.pjfh(html,"data.description");
let
content
=
data
.
description
;
base_vod
=
{
let
base_vod
=
{
vod_id
:
input
,
vod_name
:
tilte
,
type_name
:
vod_type
,
...
...
@@ -28,14 +28,11 @@ base_vod = {
vod_pic
:
urljoin2
(
input
,
img
),
// vod_pic:img,
};
// print(base_vod);
let
delta
=
200
;
let
vod_play
=
{};
// let sites = jsp.pjfa(html,"data.playlink_sites"); //data.playlinksdetail.#idv.quality
let
sites
=
data
.
playlink_sites
;
//data.playlinksdetail.#idv.quality
// print(sites);
for
(
let
i
in
sites
){
let
site
=
sites
[
i
];
sites
.
forEach
(
function
(
site
){
let
playList
=
""
;
let
vodItems
=
[];
if
(
data
.
allupinfo
){
...
...
@@ -63,8 +60,8 @@ for(let i in sites){
}
}
}
else
{
// print(data.playlinksdetail);
let
item
=
data
.
playlinksdetail
[
site
];
// print(item);
vodItems
.
push
((
item
.
sort
||
""
)
+
"
$
"
+
urlDeal
(
item
.
default_url
||
""
));
}
if
(
vodItems
.
length
>
0
){
...
...
@@ -72,24 +69,25 @@ for(let i in sites){
}
// print(playList);
if
(
playList
.
length
<
1
){
continue
return
}
vod_play
[
site
]
=
playList
;
}
}
);
// print(vod_play);
let
tabs
=
Object
.
keys
(
vod_play
);
// let playUrls = Object.values(vod_play); // 没法使用values方法和列表的join方法
let
playUrls
=
[];
for
(
let
id
in
tabs
){
print
(
'
id:
'
+
id
);
playUrls
.
push
(
vod_play
[
tabs
[
id
]]);
}
// print(tabs);
// print(playUrls);
if
(
tabs
.
length
>
0
){
// vod_play_from = join(tabs,"$$$");
vod_play_from
=
tabs
.
join
(
"
$$$
"
);
let
vod_play_from
=
tabs
.
join
(
"
$$$
"
);
// vod_play_url = join(playUrls,"$$$");
vod_play_url
=
playUrls
.
join
(
"
$$$
"
);
let
vod_play_url
=
playUrls
.
join
(
"
$$$
"
);
// print(vod_play_from);
// print(vod_play_url);
base_vod
.
vod_play_from
=
vod_play_from
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录