Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sxaah
dr_py
提交
9b2ae86a
dr_py
项目概览
sxaah
/
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,发现更多精彩内容 >>
提交
9b2ae86a
编写于
9月 07, 2022
作者:
H
hjdhnx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
高级玩意儿哟,记得更
上级
6e3751cd
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
133 addition
and
7 deletion
+133
-7
js/version.txt
js/version.txt
+1
-1
js/腾云驾雾.js
js/腾云驾雾.js
+5
-3
py/腾讯二级.js
py/腾讯二级.js
+117
-0
readme.md
readme.md
+1
-0
utils/encode.py
utils/encode.py
+9
-3
未找到文件。
js/version.txt
浏览文件 @
9b2ae86a
3.2.6
\ No newline at end of file
3.2.7
\ No newline at end of file
js/腾云驾雾.js
浏览文件 @
9b2ae86a
var
rule
=
{
title
:
'
腾云驾雾
'
,
host
:
'
https://v.
qq
.com
'
,
host
:
'
https://v.
%71%71
.com
'
,
homeUrl
:
'
/channel/choice?listpage=1&channel=choice&sort=18&_all=1
'
,
detailUrl
:
'
https://node.video.
qq
.com/x/api/float_vinfo2?cid=fyid
'
,
detailUrl
:
'
https://node.video.
%71%71
.com/x/api/float_vinfo2?cid=fyid
'
,
searchUrl
:
'
https://node.video.%71%71.com/x/api/msearch?keyWord=**
'
,
searchable
:
1
,
quickSearch
:
1
,
...
...
@@ -23,6 +23,7 @@ var rule = {
一级
:
'
.list_item;img&&alt;img&&src;a&&Text;a&&data-float
'
,
// 二级:{is_json:1,"title":"data.title;data.moviecategory[0]+data.moviecategory[1]","img":"data.cdncover","desc":"data.area[0];data.director[0]","content":"data.description","tabs":"data.playlink_sites;data.playlinksdetail.#idv.quality","lists":"data.playlinksdetail.#idv.default_url"},
// 二级:{is_json:1,"title":"data.title;data.moviecategory[0]+data.moviecategory[1]","img":"data.cdncover","desc":"data.area[0];data.director[0]","content":"data.description","tabs":"data.playlink_sites","lists":"data.playlinksdetail.#idv.default_url"},
二级
:
'
js:print(input);let html=JSON.parse(fetch(input,fetch_params));let data=html.data;let tilte=data.title;let img=data.cdncover;let vod_type=data.moviecategory.join(",");let area=data.area.join(",");let director=data.director.join(",");let actor=data.actor.join(",");let content=data.description;base_vod={vod_id:input,vod_name:tilte,type_name:vod_type,vod_actor:actor,vod_director:director,vod_content:content,vod_remarks:area,vod_pic:urljoin2(input,img)};let delta=200;let vod_play={};let sites=data.playlink_sites;for(let i in sites){let site=sites[i];let playList="";let vodItems=[];if(data.allupinfo){let total=parseInt(data.allupinfo[site]);for(let j=1;j<total;j+=delta){let end=Math.min(total,j+delta-1);let url2=buildUrl(input,{start:j,end:end,site:site});let vod_data=JSON.parse(fetch(url2),fetch_params).data;if(vod_data.allepidetail){vod_data=vod_data.allepidetail[site];vod_data.forEach(function(item,index){vodItems.push((item.playlink_num||"")+"$"+(item.url||""))})}else{vod_data=vod_data.defaultepisode;vod_data.forEach(function(item,index){vodItems.push((item.period||"")+(item.name||"")+"$"+item.url||"")})}}}else{let item=data.playlinksdetail[site];vodItems.push((item.sort||"")+"$"+(item.default_url||""))}if(vodItems.length>0){playList=vodItems.join("#")}if(playList.length<1){continue}vod_play[site]=playList}let tabs=Object.keys(vod_play);let playUrls=[];for(let id in tabs){playUrls.push(vod_play[tabs[id]])}if(tabs.length>0){vod_play_from=tabs.join("$$$");vod_play_url=playUrls.join("$$$");base_vod.vod_play_from=vod_play_from;base_vod.vod_play_url=vod_play_url}vod=base_vod;
'
,
二级
:
''
,
二级
:
'
js:var vod={};let d=[];let video_list=[];let video_lists=[];let list=[];let html=fetch(input,fetch_params);let sourceId=/get_playsource/.test(input)?input.match(/id=(
\\
d*?)&/)[1]:input.split("cid=")[1];let cid=sourceId;let detailUrl="https://v.%71%71.com/detail/m/"+cid+".html";log("详情页:"+detailUrl);var pdfh=jsp.pdfh;var pd=jsp.pd;try{let json=JSON.parse(html);vod={vod_id:json.c.vid,vod_url:input,vod_name:json.c.title,type_name:json.typ.join(","),vod_actor:json.nam.join(","),vod_year:json.c.year,vod_content:json.c.description,vod_remarks:json.rec,vod_pic:urljoin2(input,json.c.pic)}}catch(e){log("解析片名海报等基础信息发生错误:"+e.message)}if(/get_playsource/.test(input)){eval(html);let indexList=QZOutputJson.PlaylistItem.indexList;indexList.forEach(function(it){let dataUrl="https://s.video.qq.com/get_playsource?id="+sourceId+"&plat=2&type=4&data_type=3&range="+it+"&video_type=10&plname=qq&otype=json";eval(fetch(dataUrl,fetch_params));let vdata=QZOutputJson.PlaylistItem.videoPlayList;vdata.forEach(function(item){d.push({title:item.title,pic_url:item.pic,desc:item.episode_number+"
\\
t
\\
t
\\
t播放量:"+item.thirdLine,url:item.playUrl})});video_lists=video_lists.concat(vdata)})}else{let json=JSON.parse(html);video_lists=json.c.video_ids;let url="https://v.qq.com/x/cover/"+sourceId+".html";if(json.c.type===10){let dataUrl="https://s.video.qq.com/get_playsource?id="+json.c.column_id+"&plat=2&type=2&data_type=3&video_type=8&plname=qq&otype=json";let o_html=fetch(dataUrl,fetch_params);eval(o_html);video_lists=[];let indexList=QZOutputJson.PlaylistItem.indexList;indexList.forEach(function(it){let dataUrl="https://s.video.qq.com/get_playsource?id="+json.c.column_id+"&plat=2&type=4&data_type=3&range="+it+"&video_type=10&plname=qq&otype=json";eval(fetch(dataUrl,fetch_params));let vdata=QZOutputJson.PlaylistItem.videoPlayList;vdata.forEach(function(item){d.push({title:item.title,pic_url:item.pic,desc:item.episode_number+"
\\
t
\\
t
\\
t播放量:"+item.thirdLine,url:item.playUrl})});video_lists=video_lists.concat(vdata)})}else if(video_lists.length===1){d.push({title:"在线播放",url:url})}else if(video_lists.length>1){for(let i=0;i<video_lists.length;i+=30){video_list.push(video_lists.slice(i,i+30))}video_list.forEach(function(it,idex){let o_url="https://union.video.qq.com/fcgi-bin/data?otype=json&tid=682&appid=20001238&appkey=6c03bbe9658448a4&union_platform=1&idlist="+it.join(",");let o_html=fetch(o_url,fetch_params);eval(o_html);QZOutputJson.results.forEach(function(it1){it1=it1.fields;let url="https://v.qq.com/x/cover/"+cid+"/"+it1.vid+".html";d.push({title:it1.title,pic_url:it1.pic160x90.replace("/160",""),desc:it1.video_checkup_time,url:url})})})}}vod.vod_play_from="qq";vod.vod_play_url=d.map(function(it){return it.title+"$"+it.url}).join("#");
'
,
搜索
:
'
json:uiData;data[0].title;data[0].posterPic;.titleMarkLabelList[1].primeText;data[0].id;data[0].publishDate
'
,
}
\ No newline at end of file
py/腾讯二级.js
0 → 100644
浏览文件 @
9b2ae86a
js
:
var
vod
=
{};
let
d
=
[];
let
video_list
=
[];
let
video_lists
=
[];
let
list
=
[];
let
html
=
fetch
(
input
,
fetch_params
);
// print(html);
let
sourceId
=
/get_playsource/
.
test
(
input
)?
input
.
match
(
/id=
(\d
*
?)
&/
)[
1
]:
input
.
split
(
'
cid=
'
)[
1
];
let
cid
=
sourceId
;
let
detailUrl
=
'
https://v.%71%71.com/detail/m/
'
+
cid
+
'
.html
'
;
log
(
'
详情页:
'
+
detailUrl
);
// let detail_html = fetch(detailUrl,fetch_params);
var
pdfh
=
jsp
.
pdfh
;
var
pd
=
jsp
.
pd
;
//影片信息
try
{
let
json
=
JSON
.
parse
(
html
);
vod
=
{
vod_id
:
json
.
c
.
vid
,
vod_url
:
input
,
vod_name
:
json
.
c
.
title
,
type_name
:
json
.
typ
.
join
(
'
,
'
),
vod_actor
:
json
.
nam
.
join
(
'
,
'
),
vod_year
:
json
.
c
.
year
,
// vod_director:director,
// vod_area:area,
vod_content
:
json
.
c
.
description
,
vod_remarks
:
json
.
rec
,
vod_pic
:
urljoin2
(
input
,
json
.
c
.
pic
),
};
// print(vod);
}
catch
(
e
){
log
(
'
解析片名海报等基础信息发生错误:
'
+
e
.
message
)
}
//掏直链
if
(
/get_playsource/
.
test
(
input
))
{
// print('流程1');
eval
(
html
);
let
indexList
=
QZOutputJson
.
PlaylistItem
.
indexList
;
indexList
.
forEach
(
function
(
it
)
{
let
dataUrl
=
'
https://s.video.qq.com/get_playsource?id=
'
+
sourceId
+
'
&plat=2&type=4&data_type=3&range=
'
+
it
+
'
&video_type=10&plname=qq&otype=json
'
;
eval
(
fetch
(
dataUrl
,
fetch_params
));
let
vdata
=
QZOutputJson
.
PlaylistItem
.
videoPlayList
;
vdata
.
forEach
(
function
(
item
)
{
d
.
push
({
title
:
item
.
title
,
pic_url
:
item
.
pic
,
desc
:
item
.
episode_number
+
'
\t\t\t
播放量:
'
+
item
.
thirdLine
,
url
:
item
.
playUrl
,
});
});
video_lists
=
video_lists
.
concat
(
vdata
);
});
}
else
{
let
json
=
JSON
.
parse
(
html
);
video_lists
=
json
.
c
.
video_ids
;
// print(video_lists);
let
url
=
'
https://v.qq.com/x/cover/
'
+
sourceId
+
'
.html
'
;
if
(
json
.
c
.
type
===
10
)
{
//综艺
// print('流程2-1');
let
dataUrl
=
'
https://s.video.qq.com/get_playsource?id=
'
+
json
.
c
.
column_id
+
'
&plat=2&type=2&data_type=3&video_type=8&plname=qq&otype=json
'
;
// print(dataUrl);
let
o_html
=
fetch
(
dataUrl
,
fetch_params
);
eval
(
o_html
);
video_lists
=
[];
let
indexList
=
QZOutputJson
.
PlaylistItem
.
indexList
;
indexList
.
forEach
(
function
(
it
){
let
dataUrl
=
'
https://s.video.qq.com/get_playsource?id=
'
+
json
.
c
.
column_id
+
'
&plat=2&type=4&data_type=3&range=
'
+
it
+
'
&video_type=10&plname=qq&otype=json
'
;
eval
(
fetch
(
dataUrl
,
fetch_params
));
let
vdata
=
QZOutputJson
.
PlaylistItem
.
videoPlayList
;
vdata
.
forEach
(
function
(
item
){
d
.
push
({
title
:
item
.
title
,
pic_url
:
item
.
pic
,
desc
:
item
.
episode_number
+
'
\t\t\t
播放量:
'
+
item
.
thirdLine
,
url
:
item
.
playUrl
,
});
});
video_lists
=
video_lists
.
concat
(
vdata
);
});
}
else
if
(
video_lists
.
length
===
1
)
{
//电影或者电视剧只有1集
// print('流程2-2');
d
.
push
({
title
:
'
在线播放
'
,
url
:
url
,
});
}
else
if
(
video_lists
.
length
>
1
)
{
// 电视剧 或者动漫? 电影也分普通话版和英语版
// print('流程2-3');
for
(
let
i
=
0
;
i
<
video_lists
.
length
;
i
+=
30
)
{
video_list
.
push
(
video_lists
.
slice
(
i
,
i
+
30
))
}
// print(video_list);
video_list
.
forEach
(
function
(
it
,
idex
){
let
o_url
=
'
https://union.video.qq.com/fcgi-bin/data?otype=json&tid=682&appid=20001238&appkey=6c03bbe9658448a4&union_platform=1&idlist=
'
+
it
.
join
(
'
,
'
);
let
o_html
=
fetch
(
o_url
,
fetch_params
);
eval
(
o_html
);
QZOutputJson
.
results
.
forEach
(
function
(
it1
){
it1
=
it1
.
fields
;
let
url
=
'
https://v.qq.com/x/cover/
'
+
cid
+
'
/
'
+
it1
.
vid
+
'
.html
'
;
d
.
push
({
title
:
it1
.
title
,
pic_url
:
it1
.
pic160x90
.
replace
(
'
/160
'
,
''
),
desc
:
it1
.
video_checkup_time
,
url
:
url
,
});
});
});
}
}
// print(d);
vod
.
vod_play_from
=
'
qq
'
;
vod
.
vod_play_url
=
d
.
map
(
function
(
it
){
return
it
.
title
+
'
$
'
+
it
.
url
;
}).
join
(
'
#
'
);
\ No newline at end of file
readme.md
浏览文件 @
9b2ae86a
...
...
@@ -51,6 +51,7 @@
-
[X] 2.增加了镜像合并脚本(三合一直接拉 hjdhnx/drpy 即可)
-
[X] 3.js源增加cate_exlude参数
-
[X] 4.增加腾云驾雾源(二级暂未完善,后面再说)
-
[X] 5.完善腾云驾雾源,修复直播下载乱码,修复网站强制证书验证
###### 2022/09/06
-
[X] 1.增加了后台管理界面在线检测升级系统功能
-
[X] 2.增加了后台管理界面修改直播源地址和同步直播源
...
...
utils/encode.py
浏览文件 @
9b2ae86a
...
...
@@ -7,7 +7,12 @@
import
base64
from
urllib.parse
import
urljoin
import
requests
import
requests
,
warnings
# 关闭警告
warnings
.
filterwarnings
(
"ignore"
)
from
requests.packages
import
urllib3
urllib3
.
disable_warnings
()
import
requests.utils
from
time
import
sleep
import
os
...
...
@@ -158,6 +163,7 @@ def dealObj(obj=None):
}
def
base_request
(
url
,
obj
,
method
=
None
):
# verify=False 关闭证书验证
url
=
str
(
url
).
replace
(
"'"
,
""
)
if
not
method
:
method
=
'get'
...
...
@@ -166,9 +172,9 @@ def base_request(url,obj,method=None):
try
:
# r = requests.get(url, headers=headers, params=body, timeout=timeout)
if
method
.
lower
()
==
'get'
:
r
=
requests
.
get
(
url
,
headers
=
obj
[
'headers'
],
params
=
obj
[
'body'
],
timeout
=
obj
[
'timeout'
])
r
=
requests
.
get
(
url
,
headers
=
obj
[
'headers'
],
params
=
obj
[
'body'
],
timeout
=
obj
[
'timeout'
]
,
verify
=
False
)
else
:
r
=
requests
.
post
(
url
,
headers
=
obj
[
'headers'
],
data
=
obj
[
'body'
],
timeout
=
obj
[
'timeout'
])
r
=
requests
.
post
(
url
,
headers
=
obj
[
'headers'
],
data
=
obj
[
'body'
],
timeout
=
obj
[
'timeout'
]
,
verify
=
False
)
# r = requests.get(url, timeout=timeout)
# r = requests.get(url)
# print(encoding)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录