Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
披星戴月123
dr_py
提交
59f2b392
dr_py
项目概览
披星戴月123
/
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,发现更多精彩内容 >>
提交
59f2b392
编写于
10月 15, 2022
作者:
H
hjdhnx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
js模式0增加tabs和lists执行js:
上级
7ec8e293
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
76 addition
and
34 deletion
+76
-34
base/rules.db
base/rules.db
+0
-0
controllers/cms.py
controllers/cms.py
+70
-32
js/ddys.js
js/ddys.js
+1
-1
utils/htmlParser.py
utils/htmlParser.py
+5
-1
未找到文件。
base/rules.db
浏览文件 @
59f2b392
无法预览此类型文件
controllers/cms.py
浏览文件 @
59f2b392
...
...
@@ -882,7 +882,8 @@ class CMS:
vod_play_from
=
'$$$'
playFrom
=
[]
if
p
.
get
(
'重定向'
)
and
str
(
p
[
'重定向'
]).
startswith
(
'js:'
):
init_flag
=
{
'ctx'
:
False
}
def
js_pre
():
headers
[
'Referer'
]
=
getHome
(
url
)
py_ctx
.
update
({
'input'
:
url
,
...
...
@@ -896,6 +897,10 @@ class CMS:
'saveParse'
:
self
.
d
.
saveParse
,
'jsp'
:
jsp
,
'setDetail'
:
setDetail
,
})
init_flag
[
'ctx'
]
=
True
if
p
.
get
(
'重定向'
)
and
str
(
p
[
'重定向'
]).
startswith
(
'js:'
):
if
not
init_flag
[
'ctx'
]:
js_pre
()
ctx
=
py_ctx
# print(ctx)
rcode
=
p
[
'重定向'
].
replace
(
'js:'
,
''
,
1
)
...
...
@@ -910,19 +915,34 @@ class CMS:
if
p
.
get
(
'tabs'
):
vodHeader
=
[]
# print(p['tabs'].split(';')[0])
vHeader
=
pdfa
(
html
,
p
[
'tabs'
].
split
(
';'
)[
0
])
# print(f'线路列表数:{len((vodHeader))}')
# print(vodHeader)
if
not
is_json
:
for
v
in
vHeader
:
# 过滤排除掉线路标题
v_title
=
pq
(
v
).
text
()
if
self
.
tab_exclude
and
jsp
.
test
(
self
.
tab_exclude
,
v_title
):
continue
vodHeader
.
append
(
v_title
)
else
:
if
str
(
p
[
'tabs'
]).
startswith
(
'js:'
):
if
not
init_flag
[
'ctx'
]:
js_pre
()
ctx
=
py_ctx
rcode
=
p
[
'tabs'
].
replace
(
'js:'
,
''
,
1
)
jscode
=
getPreJs
()
+
rcode
# print(jscode)
loader
,
_
=
runJScode
(
jscode
,
ctx
=
ctx
)
# print(loader.toString())
logger
.
info
(
f
'开始执行tabs代码:
{
rcode
}
'
)
vHeader
=
loader
.
eval
(
'TABS'
)
if
isinstance
(
vod
,
JsObjectWrapper
):
vHeader
=
vHeader
.
to_list
()
vodHeader
=
vHeader
else
:
# print(p['tabs'].split(';')[0])
vHeader
=
pdfa
(
html
,
p
[
'tabs'
].
split
(
';'
)[
0
])
# print(f'线路列表数:{len((vodHeader))}')
# print(vodHeader)
if
not
is_json
:
for
v
in
vHeader
:
# 过滤排除掉线路标题
v_title
=
pq
(
v
).
text
()
if
self
.
tab_exclude
and
jsp
.
test
(
self
.
tab_exclude
,
v_title
):
continue
vodHeader
.
append
(
v_title
)
else
:
vodHeader
=
vHeader
else
:
vodHeader
=
[
'道长在线'
]
...
...
@@ -935,25 +955,43 @@ class CMS:
vod_play_url
=
'$$$'
vod_tab_list
=
[]
if
p
.
get
(
'lists'
):
for
i
in
range
(
len
(
vodHeader
)):
tab_name
=
str
(
vodHeader
[
i
])
tab_ext
=
p
[
'tabs'
].
split
(
';'
)[
1
]
if
len
(
p
[
'tabs'
].
split
(
';'
))
>
1
else
''
p1
=
p
[
'lists'
].
replace
(
'#idv'
,
tab_name
).
replace
(
'#id'
,
str
(
i
))
tab_ext
=
tab_ext
.
replace
(
'#idv'
,
tab_name
).
replace
(
'#id'
,
str
(
i
))
vodList
=
pdfa
(
html
,
p1
)
# 1条线路的选集列表
# print(vodList)
# vodList = [pq(i).text()+'$'+pd(i,'a&&href') for i in vodList] # 拼接成 名称$链接
if
self
.
play_parse
:
# 自动base64编码
vodList
=
[(
pdfh
(
html
,
tab_ext
)
if
tab_ext
else
tab_name
)
+
'$'
+
self
.
play_url
+
encodeUrl
(
i
)
for
i
in
vodList
]
if
is_json
else
\
[
pq
(
i
).
text
()
+
'$'
+
self
.
play_url
+
encodeUrl
(
pd
(
i
,
'a&&href'
))
for
i
in
vodList
]
# 拼接成 名称$链接
else
:
vodList
=
[(
pdfh
(
html
,
tab_ext
)
if
tab_ext
else
tab_name
)
+
'$'
+
self
.
play_url
+
i
for
i
in
vodList
]
if
is_json
else
\
[
pq
(
i
).
text
()
+
'$'
+
self
.
play_url
+
pd
(
i
,
'a&&href'
)
for
i
in
vodList
]
# 拼接成 名称$链接
vlist
=
'#'
.
join
(
vodList
)
# 拼多个选集
vod_tab_list
.
append
(
vlist
)
vod_play_url
=
vod_play_url
.
join
(
vod_tab_list
)
if
str
(
p
[
'lists'
]).
startswith
(
'js:'
):
if
not
init_flag
[
'ctx'
]:
js_pre
()
ctx
=
py_ctx
ctx
[
'TABS'
]
=
vodHeader
# 把选集列表传过去
rcode
=
p
[
'lists'
].
replace
(
'js:'
,
''
,
1
)
jscode
=
getPreJs
()
+
rcode
# print(jscode)
loader
,
_
=
runJScode
(
jscode
,
ctx
=
ctx
)
# print(loader.toString())
logger
.
info
(
f
'开始执行lists代码:
{
rcode
}
'
)
vlists
=
loader
.
eval
(
'LISTS'
)
if
isinstance
(
vod
,
JsObjectWrapper
):
vlists
=
vlists
.
to_list
()
# [['第1集$http://1.mp4','第2集$http://2.mp4'],['第3集$http://1.mp4','第4集$http://2.mp4']]
vod_play_url
=
vod_play_url
.
join
(
list
(
map
(
lambda
x
:
'#'
.
join
(
x
),
vlists
)))
else
:
for
i
in
range
(
len
(
vodHeader
)):
tab_name
=
str
(
vodHeader
[
i
])
tab_ext
=
p
[
'tabs'
].
split
(
';'
)[
1
]
if
len
(
p
[
'tabs'
].
split
(
';'
))
>
1
else
''
p1
=
p
[
'lists'
].
replace
(
'#idv'
,
tab_name
).
replace
(
'#id'
,
str
(
i
))
tab_ext
=
tab_ext
.
replace
(
'#idv'
,
tab_name
).
replace
(
'#id'
,
str
(
i
))
vodList
=
pdfa
(
html
,
p1
)
# 1条线路的选集列表
# print(vodList)
# vodList = [pq(i).text()+'$'+pd(i,'a&&href') for i in vodList] # 拼接成 名称$链接
if
self
.
play_parse
:
# 自动base64编码
vodList
=
[(
pdfh
(
html
,
tab_ext
)
if
tab_ext
else
tab_name
)
+
'$'
+
self
.
play_url
+
encodeUrl
(
i
)
for
i
in
vodList
]
if
is_json
else
\
[
pq
(
i
).
text
()
+
'$'
+
self
.
play_url
+
encodeUrl
(
pd
(
i
,
'a&&href'
))
for
i
in
vodList
]
# 拼接成 名称$链接
else
:
vodList
=
[(
pdfh
(
html
,
tab_ext
)
if
tab_ext
else
tab_name
)
+
'$'
+
self
.
play_url
+
i
for
i
in
vodList
]
if
is_json
else
\
[
pq
(
i
).
text
()
+
'$'
+
self
.
play_url
+
pd
(
i
,
'a&&href'
)
for
i
in
vodList
]
# 拼接成 名称$链接
vlist
=
'#'
.
join
(
vodList
)
# 拼多个选集
vod_tab_list
.
append
(
vlist
)
vod_play_url
=
vod_play_url
.
join
(
vod_tab_list
)
# print(vod_play_url)
vod
[
'vod_play_from'
]
=
vod_play_from
# print(vod_play_from)
...
...
js/ddys.js
浏览文件 @
59f2b392
...
...
@@ -21,7 +21,7 @@ var rule={
//推荐:'.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
double
:
true
,
// 推荐内容是否双层定位
一级
:
'
.post-box-list&&article;a:eq(-1)&&Text;.post-box-image&&style;a:eq(0)&&Text;a:eq(-1)&&href
'
,
二级
:{
"
title
"
:
"
.post-title&&Text;.cat-links&&Text
"
,
"
img
"
:
"
.doulist-item&&img&&data-cfsrc
"
,
"
desc
"
:
"
.published&&Text
"
,
"
content
"
:
"
.abstract&&Text
"
,
"
tabs
"
:
"
.py-tabs&&option
"
,
"
lists
"
:
"
.player:eq(#id) li
"
},
二级
:{
"
title
"
:
"
.post-title&&Text;.cat-links&&Text
"
,
"
img
"
:
"
.doulist-item&&img&&data-cfsrc
"
,
"
desc
"
:
"
.published&&Text
"
,
"
content
"
:
"
.abstract&&Text
"
,
"
tabs
"
:
"
js:TABS=['道长在线','道长在线2']
"
,
"
lists
"
:
"
js:log(TABS);LISTS=[['第1集$http://1.mp4','第2集$http://2.mp4'],['第3集$http://1.mp4','第4集$http://2.mp4']]
"
},
搜索
:
'
#main&&article;.post-title&&Text;;.published&&Text;a&&href
'
,
推荐
:
'
*
'
}
\ No newline at end of file
utils/htmlParser.py
浏览文件 @
59f2b392
...
...
@@ -35,7 +35,11 @@ class jsoup:
# FIXME 暂时不支持jsonpath那样的|| 分割取或属性
if
option
:
# print(f'parse:{parse}=>(option:{option})')
ret
=
doc
(
parse
)
if
':eq(-1)'
in
parse
:
# 处理 eq(-1)的情况,兼容性差,暂时只支持一层eq
ret
=
doc
(
parse
.
replace
(
':eq(-1)'
,
''
)).
eq
(
-
1
)
else
:
ret
=
doc
(
parse
)
# print(html)
# FIXME 解析出来有多个的情况应该自动取第一个
if
option
==
'Text'
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录