Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
季末490
dr_py
提交
dae8612d
dr_py
项目概览
季末490
/
dr_py
与 Fork 源项目一致
Fork自
晚风拂柳颜 / dr_py
通知
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,发现更多精彩内容 >>
提交
dae8612d
编写于
9月 24, 2022
作者:
H
hjdhnx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
发布新版本,处理解析问题
上级
7f7b1dae
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
276 addition
and
101 deletion
+276
-101
base/custom.conf
base/custom.conf
+3
-0
js/解析.conf
js/解析.conf
+9
-6
readme.md
readme.md
+1
-0
txt/py/py_alist.py
txt/py/py_alist.py
+156
-93
txt/py/py_kuaikan.py
txt/py/py_kuaikan.py
+105
-0
utils/files.py
utils/files.py
+2
-2
未找到文件。
base/custom.conf
浏览文件 @
dae8612d
...
...
@@ -4,6 +4,9 @@
{
"spider"
:
"{{host}}/files/custom_spider.jar"
,
"parses"
:[
{
"name"
:
"keyu"
,
"type"
:
1
,
"url"
:
"http://newjiexi.gotka.top/keyu3.php?url="
,
"ext"
:{
"flag"
:[
"qq"
,
"腾讯"
,
"qiyi"
,
"爱奇艺"
,
"奇艺"
,
"youku"
,
"优酷"
,
"mgtv"
,
"芒果"
,
"letv"
,
"乐视"
,
"pptv"
,
"PPTV"
,
"sohu"
,
"bilibili"
,
"哔哩哔哩"
,
"哔哩"
],
"header"
:{
"User-Agent"
:
"okhttp/4.1.0"
}}},
],
"drives"
: [{
"name"
:
"阿里"
,
"password"
:
"43886374072944a2bcc55a0ed129ab48"
,
"type"
:
"alidrive"
}],
# "lives":[{"group":"redirect","channels":[{"name":"我的直播","urls":["proxy://do=live&type=txt&ext={{host}}/txt/直播.txt"]}]}],
"sites"
:[
...
...
js/解析.conf
浏览文件 @
dae8612d
...
...
@@ -5,16 +5,20 @@
并发,
Parallel
,
2
# 聚合,Demo,3
钢铁侠,
https
://
json
.
freejx
.
in
/?
url
=,
1
绿叶,
https
://
hc
.
izny
.
cn
/
json
.
php
?
url
=,
1
# 快看,http://api.8a5.cn/parse/kuaikan/de.php?url=,1
# 钢铁侠,https://json.freejx.in/?url=,1
# 绿叶,https://hc.izny.cn/json.php?url=,1
无名
1
,
http
://
api
.
ckflv
.
cn
/?
url
=,
1
llq
,
https
://
hc
.
izny
.
cn
/
json
.
php
?
url
=,
1
BT5V
,
https
://
rx
.
bt5v
.
com
/
json
/
jsonindex
.
php
/?
url
=,
1
# 查询,https://chaxun.truechat365.com/?url= # 这个解析真的牛逼,只能电脑看
# llq,https://hc.izny.cn/json.php?url=,1
江湖,
http
://
211
.
99
.
99
.
236
:
4567
/
jhjson
/
ceshi
.
php
?
url
=,
1
左岸,
https
://
jx
.
bozrc
.
com
:
4433
/
player
/?
url
=
GGTV
搜集,
https
://
play
.
fuqizhishi
.
com
/
juhe
/
API
.
php
?
appkey
=
caijijuhe220902
&
url
=,
1
ggtv
,
https
://
play
.
fuqizhishi
.
com
/
jx
/
API
.
php
?
appkey
=
xiaobai888
&
url
=,
1
#
ggtv,https://play.fuqizhishi.com/jx/API.php?appkey=xiaobai888&url=,1
# 爱酷,https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url=,1
ok
解析,
https
://
okjx
.
cc
/?
url
=
全民
1
,
http
://
api
.
wpsseo
.
cn
/?
v
=
m3u8tv
,
https
://
jx
.
m3u8
.
tv
/
jiexi
/?
url
=
Fosi
,
https
://
play
.
fositv
.
com
/?
url
=
诺讯,
https
://
www
.
nxflv
.
com
/?
url
=
...
...
@@ -22,7 +26,7 @@ Fosi,https://play.fositv.com/?url=
208
,
https
://
v
.
2080
kk
.
com
/
home
/
api
?
type
=
ys
&
uid
=
1308653
&
key
=
behnpstwxBCHJMQ029
&
url
=,
1
8090
,
https
://
www
.
8090
.
la
/
8090
/?
url
=
365
,
https
://
chaxun
.
truechat365
.
com
/?
url
=
爱酷,
https
://
jx
.
zhanlangbu
.
com
/
API
.
php
?
appkey
=
53
df3aa2fdb66bcbc4d05730b6fbfc71
&
url
=,
1
#
爱酷,https://jx.zhanlangbu.com/API.php?appkey=53df3aa2fdb66bcbc4d05730b6fbfc71&url=,1
插萝莉,
http
://
chaloli
.
cn
/
home
/
api
?
type
=
ys
&
uid
=
1
&
key
=
dklsuzIKNPRVW14568
&
url
=,
1
无名
2
,
https
://
h5
.
freejson
.
xyz
/
player
/?
url
=
无名
3
,
https
://
freejx
.
rx88
.
top
:
1234
/?
url
=
...
...
@@ -30,7 +34,6 @@ Fosi,https://play.fositv.com/?url=
真聊,
https
://
chaxun
.
truechat365
.
com
/?
url
=
猪蹄,
https
://
jx
.
iztyy
.
com
/
svip
/?
url
=
m2090
,
https
://
m2090
.
com
/?
url
=
BT5V
,
https
://
rx
.
bt5v
.
com
/
json
/
jsonindex
.
php
/?
url
=,
1
# b = a.map(it=>it.name+','+it.url+','+it.type).join('\n');console.log(b);
# 思古解析,https://jsap.attakids.com/?url=
# 云解析,https://jx.ppflv.com/?url=
...
...
readme.md
浏览文件 @
dae8612d
...
...
@@ -52,6 +52,7 @@
-
[X] 3.v3.7.6 新增优酷源(pluto专用)
-
[X] 4.v3.7.7 新增酷云77源(pluto专用),新增猫了个咪源,优化request等方法的post参数传递,增加rc函数
-
[X] 5.v3.7.8 增加单一搜索无匹配关键字自动打印源码,注释进入二级详情页的日志打印
-
[X] 6.v3.7.9 增加了用户解析合并功能并处理了几个坏的解析(准备跑路,原因是感觉海阔又牛逼了)
###### 2022/09/22
-
[X] 1.v3.7.3修复静态文件阿里token没渲染的bug,修复数据库升级bug,优化app.py
-
[X] 2.v3.7.4修复自定义drives合并配置报错问题
...
...
txt/py/py_alist.py
浏览文件 @
dae8612d
...
...
@@ -6,6 +6,7 @@ from base.spider import Spider
import
json
import
re
import
difflib
import
urllib
class
Spider
(
Spider
):
# 元类 默认的元类 type
def
getName
(
self
):
...
...
@@ -24,9 +25,13 @@ class Spider(Spider): # 元类 默认的元类 type
def
homeContent
(
self
,
filter
):
result
=
{}
cateManual
=
{
"七米蓝"
:
"https://al.chirmyram.com"
,
"资源小站"
:
"https://960303.xyz"
"七米蓝"
:
"https://al.chirmyram.com/"
,
"梅花盘"
:
"https://pan.142856.xyz/OneDrive"
,
"触光云盘"
:
"https://pan.ichuguang.com"
,
# "小孟资源": "https://8023.haohanba.cn/小孟丨资源大合集/无损音乐",
"资源小站"
:
"https://960303.xyz/ali"
,
"轻弹浅唱"
:
"https://g.xiang.lol"
,
"小兵组网盘视频"
:
"https://6vv.app"
}
classes
=
[]
for
k
in
cateManual
:
...
...
@@ -66,7 +71,10 @@ class Spider(Spider): # 元类 默认的元类 type
def
categoryContent
(
self
,
tid
,
pg
,
filter
,
extend
):
result
=
{}
if
self
.
ver
==
''
or
self
.
baseurl
==
''
:
if
tid
.
count
(
'/'
)
==
2
:
tid
=
tid
+
'/'
nurl
=
re
.
findall
(
r
"http.*://.*?/"
,
tid
)[
0
]
if
self
.
ver
==
''
or
self
.
baseurl
!=
nurl
:
self
.
getVersion
(
tid
)
ver
=
self
.
ver
baseurl
=
self
.
baseurl
...
...
@@ -85,6 +93,7 @@ class Spider(Spider): # 元类 默认的元类 type
jo
=
json
.
loads
(
rsp
.
text
)
vodList
=
jo
[
'data'
][
'content'
]
videos
=
[]
cid
=
''
for
vod
in
vodList
:
if
ver
==
2
:
img
=
vod
[
'thumbnail'
]
...
...
@@ -100,20 +109,9 @@ class Spider(Spider): # 元类 默认的元类 type
if
vod
[
'type'
]
==
1
:
tag
=
"folder"
remark
=
"文件夹"
cid
=
baseurl
+
aid
+
vod
[
'name'
]
#计算文件大小
else
:
vname
=
re
.
findall
(
r
"(.*)\."
,
vod
[
'name'
])[
0
]
vtpye
=
vod
[
'name'
].
replace
(
vname
,
""
)
if
vtpye
==
'.mkv'
or
vtpye
==
'.mp4'
:
vstr
=
re
.
findall
(
r
"\'name\': \'(.*?)\'"
,
str
(
vodList
))
if
len
(
vstr
)
==
2
:
suball
=
vstr
else
:
suball
=
difflib
.
get_close_matches
(
vname
,
vstr
,
len
(
vodList
),
cutoff
=
0.8
)
for
sub
in
suball
:
stype1
=
sub
.
endswith
(
".ass"
)
stype2
=
sub
.
endswith
(
".srt"
)
if
stype1
is
True
or
stype2
is
True
:
subt
=
'@@@'
+
aid
+
sub
size
=
vod
[
'size'
]
if
size
>
1024
*
1024
*
1024
*
1024.0
:
fs
=
"TB"
...
...
@@ -127,15 +125,58 @@ class Spider(Spider): # 元类 默认的元类 type
elif
size
>
1024.0
:
fs
=
"KB"
sz
=
round
(
size
/
(
1024.0
),
2
)
else
:
fs
=
"KB"
sz
=
round
(
size
/
(
1024.0
),
2
)
tag
=
"file"
remark
=
str
(
sz
)
+
fs
ifsubt
=
'subt'
in
locals
().
keys
()
if
ifsubt
is
False
:
aid
=
baseurl
+
aid
+
vod
[
'name'
]
else
:
aid
=
baseurl
+
aid
+
vod
[
'name'
]
+
subt
# 开始爬视频与字幕
srtvodList
=
str
(
vodList
)
foldernum
=
srtvodList
.
count
(
'
\'
type
\'
: 1'
)
filename
=
len
(
vodList
)
-
foldernum
if
filename
<
60
:
if
'mp4'
in
vod
[
'name'
]
or
'mkv'
in
vod
[
'name'
]
or
'TS'
in
vod
[
'name'
]
or
'flv'
in
vod
[
'name'
]
or
'rmvb'
in
vod
[
'name'
]
or
'mp3'
in
vod
[
'name'
]
or
'flac'
in
vod
[
'name'
]
or
'wav'
in
\
vod
[
'name'
]
or
'wma'
in
vod
[
'name'
]
or
'wma'
in
vod
[
'name'
]:
cid
=
''
for
temvod
in
vodList
:
if
'mp4'
in
temvod
[
'name'
]
or
'mkv'
in
temvod
[
'name'
]
or
'TS'
in
temvod
[
'name'
]
or
'flv'
in
\
temvod
[
'name'
]
or
'rmvb'
in
temvod
[
'name'
]
or
'mp3'
in
temvod
[
'name'
]
or
'flac'
in
\
temvod
[
'name'
]
or
'wav'
in
temvod
[
'name'
]
or
'wma'
in
temvod
[
'name'
]
or
'wma'
in
\
temvod
[
'name'
]:
vurl
=
baseurl
+
aid
+
temvod
[
'name'
]
# 开始爬字幕
subname
=
re
.
findall
(
r
"(.*)\."
,
temvod
[
'name'
])[
0
]
substr
=
re
.
findall
(
r
"\'name\': \'(.*?)\'"
,
str
(
vodList
))
if
len
(
substr
)
==
2
:
suball
=
substr
else
:
suball
=
difflib
.
get_close_matches
(
subname
,
substr
,
len
(
vodList
),
cutoff
=
0.8
)
for
sub
in
suball
:
if
sub
.
endswith
(
".ass"
)
or
sub
.
endswith
(
".srt"
):
subt
=
'@@@'
+
baseurl
+
aid
+
sub
ifsubt
=
'subt'
in
locals
().
keys
()
if
ifsubt
is
False
:
cid
=
cid
+
'{0}${1}#'
.
format
(
temvod
[
'name'
],
vurl
)
else
:
cid
=
cid
+
'{0}${1}{2}#'
.
format
(
temvod
[
'name'
],
vurl
,
subt
)
else
:
cid
=
cid
if
cid
==
''
:
cid
=
baseurl
+
aid
+
vod
[
'name'
]
else
:
subname
=
re
.
findall
(
r
"(.*)\."
,
vod
[
'name'
])[
0
]
substr
=
re
.
findall
(
r
"\'name\': \'(.*?)\'"
,
str
(
vodList
))
if
subname
+
'.ass'
in
substr
:
subt
=
'@@@'
+
baseurl
+
aid
+
subname
+
'.ass'
cid
=
baseurl
+
aid
+
vod
[
'name'
]
+
subt
elif
subname
+
'.srt'
in
substr
:
subt
=
'@@@'
+
baseurl
+
aid
+
subname
+
'.srt'
cid
=
baseurl
+
aid
+
vod
[
'name'
]
+
subt
else
:
cid
=
baseurl
+
aid
+
vod
[
'name'
]
videos
.
append
({
"vod_id"
:
a
id
,
"vod_id"
:
c
id
,
"vod_name"
:
vod
[
'name'
],
"vod_pic"
:
img
,
"vod_tag"
:
tag
,
...
...
@@ -150,79 +191,26 @@ class Spider(Spider): # 元类 默认的元类 type
def
detailContent
(
self
,
array
):
id
=
array
[
0
]
ifsub
=
'@@@'
in
id
if
ifsub
is
True
:
ids
=
id
.
split
(
'@@@'
)
vurl
=
ids
[
0
]
if
'$'
in
id
:
ids
=
id
.
split
(
'$'
)[
1
].
split
(
'#'
)[
0
].
split
(
'@@@'
)
url
=
ids
[
0
]
else
:
v
url
=
id
url
=
id
if
self
.
ver
==
''
or
self
.
baseurl
==
''
:
self
.
getVersion
(
vurl
)
ver
=
self
.
ver
self
.
getVersion
(
url
)
baseurl
=
self
.
baseurl
if
ifsub
is
True
:
ids
=
id
.
split
(
'@@@'
)
fileName
=
ids
[
0
].
replace
(
baseurl
,
""
)
if
'$'
in
id
:
vid
=
re
.
findall
(
r
"(.*)/"
,
url
.
replace
(
baseurl
,
""
))[
0
].
replace
(
baseurl
,
""
)
else
:
fileName
=
id
.
replace
(
baseurl
,
""
)
param
=
{
"path"
:
'/'
+
fileName
,
"password"
:
""
,
"page_num"
:
1
,
"page_size"
:
100
}
if
ver
==
2
:
rsp
=
self
.
postJson
(
baseurl
+
'api/public/path'
,
param
)
jo
=
json
.
loads
(
rsp
.
text
)
vodList
=
jo
[
'data'
][
'files'
][
0
]
if
ifsub
is
True
:
sparam
=
{
"path"
:
'/'
+
ids
[
1
],
"password"
:
""
,
"page_num"
:
1
,
"page_size"
:
100
}
srsp
=
self
.
postJson
(
baseurl
+
'api/public/path'
,
sparam
)
sjo
=
json
.
loads
(
srsp
.
text
)
sList
=
sjo
[
'data'
][
'files'
][
0
]
sub
=
'@@@'
+
sList
[
'url'
]
elif
ver
==
3
:
rsp
=
self
.
postJson
(
baseurl
+
'api/fs/get'
,
param
)
jo
=
json
.
loads
(
rsp
.
text
)
vodList
=
jo
[
'data'
]
if
ifsub
is
True
:
sparam
=
{
"path"
:
'/'
+
ids
[
1
],
"password"
:
""
,
"page_num"
:
1
,
"page_size"
:
100
}
srsp
=
self
.
postJson
(
baseurl
+
'api/fs/get'
,
sparam
)
sjo
=
json
.
loads
(
srsp
.
text
)
sList
=
sjo
[
'data'
]
sub
=
'@@@'
+
sList
[
'raw_url'
]
if
ver
==
2
:
url
=
vodList
[
'url'
]
pic
=
vodList
[
'thumbnail'
]
elif
ver
==
3
:
url
=
vodList
[
'raw_url'
]
pic
=
vodList
[
'thumb'
]
if
ifsub
is
True
:
purl
=
url
+
sub
else
:
purl
=
url
vId
=
fileName
name
=
vodList
[
'name'
]
tag
=
"file"
if
vodList
[
'type'
]
==
1
:
tag
=
"folder"
vid
=
url
.
replace
(
re
.
findall
(
r
".*/"
,
url
)[
0
],
""
)
id
=
vid
+
'$'
+
id
vod
=
{
"vod_id"
:
v
I
d
,
"vod_name"
:
name
,
"vod_pic"
:
pic
,
"vod_tag"
:
tag
,
"vod_id"
:
v
i
d
,
"vod_name"
:
vid
,
"vod_pic"
:
''
,
"vod_tag"
:
''
,
"vod_play_from"
:
"播放"
,
"vod_play_url"
:
name
+
'$'
+
purl
"vod_play_url"
:
id
}
result
=
{
'list'
:
[
...
...
@@ -242,13 +230,88 @@ class Spider(Spider): # 元类 默认的元类 type
ifsub
=
'@@@'
in
id
if
ifsub
is
True
:
ids
=
id
.
split
(
'@@@'
)
url
=
ids
[
0
]
result
[
'subt'
]
=
ids
[
1
]
if
self
.
ver
==
''
or
self
.
baseurl
==
''
:
self
.
getVersion
(
ids
[
1
])
ver
=
self
.
ver
baseurl
=
self
.
baseurl
fileName
=
ids
[
1
].
replace
(
baseurl
,
""
)
vfileName
=
ids
[
0
].
replace
(
baseurl
,
""
)
param
=
{
"path"
:
'/'
+
fileName
,
"password"
:
""
,
"page_num"
:
1
,
"page_size"
:
100
}
vparam
=
{
"path"
:
'/'
+
vfileName
,
"password"
:
""
,
"page_num"
:
1
,
"page_size"
:
100
}
if
ver
==
2
:
rsp
=
self
.
postJson
(
baseurl
+
'api/public/path'
,
param
)
jo
=
json
.
loads
(
rsp
.
text
)
vodList
=
jo
[
'data'
][
'files'
][
0
]
subturl
=
vodList
[
'url'
]
vrsp
=
self
.
postJson
(
baseurl
+
'api/public/path'
,
vparam
)
vjo
=
json
.
loads
(
vrsp
.
text
)
vList
=
vjo
[
'data'
][
'files'
][
0
]
url
=
vList
[
'url'
]
elif
ver
==
3
:
rsp
=
self
.
postJson
(
baseurl
+
'api/fs/get'
,
param
)
jo
=
json
.
loads
(
rsp
.
text
)
vodList
=
jo
[
'data'
]
subturl
=
vodList
[
'raw_url'
]
vrsp
=
self
.
postJson
(
baseurl
+
'api/fs/get'
,
vparam
)
vjo
=
json
.
loads
(
vrsp
.
text
)
vList
=
vjo
[
'data'
]
url
=
vList
[
'raw_url'
]
if
subturl
.
startswith
(
'http'
)
is
False
:
head
=
re
.
findall
(
r
"h.*?:"
,
baseurl
)[
0
]
subturl
=
head
+
subturl
if
url
.
startswith
(
'http'
)
is
False
:
head
=
re
.
findall
(
r
"h.*?:"
,
baseurl
)[
0
]
url
=
head
+
url
urlfileName
=
urllib
.
parse
.
quote
(
fileName
)
subturl
=
subturl
.
replace
(
fileName
,
urlfileName
)
urlvfileName
=
urllib
.
parse
.
quote
(
vfileName
)
url
=
url
.
replace
(
vfileName
,
urlvfileName
)
result
[
'subt'
]
=
subturl
else
:
url
=
id
if
self
.
ver
==
''
or
self
.
baseurl
==
''
:
self
.
getVersion
(
id
)
ver
=
self
.
ver
baseurl
=
self
.
baseurl
vfileName
=
id
.
replace
(
baseurl
,
""
)
vparam
=
{
"path"
:
'/'
+
vfileName
,
"password"
:
""
,
"page_num"
:
1
,
"page_size"
:
100
}
if
ver
==
2
:
vrsp
=
self
.
postJson
(
baseurl
+
'api/public/path'
,
vparam
)
vjo
=
json
.
loads
(
vrsp
.
text
)
vList
=
vjo
[
'data'
][
'files'
][
0
]
driver
=
vList
[
'driver'
]
url
=
vList
[
'url'
]
elif
ver
==
3
:
vrsp
=
self
.
postJson
(
baseurl
+
'api/fs/get'
,
vparam
)
vjo
=
json
.
loads
(
vrsp
.
text
)
vList
=
vjo
[
'data'
]
url
=
vList
[
'raw_url'
]
driver
=
vList
[
'provider'
]
if
url
.
startswith
(
'http'
)
is
False
:
head
=
re
.
findall
(
r
"h.*?:"
,
baseurl
)[
0
]
url
=
head
+
url
urlvfileName
=
urllib
.
parse
.
quote
(
vfileName
)
url
=
url
.
replace
(
vfileName
,
urlvfileName
)
if
driver
==
'Baidu.Disk'
:
result
[
"header"
]
=
{
"User-Agent"
:
"pan.baidu.com"
}
result
[
"parse"
]
=
0
result
[
"playUrl"
]
=
''
result
[
"url"
]
=
url
return
result
config
=
{
...
...
txt/py/py_kuaikan.py
0 → 100644
浏览文件 @
dae8612d
#coding=utf-8
#!/usr/bin/python
import
sys
sys
.
path
.
append
(
'..'
)
from
base.spider
import
Spider
import
json
class
Spider
(
Spider
):
# 元类 默认的元类 type
def
getName
(
self
):
return
"快看影视"
def
init
(
self
,
extend
=
""
):
print
(
"============{0}============"
.
format
(
extend
))
pass
def
homeContent
(
self
,
filter
):
result
=
{}
cateManual
=
{
"电视剧"
:
"2"
,
"电影"
:
"1"
,
"综艺"
:
"3"
,
"动漫"
:
"4"
,
"纪录片"
:
"5"
}
classes
=
[]
for
k
in
cateManual
:
classes
.
append
({
'type_name'
:
k
,
'type_id'
:
cateManual
[
k
]
})
result
[
'class'
]
=
classes
if
(
filter
):
result
[
'filters'
]
=
self
.
config
[
'filter'
]
return
result
def
homeVideoContent
(
self
):
rsp
=
self
.
fetch
(
"http://api.8a5.cn/parse/kuaikan/py.php?do=homeVideoContent"
)
alists
=
json
.
loads
(
rsp
.
text
)
alist
=
alists
[
'list'
]
result
=
{
'list'
:
alist
}
return
result
def
categoryContent
(
self
,
tid
,
pg
,
filter
,
extend
):
result
=
{}
urlParams
=
[]
params
=
''
for
key
in
extend
:
urlParams
.
append
(
str
(
key
)
+
'='
+
extend
[
key
])
params
=
'&'
.
join
(
urlParams
)
url
=
'http://api.8a5.cn/parse/kuaikan/py.php?do=categoryContent&tid={0}&page={1}&{2}'
.
format
(
tid
,
pg
,
params
)
rsp
=
self
.
fetch
(
url
)
alists
=
json
.
loads
(
rsp
.
text
)
alist
=
alists
[
'list'
]
result
[
'list'
]
=
alist
result
[
'page'
]
=
pg
result
[
'pagecount'
]
=
9999
result
[
'limit'
]
=
90
result
[
'total'
]
=
999999
return
result
def
detailContent
(
self
,
array
):
tid
=
array
[
0
]
url
=
'http://api.8a5.cn/parse/kuaikan/py.php?do=detailContent&id={0}'
.
format
(
tid
)
rsp
=
self
.
fetch
(
url
)
alists
=
json
.
loads
(
rsp
.
text
)
vod
=
alists
[
'vod'
]
result
=
{
'list'
:[
vod
]
}
return
result
def
searchContent
(
self
,
key
,
quick
):
url
=
'http://api.8a5.cn/parse/kuaikan/py.php?do=searchContent&wd={0}'
.
format
(
key
)
rsp
=
self
.
fetch
(
url
)
alists
=
json
.
loads
(
rsp
.
text
)
list
=
alists
[
'list'
]
result
=
{
'list'
:
list
}
return
result
def
playerContent
(
self
,
flag
,
id
,
vipFlags
):
result
=
{}
if
'api.8a5.cn'
in
id
:
rsp
=
self
.
fetch
(
id
)
alists
=
json
.
loads
(
rsp
.
text
)
id
=
alists
[
'url'
]
result
[
"parse"
]
=
0
result
[
"playUrl"
]
=
''
result
[
"url"
]
=
id
return
result
config
=
{
"player"
:
{},
"filter"
:{
"2"
:[{
"key"
:
"area"
,
"name"
:
"地区"
,
"value"
:[{
"n"
:
"全部"
,
"v"
:
0
},{
"n"
:
"内地"
,
"v"
:
1
},{
"n"
:
"中国香港"
,
"v"
:
2
},{
"n"
:
"中国台湾"
,
"v"
:
3
},{
"n"
:
"韩国"
,
"v"
:
4
},{
"n"
:
"日本"
,
"v"
:
5
},{
"n"
:
"泰国"
,
"v"
:
6
},{
"n"
:
"美国"
,
"v"
:
7
},{
"n"
:
"英国"
,
"v"
:
8
},{
"n"
:
"新加坡"
,
"v"
:
9
},{
"n"
:
"法国"
,
"v"
:
10
},{
"n"
:
"德国"
,
"v"
:
11
},{
"n"
:
"印度"
,
"v"
:
12
},{
"n"
:
"欧美"
,
"v"
:
13
},{
"n"
:
"其他"
,
"v"
:
14
}]},{
"key"
:
"year"
,
"name"
:
"年份"
,
"value"
:[{
"n"
:
"全部"
,
"v"
:
0
},{
"n"
:
"2022"
,
"v"
:
20
},{
"n"
:
"2021"
,
"v"
:
19
},{
"n"
:
"2020"
,
"v"
:
18
},{
"n"
:
"2019"
,
"v"
:
17
},{
"n"
:
"2018"
,
"v"
:
16
},{
"n"
:
"2017"
,
"v"
:
15
},{
"n"
:
"2016"
,
"v"
:
14
},{
"n"
:
"2015"
,
"v"
:
13
},{
"n"
:
"2014"
,
"v"
:
12
},{
"n"
:
"2013"
,
"v"
:
11
},{
"n"
:
"2012"
,
"v"
:
10
},{
"n"
:
"2011"
,
"v"
:
9
},{
"n"
:
"2010"
,
"v"
:
8
},{
"n"
:
"2009"
,
"v"
:
7
},{
"n"
:
"2008"
,
"v"
:
6
},{
"n"
:
"2007"
,
"v"
:
5
},{
"n"
:
"2006"
,
"v"
:
4
},{
"n"
:
"2005"
,
"v"
:
3
},{
"n"
:
"2004"
,
"v"
:
2
},{
"n"
:
"更早"
,
"v"
:
1
}]},{
"key"
:
"class"
,
"name"
:
"剧情"
,
"value"
:[{
"n"
:
"全部"
,
"v"
:
0
},{
"n"
:
"剧情"
,
"v"
:
2
},{
"n"
:
"爱情"
,
"v"
:
21
},{
"n"
:
"犯罪"
,
"v"
:
23
},{
"n"
:
"搞笑"
,
"v"
:
34
},{
"n"
:
"武侠"
,
"v"
:
19
},{
"n"
:
"都市"
,
"v"
:
6
},{
"n"
:
"家庭"
,
"v"
:
16
},{
"n"
:
"职场"
,
"v"
:
42
},{
"n"
:
"国产"
,
"v"
:
112
},{
"n"
:
"国产剧"
,
"v"
:
113
},{
"n"
:
"年代"
,
"v"
:
110
},{
"n"
:
"文化"
,
"v"
:
84
},{
"n"
:
"网络剧"
,
"v"
:
114
},{
"n"
:
"芒果出品"
,
"v"
:
115
},{
"n"
:
"言情"
,
"v"
:
1
},{
"n"
:
"古装"
,
"v"
:
8
},{
"n"
:
"青春"
,
"v"
:
15
},{
"n"
:
"偶像"
,
"v"
:
7
},{
"n"
:
"伦理"
,
"v"
:
3
},{
"n"
:
"喜剧"
,
"v"
:
4
},{
"n"
:
"悬疑"
,
"v"
:
5
},{
"n"
:
"神话"
,
"v"
:
13
},{
"n"
:
"警匪"
,
"v"
:
10
},{
"n"
:
"历史"
,
"v"
:
11
},{
"n"
:
"励志"
,
"v"
:
12
},{
"n"
:
"情感"
,
"v"
:
38
},{
"n"
:
"战争"
,
"v"
:
25
},{
"n"
:
"电影版"
,
"v"
:
74
},{
"n"
:
"其他"
,
"v"
:
79
},{
"n"
:
"谍战"
,
"v"
:
14
},{
"n"
:
"校园"
,
"v"
:
61
},{
"n"
:
"农村"
,
"v"
:
88
},{
"n"
:
"动作"
,
"v"
:
17
},{
"n"
:
"传记"
,
"v"
:
29
},{
"n"
:
"科幻"
,
"v"
:
20
},{
"n"
:
"惊悚"
,
"v"
:
31
},{
"n"
:
"冒险"
,
"v"
:
56
},{
"n"
:
"同性"
,
"v"
:
111
},{
"n"
:
"恋爱"
,
"v"
:
58
},{
"n"
:
"奇幻"
,
"v"
:
24
},{
"n"
:
"生活"
,
"v"
:
39
},{
"n"
:
"歌舞"
,
"v"
:
30
},{
"n"
:
"恐怖"
,
"v"
:
22
},{
"n"
:
"原创"
,
"v"
:
86
},{
"n"
:
"魔幻"
,
"v"
:
85
},{
"n"
:
"战斗"
,
"v"
:
80
},{
"n"
:
"军旅"
,
"v"
:
104
},{
"n"
:
"文艺"
,
"v"
:
27
},{
"n"
:
"音乐"
,
"v"
:
41
},{
"n"
:
"新番动画"
,
"v"
:
77
},{
"n"
:
"刑侦"
,
"v"
:
87
},{
"n"
:
"情景"
,
"v"
:
18
},{
"n"
:
"玄幻"
,
"v"
:
60
},{
"n"
:
"军事"
,
"v"
:
9
},{
"n"
:
"经典"
,
"v"
:
55
},{
"n"
:
"推理"
,
"v"
:
57
},{
"n"
:
"革命"
,
"v"
:
109
},{
"n"
:
"纪录"
,
"v"
:
28
},{
"n"
:
"运动"
,
"v"
:
66
},{
"n"
:
"热血"
,
"v"
:
53
},{
"n"
:
"竞技"
,
"v"
:
70
},{
"n"
:
"童话"
,
"v"
:
69
},{
"n"
:
"友情"
,
"v"
:
72
},{
"n"
:
"少儿"
,
"v"
:
46
},{
"n"
:
"真人秀"
,
"v"
:
33
},{
"n"
:
"动画"
,
"v"
:
26
},{
"n"
:
"灾难"
,
"v"
:
103
},{
"n"
:
"纪实"
,
"v"
:
48
},{
"n"
:
"机战"
,
"v"
:
63
},{
"n"
:
"治愈"
,
"v"
:
59
},{
"n"
:
"时尚"
,
"v"
:
44
},{
"n"
:
"脱口秀"
,
"v"
:
32
},{
"n"
:
"美食"
,
"v"
:
43
},{
"n"
:
"戏曲"
,
"v"
:
108
},{
"n"
:
"人文"
,
"v"
:
83
},{
"n"
:
"完结动画"
,
"v"
:
78
},{
"n"
:
"社会"
,
"v"
:
71
},{
"n"
:
"益智"
,
"v"
:
68
},{
"n"
:
"亲子"
,
"v"
:
64
},{
"n"
:
"访谈"
,
"v"
:
37
},{
"n"
:
"游戏"
,
"v"
:
45
},{
"n"
:
"晚会"
,
"v"
:
40
},{
"n"
:
"美少女"
,
"v"
:
54
},{
"n"
:
"动物"
,
"v"
:
62
},{
"n"
:
"真人版"
,
"v"
:
73
},{
"n"
:
"科学"
,
"v"
:
92
},{
"n"
:
"内地"
,
"v"
:
117
}]}],
"1"
:[{
"key"
:
"area"
,
"name"
:
"地区"
,
"value"
:[{
"n"
:
"全部"
,
"v"
:
0
},{
"n"
:
"中国"
,
"v"
:
1
},{
"n"
:
"中国香港"
,
"v"
:
2
},{
"n"
:
"中国台湾"
,
"v"
:
3
},{
"n"
:
"韩国"
,
"v"
:
4
},{
"n"
:
"日本"
,
"v"
:
5
},{
"n"
:
"泰国"
,
"v"
:
6
},{
"n"
:
"美国"
,
"v"
:
7
},{
"n"
:
"英国"
,
"v"
:
8
},{
"n"
:
"新加坡"
,
"v"
:
9
},{
"n"
:
"法国"
,
"v"
:
10
},{
"n"
:
"德国"
,
"v"
:
11
},{
"n"
:
"印度"
,
"v"
:
12
},{
"n"
:
"欧美"
,
"v"
:
13
},{
"n"
:
"其他"
,
"v"
:
14
}]},{
"key"
:
"year"
,
"name"
:
"年份"
,
"value"
:[{
"n"
:
"全部"
,
"v"
:
0
},{
"n"
:
"2022"
,
"v"
:
20
},{
"n"
:
"2021"
,
"v"
:
19
},{
"n"
:
"2020"
,
"v"
:
18
},{
"n"
:
"2019"
,
"v"
:
17
},{
"n"
:
"2018"
,
"v"
:
16
},{
"n"
:
"2017"
,
"v"
:
15
},{
"n"
:
"2016"
,
"v"
:
14
},{
"n"
:
"2015"
,
"v"
:
13
},{
"n"
:
"2014"
,
"v"
:
12
},{
"n"
:
"2013"
,
"v"
:
11
},{
"n"
:
"2012"
,
"v"
:
10
},{
"n"
:
"2011"
,
"v"
:
9
},{
"n"
:
"2010"
,
"v"
:
8
},{
"n"
:
"2009"
,
"v"
:
7
},{
"n"
:
"2008"
,
"v"
:
6
},{
"n"
:
"2007"
,
"v"
:
5
},{
"n"
:
"2006"
,
"v"
:
4
},{
"n"
:
"2005"
,
"v"
:
3
},{
"n"
:
"2004"
,
"v"
:
2
},{
"n"
:
"更早"
,
"v"
:
1
}]},{
"key"
:
"class"
,
"name"
:
"剧情"
,
"value"
:[{
"n"
:
"全部"
,
"v"
:
0
},{
"n"
:
"言情"
,
"v"
:
1
},{
"n"
:
"动作"
,
"v"
:
17
},{
"n"
:
"惊悚"
,
"v"
:
31
},{
"n"
:
"剧情"
,
"v"
:
2
},{
"n"
:
"科幻"
,
"v"
:
20
},{
"n"
:
"喜剧"
,
"v"
:
4
},{
"n"
:
"冒险"
,
"v"
:
56
},{
"n"
:
"动画"
,
"v"
:
26
},{
"n"
:
"悬疑"
,
"v"
:
5
},{
"n"
:
"恐怖"
,
"v"
:
22
},{
"n"
:
"文艺"
,
"v"
:
27
},{
"n"
:
"纪实"
,
"v"
:
48
},{
"n"
:
"爱情"
,
"v"
:
21
},{
"n"
:
"历史"
,
"v"
:
11
},{
"n"
:
"犯罪"
,
"v"
:
23
},{
"n"
:
"战争"
,
"v"
:
25
},{
"n"
:
"青春"
,
"v"
:
15
},{
"n"
:
"家庭"
,
"v"
:
16
},{
"n"
:
"传记"
,
"v"
:
29
},{
"n"
:
"奇幻"
,
"v"
:
24
},{
"n"
:
"电影版"
,
"v"
:
74
},{
"n"
:
"古装"
,
"v"
:
8
},{
"n"
:
"纪录"
,
"v"
:
28
},{
"n"
:
"恋爱"
,
"v"
:
58
},{
"n"
:
"伦理"
,
"v"
:
3
},{
"n"
:
"歌舞"
,
"v"
:
30
},{
"n"
:
"音乐"
,
"v"
:
41
},{
"n"
:
"推理"
,
"v"
:
57
},{
"n"
:
"武侠"
,
"v"
:
19
},{
"n"
:
"警匪"
,
"v"
:
10
},{
"n"
:
"科普"
,
"v"
:
102
},{
"n"
:
"灾难"
,
"v"
:
103
},{
"n"
:
"军旅"
,
"v"
:
104
},{
"n"
:
"戏曲"
,
"v"
:
108
},{
"n"
:
"革命"
,
"v"
:
109
},{
"n"
:
"文化"
,
"v"
:
84
},{
"n"
:
"运动"
,
"v"
:
66
},{
"n"
:
"社会"
,
"v"
:
71
},{
"n"
:
"年代"
,
"v"
:
110
},{
"n"
:
"同性"
,
"v"
:
111
},{
"n"
:
"励志"
,
"v"
:
12
},{
"n"
:
"热血"
,
"v"
:
53
},{
"n"
:
"教育"
,
"v"
:
90
},{
"n"
:
"神话"
,
"v"
:
13
},{
"n"
:
"谍战"
,
"v"
:
14
},{
"n"
:
"搞笑"
,
"v"
:
34
},{
"n"
:
"情感"
,
"v"
:
38
},{
"n"
:
"治愈"
,
"v"
:
59
},{
"n"
:
"校园"
,
"v"
:
61
},{
"n"
:
"枪战"
,
"v"
:
98
},{
"n"
:
"玄幻"
,
"v"
:
60
},{
"n"
:
"魔幻"
,
"v"
:
85
},{
"n"
:
"友情"
,
"v"
:
72
},{
"n"
:
"少儿"
,
"v"
:
46
},{
"n"
:
"体育"
,
"v"
:
47
},{
"n"
:
"经典"
,
"v"
:
55
},{
"n"
:
"军事"
,
"v"
:
9
},{
"n"
:
"脱口秀"
,
"v"
:
32
},{
"n"
:
"刑侦"
,
"v"
:
87
},{
"n"
:
"农村"
,
"v"
:
88
},{
"n"
:
"美食"
,
"v"
:
43
},{
"n"
:
"竞技"
,
"v"
:
70
},{
"n"
:
"都市"
,
"v"
:
6
},{
"n"
:
"其他"
,
"v"
:
79
},{
"n"
:
"真人版"
,
"v"
:
73
},{
"n"
:
"战斗"
,
"v"
:
80
},{
"n"
:
"完结动画"
,
"v"
:
78
},{
"n"
:
"美少女"
,
"v"
:
54
},{
"n"
:
"亲子"
,
"v"
:
64
},{
"n"
:
"生活"
,
"v"
:
39
},{
"n"
:
"时尚"
,
"v"
:
44
},{
"n"
:
"美术"
,
"v"
:
49
},{
"n"
:
"动物"
,
"v"
:
62
},{
"n"
:
"自然"
,
"v"
:
89
},{
"n"
:
"旅游"
,
"v"
:
82
},{
"n"
:
"人文"
,
"v"
:
83
},{
"n"
:
"真人秀"
,
"v"
:
33
},{
"n"
:
"访谈"
,
"v"
:
37
},{
"n"
:
"晚会"
,
"v"
:
40
},{
"n"
:
"职场"
,
"v"
:
42
},{
"n"
:
"财经"
,
"v"
:
50
},{
"n"
:
"偶像"
,
"v"
:
7
},{
"n"
:
"科学"
,
"v"
:
92
},{
"n"
:
"解说"
,
"v"
:
93
},{
"n"
:
"新闻"
,
"v"
:
96
},{
"n"
:
"内地"
,
"v"
:
117
},{
"n"
:
"明星"
,
"v"
:
116
},{
"n"
:
"国产"
,
"v"
:
112
},{
"n"
:
"益智"
,
"v"
:
68
},{
"n"
:
"儿歌"
,
"v"
:
65
},{
"n"
:
"相声"
,
"v"
:
81
}]}],
"3"
:[{
"key"
:
"area"
,
"name"
:
"地区"
,
"value"
:[{
"n"
:
"全部"
,
"v"
:
0
},{
"n"
:
"内地"
,
"v"
:
1
},{
"n"
:
"中国香港"
,
"v"
:
2
},{
"n"
:
"中国台湾"
,
"v"
:
3
},{
"n"
:
"韩国"
,
"v"
:
4
},{
"n"
:
"日本"
,
"v"
:
5
},{
"n"
:
"泰国"
,
"v"
:
6
},{
"n"
:
"美国"
,
"v"
:
7
},{
"n"
:
"英国"
,
"v"
:
8
},{
"n"
:
"新加坡"
,
"v"
:
9
},{
"n"
:
"法国"
,
"v"
:
10
},{
"n"
:
"德国"
,
"v"
:
11
},{
"n"
:
"印度"
,
"v"
:
12
},{
"n"
:
"欧美"
,
"v"
:
13
},{
"n"
:
"其他"
,
"v"
:
14
}]},{
"key"
:
"year"
,
"name"
:
"年份"
,
"value"
:[{
"n"
:
"全部"
,
"v"
:
0
},{
"n"
:
"2022"
,
"v"
:
20
},{
"n"
:
"2021"
,
"v"
:
19
},{
"n"
:
"2020"
,
"v"
:
18
},{
"n"
:
"2019"
,
"v"
:
17
},{
"n"
:
"2018"
,
"v"
:
16
},{
"n"
:
"2017"
,
"v"
:
15
},{
"n"
:
"2016"
,
"v"
:
14
},{
"n"
:
"2015"
,
"v"
:
13
},{
"n"
:
"2014"
,
"v"
:
12
},{
"n"
:
"2013"
,
"v"
:
11
},{
"n"
:
"2012"
,
"v"
:
10
},{
"n"
:
"2011"
,
"v"
:
9
},{
"n"
:
"2010"
,
"v"
:
8
},{
"n"
:
"2009"
,
"v"
:
7
},{
"n"
:
"2008"
,
"v"
:
6
},{
"n"
:
"2007"
,
"v"
:
5
},{
"n"
:
"2006"
,
"v"
:
4
},{
"n"
:
"2005"
,
"v"
:
3
},{
"n"
:
"2004"
,
"v"
:
2
},{
"n"
:
"更早"
,
"v"
:
1
}]},{
"key"
:
"class"
,
"name"
:
"剧情"
,
"value"
:[{
"n"
:
"全部"
,
"v"
:
0
},{
"n"
:
"游戏"
,
"v"
:
45
},{
"n"
:
"推理"
,
"v"
:
57
},{
"n"
:
"真人秀"
,
"v"
:
33
},{
"n"
:
"生活"
,
"v"
:
39
},{
"n"
:
"言情"
,
"v"
:
1
},{
"n"
:
"青春"
,
"v"
:
15
},{
"n"
:
"爱情"
,
"v"
:
21
},{
"n"
:
"情感"
,
"v"
:
38
},{
"n"
:
"恋爱"
,
"v"
:
58
},{
"n"
:
"都市"
,
"v"
:
6
},{
"n"
:
"家庭"
,
"v"
:
16
},{
"n"
:
"电影版"
,
"v"
:
74
},{
"n"
:
"育儿"
,
"v"
:
100
},{
"n"
:
"脱口秀"
,
"v"
:
32
},{
"n"
:
"少儿"
,
"v"
:
46
},{
"n"
:
"动画"
,
"v"
:
26
},{
"n"
:
"教育"
,
"v"
:
90
},{
"n"
:
"亲子"
,
"v"
:
64
},{
"n"
:
"竞赛"
,
"v"
:
101
},{
"n"
:
"搞笑"
,
"v"
:
34
},{
"n"
:
"原创"
,
"v"
:
86
},{
"n"
:
"文化"
,
"v"
:
84
},{
"n"
:
"科普"
,
"v"
:
102
},{
"n"
:
"体育"
,
"v"
:
47
},{
"n"
:
"灾难"
,
"v"
:
103
},{
"n"
:
"同性"
,
"v"
:
111
},{
"n"
:
"时实"
,
"v"
:
103
},{
"n"
:
"军事"
,
"v"
:
9
},{
"n"
:
"军旅"
,
"v"
:
104
},{
"n"
:
"战争"
,
"v"
:
25
},{
"n"
:
"启蒙"
,
"v"
:
105
},{
"n"
:
"舞蹈"
,
"v"
:
106
},{
"n"
:
"竞技"
,
"v"
:
70
},{
"n"
:
"采访"
,
"v"
:
107
},{
"n"
:
"访谈"
,
"v"
:
37
},{
"n"
:
"戏曲"
,
"v"
:
108
},{
"n"
:
"革命"
,
"v"
:
109
},{
"n"
:
"历史"
,
"v"
:
11
},{
"n"
:
"纪录"
,
"v"
:
28
},{
"n"
:
"文艺"
,
"v"
:
27
},{
"n"
:
"传记"
,
"v"
:
29
},{
"n"
:
"人文"
,
"v"
:
83
},{
"n"
:
"文献"
,
"v"
:
91
},{
"n"
:
"音乐"
,
"v"
:
41
},{
"n"
:
"励志"
,
"v"
:
12
},{
"n"
:
"选秀"
,
"v"
:
35
},{
"n"
:
"动作"
,
"v"
:
17
},{
"n"
:
"冒险"
,
"v"
:
56
},{
"n"
:
"偶像"
,
"v"
:
7
},{
"n"
:
"剧情"
,
"v"
:
2
},{
"n"
:
"农村"
,
"v"
:
88
},{
"n"
:
"神话"
,
"v"
:
13
},{
"n"
:
"奇幻"
,
"v"
:
24
},{
"n"
:
"经典"
,
"v"
:
55
},{
"n"
:
"谍战"
,
"v"
:
14
},{
"n"
:
"歌舞"
,
"v"
:
30
},{
"n"
:
"美术"
,
"v"
:
49
},{
"n"
:
"校园"
,
"v"
:
61
},{
"n"
:
"社会"
,
"v"
:
71
},{
"n"
:
"旅游"
,
"v"
:
82
},{
"n"
:
"喜剧"
,
"v"
:
4
},{
"n"
:
"伦理"
,
"v"
:
3
},{
"n"
:
"悬疑"
,
"v"
:
5
},{
"n"
:
"科幻"
,
"v"
:
20
},{
"n"
:
"犯罪"
,
"v"
:
23
},{
"n"
:
"惊悚"
,
"v"
:
31
},{
"n"
:
"古装"
,
"v"
:
8
},{
"n"
:
"恐怖"
,
"v"
:
22
},{
"n"
:
"警匪"
,
"v"
:
10
},{
"n"
:
"纪实"
,
"v"
:
48
},{
"n"
:
"美食"
,
"v"
:
43
},{
"n"
:
"动物"
,
"v"
:
62
},{
"n"
:
"友情"
,
"v"
:
72
},{
"n"
:
"儿歌"
,
"v"
:
65
},{
"n"
:
"热血"
,
"v"
:
53
},{
"n"
:
"治愈"
,
"v"
:
59
},{
"n"
:
"运动"
,
"v"
:
66
},{
"n"
:
"魔幻"
,
"v"
:
85
},{
"n"
:
"晚会"
,
"v"
:
40
},{
"n"
:
"真人版"
,
"v"
:
73
},{
"n"
:
"益智"
,
"v"
:
68
},{
"n"
:
"分享"
,
"v"
:
98
},{
"n"
:
"其他"
,
"v"
:
79
},{
"n"
:
"自然"
,
"v"
:
89
},{
"n"
:
"相声"
,
"v"
:
81
},{
"n"
:
"八卦"
,
"v"
:
36
},{
"n"
:
"播报"
,
"v"
:
52
},{
"n"
:
"时尚"
,
"v"
:
44
},{
"n"
:
"汽车"
,
"v"
:
51
},{
"n"
:
"职场"
,
"v"
:
42
},{
"n"
:
"新闻"
,
"v"
:
96
},{
"n"
:
"财经"
,
"v"
:
50
},{
"n"
:
"科学"
,
"v"
:
92
},{
"n"
:
"教学"
,
"v"
:
99
},{
"n"
:
"解说"
,
"v"
:
93
},{
"n"
:
"枪战"
,
"v"
:
98
},{
"n"
:
"宣传"
,
"v"
:
97
},{
"n"
:
"战斗"
,
"v"
:
80
},{
"n"
:
"刑侦"
,
"v"
:
87
},{
"n"
:
"童话"
,
"v"
:
69
},{
"n"
:
"怪物"
,
"v"
:
67
},{
"n"
:
"武侠"
,
"v"
:
19
},{
"n"
:
"演讲"
,
"v"
:
95
},{
"n"
:
"明星"
,
"v"
:
116
},{
"n"
:
"游戏竞技"
,
"v"
:
124
}]}],
"4"
:[{
"key"
:
"area"
,
"name"
:
"
\u5730\u533a
"
,
"value"
:[{
"n"
:
"
\u5168\u90e8
"
,
"v"
:
0
},{
"n"
:
"
\u5185\u5730
"
,
"v"
:
1
},{
"n"
:
"
\u4e2d\u56fd\u9999\u6e2f
"
,
"v"
:
2
},{
"n"
:
"
\u4e2d\u56fd\u53f0\u6e7e
"
,
"v"
:
3
},{
"n"
:
"
\u97e9\u56fd
"
,
"v"
:
4
},{
"n"
:
"
\u65e5\u672c
"
,
"v"
:
5
},{
"n"
:
"
\u6cf0\u56fd
"
,
"v"
:
6
},{
"n"
:
"
\u7f8e\u56fd
"
,
"v"
:
7
},{
"n"
:
"
\u82f1\u56fd
"
,
"v"
:
8
},{
"n"
:
"
\u65b0\u52a0\u5761
"
,
"v"
:
9
},{
"n"
:
"
\u6cd5\u56fd
"
,
"v"
:
10
},{
"n"
:
"
\u5fb7\u56fd
"
,
"v"
:
11
},{
"n"
:
"
\u5370\u5ea6
"
,
"v"
:
12
},{
"n"
:
"
\u6b27\u7f8e
"
,
"v"
:
13
},{
"n"
:
"
\u5176\u4ed6
"
,
"v"
:
14
}]},{
"key"
:
"year"
,
"name"
:
"
\u5e74\u4efd
"
,
"value"
:[{
"n"
:
"
\u5168\u90e8
"
,
"v"
:
0
},{
"n"
:
"2022"
,
"v"
:
20
},{
"n"
:
"2021"
,
"v"
:
19
},{
"n"
:
"2020"
,
"v"
:
18
},{
"n"
:
"2019"
,
"v"
:
17
},{
"n"
:
"2018"
,
"v"
:
16
},{
"n"
:
"2017"
,
"v"
:
15
},{
"n"
:
"2016"
,
"v"
:
14
},{
"n"
:
"2015"
,
"v"
:
13
},{
"n"
:
"2014"
,
"v"
:
12
},{
"n"
:
"2013"
,
"v"
:
11
},{
"n"
:
"2012"
,
"v"
:
10
},{
"n"
:
"2011"
,
"v"
:
9
},{
"n"
:
"2010"
,
"v"
:
8
},{
"n"
:
"2009"
,
"v"
:
7
},{
"n"
:
"2008"
,
"v"
:
6
},{
"n"
:
"2007"
,
"v"
:
5
},{
"n"
:
"2006"
,
"v"
:
4
},{
"n"
:
"2005"
,
"v"
:
3
},{
"n"
:
"2004"
,
"v"
:
2
},{
"n"
:
"
\u66f4\u65e9
"
,
"v"
:
1
}]},{
"key"
:
"class"
,
"name"
:
"
\u5267\u60c5
"
,
"value"
:[{
"n"
:
"
\u5168\u90e8
"
,
"v"
:
0
},{
"n"
:
"
\u559c\u5267
"
,
"v"
:
4
},{
"n"
:
"
\u53e4\u88c5
"
,
"v"
:
8
},{
"n"
:
"
\u6b66\u4fa0
"
,
"v"
:
19
},{
"n"
:
"
\u52a8\u753b
"
,
"v"
:
26
},{
"n"
:
"
\u8a00\u60c5
"
,
"v"
:
1
},{
"n"
:
"
\u5386\u53f2
"
,
"v"
:
11
},{
"n"
:
"
\u641e\u7b11
"
,
"v"
:
34
},{
"n"
:
"
\u5192\u9669
"
,
"v"
:
56
},{
"n"
:
"
\u9b54\u5e7b
"
,
"v"
:
85
},{
"n"
:
"
\u52b1\u5fd7
"
,
"v"
:
12
},{
"n"
:
"
\u9752\u6625
"
,
"v"
:
15
},{
"n"
:
"
\u7231\u60c5
"
,
"v"
:
21
},{
"n"
:
"
\u6821\u56ed
"
,
"v"
:
61
},{
"n"
:
"
\u5bb6\u5ead
"
,
"v"
:
16
},{
"n"
:
"
\u5947\u5e7b
"
,
"v"
:
24
},{
"n"
:
"
\u7ecf\u5178
"
,
"v"
:
55
},{
"n"
:
"
\u4eb2\u5b50
"
,
"v"
:
64
},{
"n"
:
"
\u5267\u60c5
"
,
"v"
:
2
},{
"n"
:
"
\u604b\u7231
"
,
"v"
:
58
},{
"n"
:
"
\u7f8e\u5c11\u5973
"
,
"v"
:
54
},{
"n"
:
"
\u8fd0\u52a8
"
,
"v"
:
66
},{
"n"
:
"
\u52a8\u4f5c
"
,
"v"
:
17
},{
"n"
:
"
\u4f26\u7406
"
,
"v"
:
3
},{
"n"
:
"
\u70ed\u8840
"
,
"v"
:
53
},{
"n"
:
"
\u60ac\u7591
"
,
"v"
:
5
},{
"n"
:
"
\u6050\u6016
"
,
"v"
:
22
},{
"n"
:
"
\u60ca\u609a
"
,
"v"
:
31
},{
"n"
:
"
\u5076\u50cf
"
,
"v"
:
7
},{
"n"
:
"
\u7384\u5e7b
"
,
"v"
:
60
},{
"n"
:
"
\u5e7b\u60f3
"
,
"v"
:
60
},{
"n"
:
"
\u7535\u5f71\u7248
"
,
"v"
:
74
},{
"n"
:
"
\u79d1\u5e7b
"
,
"v"
:
20
},{
"n"
:
"
\u804c\u573a
"
,
"v"
:
42
},{
"n"
:
"
\u5176\u4ed6
"
,
"v"
:
79
},{
"n"
:
"
\u6cbb\u6108
"
,
"v"
:
59
},{
"n"
:
"
\u90fd\u5e02
"
,
"v"
:
6
},{
"n"
:
"
\u65b0\u756a\u52a8\u753b
"
,
"v"
:
77
},{
"n"
:
"
\u751f\u6d3b
"
,
"v"
:
39
},{
"n"
:
"
\u6218\u6597
"
,
"v"
:
80
},{
"n"
:
"
\u80b2\u513f
"
,
"v"
:
100
},{
"n"
:
"
\u76ca\u667a
"
,
"v"
:
68
},{
"n"
:
"
\u6587\u5316
"
,
"v"
:
84
},{
"n"
:
"
\u771f\u4eba\u7248
"
,
"v"
:
73
},{
"n"
:
"
\u79d1\u666e
"
,
"v"
:
102
},{
"n"
:
"
\u52a8\u7269
"
,
"v"
:
62
},{
"n"
:
"
\u821e\u8e48
"
,
"v"
:
106
},{
"n"
:
"
\u795e\u8bdd
"
,
"v"
:
13
},{
"n"
:
"
\u6218\u4e89
"
,
"v"
:
25
},{
"n"
:
"
\u771f\u4eba\u79c0
"
,
"v"
:
33
},{
"n"
:
"
\u5c11\u513f
"
,
"v"
:
46
},{
"n"
:
"
\u7ae5\u8bdd
"
,
"v"
:
69
},{
"n"
:
"
\u5b8c\u7ed3\u52a8\u753b
"
,
"v"
:
78
},{
"n"
:
"
\u6559\u80b2
"
,
"v"
:
90
},{
"n"
:
"
\u7ade\u6280
"
,
"v"
:
70
},{
"n"
:
"
\u4f53\u80b2
"
,
"v"
:
47
},{
"n"
:
"
\u673a\u6218
"
,
"v"
:
63
},{
"n"
:
"
\u539f\u521b
"
,
"v"
:
86
},{
"n"
:
"
\u63a8\u7406
"
,
"v"
:
57
},{
"n"
:
"
\u6587\u827a
"
,
"v"
:
27
},{
"n"
:
"
\u60c5\u611f
"
,
"v"
:
38
},{
"n"
:
"
\u7f8e\u98df
"
,
"v"
:
43
},{
"n"
:
"
\u97f3\u4e50
"
,
"v"
:
41
},{
"n"
:
"
\u513f\u6b4c
"
,
"v"
:
65
},{
"n"
:
"
\u602a\u7269
"
,
"v"
:
67
},{
"n"
:
"
\u793e\u4f1a
"
,
"v"
:
71
},{
"n"
:
"
\u53cb\u60c5
"
,
"v"
:
72
},{
"n"
:
"
\u72af\u7f6a
"
,
"v"
:
23
},{
"n"
:
"
\u6b4c\u821e
"
,
"v"
:
30
},{
"n"
:
"
\u707e\u96be
"
,
"v"
:
103
},{
"n"
:
"
\u519b\u65c5
"
,
"v"
:
104
},{
"n"
:
"
\u5e74\u4ee3
"
,
"v"
:
110
},{
"n"
:
"
\u6e38\u620f
"
,
"v"
:
45
},{
"n"
:
"
\u540c\u6027
"
,
"v"
:
111
},{
"n"
:
"
\u5211\u4fa6
"
,
"v"
:
87
},{
"n"
:
"TV
\u7248
"
,
"v"
:
76
},{
"n"
:
"
\u8c0d\u6218
"
,
"v"
:
14
},{
"n"
:
"OVA
\u7248
"
,
"v"
:
75
},{
"n"
:
"
\u7eaa\u5f55
"
,
"v"
:
28
},{
"n"
:
"
\u4f20\u8bb0
"
,
"v"
:
29
},{
"n"
:
"
\u7f8e\u672f
"
,
"v"
:
49
},{
"n"
:
"
\u64ad\u62a5
"
,
"v"
:
52
},{
"n"
:
"
\u516b\u5366
"
,
"v"
:
36
},{
"n"
:
"
\u542f\u8499
"
,
"v"
:
105
},{
"n"
:
"
\u67aa\u6218
"
,
"v"
:
98
},{
"n"
:
"
\u81ea\u7136
"
,
"v"
:
89
},{
"n"
:
"
\u8131\u53e3\u79c0
"
,
"v"
:
32
},{
"n"
:
"
\u9009\u79c0
"
,
"v"
:
35
},{
"n"
:
"
\u65c5\u6e38
"
,
"v"
:
82
},{
"n"
:
"
\u7eaa\u5b9e
"
,
"v"
:
48
},{
"n"
:
"
\u60c5\u666f
"
,
"v"
:
18
},{
"n"
:
"
\u665a\u4f1a
"
,
"v"
:
40
},{
"n"
:
"
\u8bbf\u8c08
"
,
"v"
:
37
},{
"n"
:
"
\u65f6\u5c1a
"
,
"v"
:
44
},{
"n"
:
"
\u79d1\u5b66
"
,
"v"
:
92
},{
"n"
:
"
\u519b\u4e8b
"
,
"v"
:
9
},{
"n"
:
"
\u6587\u732e
"
,
"v"
:
91
},{
"n"
:
"
\u519c\u6751
"
,
"v"
:
88
},{
"n"
:
"
\u89e3\u8bf4
"
,
"v"
:
93
},{
"n"
:
"
\u65b0\u95fb
"
,
"v"
:
96
},{
"n"
:
"
\u8d22\u7ecf
"
,
"v"
:
50
},{
"n"
:
"
\u6c7d\u8f66
"
,
"v"
:
51
},{
"n"
:
"
\u56fd\u4ea7
"
,
"v"
:
112
}]}],
"5"
:[{
"key"
:
"area"
,
"name"
:
"
\u5730\u533a
"
,
"value"
:[{
"n"
:
"
\u5168\u90e8
"
,
"v"
:
0
},{
"n"
:
"
\u5185\u5730
"
,
"v"
:
1
},{
"n"
:
"
\u4e2d\u56fd\u9999\u6e2f
"
,
"v"
:
2
},{
"n"
:
"
\u4e2d\u56fd\u53f0\u6e7e
"
,
"v"
:
3
},{
"n"
:
"
\u97e9\u56fd
"
,
"v"
:
4
},{
"n"
:
"
\u65e5\u672c
"
,
"v"
:
5
},{
"n"
:
"
\u7f8e\u56fd
"
,
"v"
:
7
},{
"n"
:
"
\u82f1\u56fd
"
,
"v"
:
8
},{
"n"
:
"
\u6cd5\u56fd
"
,
"v"
:
10
},{
"n"
:
"
\u5fb7\u56fd
"
,
"v"
:
11
},{
"n"
:
"
\u5370\u5ea6
"
,
"v"
:
12
},{
"n"
:
"
\u6b27\u7f8e
"
,
"v"
:
13
},{
"n"
:
"
\u5176\u4ed6
"
,
"v"
:
14
}]},{
"key"
:
"year"
,
"name"
:
"
\u5e74\u4efd
"
,
"value"
:[{
"n"
:
"
\u5168\u90e8
"
,
"v"
:
0
},{
"n"
:
"2022"
,
"v"
:
20
},{
"n"
:
"2021"
,
"v"
:
19
},{
"n"
:
"2020"
,
"v"
:
18
},{
"n"
:
"2019"
,
"v"
:
17
},{
"n"
:
"2018"
,
"v"
:
16
},{
"n"
:
"2017"
,
"v"
:
15
},{
"n"
:
"2016"
,
"v"
:
14
},{
"n"
:
"2015"
,
"v"
:
13
},{
"n"
:
"2014"
,
"v"
:
12
},{
"n"
:
"2013"
,
"v"
:
11
},{
"n"
:
"2012"
,
"v"
:
10
},{
"n"
:
"2011"
,
"v"
:
9
},{
"n"
:
"2010"
,
"v"
:
8
},{
"n"
:
"2009"
,
"v"
:
7
},{
"n"
:
"2008"
,
"v"
:
6
},{
"n"
:
"2007"
,
"v"
:
5
},{
"n"
:
"2006"
,
"v"
:
4
},{
"n"
:
"2005"
,
"v"
:
3
},{
"n"
:
"2004"
,
"v"
:
2
},{
"n"
:
"
\u66f4\u65e9
"
,
"v"
:
1
}]},{
"key"
:
"class"
,
"name"
:
"
\u5267\u60c5
"
,
"value"
:[{
"n"
:
"
\u5168\u90e8
"
,
"v"
:
0
},{
"n"
:
"
\u5386\u53f2
"
,
"v"
:
11
},{
"n"
:
"
\u52b1\u5fd7
"
,
"v"
:
12
},{
"n"
:
"
\u72af\u7f6a
"
,
"v"
:
23
},{
"n"
:
"
\u793e\u4f1a
"
,
"v"
:
71
},{
"n"
:
"
\u6218\u4e89
"
,
"v"
:
25
},{
"n"
:
"
\u7eaa\u5f55
"
,
"v"
:
28
},{
"n"
:
"
\u7eaa\u5b9e
"
,
"v"
:
48
},{
"n"
:
"
\u81ea\u7136
"
,
"v"
:
89
},{
"n"
:
"
\u6587\u5316
"
,
"v"
:
84
},{
"n"
:
"
\u4f20\u8bb0
"
,
"v"
:
29
},{
"n"
:
"
\u97f3\u4e50
"
,
"v"
:
41
},{
"n"
:
"
\u89e3\u8bf4
"
,
"v"
:
93
},{
"n"
:
"
\u79d1\u666e
"
,
"v"
:
102
},{
"n"
:
"
\u795e\u8bdd
"
,
"v"
:
13
},{
"n"
:
"
\u9752\u6625
"
,
"v"
:
15
},{
"n"
:
"
\u5bb6\u5ead
"
,
"v"
:
16
},{
"n"
:
"
\u5267\u60c5
"
,
"v"
:
2
},{
"n"
:
"
\u7f8e\u98df
"
,
"v"
:
43
},{
"n"
:
"
\u5c11\u513f
"
,
"v"
:
46
},{
"n"
:
"
\u8fd0\u52a8
"
,
"v"
:
66
},{
"n"
:
"
\u5176\u4ed6
"
,
"v"
:
79
},{
"n"
:
"
\u79d1\u5e7b
"
,
"v"
:
20
},{
"n"
:
"
\u60ca\u609a
"
,
"v"
:
31
},{
"n"
:
"
\u52a8\u753b
"
,
"v"
:
26
},{
"n"
:
"
\u5192\u9669
"
,
"v"
:
56
},{
"n"
:
"
\u6587\u827a
"
,
"v"
:
27
},{
"n"
:
"
\u8131\u53e3\u79c0
"
,
"v"
:
32
},{
"n"
:
"
\u65b0\u95fb
"
,
"v"
:
96
},{
"n"
:
"
\u771f\u4eba\u79c0
"
,
"v"
:
33
},{
"n"
:
"
\u751f\u6d3b
"
,
"v"
:
39
},{
"n"
:
"
\u4f53\u80b2
"
,
"v"
:
47
},{
"n"
:
"
\u8d22\u7ecf
"
,
"v"
:
50
},{
"n"
:
"
\u52a8\u7269
"
,
"v"
:
62
},{
"n"
:
"
\u60c5\u611f
"
,
"v"
:
38
},{
"n"
:
"
\u7535\u5f71\u7248
"
,
"v"
:
74
},{
"n"
:
"
\u65c5\u6e38
"
,
"v"
:
82
},{
"n"
:
"
\u4eba\u6587
"
,
"v"
:
83
},{
"n"
:
"
\u519b\u4e8b
"
,
"v"
:
9
},{
"n"
:
"
\u6559\u80b2
"
,
"v"
:
90
},{
"n"
:
"
\u559c\u5267
"
,
"v"
:
4
},{
"n"
:
"
\u60ac\u7591
"
,
"v"
:
5
},{
"n"
:
"
\u6821\u56ed
"
,
"v"
:
61
},{
"n"
:
"
\u91c7\u8bbf
"
,
"v"
:
107
},{
"n"
:
"
\u79d1\u5b66
"
,
"v"
:
92
}]}]}
}
def
isVideoFormat
(
self
,
url
):
pass
def
manualVideoCheck
(
self
):
pass
def
localProxy
(
self
,
param
):
return
[
200
,
"video/MP2T"
,
action
,
""
]
utils/files.py
浏览文件 @
dae8612d
...
...
@@ -81,7 +81,7 @@ def custom_merge(original:dict,custom:dict):
if
key
in
new_keys
:
updateObj
[
key
]
=
custom
[
key
]
for
key
in
[
'drives'
,
'sites'
,
'flags'
,
'ads'
]:
for
key
in
[
'drives'
,
'sites'
,
'flags'
,
'ads'
,
'parses'
]:
if
key
in
new_keys
:
extend_obj
[
key
]
=
custom
[
key
]
...
...
@@ -93,7 +93,7 @@ def custom_merge(original:dict,custom:dict):
original
[
key
].
extend
(
extend_obj
[
key
])
else
:
original
[
key
]
=
extend_obj
[
key
]
logger
.
info
(
f
'合并配置共有解析数量:
{
len
(
original
.
get
(
"parses"
))
}
'
)
return
original
def
getCustonDict
(
host
,
ali_token
=
''
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录