Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
言程序plus
dr_py
提交
6a5de75a
dr_py
项目概览
言程序plus
/
dr_py
与 Fork 源项目一致
从无法访问的项目Fork
通知
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看板
提交
6a5de75a
编写于
11月 26, 2022
作者:
H
hjdhnx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
版本升级,增加新特性
上级
e2736dc4
变更
9
展开全部
隐藏空白更改
内联
并排
Showing
9 changed file
with
135 addition
and
7 deletion
+135
-7
base/rules.db
base/rules.db
+0
-0
controllers/cms.py
controllers/cms.py
+6
-1
js/version.txt
js/version.txt
+1
-1
libs/drpy.js
libs/drpy.js
+43
-1
libs/drpy.min.js
libs/drpy.min.js
+1
-1
libs/drpy2.js
libs/drpy2.js
+43
-1
libs/drpy2.min.js
libs/drpy2.min.js
+1
-1
readme.md
readme.md
+1
-0
utils/encode.py
utils/encode.py
+39
-1
未找到文件。
base/rules.db
浏览文件 @
6a5de75a
无法预览此类型文件
controllers/cms.py
浏览文件 @
6a5de75a
...
...
@@ -15,7 +15,7 @@ from utils.system import getHost
from
utils.config
import
playerConfig
from
utils.log
import
logger
from
utils.encode
import
base64Encode
,
base64Decode
,
fetch
,
post
,
request
,
getCryptoJS
,
getPreJs
,
buildUrl
,
getHome
from
utils.encode
import
verifyCode
,
setDetail
,
join
,
urljoin2
,
parseText
,
requireCache
from
utils.encode
import
verifyCode
,
setDetail
,
join
,
urljoin2
,
parseText
,
requireCache
,
forceOrder
from
utils.encode
import
md5
as
mmd5
from
utils.safePython
import
safePython
from
utils.parser
import
runPy
,
runJScode
,
JsObjectWrapper
,
PyJsObject
,
PyJsString
...
...
@@ -1091,7 +1091,12 @@ class CMS:
vodList
=
[(
pdfh
(
html
,
tab_ext
)
if
tab_ext
else
tab_name
)
+
'$'
+
play_url
+
i
for
i
in
vodList
]
if
is_json
else
\
[
pdfh
(
i
,
list_text
)
+
'$'
+
play_url
+
pd
(
i
,
list_url
)
for
i
in
vodList
]
# 拼接成 名称$链接
# print(vodList)
vodList
=
forceOrder
(
vodList
,
option
=
lambda
x
:
x
.
split
(
'$'
)[
0
])
# print(vodList)
vlist
=
'#'
.
join
(
vodList
)
# 拼多个选集
# print(vlist)
vod_tab_list
.
append
(
vlist
)
vod_play_url
=
vod_play_url
.
join
(
vod_tab_list
)
...
...
js/version.txt
浏览文件 @
6a5de75a
3.9.25
\ No newline at end of file
3.9.25beta1
\ No newline at end of file
libs/drpy.js
浏览文件 @
6a5de75a
...
...
@@ -53,7 +53,7 @@ function pre(){
}
let
rule
=
{};
const
VERSION
=
'
drpy1 3.9.25 20221126
'
;
const
VERSION
=
'
drpy1 3.9.25
beta1
20221126
'
;
/** 已知问题记录
* 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下,支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼,最新的文件发现这问题已经解决了]
* Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下)
...
...
@@ -398,6 +398,47 @@ function getCryptoJS(){
return
'
console.log("CryptoJS已装载");
'
}
/**
* 强制正序算法
* @param lists 待正序列表
* @param key 正序键
* @param option 单个元素处理函数
* @returns {*}
*/
function
forceOrder
(
lists
,
key
,
option
){
let
start
=
Math
.
floor
(
lists
.
length
/
2
);
let
end
=
Math
.
min
(
lists
.
length
-
1
,
start
+
1
);
if
(
start
>=
end
){
return
lists
;
}
let
first
=
lists
[
start
];
let
second
=
lists
[
end
];
if
(
key
){
try
{
first
=
first
[
key
];
second
=
second
[
key
];
}
catch
(
e
)
{}
}
if
(
option
&&
typeof
(
option
)
===
'
function
'
){
try
{
first
=
option
(
first
);
second
=
option
(
second
);
}
catch
(
e
)
{}
}
first
+=
''
;
second
+=
''
;
// console.log(first,second);
if
(
first
.
match
(
/
(\d
+
)
/
)
&&
second
.
match
(
/
(\d
+
)
/
)){
let
num1
=
Number
(
first
.
match
(
/
(\d
+
)
/
)[
1
]);
let
num2
=
Number
(
second
.
match
(
/
(\d
+
)
/
)[
1
]);
if
(
num1
>
num2
){
lists
.
reverse
();
}
}
return
lists
}
let
VODS
=
[];
// 一级或者搜索需要的数据列表
let
VOD
=
{};
// 二级的单个数据
let
TABS
=
[];
// 二级的自定义线路列表 如: TABS=['道长在线','道长在线2']
...
...
@@ -1862,6 +1903,7 @@ function detailParse(detailObj){
new_vod_list
.
push
(
_pdfh
(
it
,
list_text
).
trim
()
+
'
$
'
+
_pd
(
it
,
list_url
,
MY_URL
));
});
if
(
vodList
.
length
>
0
){
new_vod_list
=
forceOrder
(
new_vod_list
,
''
,
x
=>
x
.
split
(
'
$
'
)[
0
]);
console
.
log
(
`drpy影响性能代码共计列表数循环次数:
${
vodList
.
length
}
,耗时:
${(
new
Date
()).
getTime
()
-
tt1
}
毫秒`
);
}
let
vlist
=
new_vod_list
.
join
(
'
#
'
);
...
...
libs/drpy.min.js
浏览文件 @
6a5de75a
此差异已折叠。
点击以展开。
libs/drpy2.js
浏览文件 @
6a5de75a
...
...
@@ -31,7 +31,7 @@ function pre(){
}
let
rule
=
{};
const
VERSION
=
'
drpy2 3.9.25 20221126
'
;
const
VERSION
=
'
drpy2 3.9.25
beta1
20221126
'
;
/** 已知问题记录
* 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下,支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼,最新的文件发现这问题已经解决了]
* Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下)
...
...
@@ -378,6 +378,46 @@ function getCryptoJS(){
return
'
console.log("CryptoJS已装载");
'
}
/**
* 强制正序算法
* @param lists 待正序列表
* @param key 正序键
* @param option 单个元素处理函数
* @returns {*}
*/
function
forceOrder
(
lists
,
key
,
option
){
let
start
=
Math
.
floor
(
lists
.
length
/
2
);
let
end
=
Math
.
min
(
lists
.
length
-
1
,
start
+
1
);
if
(
start
>=
end
){
return
lists
;
}
let
first
=
lists
[
start
];
let
second
=
lists
[
end
];
if
(
key
){
try
{
first
=
first
[
key
];
second
=
second
[
key
];
}
catch
(
e
)
{}
}
if
(
option
&&
typeof
(
option
)
===
'
function
'
){
try
{
first
=
option
(
first
);
second
=
option
(
second
);
}
catch
(
e
)
{}
}
first
+=
''
;
second
+=
''
;
// console.log(first,second);
if
(
first
.
match
(
/
(\d
+
)
/
)
&&
second
.
match
(
/
(\d
+
)
/
)){
let
num1
=
Number
(
first
.
match
(
/
(\d
+
)
/
)[
1
]);
let
num2
=
Number
(
second
.
match
(
/
(\d
+
)
/
)[
1
]);
if
(
num1
>
num2
){
lists
.
reverse
();
}
}
return
lists
}
let
VODS
=
[];
// 一级或者搜索需要的数据列表
let
VOD
=
{};
// 二级的单个数据
let
TABS
=
[];
// 二级的自定义线路列表 如: TABS=['道长在线','道长在线2']
...
...
@@ -1727,8 +1767,10 @@ function detailParse(detailObj){
new_vod_list
.
push
(
_pdfh
(
it
,
list_text
).
trim
()
+
'
$
'
+
_pd
(
it
,
list_url
,
MY_URL
));
});
if
(
vodList
.
length
>
0
){
new_vod_list
=
forceOrder
(
new_vod_list
,
''
,
x
=>
x
.
split
(
'
$
'
)[
0
]);
console
.
log
(
`drpy影响性能代码共计列表数循环次数:
${
vodList
.
length
}
,耗时:
${(
new
Date
()).
getTime
()
-
tt1
}
毫秒`
);
}
// print(new_vod_list);
let
vlist
=
new_vod_list
.
join
(
'
#
'
);
vod_tab_list
.
push
(
vlist
);
}
...
...
libs/drpy2.min.js
浏览文件 @
6a5de75a
此差异已折叠。
点击以展开。
readme.md
浏览文件 @
6a5de75a
...
...
@@ -52,6 +52,7 @@
###### 2022/11/26
-
[X] drpy系列资源接口修复,推荐为double的情况也支持第二个定位写
*
自动继承一级的第一个定位(参考乐猪TV)
-
[X] V3.9.25新特性:搜索支持post(参考乐猪TV) 格式为 搜索链接;post (搜索参数用#传递)
-
[X] V3.9.25beta1 增加部分源二级选集列表强制正序
###### 2022/11/25
-
[X] 优化腾云驾雾源,方便追剧
-
[X] 增加新解析并修复酷云自建解析
...
...
utils/encode.py
浏览文件 @
6a5de75a
...
...
@@ -5,6 +5,8 @@
# Date : 2022/8/29
import
base64
import
math
import
re
from
urllib.parse
import
urljoin
,
quote
,
unquote
from
js2py.base
import
PyJsString
import
requests
,
warnings
...
...
@@ -366,4 +368,40 @@ def buildUrl(url,obj=None):
# url = (url + prs).replace('"','').replace("'",'')
url
=
url
+
prs
# print(url)
return
url
\ No newline at end of file
return
url
def
forceOrder
(
lists
:
list
,
key
:
str
=
None
,
option
=
None
):
"""
强制正序
:param lists:
:param key:
:return:
"""
start
=
math
.
floor
(
len
(
lists
)
/
2
)
end
=
min
(
len
(
lists
)
-
1
,
start
+
1
)
if
start
>=
end
:
return
lists
first
=
lists
[
start
]
second
=
lists
[
end
]
if
key
:
try
:
first
=
first
[
key
]
second
=
second
[
key
]
except
:
pass
if
option
and
hasattr
(
option
,
'__call__'
):
try
:
first
=
option
(
first
)
second
=
option
(
second
)
# print(f'first:{first},second:{second}')
except
Exception
as
e
:
print
(
f
'强制排序执行option发生了错误:
{
e
}
'
)
first
=
str
(
first
)
second
=
str
(
second
)
if
re
.
search
(
r
'(\d+)'
,
first
)
and
re
.
search
(
r
'(\d+)'
,
second
):
num1
=
int
(
re
.
search
(
r
'(\d+)'
,
first
).
groups
()[
0
])
num2
=
int
(
re
.
search
(
r
'(\d+)'
,
second
).
groups
()[
0
])
if
num1
>
num2
:
lists
.
reverse
()
return
lists
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录