Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mine929
dr_py
提交
20492ff7
dr_py
项目概览
mine929
/
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,发现更多精彩内容 >>
提交
20492ff7
编写于
8月 28, 2022
作者:
H
hjdhnx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加了服务器解析
上级
76daa5a4
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
59 addition
and
9 deletion
+59
-9
app.py
app.py
+13
-3
classes/cms.py
classes/cms.py
+19
-4
config.py
config.py
+3
-1
js/555影视.js
js/555影视.js
+1
-0
js/cokemv.js
js/cokemv.js
+1
-0
js/喵喵.js
js/喵喵.js
+1
-0
js/夜空.js
js/夜空.js
+1
-0
js/玩偶姐姐.js
js/玩偶姐姐.js
+2
-0
js/瓜皮TV.js
js/瓜皮TV.js
+1
-0
js/莫扎兔.js
js/莫扎兔.js
+1
-0
js/蓝莓影视.js
js/蓝莓影视.js
+1
-0
js/鸭奈飞.js
js/鸭奈飞.js
+1
-0
readme.md
readme.md
+2
-0
utils/web.py
utils/web.py
+12
-1
未找到文件。
app.py
浏览文件 @
20492ff7
...
...
@@ -6,11 +6,12 @@
from
flask_sqlalchemy
import
SQLAlchemy
import
config
# import settings
import
warnings
warnings
.
filterwarnings
(
'ignore'
)
import
os
from
flask
import
Flask
,
jsonify
,
abort
,
request
,
redirect
,
make_response
,
render_template
,
send_from_directory
from
flask
import
Flask
,
jsonify
,
abort
,
request
,
redirect
,
make_response
,
render_template
,
send_from_directory
,
url_for
from
js.rules
import
getRules
from
utils
import
error
,
parser
from
utils.web
import
*
...
...
@@ -19,11 +20,13 @@ import codecs
from
classes.cms
import
CMS
,
logger
import
json
sys
.
stdout
=
codecs
.
getwriter
(
"utf-8"
)(
sys
.
stdout
.
detach
())
app
=
Flask
(
__name__
,
static_folder
=
'static'
,
static_url_path
=
'/static'
)
# app.config["JSON_AS_ASCII"] = False # jsonify返回的中文正常显示
app
.
config
.
from_object
(
config
)
# 单独的配置文件里写了,这里就不用弄json中文显示了
# new_conf = get_conf(settings)
# print(new_conf)
print
(
'自定义播放解析地址:'
,
app
.
config
.
get
(
'PLAY_URL'
))
app
.
logger
.
name
=
"drLogger"
db
=
SQLAlchemy
(
app
)
...
...
@@ -60,10 +63,17 @@ def forbidden(): # put application's code here
@
app
.
route
(
'/index'
)
def
index
():
# put application's code here
# logger.info("进入了首页")
a
=
redirect
(
url_for
(
'vod'
)).
headers
[
'Location'
]
print
(
a
)
return
render_template
(
'index.html'
,
getHost
=
getHost
)
@
app
.
route
(
'/vod'
)
def
vod
():
play_url
=
getParmas
(
'play_url'
)
if
play_url
:
# 播放
logger
.
info
(
f
'播放重定向到:
{
play_url
}
'
)
return
redirect
(
play_url
)
rule
=
getParmas
(
'rule'
)
ext
=
getParmas
(
'ext'
)
if
not
ext
.
startswith
(
'http'
)
and
not
rule
:
...
...
@@ -77,7 +87,7 @@ def vod():
if
not
js_code
:
return
jsonify
(
error
.
failed
(
'爬虫规则加载失败'
))
rule
=
ctx
.
eval
(
'rule'
)
cms
=
CMS
(
rule
,
db
,
RuleClass
)
cms
=
CMS
(
rule
,
db
,
RuleClass
,
app
.
config
)
wd
=
getParmas
(
'wd'
)
ac
=
getParmas
(
'ac'
)
quick
=
getParmas
(
'quick'
)
...
...
classes/cms.py
浏览文件 @
20492ff7
...
...
@@ -14,9 +14,22 @@ from utils.htmlParser import jsoup
from
urllib.parse
import
urljoin
from
concurrent.futures
import
ThreadPoolExecutor
# 引入线程池
from
time
import
time
from
flask
import
url_for
,
redirect
class
CMS
:
def
__init__
(
self
,
rule
,
db
=
None
,
RuleClass
=
None
):
def
__init__
(
self
,
rule
,
db
=
None
,
RuleClass
=
None
,
new_conf
=
None
):
if
new_conf
is
None
:
new_conf
=
{}
self
.
play_parse
=
rule
.
get
(
'play_parse'
,
False
)
play_url
=
new_conf
.
get
(
'PLAY_URL'
,
getHost
(
1
))
if
not
play_url
.
startswith
(
'http'
):
play_url
=
'http://'
+
play_url
self
.
vod
=
redirect
(
url_for
(
'vod'
)).
headers
[
'Location'
]
if
self
.
play_parse
:
self
.
play_url
=
play_url
+
self
.
vod
+
'?play_url='
logger
.
info
(
f
'cms重定向链接:
{
self
.
play_url
}
'
)
else
:
self
.
play_url
=
''
self
.
db
=
db
self
.
RuleClass
=
RuleClass
host
=
rule
.
get
(
'host'
,
''
).
rstrip
(
'/'
)
...
...
@@ -386,7 +399,7 @@ class CMS:
if
p
==
'*'
:
vod
=
self
.
blank_vod
()
vod
[
'vod_play_from'
]
=
'道长在线'
vod
[
'desc'
]
=
detailUrl
vod
[
'desc'
]
=
self
.
play_url
+
detailUrl
vod
[
'vod_actor'
]
=
'没有二级,只有一级链接直接嗅探播放'
vod
[
'content'
]
=
detailUrl
vod
[
'vod_play_url'
]
=
'嗅探播放$'
+
detailUrl
...
...
@@ -454,7 +467,8 @@ class CMS:
for
i
in
range
(
len
(
vodHeader
)):
p1
=
p
[
'lists'
].
replace
(
'#id'
,
str
(
i
))
vodList
=
pdfa
(
html
,
p1
)
# 1条线路的选集列表
vodList
=
[
pq
(
i
).
text
()
+
'$'
+
pd
(
i
,
'a&&href'
)
for
i
in
vodList
]
# 拼接成 名称$链接
# vodList = [pq(i).text()+'$'+pd(i,'a&&href') for i in vodList] # 拼接成 名称$链接
vodList
=
[
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
)
...
...
@@ -483,7 +497,8 @@ class CMS:
'list'
:
vod_list
}
t2
=
time
()
logger
.
info
(
f
'
{
self
.
getName
()
}
获取详情页耗时:
{
round
((
t2
-
t1
)
*
1000
,
2
)
}
毫秒'
)
logger
.
info
(
f
'
{
self
.
getName
()
}
获取详情页耗时:
{
round
((
t2
-
t1
)
*
1000
,
2
)
}
毫秒,共计
{
round
(
len
(
str
(
result
))
/
1000
,
2
)
}
kb'
)
# print(result)
return
result
def
searchContent
(
self
,
key
,
fypage
=
1
):
...
...
config.py
浏览文件 @
20492ff7
...
...
@@ -16,4 +16,6 @@ DB_URI = 'sqlite:///models/rules.db?charset=utf8&check_same_thread=False'
SQLALCHEMY_DATABASE_URI
=
DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS
=
False
SQLALCHEMY_ECHO
=
False
# 打印sql语句
JSON_AS_ASCII
=
False
# jsonify返回的中文正常显示
\ No newline at end of file
JSON_AS_ASCII
=
False
# jsonify返回的中文正常显示
# PLAY_URL = 'http://localhost:5705' # 匹配远程解析服务器链接
# PLAY_URL = PLAY_URL.rstrip('/')
\ No newline at end of file
js/555影视.js
浏览文件 @
20492ff7
...
...
@@ -11,6 +11,7 @@ var rule = {
// class_name:'电影&连续剧&福利&动漫&综艺',
// class_url:'1&2&124&4&3',
class_parse
:
'
.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(
\\
d+).html
'
,
play_parse
:
true
,
limit
:
10
,
推荐
:
'
.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href
'
,
double
:
true
,
// 推荐内容是否双层定位
...
...
js/cokemv.js
浏览文件 @
20492ff7
...
...
@@ -10,6 +10,7 @@ var rule = {
},
timeout
:
5000
,
class_parse
:
'
.navbar-items li:gt(1):lt(7);a&&Text;a&&href;/(
\\
d+).html
'
,
play_parse
:
true
,
limit
:
8
,
推荐
:
'
.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href
'
,
double
:
true
,
// 推荐内容是否双层定位
...
...
js/喵喵.js
浏览文件 @
20492ff7
...
...
@@ -9,6 +9,7 @@ var rule = {
},
timeout
:
5000
,
class_parse
:
'
.bm-item-list a:gt(0):lt(7);a&&Text;a&&href;/(
\\
d+).html
'
,
play_parse
:
true
,
limit
:
5
,
推荐
:
'
.movie-list-body;.movie-list-item;.movie-title&&Text;.movie-post-lazyload&&data-original;.movie-rating&&Text;a&&href
'
,
double
:
true
,
// 推荐内容是否双层定位
...
...
js/夜空.js
浏览文件 @
20492ff7
...
...
@@ -11,6 +11,7 @@ var rule = {
// class_name:'电影&连续剧&福利&动漫&综艺',
// class_url:'1&2&124&4&3',
class_parse
:
'
.navbar-items li:gt(1):lt(7);a&&Text;a&&href;.*v/(.*?)/
'
,
play_parse
:
true
,
limit
:
10
,
推荐
:
'
.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href
'
,
double
:
true
,
// 推荐内容是否双层定位
...
...
js/玩偶姐姐.js
浏览文件 @
20492ff7
...
...
@@ -8,6 +8,7 @@ var rule = {
},
timeout
:
5000
,
class_parse
:
'
#side-menu:lt(1) li;a&&Text;a&&href;com/(.*?)/
'
,
play_parse
:
true
,
一级
:
'
.col-sm-6;h3&&Text;img&&data-src;.date&&Text;a&&href
'
,
二级
:
'
*
'
,
}
\ No newline at end of file
js/瓜皮TV.js
浏览文件 @
20492ff7
...
...
@@ -11,6 +11,7 @@ var rule = {
// class_name:'电影&连续剧&福利&动漫&综艺',
// class_url:'1&2&124&4&3',
class_parse
:
'
.navbar-items li:gt(1):lt(8);a&&Text;a&&href;.*-(.*?).html
'
,
play_parse
:
true
,
limit
:
10
,
推荐
:
'
.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href
'
,
double
:
true
,
// 推荐内容是否双层定位
...
...
js/莫扎兔.js
浏览文件 @
20492ff7
...
...
@@ -11,6 +11,7 @@ var rule = {
// class_name:'电影&连续剧&福利&动漫&综艺',
// class_url:'1&2&124&4&3',
class_parse
:
'
.navbar-items li:gt(2):lt(8);a&&Text;a&&href;.*/(.*?).html
'
,
play_parse
:
true
,
limit
:
10
,
推荐
:
'
.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href
'
,
double
:
true
,
// 推荐内容是否双层定位
...
...
js/蓝莓影视.js
浏览文件 @
20492ff7
...
...
@@ -10,6 +10,7 @@ var rule = {
// class_name:'电影&网剧&剧集&动漫&综艺&记录',
// class_url:'20&1&2&3&4&23',
class_parse
:
'
.navbar-items li:gt(1):lt(8);a&&Text;a&&href;/(
\\
d+).html
'
,
play_parse
:
true
,
limit
:
30
,
推荐
:
'
.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href
'
,
double
:
true
,
// 推荐内容是否双层定位
...
...
js/鸭奈飞.js
浏览文件 @
20492ff7
...
...
@@ -8,6 +8,7 @@ var rule = {
// class_name:'电影&连续剧&综艺&动漫',
// class_url:'dianying&lianxuju&zongyi&dongman',
class_parse
:
'
.navbar-items li:gt(1):lt(6);a&&Text;a&&href;.*/(.*?).html
'
,
play_parse
:
true
,
推荐
:
'
.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href
'
,
double
:
true
,
// 推荐内容是否双层定位
一级
:
'
body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href
'
,
...
...
readme.md
浏览文件 @
20492ff7
...
...
@@ -73,6 +73,8 @@ var rule = {
class_url
:
'
1&2&3&4
'
,
//静态分类标识拼接
//动态分类获取 列表;标题;链接;正则提取 不需要正则的时候后面别加分号
class_parse
:
'
#side-menu:lt(1) li;a&&Text;a&&href;com/(.*?)/
'
,
// 服务器解析播放
play_parse
:
true
,
// 首页推荐显示数量
limit
:
6
,
double
:
true
,
//是否双层列表定位,默认false
...
...
utils/web.py
浏览文件 @
20492ff7
...
...
@@ -5,6 +5,7 @@
# Date : 2022/8/25
import
socket
from
werkzeug.utils
import
import_string
from
netifaces
import
interfaces
,
ifaddresses
,
AF_INET
from
flask
import
request
from
utils.log
import
logger
...
...
@@ -52,4 +53,14 @@ def getHost(mode=0,port=None):
host
=
f
'
{
ip
}
:
{
port
}
'
else
:
host
=
'cms.nokia.press'
return
host
\ No newline at end of file
return
host
def
get_conf
(
obj
):
new_conf
=
{}
if
isinstance
(
obj
,
str
):
config
=
import_string
(
obj
)
for
key
in
dir
(
obj
):
if
key
.
isupper
():
new_conf
[
key
]
=
getattr
(
obj
,
key
)
# print(new_conf)
return
new_conf
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录