Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Zebra-h
dr_py
提交
f5ade05d
dr_py
项目概览
Zebra-h
/
dr_py
与 Fork 源项目一致
Fork自
晚风拂柳颜 / dr_py
通知
1
Star
1
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,发现更多精彩内容 >>
提交
f5ade05d
编写于
8月 25, 2022
作者:
H
hjdhnx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
解决execjs中文乱码问题
上级
a9e011a0
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
121 addition
and
1 deletion
+121
-1
app.py
app.py
+36
-1
js/rules.py
js/rules.py
+9
-0
js/鸭奈飞.js
js/鸭奈飞.js
+11
-0
utils/error.py
utils/error.py
+17
-0
utils/parser.py
utils/parser.py
+48
-0
未找到文件。
app.py
浏览文件 @
f5ade05d
...
...
@@ -5,7 +5,8 @@
# Date : 2022/8/25
from
flask
import
Flask
,
jsonify
,
abort
,
request
,
redirect
,
make_response
,
render_template
from
js.rules
import
rule_list
from
utils
import
error
,
parser
import
sys
import
codecs
sys
.
stdout
=
codecs
.
getwriter
(
"utf-8"
)(
sys
.
stdout
.
detach
())
...
...
@@ -20,6 +21,22 @@ headers = {
'user-agent'
:
UA
,
}
def
getParmas
(
key
=
None
):
"""
获取链接参数
:param key:
:return:
"""
args
=
{}
if
request
.
method
==
'POST'
:
args
=
request
.
json
elif
request
.
method
==
'GET'
:
args
=
request
.
args
if
key
:
return
args
.
get
(
key
,
''
)
else
:
return
args
@
app
.
route
(
'/'
)
def
forbidden
():
# put application's code here
abort
(
403
)
...
...
@@ -28,5 +45,23 @@ def forbidden(): # put application's code here
def
index
():
# put application's code here
return
render_template
(
'index.html'
)
@
app
.
route
(
'/vod'
)
def
vod
():
rule
=
getParmas
(
'rule'
)
if
not
rule
:
return
jsonify
(
error
.
failed
(
'规则字段必填'
))
if
not
rule
in
rule_list
:
msg
=
f
'仅支持以下规则:
{
","
.
join
(
rule_list
)
}
'
return
jsonify
(
error
.
failed
(
msg
))
# with open(f'js/{rule}.js',mode='r',encoding='utf-8') as f:
# js_code = f.read()
js_path
=
f
'js/
{
rule
}
.js'
ctx
,
js_code
=
parser
.
runJs
(
js_path
)
a
=
ctx
.
eval
(
'rule'
)
print
(
a
)
print
(
type
(
a
))
return
jsonify
({
'rule'
:
rule
,
'js_code'
:
js_code
})
if
__name__
==
'__main__'
:
app
.
run
(
host
=
"0.0.0.0"
,
port
=
9000
)
\ No newline at end of file
js/rules.py
0 → 100644
浏览文件 @
f5ade05d
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File : rules.py.py
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Date : 2022/8/25
rule_list
=
[
'鸭奈飞'
]
js/鸭奈飞.js
0 → 100644
浏览文件 @
f5ade05d
var
rule
=
{
url
:
'
https://yanetflix.com/vodshow/dianying--------fypage---.html
'
,
searchUrl
:
'
/vodsearch/**----------fypage---.html
'
,
ua
:
'
MOBILE_UA
'
,
class_name
:
''
,
class_url
:
'
测试
'
,
一级
:
''
,
二级
:
''
,
搜索
:
''
,
}
\ No newline at end of file
utils/error.py
0 → 100644
浏览文件 @
f5ade05d
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File : error.py
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Date : 2022/8/25
def
failed
(
msg
):
return
{
'msg'
:
msg
,
'code'
:
404
,
}
def
success
(
msg
):
return
{
'msg'
:
msg
,
'code'
:
200
,
}
\ No newline at end of file
utils/parser.py
0 → 100644
浏览文件 @
f5ade05d
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File : parser.py
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Date : 2022/8/25
import
os
from
flask
import
make_response
,
jsonify
from
functools
import
partial
# 这玩意儿能锁定一个函数的参数
import
subprocess
subprocess
.
Popen
=
partial
(
subprocess
.
Popen
,
encoding
=
"utf-8"
)
# 固定写法
# 解决execjs执行js时产生的乱码报错,需要在导入该模块之前,让Popen的encoding参数锁定为utf-8
import
execjs
# os.environ["EXECJS_RUNTIME"] = "JScript"
# print(execjs.get().name)
def
runJs
(
jsPath
):
# base_path = os.path.dirname(os.path.abspath(__file__)) # 当前文件所在目录
# base_path = os.path.dirname(os.getcwd()) # 当前主程序所在工作目录
# base_path = os.path.dirname(os.path.abspath('.')) # 上级目录
base_path
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)))
# 上级目录
js_path
=
os
.
path
.
join
(
base_path
,
jsPath
)
with
open
(
js_path
,
'r'
,
encoding
=
'UTF-8'
)
as
fp
:
js_code
=
fp
.
read
()
# print(js_code)
loader
=
execjs
.
compile
(
js_code
)
return
loader
,
js_code
def
toJs
(
jsPath
):
base_path
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)))
# 上级目录
js_path
=
os
.
path
.
join
(
base_path
,
jsPath
)
if
not
os
.
path
.
exists
(
js_path
):
return
jsonify
({
'code'
:
-
2
,
'msg'
:
f
'非法猥亵,文件不存在'
})
with
open
(
js_path
,
'r'
,
encoding
=
'UTF-8'
)
as
fp
:
js
=
fp
.
read
()
response
=
make_response
(
js
)
response
.
headers
[
'Content-Type'
]
=
'text/javascript; charset=utf-8'
return
response
def
toHtml
(
jsPath
):
base_path
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)))
# 上级目录
js_path
=
os
.
path
.
join
(
base_path
,
jsPath
)
with
open
(
js_path
,
'r'
,
encoding
=
'UTF-8'
)
as
fp
:
js
=
fp
.
read
()
response
=
make_response
(
js
)
response
.
headers
[
'Content-Type'
]
=
'text/html; charset=utf-8'
return
response
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录