Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
夏至溪檐
dr_py
提交
cc8f7c05
dr_py
项目概览
夏至溪檐
/
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,发现更多精彩内容 >>
提交
cc8f7c05
编写于
9月 16, 2022
作者:
H
hjdhnx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
尝试增加豆瓣
上级
64acf990
变更
8
显示空白变更内容
内联
并排
Showing
8 changed file
with
202 addition
and
29 deletion
+202
-29
controllers/cms.py
controllers/cms.py
+13
-3
js/drpy.js
js/drpy.js
+6
-7
libs/pre.js
libs/pre.js
+17
-1
py/drpy一级.js
py/drpy一级.js
+77
-12
py/drpy推荐.js
py/drpy推荐.js
+48
-0
py/豆瓣测试.py
py/豆瓣测试.py
+17
-0
utils/encode.py
utils/encode.py
+23
-5
utils/parser.py
utils/parser.py
+1
-1
未找到文件。
controllers/cms.py
浏览文件 @
cc8f7c05
...
...
@@ -15,7 +15,7 @@ from utils.log import logger
from
utils.encode
import
base64Encode
,
baseDecode
,
fetch
,
post
,
request
,
getCryptoJS
,
getPreJs
,
buildUrl
,
getHome
from
utils.encode
import
verifyCode
,
setDetail
,
join
,
urljoin2
,
parseText
from
utils.safePython
import
safePython
from
utils.parser
import
runPy
,
runJScode
,
JsObjectWrapper
from
utils.parser
import
runPy
,
runJScode
,
JsObjectWrapper
,
PyJsObject
from
utils.htmlParser
import
jsoup
from
urllib.parse
import
urljoin
,
quote
,
unquote
from
concurrent.futures
import
ThreadPoolExecutor
# 引入线程池
...
...
@@ -40,12 +40,18 @@ def encodeUrl(url):
# return base64Encode(url)
return
quote
(
url
)
def
stringify
(
obj
):
if
isinstance
(
obj
,
PyJsObject
):
# obj = obj.to_dict()
obj
=
parseText
(
str
(
obj
))
return
json
.
dumps
(
obj
,
separators
=
(
','
,
':'
),
ensure_ascii
=
False
)
py_ctx
=
{
'requests'
:
requests
,
'print'
:
print
,
'base64Encode'
:
base64Encode
,
'baseDecode'
:
baseDecode
,
'log'
:
logger
.
info
,
'fetch'
:
fetch
,
'post'
:
post
,
'request'
:
request
,
'getCryptoJS'
:
getCryptoJS
,
'buildUrl'
:
buildUrl
,
'getHome'
:
getHome
,
'setDetail'
:
setDetail
,
'join'
:
join
,
'urljoin2'
:
urljoin2
,
'PC_UA'
:
PC_UA
,
'MOBILE_UA'
:
MOBILE_UA
,
'UC_UA'
:
UC_UA
,
'IOS_UA'
:
IOS_UA
,
'setItem'
:
setItem
,
'getItem'
:
getItem
,
'clearItem'
:
clearItem
'setItem'
:
setItem
,
'getItem'
:
getItem
,
'clearItem'
:
clearItem
,
'stringify'
:
stringify
}
# print(getCryptoJS())
...
...
@@ -780,7 +786,11 @@ class CMS:
print
(
vod
)
return
vod
if
not
isinstance
(
p
,
dict
)
and
not
isinstance
(
p
,
str
)
and
not
str
(
p
).
startswith
(
'js:'
):
if
not
p
:
return
vod
if
not
isinstance
(
p
,
dict
)
and
not
isinstance
(
p
,
str
):
return
vod
if
isinstance
(
p
,
str
)
and
not
str
(
p
).
startswith
(
'js:'
):
return
vod
jsp
=
jsoup
(
self
.
url
)
...
...
js/drpy.js
浏览文件 @
cc8f7c05
...
...
@@ -7,7 +7,7 @@ var rule = {
quickSearch
:
0
,
filterable
:
1
,
// 分类链接fypage参数支持1个()表达式
url
:
'
/?pg=fypage&class=fyclass
'
,
url
:
'
/?pg=fypage&class=fyclass
&douban=
'
,
filter_url
:
'
fl={{fl}}
'
,
headers
:{
"
Host
"
:
"
frodo.douban.com
"
,
...
...
@@ -21,15 +21,14 @@ var rule = {
class_url
:
'
interests&hot_gaia&tv_hot&show_hot&movie&tv&rank_list_movie&rank_list_tv
'
,
filter
:{
'
interests
'
:
[{
'
key
'
:
'
status
'
,
'
name
'
:
'
状态
'
,
'
value
'
:
[{
'
n
'
:
'
想看
'
,
'
v
'
:
'
mark
'
},
{
'
n
'
:
'
在看
'
,
'
v
'
:
'
doing
'
},
{
'
n
'
:
'
看过
'
,
'
v
'
:
'
done
'
}]},
{
'
key
'
:
'
subtype_tag
'
,
'
name
'
:
'
形式
'
,
'
value
'
:
[{
'
n
'
:
'
全部
'
,
'
v
'
:
''
},
{
'
n
'
:
'
电影
'
,
'
v
'
:
'
movie
'
},
{
'
n
'
:
'
电视
'
,
'
v
'
:
'
tv
'
}]},
{
'
key
'
:
'
year_tag
'
,
'
name
'
:
'
年代
'
,
'
value
'
:
[{
'
n
'
:
'
全部
'
,
'
v
'
:
'
全部
'
},
{
'
n
'
:
'
2022
'
,
'
v
'
:
'
2022
'
},
{
'
n
'
:
'
2021
'
,
'
v
'
:
'
2021
'
},
{
'
n
'
:
'
2020
'
,
'
v
'
:
'
2020
'
},
{
'
n
'
:
'
2019
'
,
'
v
'
:
'
2019
'
},
{
'
n
'
:
'
2010年代
'
,
'
v
'
:
'
2010年代
'
},
{
'
n
'
:
'
2000年代
'
,
'
v
'
:
'
2000年代
'
},
{
'
n
'
:
'
90年代
'
,
'
v
'
:
'
90年代
'
},
{
'
n
'
:
'
80年代
'
,
'
v
'
:
'
80年代
'
},
{
'
n
'
:
'
70年代
'
,
'
v
'
:
'
70年代
'
},
{
'
n
'
:
'
60年代
'
,
'
v
'
:
'
60年代
'
},
{
'
n
'
:
'
更早
'
,
'
v
'
:
'
更早
'
}]}],
'
hot_gaia
'
:
[{
'
key
'
:
'
sort
'
,
'
name
'
:
'
排序
'
,
'
value
'
:
[{
'
n
'
:
'
热度
'
,
'
v
'
:
'
recommend
'
},
{
'
n
'
:
'
最新
'
,
'
v
'
:
'
time
'
},
{
'
n
'
:
'
评分
'
,
'
v
'
:
'
rank
'
}]},
{
'
key
'
:
'
area
'
,
'
name
'
:
'
地区
'
,
'
value
'
:
[{
'
n
'
:
'
全部
'
,
'
v
'
:
'
全部
'
},
{
'
n
'
:
'
华语
'
,
'
v
'
:
'
华语
'
},
{
'
n
'
:
'
欧美
'
,
'
v
'
:
'
欧美
'
},
{
'
n
'
:
'
韩国
'
,
'
v
'
:
'
韩国
'
},
{
'
n
'
:
'
日本
'
,
'
v
'
:
'
日本
'
}]}],
'
tv_hot
'
:
[{
'
key
'
:
'
type
'
,
'
name
'
:
'
分类
'
,
'
value
'
:
[{
'
n
'
:
'
综合
'
,
'
v
'
:
'
tv_hot
'
},
{
'
n
'
:
'
国产剧
'
,
'
v
'
:
'
tv_domestic
'
},
{
'
n
'
:
'
欧美剧
'
,
'
v
'
:
'
tv_american
'
},
{
'
n
'
:
'
日剧
'
,
'
v
'
:
'
tv_japanese
'
},
{
'
n
'
:
'
韩剧
'
,
'
v
'
:
'
tv_korean
'
},
{
'
n
'
:
'
动画
'
,
'
v
'
:
'
tv_animation
'
}]}],
'
show_hot
'
:
[{
'
key
'
:
'
type
'
,
'
name
'
:
'
分类
'
,
'
value
'
:
[{
'
n
'
:
'
综合
'
,
'
v
'
:
'
show_hot
'
},
{
'
n
'
:
'
国内
'
,
'
v
'
:
'
show_domestic
'
},
{
'
n
'
:
'
国外
'
,
'
v
'
:
'
show_foreign
'
}]}],
'
movie
'
:
[{
'
key
'
:
'
类型
'
,
'
name
'
:
'
类型
'
,
'
value
'
:
[{
'
n
'
:
'
全部类型
'
,
'
v
'
:
''
},
{
'
n
'
:
'
喜剧
'
,
'
v
'
:
'
喜剧
'
},
{
'
n
'
:
'
爱情
'
,
'
v
'
:
'
爱情
'
},
{
'
n
'
:
'
动作
'
,
'
v
'
:
'
动作
'
},
{
'
n
'
:
'
科幻
'
,
'
v
'
:
'
科幻
'
},
{
'
n
'
:
'
动画
'
,
'
v
'
:
'
动画
'
},
{
'
n
'
:
'
悬疑
'
,
'
v
'
:
'
悬疑
'
},
{
'
n
'
:
'
犯罪
'
,
'
v
'
:
'
犯罪
'
},
{
'
n
'
:
'
惊悚
'
,
'
v
'
:
'
惊悚
'
},
{
'
n
'
:
'
冒险
'
,
'
v
'
:
'
冒险
'
},
{
'
n
'
:
'
音乐
'
,
'
v
'
:
'
音乐
'
},
{
'
n
'
:
'
历史
'
,
'
v
'
:
'
历史
'
},
{
'
n
'
:
'
奇幻
'
,
'
v
'
:
'
奇幻
'
},
{
'
n
'
:
'
恐怖
'
,
'
v
'
:
'
恐怖
'
},
{
'
n
'
:
'
战争
'
,
'
v
'
:
'
战争
'
},
{
'
n
'
:
'
传记
'
,
'
v
'
:
'
传记
'
},
{
'
n
'
:
'
歌舞
'
,
'
v
'
:
'
歌舞
'
},
{
'
n
'
:
'
武侠
'
,
'
v
'
:
'
武侠
'
},
{
'
n
'
:
'
情色
'
,
'
v
'
:
'
情色
'
},
{
'
n
'
:
'
灾难
'
,
'
v
'
:
'
灾难
'
},
{
'
n
'
:
'
西部
'
,
'
v
'
:
'
西部
'
},
{
'
n
'
:
'
纪录片
'
,
'
v
'
:
'
纪录片
'
},
{
'
n
'
:
'
短片
'
,
'
v
'
:
'
短片
'
}]},
{
'
key
'
:
'
地区
'
,
'
name
'
:
'
地区
'
,
'
value
'
:
[{
'
n
'
:
'
全部地区
'
,
'
v
'
:
''
},
{
'
n
'
:
'
华语
'
,
'
v
'
:
'
华语
'
},
{
'
n
'
:
'
欧美
'
,
'
v
'
:
'
欧美
'
},
{
'
n
'
:
'
韩国
'
,
'
v
'
:
'
韩国
'
},
{
'
n
'
:
'
日本
'
,
'
v
'
:
'
日本
'
},
{
'
n
'
:
'
中国大陆
'
,
'
v
'
:
'
中国大陆
'
},
{
'
n
'
:
'
美国
'
,
'
v
'
:
'
美国
'
},
{
'
n
'
:
'
中国香港
'
,
'
v
'
:
'
中国香港
'
},
{
'
n
'
:
'
中国台湾
'
,
'
v
'
:
'
中国台湾
'
},
{
'
n
'
:
'
英国
'
,
'
v
'
:
'
英国
'
},
{
'
n
'
:
'
法国
'
,
'
v
'
:
'
法国
'
},
{
'
n
'
:
'
德国
'
,
'
v
'
:
'
德国
'
},
{
'
n
'
:
'
意大利
'
,
'
v
'
:
'
意大利
'
},
{
'
n
'
:
'
西班牙
'
,
'
v
'
:
'
西班牙
'
},
{
'
n
'
:
'
印度
'
,
'
v
'
:
'
印度
'
},
{
'
n
'
:
'
泰国
'
,
'
v
'
:
'
泰国
'
},
{
'
n
'
:
'
俄罗斯
'
,
'
v
'
:
'
俄罗斯
'
},
{
'
n
'
:
'
加拿大
'
,
'
v
'
:
'
加拿大
'
},
{
'
n
'
:
'
澳大利亚
'
,
'
v
'
:
'
澳大利亚
'
},
{
'
n
'
:
'
爱尔兰
'
,
'
v
'
:
'
爱尔兰
'
},
{
'
n
'
:
'
瑞典
'
,
'
v
'
:
'
瑞典
'
},
{
'
n
'
:
'
巴西
'
,
'
v
'
:
'
巴西
'
},
{
'
n
'
:
'
丹麦
'
,
'
v
'
:
'
丹麦
'
}]},
{
'
key
'
:
'
sort
'
,
'
name
'
:
'
排序
'
,
'
value
'
:
[{
'
n
'
:
'
近期热度
'
,
'
v
'
:
'
T
'
},
{
'
n
'
:
'
首映时间
'
,
'
v
'
:
'
R
'
},
{
'
n
'
:
'
高分优先
'
,
'
v
'
:
'
S
'
}]},
{
'
key
'
:
'
年代
'
,
'
name
'
:
'
年代
'
,
'
value
'
:
[{
'
n
'
:
'
全部年代
'
,
'
v
'
:
''
},
{
'
n
'
:
'
2022
'
,
'
v
'
:
'
2022
'
},
{
'
n
'
:
'
2021
'
,
'
v
'
:
'
2021
'
},
{
'
n
'
:
'
2020
'
,
'
v
'
:
'
2020
'
},
{
'
n
'
:
'
2019
'
,
'
v
'
:
'
2019
'
},
{
'
n
'
:
'
2010年代
'
,
'
v
'
:
'
2010年代
'
},
{
'
n
'
:
'
2000年代
'
,
'
v
'
:
'
2000年代
'
},
{
'
n
'
:
'
90年代
'
,
'
v
'
:
'
90年代
'
},
{
'
n
'
:
'
80年代
'
,
'
v
'
:
'
80年代
'
},
{
'
n
'
:
'
70年代
'
,
'
v
'
:
'
70年代
'
},
{
'
n
'
:
'
60年代
'
,
'
v
'
:
'
60年代
'
},
{
'
n
'
:
'
更早
'
,
'
v
'
:
'
更早
'
}]}],
'
tv
'
:
[{
'
key
'
:
'
类型
'
,
'
name
'
:
'
类型
'
,
'
value
'
:
[{
'
n
'
:
'
不限
'
,
'
v
'
:
''
},
{
'
n
'
:
'
电视剧
'
,
'
v
'
:
'
电视剧
'
},
{
'
n
'
:
'
综艺
'
,
'
v
'
:
'
综艺
'
}]},
{
'
key
'
:
'
电视剧形式
'
,
'
name
'
:
'
电视剧形式
'
,
'
value
'
:
[{
'
n
'
:
'
不限
'
,
'
v
'
:
''
},
{
'
n
'
:
'
喜剧
'
,
'
v
'
:
'
喜剧
'
},
{
'
n
'
:
'
爱情
'
,
'
v
'
:
'
爱情
'
},
{
'
n
'
:
'
悬疑
'
,
'
v
'
:
'
悬疑
'
},
{
'
n
'
:
'
动画
'
,
'
v
'
:
'
动画
'
},
{
'
n
'
:
'
武侠
'
,
'
v
'
:
'
武侠
'
},
{
'
n
'
:
'
古装
'
,
'
v
'
:
'
古装
'
},
{
'
n
'
:
'
家庭
'
,
'
v
'
:
'
家庭
'
},
{
'
n
'
:
'
犯罪
'
,
'
v
'
:
'
犯罪
'
},
{
'
n
'
:
'
科幻
'
,
'
v
'
:
'
科幻
'
},
{
'
n
'
:
'
恐怖
'
,
'
v
'
:
'
恐怖
'
},
{
'
n
'
:
'
历史
'
,
'
v
'
:
'
历史
'
},
{
'
n
'
:
'
战争
'
,
'
v
'
:
'
战争
'
},
{
'
n
'
:
'
动作
'
,
'
v
'
:
'
动作
'
},
{
'
n
'
:
'
冒险
'
,
'
v
'
:
'
冒险
'
},
{
'
n
'
:
'
传记
'
,
'
v
'
:
'
传记
'
},
{
'
n
'
:
'
剧情
'
,
'
v
'
:
'
剧情
'
},
{
'
n
'
:
'
奇幻
'
,
'
v
'
:
'
奇幻
'
},
{
'
n
'
:
'
惊悚
'
,
'
v
'
:
'
惊悚
'
},
{
'
n
'
:
'
灾难
'
,
'
v
'
:
'
灾难
'
},
{
'
n
'
:
'
歌舞
'
,
'
v
'
:
'
歌舞
'
},
{
'
n
'
:
'
音乐
'
,
'
v
'
:
'
音乐
'
}]},
{
'
key
'
:
'
综艺形式
'
,
'
name
'
:
'
综艺形式
'
,
'
value
'
:
[{
'
n
'
:
'
不限
'
,
'
v
'
:
''
},
{
'
n
'
:
'
真人秀
'
,
'
v
'
:
'
真人秀
'
},
{
'
n
'
:
'
脱口秀
'
,
'
v
'
:
'
脱口秀
'
},
{
'
n
'
:
'
音乐
'
,
'
v
'
:
'
音乐
'
},
{
'
n
'
:
'
歌舞
'
,
'
v
'
:
'
歌舞
'
}]},
{
'
key
'
:
'
地区
'
,
'
name
'
:
'
地区
'
,
'
value
'
:
[{
'
n
'
:
'
全部地区
'
,
'
v
'
:
''
},
{
'
n
'
:
'
华语
'
,
'
v
'
:
'
华语
'
},
{
'
n
'
:
'
欧美
'
,
'
v
'
:
'
欧美
'
},
{
'
n
'
:
'
国外
'
,
'
v
'
:
'
国外
'
},
{
'
n
'
:
'
韩国
'
,
'
v
'
:
'
韩国
'
},
{
'
n
'
:
'
日本
'
,
'
v
'
:
'
日本
'
},
{
'
n
'
:
'
中国大陆
'
,
'
v
'
:
'
中国大陆
'
},
{
'
n
'
:
'
中国香港
'
,
'
v
'
:
'
中国香港
'
},
{
'
n
'
:
'
美国
'
,
'
v
'
:
'
美国
'
},
{
'
n
'
:
'
英国
'
,
'
v
'
:
'
英国
'
},
{
'
n
'
:
'
泰国
'
,
'
v
'
:
'
泰国
'
},
{
'
n
'
:
'
中国台湾
'
,
'
v
'
:
'
中国台湾
'
},
{
'
n
'
:
'
意大利
'
,
'
v
'
:
'
意大利
'
},
{
'
n
'
:
'
法国
'
,
'
v
'
:
'
法国
'
},
{
'
n
'
:
'
德国
'
,
'
v
'
:
'
德国
'
},
{
'
n
'
:
'
西班牙
'
,
'
v
'
:
'
西班牙
'
},
{
'
n
'
:
'
俄罗斯
'
,
'
v
'
:
'
俄罗斯
'
},
{
'
n
'
:
'
瑞典
'
,
'
v
'
:
'
瑞典
'
},
{
'
n
'
:
'
巴西
'
,
'
v
'
:
'
巴西
'
},
{
'
n
'
:
'
丹麦
'
,
'
v
'
:
'
丹麦
'
},
{
'
n
'
:
'
印度
'
,
'
v
'
:
'
印度
'
},
{
'
n
'
:
'
加拿大
'
,
'
v
'
:
'
加拿大
'
},
{
'
n
'
:
'
爱尔兰
'
,
'
v
'
:
'
爱尔兰
'
},
{
'
n
'
:
'
澳大利亚
'
,
'
v
'
:
'
澳大利亚
'
}]},
{
'
key
'
:
'
sort
'
,
'
name
'
:
'
排序
'
,
'
value
'
:
[{
'
n
'
:
'
近期热度
'
,
'
v
'
:
'
T
'
},
{
'
n
'
:
'
首播时间
'
,
'
v
'
:
'
R
'
},
{
'
n
'
:
'
高分优先
'
,
'
v
'
:
'
S
'
}]},
{
'
key
'
:
'
年代
'
,
'
name
'
:
'
年代
'
,
'
value
'
:
[{
'
n
'
:
'
全部
'
,
'
v
'
:
''
},
{
'
n
'
:
'
2022
'
,
'
v
'
:
'
2022
'
},
{
'
n
'
:
'
2021
'
,
'
v
'
:
'
2021
'
},
{
'
n
'
:
'
2020
'
,
'
v
'
:
'
2020
'
},
{
'
n
'
:
'
2019
'
,
'
v
'
:
'
2019
'
},
{
'
n
'
:
'
2010年代
'
,
'
v
'
:
'
2010年代
'
},
{
'
n
'
:
'
2000年代
'
,
'
v
'
:
'
2000年代
'
},
{
'
n
'
:
'
90年代
'
,
'
v
'
:
'
90年代
'
},
{
'
n
'
:
'
80年代
'
,
'
v
'
:
'
80年代
'
},
{
'
n
'
:
'
70年代
'
,
'
v
'
:
'
70年代
'
},
{
'
n
'
:
'
60年代
'
,
'
v
'
:
'
60年代
'
},
{
'
n
'
:
'
更早
'
,
'
v
'
:
'
更早
'
}]},
{
'
key
'
:
'
平台
'
,
'
name
'
:
'
平台
'
,
'
value
'
:
[{
'
n
'
:
'
全部
'
,
'
v
'
:
''
},
{
'
n
'
:
'
腾讯视频
'
,
'
v
'
:
'
腾讯视频
'
},
{
'
n
'
:
'
爱奇艺
'
,
'
v
'
:
'
爱奇艺
'
},
{
'
n
'
:
'
优酷
'
,
'
v
'
:
'
优酷
'
},
{
'
n
'
:
'
湖南卫视
'
,
'
v
'
:
'
湖南卫视
'
},
{
'
n
'
:
'
Netflix
'
,
'
v
'
:
'
Netflix
'
},
{
'
n
'
:
'
HBO
'
,
'
v
'
:
'
HBO
'
},
{
'
n
'
:
'
BBC
'
,
'
v
'
:
'
BBC
'
},
{
'
n
'
:
'
NHK
'
,
'
v
'
:
'
NHK
'
},
{
'
n
'
:
'
CBS
'
,
'
v
'
:
'
CBS
'
},
{
'
n
'
:
'
NBC
'
,
'
v
'
:
'
NBC
'
},
{
'
n
'
:
'
tvN
'
,
'
v
'
:
'
tvN
'
}]}],
'
rank_list_movie
'
:
[{
'
key
'
:
'
榜单
'
,
'
name
'
:
'
榜单
'
,
'
value
'
:
[{
'
n
'
:
'
实时热门电影
'
,
'
v
'
:
'
movie_real_time_hotest
'
},
{
'
n
'
:
'
一周口碑电影榜
'
,
'
v
'
:
'
movie_weekly_best
'
},
{
'
n
'
:
'
豆瓣电影Top250
'
,
'
v
'
:
'
movie_top250
'
}]}],
'
rank_list_tv
'
:
[{
'
key
'
:
'
榜单
'
,
'
name
'
:
'
榜单
'
,
'
value
'
:
[{
'
n
'
:
'
实时热门电视
'
,
'
v
'
:
'
tv_real_time_hotest
'
},
{
'
n
'
:
'
华语口碑剧集榜
'
,
'
v
'
:
'
tv_chinese_best_weekly
'
},
{
'
n
'
:
'
全球口碑剧集榜
'
,
'
v
'
:
'
tv_global_best_weekly
'
},
{
'
n
'
:
'
国内口碑综艺榜
'
,
'
v
'
:
'
show_chinese_best_weekly
'
},
{
'
n
'
:
'
国外口碑综艺榜
'
,
'
v
'
:
'
show_global_best_weekly
'
}]}]},
limit
:
20
,
play_parse
:
true
,
play_parse
:
false
,
推荐
:
''
,
推荐
:
'
js:let d=[];let douban_api_host="https://frodo.douban.com/api/v2";let miniapp_apikey="0ac44ae016490db2204ce0a042db2916";const count=30;function miniapp_request(path,query){try{let url=douban_api_host+path;query.apikey=miniapp_apikey;fetch_params.headers=oheaders;url=buildUrl(url,query);let html=fetch(url,fetch_params);return JSON.parse(html)}catch(e){print("发生了错误:"+e.message);return{}}}function subject_real_time_hotest(){try{let res=miniapp_request("/subject_collection/subject_real_time_hotest/items",{});let lists=[];let arr=res.subject_collection_items||[];arr.forEach(function(item){if(item.type==="movie"||item.type==="tv"){let rating=item.rating?item.rating.value:"暂无评分";let honnor=(item.honor_infos||[]).map(function(it){return it.title}).join("|");lists.append({vod_id:TYPE+"$1",vod_name:item.title||"",vod_pic:item.pic.normal,vod_remarks:rating+" "+honnor})}});return lists}catch(e){print("发生了错误:"+e.message);return[]}}VODS=subject_real_time_hotest();print(VODS);
'
,
// 手动调用解析请求json的url,此lazy不方便
lazy
:
'
js:print(input);fetch_params.headers["user-agent"]=MOBILE_UA;let html=request(input);let rurl=html.match(/window
\\
.open
\\
(
\'
(.*?)
\'
,/)[1];rurl=urlDeal(rurl);input={parse:1,url:rurl};
'
,
lazy
:
''
,
// 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
一级
:
''
,
一级
:
'
js:
print(input);print(MY_CATE);print(MY_PAGE);print(MY_FL);let d=[];let douban_api_host="https://frodo.douban.com/api/v2";let miniapp_apikey="0ac44ae016490db2204ce0a042db2916";const count=30;function miniapp_request(path,query){try{let url=douban_api_host+path;query.apikey=miniapp_apikey;fetch_params.headers=oheaders;url=buildUrl(url,query);let html=fetch(url,fetch_params);return JSON.parse(html)}catch(e){print(e.message);return{}}}function cate_filter(d,douban){douban=douban||"";try{if(MY_CATE==="interests"){let status=MY_FL.status||"mark";let subtype_tag=MY_FL.subtype_tag||"";let year_tag=MY_FL.year_tag||"全部";let path="/user/"+douban+"/interests";let res=miniapp_request(path,{type:"movie",status:status,subtype_tag:subtype_tag,year_tag:year_tag,start:(MY_PAGE-1)*count,count:count});print(res)}else if(MY_CATE==="hot_gaia"){let sort=MY_FL.sort||"recommend";let area=MY_FL.area||"全部";let path="/movie/"+MY_CATE;res=miniapp_request(path,{area:area,sort:sort,start:(MY_PAGE-1)*count,count:count});print(res)}let result={page:MY_PAGE,pagecount:Math.ceil(res.total/count),limit:count,total:res.total};let items=[];if(/rank_list|tv_hot|show_hot/.test(MY_CATE)){items=res["subject_collection_items"]}else if(MY_CATE==="interests"){res["interests"].forEach(function(it){items.push(it.subject)})}else{items=res.items}let lists=[];print(items);items.forEach(function(item){if(item.type==="movie"||item.type==="tv"){let rating=item.rating?item.rating.value:"";let rat_str=rating||"暂无评分";let title=item.title;let honor=item.honor_infos||[];let honor_str=honor.map(function(it){return it.title}).join("|");let vod_obj={vod_id:item.type+"$"+item.id,
vod_name:title!=="未知电影"?title:"暂不支持展示",vod_pic:item.pic.normal,vod_remarks:rat_str+" "+honor_str};let vod_obj_d={url:item.type+"$"+item.id,title:title!=="未知电影"?title:"暂不支持展示",pic_url:item.pic.normal,desc:rat_str+" "+honor_str};lists.push(vod_obj);d.push(vod_obj_d)}});result.list=lists;return result}catch(e){print(e.message)}return{}}let res=cate_filter(d);setResult2(res);
'
,
一级
:
'
js:
let d=[];let douban=input.split("douban=")[1].split("&")[0];let douban_api_host="https://frodo.douban.com/api/v2";let miniapp_apikey="0ac44ae016490db2204ce0a042db2916";const count=30;function miniapp_request(path,query){try{let url=douban_api_host+path;query.apikey=miniapp_apikey;fetch_params.headers=oheaders;url=buildUrl(url,query);let html=fetch(url,fetch_params);return JSON.parse(html)}catch(e){print("发生了错误:"+e.message);return{}}}function cate_filter(d,douban){douban=douban||"";try{if(MY_CATE==="interests"){if(douban){let status=MY_FL.status||"mark";let subtype_tag=MY_FL.subtype_tag||"";let year_tag=MY_FL.year_tag||"全部";let path="/user/"+douban+"/interests";let res=miniapp_request(path,{type:"movie",status:status,subtype_tag:subtype_tag,year_tag:year_tag,start:(MY_PAGE-1)*count,count:count})}else{return{}}}else if(MY_CATE==="hot_gaia"){let sort=MY_FL.sort||"recommend";let area=MY_FL.area||"全部";let path="/movie/"+MY_CATE;let res=miniapp_request(path,{area:area,sort:sort,start:(MY_PAGE-1)*count,count:count})}else if(MY_CATE==="tv_hot"||MY_CATE==="show_hot"){let stype=MY_FL.type||MY_CATE;let path="/subject_collection/"+stype+"/items";let res=miniapp_request(path,{start:(MY_PAGE-1)*count,count:count})}else if(MY_CATE.startsWith("rank_list")){let id=MY_CATE==="rank_list_movie"?"movie_real_time_hotest":"tv_real_time_hotest";id=MY_FL.榜单||id;let path="/subject_collection/"+id+"/items";let res=miniapp_request(path,{start:(MY_PAGE-1)*count,count:count})}else{let path="/"+MY_CATE+"/recommend";let selected_categories;if(Object.keys(MY_FL).length>0){let sort=MY_FL.sort||"T";let tags=Object.Values(MY_FL).join(",");if(MY_CATE==="movie"){selected_categories={"类型":MY_FL.类型||"","地区":MY_FL.地区||""}}else{selected_categories={"类型":MY_FL.类型||"","形式":MY_FL.类型?MY_FL.类型+"地区":"","地区":MY_FL.地区||""}}}else{let sort="T";let tags="";if(MY_CATE==="movie"){selected_categories={"类型":"","地区":""}}else{selected_categories={"类型":"","形式":"","地区":""}}}let params={tags:tags,sort:sort,refresh:0,selected_categories:stringify(selected_categories),start:(MY_PAGE-1)*count,count:count};let res=miniapp_request(path,params)}let result={page:MY_PAGE,pagecount:Math.ceil(res.total/count),limit:count,total:res.total};let items=[];if(/^rank_list|tv_hot|show_hot/.test(MY_CATE)){items=res["subject_collection_items"]}else if(MY_CATE==="interests"){res["interests"].forEach(function(it){items.push(it.subject)})}else{items=res.items}let lists=[];items.forEach(function(item){if(item.type==="movie"||item.type==="tv"){let rating=item.rating?item.rating.value:"";let rat_str=rating||"暂无评分";let title=item.title;let honor=item.honor_infos||[];let honor_str=honor.map(function(it){return it.title}).join("|");let vod_obj={
vod_name:title!=="未知电影"?title:"暂不支持展示",vod_pic:item.pic.normal,vod_remarks:rat_str+" "+honor_str};let vod_obj_d={url:item.type+"$"+item.id,title:title!=="未知电影"?title:"暂不支持展示",pic_url:item.pic.normal,desc:rat_str+" "+honor_str};lists.push(vod_obj);d.push(vod_obj_d)}});result.list=lists;return result}catch(e){print(e.message)}return{}}let res=cate_filter(d);setResult2(res);
'
,
二级
:
''
,
二级
:
'
js:var vod={vod_id:input};let html=request(input);function adhead(url){let hd="https://v.sogou.com";if(!url.startsWith(hd)){url=hd+url}return urlencode(url)}try{let json=JSON.parse(html.match(/INITIAL_STATE.*?({.*});/)[1]).detail.itemData;let key=json.dockey;let name=json.name;let zone=json.zone;let score=json.score?json.score:"暂无";let style=json.style;let emcee=json.emcee?"主持:"+json.emcee:json.name;let director=json.director?"导演:"+json.director:name;director=director.replace(/;/g,"
\\
t");let starring=json.starring?"演员:"+json.starring:"声优:"+json.shengyou;starring=starring.replace(/.*undefined/,"").replace(/;/g,"
\\
t");let update=json.update_wordstr?json.update_wordstr:"";let tv_station=json.tv_station?json.tv_station:zone;let introduction=json.introduction;let shengyou=json.shengyou;let shows=json.play_from_open_index;let plays=json.play.item_list;if(shows){vod.vod_name=name;vod.vod_area=emcee+","+tv_station;vod.vod_director=director;vod.vod_actor=starring;vod.vod_pic=jsp.pd(html,"#thumb_img&&img&&src");vod.vod_remarks=style+" 评分:"+score+","+update;vod.vod_content=introduction}else{vod.vod_name=name;vod.vod_director=director;vod.vod_actor=starring;vod.vod_pic=jsp.pd(html,"#thumb_img&&img&&src");vod.vod_content=introduction}let tp="&type=json";try{let tabs=[];let lists=[];plays.forEach(function(it){lists.push(it.info);let tbn=it.sitename[0]||it.site.replace(".com","");tbn=tbn.split("").join(" ");tabs.push(tbn)});vod.vod_play_from=tabs.join("$$$");vod_lists=[];play_url=play_url.replace("&play_url=","&type=json&play_url=");lists.forEach(function(item,idex){if(item||shows){if(item&&Array.isArray(item)&&item.length>1){let tmp=item.slice(1).map(function(its){return its.index+"$"+play_url+base64Encode(adhead(its.url))});vod_lists.push(tmp.join("#"))}if(shows){let arr=[];let tmp=[];let zy=shows.item_list[idex];zy.date.forEach(function(date){let day=date.day;for(let j=0;j<day.length;j++){let dayy=day[j][0]>=10?day[j][0]:"0"+day[j][0];let Tdate=date.year+date.month+dayy;arr.push(Tdate)}});for(let k=0;k<arr.length;k++){let url="https://v.sogou.com/vc/eplay?query="+arr[k]+"&date="+arr[k]+"&key="+key+"&st=5&tvsite="+plays[idex].site;tmp.push("第"+arr[k]+"期"+"$"+play_url+base64Encode(adhead(url)))}vod_lists.push(tmp.join("#"))}}else if(plays[idex].site){let tmp=[];if(!plays[idex].flag_list.includes("trailer")){tmp.push(plays[idex].sitename[0]+"$"+play_url+base64Encode(adhead(plays[idex].url)))}else{tmp.push(plays[idex].sitename[0]+"—预告"+"$"+play_url+base64Encode(adhead(plays[idex].url)))}vod_lists.push(tmp.join("#"))}});vod.vod_play_url=vod_lists.join("$$$")}catch(e){let img=json.photo.item_list;vod.vod_name="本片无选集";vod.vod_pic=img.length>0?img[0]:""}}catch(e){}
'
,
// 二级:'js:var vod={vod_id:input};let html=request(input);function adhead(url){let hd="https://v.sogou.com";if(!url.startsWith(hd)){url=hd+url}return url}try{let json=JSON.parse(html.match(/INITIAL_STATE.*?({.*});/)[1]).detail.itemData;let key=json.dockey;let name=json.name;let zone=json.zone;let score=json.score?json.score:"暂无";let style=json.style;let emcee=json.emcee?"主持:"+json.emcee:json.name;let director=json.director?"导演:"+json.director:name;director=director.replace(/;/g,"\\t");let starring=json.starring?"演员:"+json.starring:"声优:"+json.shengyou;starring=starring.replace(/.*undefined/,"").replace(/;/g,"\\t");let update=json.update_wordstr?json.update_wordstr:"";let tv_station=json.tv_station?json.tv_station:zone;let introduction=json.introduction;let shengyou=json.shengyou;let shows=json.play_from_open_index;let plays=json.play.item_list;if(shows){vod.vod_name=name;vod.vod_area=emcee+","+tv_station;vod.vod_director=director;vod.vod_actor=starring;vod.vod_pic=jsp.pd(html,"#thumb_img&&img&&src");vod.vod_remarks=style+" 评分:"+score+","+update;vod.vod_content=introduction}else{vod.vod_name=name;vod.vod_director=director;vod.vod_actor=starring;vod.vod_pic=jsp.pd(html,"#thumb_img&&img&&src");vod.vod_content=introduction}let tp="&type=json";try{let tabs=[];let lists=[];plays.forEach(function(it){lists.push(it.info);let tbn=it.sitename[0]||it.site.replace(".com","");tbn=tbn.split("").join(" ");tabs.push(tbn)});vod.vod_play_from=tabs.join("$$$");vod_lists=[];play_url=play_url.replace("&play_url=","&type=json&play_url=");lists.forEach(function(item,idex){if(item||shows){if(item&&Array.isArray(item)&&item.length>1){let tmp=item.slice(1).map(function(its){return its.index+"$"+play_url+base64Encode(adhead(its.url))});vod_lists.push(tmp.join("#"))}if(shows){let arr=[];let tmp=[];let zy=shows.item_list[idex];zy.date.forEach(function(date){let day=date.day;for(let j=0;j<day.length;j++){let dayy=day[j][0]>=10?day[j][0]:"0"+day[j][0];let Tdate=date.year+date.month+dayy;arr.push(Tdate)}});for(let k=0;k<arr.length;k++){let url="https://v.sogou.com/vc/eplay?query="+arr[k]+"&date="+arr[k]+"&key="+key+"&st=5&tvsite="+plays[idex].site;tmp.push("第"+arr[k]+"期"+"$"+play_url+base64Encode(adhead(url)))}vod_lists.push(tmp.join("#"))}}else if(plays[idex].site){let tmp=[];if(!plays[idex].flag_list.includes("trailer")){tmp.push(plays[idex].sitename[0]+"$"+play_url+base64Encode(adhead(plays[idex].url)))}else{tmp.push(plays[idex].sitename[0]+"—预告"+"$"+play_url+base64Encode(adhead(plays[idex].url)))}vod_lists.push(tmp.join("#"))}});vod.vod_play_url=vod_lists.join("$$$")}catch(e){let img=json.photo.item_list;vod.vod_name="本片无选集";vod.vod_pic=img.length>0?img[0]:""}}catch(e){}',
搜索
:
''
,
搜索
:
'
js:let d=[];let html=request(input);let jsonA=JSON.parse(html.match(/INITIAL_STATE.*?({.*});/)[1]).result.longVideo.results;jsonA.forEach(function(it){let name=it.name;let introduction=it.introduction;let pic=it.v_picurl;let url=it.tiny_url;let zone=it.zone;let score=it.score||"暂无";let style=it.style;if(it.play.item_list){let r={};r.title=name.replace(//,"").replace(//,"");r.url="https://v.sogou.com"+url;r.desc=it.list_category.join(",");r.content=introduction;r.pic_url=pic;d.push(r)}});setResult(d);
'
,
}
\ No newline at end of file
libs/pre.js
浏览文件 @
cc8f7c05
...
...
@@ -77,6 +77,21 @@ Object.prototype.myValues=function(obj){
}
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
;
}
}
Array
.
prototype
.
join
=
function
(
emoji
)
{
// emoji = emoji||',';
emoji
=
emoji
||
''
;
...
...
@@ -93,6 +108,7 @@ Array.prototype.join = function (emoji) {
}
return
str
;
};
Array
.
prototype
.
append
=
Array
.
prototype
.
push
;
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
);
...
...
@@ -145,7 +161,7 @@ function setResult(d){
return
VODS
}
function
setResult2
(
res
){
VODS
=
res
.
list
;
VODS
=
res
.
list
||
[]
;
return
VODS
}
function
setHomeResult
(
res
){
...
...
py/drpy一级.js
浏览文件 @
cc8f7c05
js
:
print
(
input
);
print
(
MY_CATE
);
print
(
MY_PAGE
);
print
(
MY_FL
);
//
print(input);
//
print(MY_CATE);
//
print(MY_PAGE);
//
print(MY_FL);
let
d
=
[];
let
douban
=
input
.
split
(
'
douban=
'
)[
1
].
split
(
'
&
'
)[
0
];
let
douban_api_host
=
'
https://frodo.douban.com/api/v2
'
;
let
miniapp_apikey
=
'
0ac44ae016490db2204ce0a042db2916
'
;
const
count
=
30
;
...
...
@@ -30,7 +30,7 @@ function miniapp_request(path, query){
return
JSON
.
parse
(
html
);
}
catch
(
e
){
print
(
e
.
message
);
print
(
'
发生了错误:
'
+
e
.
message
);
return
{}
}
}
...
...
@@ -39,6 +39,7 @@ function cate_filter(d,douban){
douban
=
douban
||
''
;
try
{
if
(
MY_CATE
===
'
interests
'
){
if
(
douban
){
let
status
=
MY_FL
.
status
||
"
mark
"
;
let
subtype_tag
=
MY_FL
.
subtype_tag
||
""
;
let
year_tag
=
MY_FL
.
year_tag
||
"
全部
"
;
...
...
@@ -51,20 +52,84 @@ function cate_filter(d,douban){
"
start
"
:
(
MY_PAGE
-
1
)
*
count
,
"
count
"
:
count
});
print
(
res
);
// print(res);
}
else
{
return
{}
}
}
else
if
(
MY_CATE
===
"
hot_gaia
"
){
let
sort
=
MY_FL
.
sort
||
"
recommend
"
;
let
area
=
MY_FL
.
area
||
"
全部
"
;
let
path
=
'
/movie/
'
+
MY_CATE
;
res
=
miniapp_request
(
path
,
{
let
res
=
miniapp_request
(
path
,
{
"
area
"
:
area
,
"
sort
"
:
sort
,
"
start
"
:
(
MY_PAGE
-
1
)
*
count
,
"
count
"
:
count
});
print
(
res
);
// print(res);
}
else
if
(
MY_CATE
===
"
tv_hot
"
||
MY_CATE
===
"
show_hot
"
){
let
stype
=
MY_FL
.
type
||
MY_CATE
;
let
path
=
"
/subject_collection/
"
+
stype
+
"
/items
"
let
res
=
miniapp_request
(
path
,
{
"
start
"
:
(
MY_PAGE
-
1
)
*
count
,
"
count
"
:
count
});
// print(res);
}
else
if
(
MY_CATE
.
startsWith
(
"
rank_list
"
)){
let
id
=
MY_CATE
===
"
rank_list_movie
"
?
"
movie_real_time_hotest
"
:
"
tv_real_time_hotest
"
;
id
=
MY_FL
.
榜单
||
id
;
let
path
=
"
/subject_collection/
"
+
id
+
"
/items
"
;
let
res
=
miniapp_request
(
path
,
{
"
start
"
:
(
MY_PAGE
-
1
)
*
count
,
"
count
"
:
count
});
// print(res);
}
else
{
let
path
=
"
/
"
+
MY_CATE
+
"
/recommend
"
;
let
selected_categories
;
if
(
Object
.
keys
(
MY_FL
).
length
>
0
){
let
sort
=
MY_FL
.
sort
||
"
T
"
;
let
tags
=
Object
.
Values
(
MY_FL
).
join
(
'
,
'
);
if
(
MY_CATE
===
"
movie
"
){
selected_categories
=
{
"
类型
"
:
MY_FL
.
类型
||
''
,
"
地区
"
:
MY_FL
.
地区
||
''
}
}
else
{
selected_categories
=
{
"
类型
"
:
MY_FL
.
类型
||
""
,
"
形式
"
:
MY_FL
.
类型
?
MY_FL
.
类型
+
'
地区
'
:
''
,
"
地区
"
:
MY_FL
.
地区
||
""
}
}
}
else
{
let
sort
=
"
T
"
;
let
tags
=
""
;
if
(
MY_CATE
===
"
movie
"
){
selected_categories
=
{
"
类型
"
:
""
,
"
地区
"
:
""
};
}
else
{
selected_categories
=
{
"
类型
"
:
""
,
"
形式
"
:
""
,
"
地区
"
:
""
}
}
}
let
params
=
{
"
tags
"
:
tags
,
"
sort
"
:
sort
,
"
refresh
"
:
0
,
"
selected_categories
"
:
stringify
(
selected_categories
),
"
start
"
:
(
MY_PAGE
-
1
)
*
count
,
"
count
"
:
count
}
// print(params);
let
res
=
miniapp_request
(
path
,
params
)
}
let
result
=
{
"
page
"
:
MY_PAGE
,
"
pagecount
"
:
Math
.
ceil
(
res
.
total
/
count
),
...
...
@@ -72,7 +137,7 @@ function cate_filter(d,douban){
"
total
"
:
res
.
total
}
let
items
=
[];
if
(
/rank_list|tv_hot|show_hot/
.
test
(
MY_CATE
))
{
if
(
/
^
rank_list|tv_hot|show_hot/
.
test
(
MY_CATE
))
{
items
=
res
[
'
subject_collection_items
'
]
}
else
if
(
MY_CATE
===
'
interests
'
){
...
...
@@ -93,7 +158,7 @@ function cate_filter(d,douban){
let
honor_str
=
honor
.
map
(
function
(
it
){
return
it
.
title
}).
join
(
'
|
'
);
let
vod_obj
=
{
// "vod_id": f'msearch:{item.get("type", "")}__{item.get("id", "")}',
"
vod_id
"
:
item
.
type
+
'
$
'
+
item
.
id
,
//
"vod_id": item.type+'$'+item.id,
"
vod_name
"
:
title
!==
"
未知电影
"
?
title
:
"
暂不支持展示
"
,
"
vod_pic
"
:
item
.
pic
.
normal
,
"
vod_remarks
"
:
rat_str
+
"
"
+
honor_str
...
...
py/drpy推荐.js
0 → 100644
浏览文件 @
cc8f7c05
js
:
let
d
=
[];
let
douban_api_host
=
'
https://frodo.douban.com/api/v2
'
;
let
miniapp_apikey
=
'
0ac44ae016490db2204ce0a042db2916
'
;
const
count
=
30
;
function
miniapp_request
(
path
,
query
){
try
{
let
url
=
douban_api_host
+
path
;
query
.
apikey
=
miniapp_apikey
;
fetch_params
.
headers
=
oheaders
;
url
=
buildUrl
(
url
,
query
);
let
html
=
fetch
(
url
,
fetch_params
);
return
JSON
.
parse
(
html
);
}
catch
(
e
){
print
(
'
发生了错误:
'
+
e
.
message
);
return
{}
}
}
function
subject_real_time_hotest
(){
try
{
let
res
=
miniapp_request
(
"
/subject_collection/subject_real_time_hotest/items
"
,
{});
let
lists
=
[];
let
arr
=
res
.
subject_collection_items
||
[];
arr
.
forEach
(
function
(
item
){
if
(
item
.
type
===
'
movie
'
||
item
.
type
===
'
tv
'
){
let
rating
=
item
.
rating
?
item
.
rating
.
value
:
"
暂无评分
"
;
let
honnor
=
(
item
.
honor_infos
||
[]).
map
(
function
(
it
){
return
it
.
title
}).
join
(
'
|
'
);
lists
.
append
({
// "vod_id": "",
"
vod_id
"
:
TYPE
+
"
$1
"
,
"
vod_name
"
:
item
.
title
||
""
,
"
vod_pic
"
:
item
.
pic
.
normal
,
"
vod_remarks
"
:
rating
+
"
"
+
honnor
})
}
});
return
lists
}
catch
(
e
)
{
print
(
'
发生了错误:
'
+
e
.
message
);
return
[]
}
}
VODS
=
subject_real_time_hotest
();
print
(
VODS
);
\ No newline at end of file
py/豆瓣测试.py
0 → 100644
浏览文件 @
cc8f7c05
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File : 豆瓣测试.py
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Date : 2022/9/16
import
json
selected_categories
=
{
"类型"
:
""
,
"形式"
:
""
,
"地区"
:
""
}
print
(
selected_categories
)
b
=
json
.
dumps
(
selected_categories
,
separators
=
(
','
,
':'
),
ensure_ascii
=
False
)
print
(
b
)
\ No newline at end of file
utils/encode.py
浏览文件 @
cc8f7c05
...
...
@@ -5,7 +5,7 @@
# Date : 2022/8/29
import
base64
from
urllib.parse
import
urljoin
from
urllib.parse
import
urljoin
,
quote
,
unquote
from
js2py.base
import
PyJsString
import
requests
,
warnings
# 关闭警告
...
...
@@ -225,19 +225,37 @@ def request(url,obj):
return
base_request
(
url
,
obj
)
def
redx
(
text
):
"""
修正js2py交互的字符串自动加前后引号问题
:param text:
:return:
"""
# return text.replace("'", "").replace('"', "")
text
=
str
(
text
)
if
text
.
startswith
(
"'"
)
and
text
.
endswith
(
"'"
):
text
=
text
[
1
:
-
1
]
return
text
def
buildUrl
(
url
,
obj
=
None
):
url
=
str
(
url
).
replace
(
"'"
,
""
)
# url = str(url).replace("'", "")
url
=
redx
(
url
)
if
not
obj
:
obj
=
{}
new_obj
=
{}
for
i
in
obj
:
new_obj
[
str
(
i
).
replace
(
"'"
,
""
)]
=
str
(
obj
[
i
]).
replace
(
"'"
,
""
)
# new_obj[str(i).replace("'", "")] = str(obj[i]).replace("'", "")
new_obj
[
redx
(
i
)]
=
redx
(
obj
[
i
])
if
str
(
url
).
find
(
'?'
)
<
0
:
url
=
str
(
url
)
+
'?'
prs
=
'&'
.
join
([
f
'
{
i
}
=
{
obj
[
i
]
}
'
for
i
in
obj
])
param_list
=
[
f
'
{
i
}
=
{
new_obj
[
i
]
}
'
for
i
in
new_obj
]
# print(param_list)
prs
=
'&'
.
join
(
param_list
)
if
len
(
new_obj
)
>
0
and
not
str
(
url
).
endswith
(
'?'
):
url
+=
'&'
url
=
(
url
+
prs
).
replace
(
'"'
,
''
).
replace
(
"'"
,
''
)
# url = (url + prs).replace('"','').replace("'",'')
url
=
url
+
prs
# print(url)
return
url
...
...
utils/parser.py
浏览文件 @
cc8f7c05
...
...
@@ -14,7 +14,7 @@ subprocess.Popen = partial(subprocess.Popen, encoding="utf-8") # 固定写法
# 解决execjs执行js时产生的乱码报错,需要在导入该模块之前,让Popen的encoding参数锁定为utf-8
# import execjs
import
js2py
from
js2py.base
import
JsObjectWrapper
,
PyJsString
from
js2py.base
import
JsObjectWrapper
,
PyJsString
,
PyJsObject
# os.environ["EXECJS_RUNTIME"] = "JScript"
# print(execjs.get().name)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录