Sync all projects

This commit is contained in:
github-actions[bot]
2026-06-29 03:41:14 +00:00
parent 529cd7c625
commit 8b025e0766
11717 changed files with 6370622 additions and 0 deletions
Binary file not shown.
+54
View File
@@ -0,0 +1,54 @@
2.
2.1. termux
2.1.1.
TERMUX -
MT
2.1.2.
MT; termux
MTtermux, MT
2.1.3.
2.1.2.1.
[1]termux
pkg upgrade
[2]git
pkg install git
2.1.2.2.
[1]drpy-node
git clone https://github.com/hjdhnx/drpy-node.git
[2]nodejs
pkg install nodejs
[3]drpy-node()
cd drpy-node
[4]npm([])
npm config set registry https://registry.npmmirror.com
[5]
npm install
[6]pm2([]pm2)
npm install pm2@latest -g
2.1.2.3.
[1]drpy-node([], )
cd drpy-node
[2]()
[2.1]
- : node index.js
- : ctrl+c
[2.2]pm2
- (id): pm2 start index.js
- id:
- id: pm2 list
- id: pm2 stop id(id)
- id: pm2 restart id(id)
- id: pm2 delete id(id, 使)
2.2.4.
[1]termux
[2]([], )
cd drpy-node
[3](使)
git pull
[4], ``
Binary file not shown.

After

Width:  |  Height:  |  Size: 877 KiB

+7
View File
@@ -0,0 +1,7 @@
#白盒tvbox
新增简化去广告rules写法:
{"name":"非凡","hosts":["vip.ffzy","hd.ffzy"],"regex":["6.666667","6.566667","2.966667","2.433333","-2.266667"]},
(正数代表移除第一次出现的切片组,负数代表最后一次出现的切片组)
#原始正则(系列通用)
{"name":"量子非凡广告","hosts":["lz","vip.lz","vip1.lz","v.cdnlz","hd.lz","ffzy","vip.ffzy","ffzy-play2","hd.ffzy"],"regex":["#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:2\\.966667,[\\s\\S]*?#EXT-X-DISCONTINUITY","#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6.666667,[\\s\\S]*?#EXT-X-DISCONTINUITY","#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6\\.667,[\\s\\S]*?#EXT-X-DISCONTINUITY","#EXT-X-DISCONTINUITY\\r*\\n*#EXTINF:6.600000,[\\s\\S]*?#EXT-X-DISCONTINUITY"]},
+9
View File
@@ -0,0 +1,9 @@
/*
参数说明:
fullText: 完整的文本内容。
leftText: 左边文本,用于定位中间内容的起始位置。
rightText: 右边文本,用于定位中间内容的结束位置。
startPos: 起始查找位置,默认为 0,表示从文本的第一个字符开始查找。
includeLeft: 是否在结果中包含左边文本,默认为 false。
includeRight: 是否在结果中包含右边文本,默认为 false。
*/
+19
View File
@@ -0,0 +1,19 @@
测试改为私仓
访问下面地址生成自己的token:
https://github.com/settings/tokens
拉取方式:
git config --global credential.helper store
git pull
登陆成功后续拉库都不需要再输入账号密码
git clone https://username:[email protected]/hjdhnx/hipy-server.git
如果是已经 clone 的到源码目录执行 git remote set-url origin https://username:[email protected]/hjdhnx/hipy-server.git
文档教程:
https://docs.github.com/zh/enterprise-cloud@latest/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
+31
View File
@@ -0,0 +1,31 @@
##★订阅链接★
通用地址订阅链接:
clan://localhost/tvbox/dr2.json
通用地址订阅链接2
clan://localhost/dr-master/dr2.json
通用仓库订阅链接:
clan://localhost/tvbox/jk/ck2.json
通用仓库订阅链接2
clan://localhost/dr-master/jk/ck2.json
OK影视&FM影视专用地址订阅链接:
file://tvbox/dr2.json
OK影视&FM影视专用地址订阅链接2:
file://dr-master/dr2.json
OK影视&FM影视专用仓库订阅链接:
file://tvbox/jk/ck2.json
OK影视&FM影视专用仓库订阅链接2:
file://dr-master/jk/ck2.json
##★本地包在线更新方式★
1、点击站源切换,选择“🔥接口更新🔥”
2、点击“↓更新本地包↓”下面的图标后会自动下载解压
3、更新完成后会有提示,手机版将自动复制好的仓库接口粘贴到“点播<请输入接口...>”,
电视版进文件夹选择文件或记下上面仓库地址手动输入
4、最后重启软件即可
+31
View File
@@ -0,0 +1,31 @@
★订阅链接★
通用地址订阅链接:
clan://localhost/tvbox/dr2.json
通用地址订阅链接2
clan://localhost/dr-master/dr2.json
通用仓库订阅链接:
clan://localhost/tvbox/jk/ck2.json
通用仓库订阅链接2
clan://localhost/dr-master/jk/ck2.json
OK影视&FM影视专用地址订阅链接:
file://tvbox/dr2.json
OK影视&FM影视专用地址订阅链接2:
file://dr-master/dr2.json
OK影视&FM影视专用仓库订阅链接:
file://tvbox/jk/ck2.json
OK影视&FM影视专用仓库订阅链接2:
file://dr-master/jk/ck2.json
★本地包在线更新方式★
1、点击站源切换,选择“🔥接口更新🔥”
2、点击“↓更新本地包↓”下面的图标后会自动下载解压
3、更新完成后会有提示,手机版将自动复制好的仓库接口粘贴到“点播<请输入接口...>”,
电视版进文件夹选择文件或记下上面仓库地址手动输入
4、最后重启软件即可
+748
View File
@@ -0,0 +1,748 @@
###
npm install uglify-js -g
uglifyjs xx.js -o xx.min.js
##webstorm
where uglifyjs :
C:\Users\dashen\AppData\Roaming\npm\uglifyjs.cmd
$FileName$ -o $FileNameWithoutExtension$.min.js
$FileDir$
###
#:
var rule = {
:'',//影视|听书|漫画|小说
title:'',//规则标题,没有实际作用,但是可以作为cms类名称依据
:'',//不填就默认utf-8
:'',//不填则不编码,默认都是按utf-8.可优先于全局编码属性.比如网页源码编码是gbk,这里可以指定utf-8搜索独立编码。多数情况这个属性不填或者填写gbk应对特殊的网站搜索
host:'',//网页的域名根,包含http头如 https://www,baidu.com
hostJs:'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src = jsp.pdfh(html,"ul&&li&&a&&href");print(src);HOST=src.replace("/index.php","")',//网页域名根动态抓取js代码。通过HOST=赋值
homeUrl:'/latest/',//网站的首页链接,可以是完整路径或者相对路径,用于分类获取和推荐获取 fyclass是分类标签 fypage是页数
url:'/fyclass/fypage.html[/fyclass/]',//网站的分类页面链接
detailUrl:'https://yanetflix.com/voddetail/fyid.html',//非必填,二级详情拼接链接,感觉没啥卵用
searchUrl:'',//搜索链接 可以是完整路径或者相对路径,用于分类获取和推荐获取 **代表搜索词 fypage代表页数
searchable:0,//是否启用全局搜索,
quickSearch:0,//是否启用快速搜索,
filterable:0,//是否启用筛选,
filter:{},// 筛选条件字典
// 默认筛选条件字典(不同分类可以指定同样筛选参数的不同默认值)
filter_def:{
douyu:{
area:'',
other:'..'
},
huya:{
area:'',
other:'..'
}
},
// 筛选网站传参,会自动传到分类链接下(本示例中的url参数)-url里参数为fyfilter,可参考蓝莓影视.js
filter_url:'style={{fl.style}}&zone={{fl.zone}}&year={{fl.year}}&fee={{fl.fee}}&order={{fl.order}}',
// 注意,由于猫有配置缓存,搜索配置没法热加载,修改了js不需要重启服务器
// 但是需要tv_box进设置里换源使配置重新装载
headers:{//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent':'MOBILE_UA',
"Cookie": "searchneed=ok"
},
timeout:5000,//网站的全局请求超时,默认是3000毫秒
class_name:'&&&',//静态分类名称拼接
class_url:'1&2&3&4',//静态分类标识拼接
//动态分类获取 列表;标题;链接;正则提取 不需要正则的时候后面别加分号
class_parse:'#side-menu:lt(1) li;a&&Text;a&&href;com/(.*?)/',
// 除开全局过滤之外还需要过滤哪些标题不视为分类
cate_exclude:'',
// 除开全局动态线路名过滤之外还需要过滤哪些线路名标题不视为线路
tab_exclude:'',
//移除某个线路及相关的选集|js1
tab_remove:['tkm3u8'],
//线路顺序,按里面的顺序优先,没写的依次排后面|js1
tab_order:['lzm3u8','wjm3u8','1080zyk','zuidam3u8','snm3u8'],
//线路名替换如:lzm3u8替换为量子资源|js1
tab_rename:{'lzm3u8':'','1080zyk':'1080','zuidam3u8':'','kuaikan':'',
'bfzym3u8':'','ffm3u8':'','snm3u8':'','tpm3u8':'','tkm3u8':'',},
// 服务器解析播放
play_parse:true,
// play_json 传数组或者 类 true/false 比如 0,1 如果不传会内部默认处理 不传和传0可能效果不同
// 效果等同说明: play_json:[{re:'*', json:{jx:0, parse:1}}], 等同于 play_json:0,
play_json:[{
re:'*',
json:{
jx:1,
parse:1,
},
}],
//控制不同分类栏目下的总页面,不填就是默认999.哔哩影视大部分分类无法翻页,都需要指定页数为 1
pagecount:{"1":1,"2":1,"3":1,"4":1,"5":1,"7":1,"时间表":1},
// 自定义免嗅
lazy:'',
// 首页推荐显示数量
limit:6,
double:true,//是否双层列表定位,默认false
// 对图片加了referer验证的有效,海阔专用,普通规则请勿填写此键值
:'@Referer=http://www.jianpianapp.com@User-Agent=jianpian-version350',
// 替换所有图片链接 欲替换文本=>替换为文本
:'https://www.keke6.app/=>https://vres.a357899.cn/',
// js写法,仅js模式1有效.可以用于代码动态获取全局cookie之类的
// 可操作变量有 rule_fetch_params,rule,以及基础的网页访问request,post等操作
:'rule_fetch_params.headers.Cookie = "xxxx";',
// 类似海阔一级 列表;标题;图片;描述;链接;详情 其中最后一个参数选填
// 如果是双层定位的话,推荐的第2段分号代码也是第2层定位列表代码
:'.col-sm-6;h3&&Text;img&&data-src;.date&&Text;a&&href',
// 类似海阔一级 列表;标题;图片;描述;链接;详情 其中最后一个参数选填
:'.col-sm-6;h3&&Text;img&&data-src;.date&&Text;a&&href',
//二级发起访问前进行js处理。解决特殊情况一级给出的链接非二级真实源码而是前端重定向链接的源码
访:'log(MY_URL);let jump=request(MY_URL).match(/href="(.*?)"/)[1];log(jump);MY_URL=urljoin2(MY_URL,jump)',
// 二级可以是*,表示规则无二级,直接拿一级的链接进行嗅探
// 二级 title: 片名;类型
// 二级 desc: 主要信息;年代;地区;演员;导演
// 或者 {title:'',img:'',desc:'',content:'',tabs:'',lists:'',tab_text:'body&&Text',list_text:'body&&Text',list_url:'a&&href'} 同海阔dr二级
:'*',
// 搜索可以是*,集成一级,或者跟一级一样的写法 列表;标题;图片;描述;链接;详情
:'*',
// 本地代理规则,可用于修改m3u8文件文本去广告后返回代理文件地址,也可以代理加密图片
proxy_rule:`js:
log(input);
input = [200,'text;plain','hello drpy']
`,
//是否启用辅助嗅探: 1,0
sniffer:1,
// 辅助嗅探规则
isVideo:"http((?!http).){26,}\\.(m3u8|mp4|flv|avi|mkv|wmv|mpg|mpeg|mov|ts|3gp|rm|rmvb|asf|m4a|mp3|wma)",
// 辅助嗅探规则js写法
isVideo:`js:
log(input);
if(/m3u8/.test(input)){
input = true
}else{
input = false
}
`,
}
##:
var rule = Object.assign(muban.mxpro,{
title:'',
host:'https://yanetflix.com',
url:'/index.php/vod/show/id/fyclass/page/fypage.html',
class_parse:`.navbar-items li:gt(1):lt(6);a&&Text;a&&href;.*/(.*?).html`,
});
##():
var rule = {
title:'cokemv',
:'mxpro',
host:'https://cokemv.me',
class_parse:`.navbar-items li:gt(1):lt(7);a&&Text;a&&href;/(\\d+).html`,
}
##()
#:HOSTcms,12api
var rule = {
: '',
: $js.toString(() => {
Object.assign(muban.., {
tab_text: 'div--small&&Text',
});
}),
title: '[]',
host: 'https://www.jqqzx.cc/',
url: '/vodshow/id/fyclass/page/fypage.html',
searchUrl: '/vodsearch**/page/fypage.html',
class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;.*/(.*?)\.html',
cate_exclude: '|',
}
##:
class_parse;[3]
js/.*/,
/(\d+)/ (\\d+)
new RegExp('(\\d+)') = /(\d+)/
js:$js.toString(()=>{}),
,``
\
##js:
input,html,VODS,VOD,TABS,LISTS,MY_CATE,MY_FL
getProxyUrl( /proxy?do=js)
##:
proxy_ruleinput[status,content-type,data]
: [200,'text/plain','hello drpy']
input = [200,'application/vnd.apple.mpegurl',m3u8]
##rsa:
RSA.encode(data, key, option);
RSA.decode(data, key, option);
### :
drpytvbox,()
,zyplayer
202464drpy
: :'',//影视|听书|漫画|小说
lazyurl pics:// 协议,用法同海阔。参考源【第一韩漫】
lazyurl novel:// 协议,内容为json文本。如 novel://{"title":"章节名称","content":"章节内容"}
##
###2024.11.4
drpy
##广
proxy_rule: `js:
let url = input.url;
let m3u8 = fixAdM3u8Ai(url);
input = [200,'application/vnd.apple.mpegurl',m3u8]
`
##:
###1.
{https://dm84.top/show-1--hits-奇幻--2024-2.html
https://dm84.top/show-fyclass--fyfilter-fypage.html}
'hits---2024'='{{fl.by}}-{{fl.class}}--{{fl.year}}'='fyfilter'
###2.
{
title:'',
:'mxpro',
host:'https://www.kkw1200.com',
// url:'/vodshow/fyclass--------fypage---.html',//不带筛选的url写法
url:'/vodshow/fyfilter.html',//带筛选的url写法
filterable:1,//是否启用分类筛选,
filter_url:'{{fl.cateId}}-{{fl.area}}-{{fl.by}}-{{fl.class}}-{{fl.lang}}-{{fl.letter}}---fypage---{{fl.year}}',
//filter_url:'{{fl.类型}}-{{fl.地区}}-{{fl.排序}}-{{fl.剧情}}-{{fl.语言}}-{{fl.字母}}---fypage---{{fl.年份}}',//filter_url第二种写法,对应地filter里的key也要写成中文
//filter_url截取链接:https://www.kkw1200.com/vodshow/8-大陆-hits-喜剧-国语-A---2---2022.html
filter: {
"1":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"1"},{"n":"动作片","v":"6"},{"n":"喜剧片","v":"7"},{"n":"爱情片","v":"8"},{"n":"科幻片","v":"9"},{"n":"恐怖片","v":"10"},{"n":"战争片","v":"11"},{"n":"剧情片","v":"12"},{"n":"动画片","v":"34"},{"n":"歌舞片","v":"20"},{"n":"历史片","v":"21"},{"n":"谍战片","v":"22"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"喜剧","v":"喜剧"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"动作","v":"动作"},{"n":"科幻","v":"科幻"},{"n":"剧情","v":"剧情"},{"n":"战争","v":"战争"},{"n":"警匪","v":"警匪"},{"n":"犯罪","v":"犯罪"},{"n":"动画","v":"动画"},{"n":"奇幻","v":"奇幻"},{"n":"武侠","v":"武侠"},{"n":"冒险","v":"冒险"},{"n":"枪战","v":"枪战"},{"n":"恐怖","v":"恐怖"},{"n":"悬疑","v":"悬疑"},{"n":"惊悚","v":"惊悚"},{"n":"经典","v":"经典"},{"n":"青春","v":"青春"},{"n":"文艺","v":"文艺"},{"n":"微电影","v":"微电影"},{"n":"古装","v":"古装"},{"n":"历史","v":"历史"},{"n":"运动","v":"运动"},{"n":"农村","v":"农村"},{"n":"儿童","v":"儿童"},{"n":"网络电影","v":"网络电影"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"大陆"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"美国","v":"美国"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"德国","v":"德国"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"意大利","v":"意大利"},{"n":"西班牙","v":"西班牙"},{"n":"加拿大","v":"加拿大"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"法语","v":"法语"},{"n":"德语","v":"德语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"2":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"2"},{"n":"国产剧","v":"13"},{"n":"香港剧","v":"14"},{"n":"欧美剧","v":"15"},{"n":"日本剧","v":"16"},{"n":"海外剧","v":"23"},{"n":"台湾剧","v":"24"},{"n":"韩国剧","v":"25"},{"n":"泰国剧","v":"26"},{"n":"灾难片","v":"27"},{"n":"奇幻片","v":"28"},{"n":"冒险片","v":"29"},{"n":"犯罪片","v":"30"},{"n":"惊悚片","v":"31"},{"n":"传记片","v":"32"},{"n":"悬疑片","v":"33"}]},{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"古装","v":"古装"},{"n":"战争","v":"战争"},{"n":"青春偶像","v":"青春偶像"},{"n":"喜剧","v":"喜剧"},{"n":"家庭","v":"家庭"},{"n":"犯罪","v":"犯罪"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"经典","v":"经典"},{"n":"乡村","v":"乡村"},{"n":"情景","v":"情景"},{"n":"商战","v":"商战"},{"n":"网剧","v":"网剧"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"韩国","v":"韩国"},{"n":"香港","v":"香港"},{"n":"台湾","v":"台湾"},{"n":"日本","v":"日本"},{"n":"美国","v":"美国"},{"n":"泰国","v":"泰国"},{"n":"英国","v":"英国"},{"n":"新加坡","v":"新加坡"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"3":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"选秀","v":"选秀"},{"n":"情感","v":"情感"},{"n":"访谈","v":"访谈"},{"n":"播报","v":"播报"},{"n":"旅游","v":"旅游"},{"n":"音乐","v":"音乐"},{"n":"美食","v":"美食"},{"n":"纪实","v":"纪实"},{"n":"曲艺","v":"曲艺"},{"n":"生活","v":"生活"},{"n":"游戏互动","v":"游戏互动"},{"n":"财经","v":"财经"},{"n":"求职","v":"求职"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"内地","v":"内地"},{"n":"港台","v":"港台"},{"n":"日韩","v":"日韩"},{"n":"欧美","v":"欧美"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"4":[{"key":"class","name":"剧情","value":[{"n":"全部","v":""},{"n":"情感","v":"情感"},{"n":"科幻","v":"科幻"},{"n":"热血","v":"热血"},{"n":"推理","v":"推理"},{"n":"搞笑","v":"搞笑"},{"n":"冒险","v":"冒险"},{"n":"萝莉","v":"萝莉"},{"n":"校园","v":"校园"},{"n":"动作","v":"动作"},{"n":"机战","v":"机战"},{"n":"运动","v":"运动"},{"n":"战争","v":"战争"},{"n":"少年","v":"少年"},{"n":"少女","v":"少女"},{"n":"社会","v":"社会"},{"n":"原创","v":"原创"},{"n":"亲子","v":"亲子"},{"n":"益智","v":"益智"},{"n":"励志","v":"励志"},{"n":"其他","v":"其他"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"国产","v":"国产"},{"n":"日本","v":"日本"},{"n":"欧美","v":"欧美"},{"n":"其他","v":"其他"}]},{"key":"lang","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"英语","v":"英语"},{"n":"粤语","v":"粤语"},{"n":"闽南语","v":"闽南语"},{"n":"韩语","v":"韩语"},{"n":"日语","v":"日语"},{"n":"其它","v":"其它"}]},{"key":"year","name":"年份","value":[{"n":"全部","v":""},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"2019","v":"2019"},{"n":"2018","v":"2018"},{"n":"2017","v":"2017"},{"n":"2016","v":"2016"},{"n":"2015","v":"2015"},{"n":"2014","v":"2014"},{"n":"2013","v":"2013"},{"n":"2012","v":"2012"},{"n":"2011","v":"2011"},{"n":"2010","v":"2010"},{"n":"2009","v":"2009"},{"n":"2008","v":"2008"},{"n":"2007","v":"2007"},{"n":"2006","v":"2006"},{"n":"2005","v":"2005"},{"n":"2004","v":"2004"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
"5":[{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
},
filter_def:{
1:{cateId:'1'},
2:{cateId:'2'},
3:{cateId:'3'},
4:{cateId:'4'},
5:{cateId:'5'}
},
###
1
function verifyLogin(url) {
let cnt = 0;
let cookie = '';
let r = Math.random();
let yzm_url = getHome(url) + '/index.php/verify/index.html';
log(`:${yzm_url}`);
let submit_url = getHome(url) + '/index.php/ajax/verify_check';
log(`post:${submit_url}`);
while (cnt < OCR_RETRY) {
try {
let {cookie, html} = reqCookie(yzm_url + '?r=' + r, {toBase64: true});
let code = OcrApi.classification(html);
log(`${cnt + 1}:${code}`);
html = post(submit_url, {
headers: {Cookie: cookie},
body: 'type=show&verify=' + code,
});
html = JSON.parse(html);
if (html.code === 1) {
log(`${cnt + 1}`);
log(cookie);
return cookie // 需要返回cookie
} else if (html.code !== 1 && cnt + 1 >= OCR_RETRY) {
cookie = ''; // 需要清空返回cookie
}
} catch (e) {
log(`${cnt + 1}:${e.message}`);
if (cnt + 1 >= OCR_RETRY) {
cookie = '';
}
}
cnt += 1
}
return cookie
}
globalThis.verifyLogin = verifyLogin;
2
###:
1:
lazy: $js.toString(() => {
let html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
let url = html.url;
if (html.encrypt == '1') {
url = unescape(url)
} else if (html.encrypt == '2') {
url = unescape(base64Decode(url))
}
if (/\.m3u8|\.mp4/.test(url)) {
input = {
jx: 0,
url: url,
parse: 0
}
} else {
input
};
const video = document.getElementById('myVideo');
video.addEventListener('canplay', function () {
video.currentTime = 10;
});
}),
2:
lazy : `js:
if(/\\.(m3u8|mp4)/.test(input)){
input = {parse:0,url:input}
}else{
if(rule.parse_url.startsWith('json:')){
let purl = rule.parse_url.replace('json:','')+input;
let html = request(purl);
input = {parse:0,url:JSON.parse(html).url}
}else{
input= rule.parse_url+input;
}
`,
3:
lazy: $js.toString(() => {
input = jxx(input);
}),
4
lazy: $js.toString(() => {
let ep = 1;
let match = input.match(/ep=(.*?)$/);
if (match) {
ep = match[1];
}
//log(ep)
let html = request(input);
let jsonA = jsp.pdfh(html, "#__NEXT_DATA__&&Html");
let data = JSON.parse(jsonA).props.pageProps.videoDetail.videoepisode.data;
//log(data)
let item = data.find(function(it) {
return it.episode == ep;
});
let realUrl = item ? item.url : (data.length > 0 ? data[0].url : undefined);
//log(realUrl)
input = {
url: realUrl,
parse: 0
};
}),
5
lazy: $js.toString(() => {
let html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
let url = html.url;
if (html.encrypt == '1') {
url = unescape(url)
} else if (html.encrypt == '2') {
url = unescape(base64Decode(url))
}
if (/\.m3u8|\.mp4/.test(url)) {
input = {
jx: 0,
url: url,
parse: 0
}
} else {
input
}
}),
###&&&:
1
: $js.toString(() => {
let bdata = vodlist(0, 1);
console.log(bdata);
bdata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
: $js.toString(() => {
let bdata = vodlist(input, MY_PAGE);
console.log(bdata);
bdata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
: $js.toString(() => {
console.log("调试信息2" + input);
let data = vodids(input);
//console.log(data);
VOD = (data);
}),
: $js.toString(() => {
let ddata = seach(input);
ddata.forEach(it => {
d.push({
url: it.vod_id,
title: it.vod_name,
img: it.vod_pic,
desc: it.vod_remarks
});
});
setResult(d);
}),
2:
:'.ewave-vodlist&&li;.lazyload&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
: $js.toString(() => {
let cookie = getItem(RULE_CK, '');
//log('储存的cookie:' + cookie);
let ret = request(MY_URL, {
headers: {
Referer: encodeUrl(MY_URL),
Cookie: cookie,
}
});
if (//.test(ret)) {
//log(ret);
cookie = verifyLogin(MY_URL);
if (cookie) {
log(`,cookie:${cookie}`);
setItem(RULE_CK, cookie);
} else {
log(`,cookie:${cookie}`);
}
ret = request(MY_URL, {
headers: {
Referer: encodeUrl(MY_URL),
Cookie: cookie,
}
});
}
//log(ret);
let d = [];
let p = rule..split(';');
let arr = pdfa(ret, p[0]);//列表
arr.forEach(it => {
d.push({
title: pdfh(it, p[1]),//标题
pic_url: pdfh(it, p[2]),//图片
desc: pdfh(it, p[3]),//描述
url: pdfh(it, p[4]),//链接
});
});
setResult(d);
}),
********
: `js:
let cookie = getItem(RULE_CK,'');
// let cookie = '';
log('cookie:'+cookie);
let hhtml=request(input,{withHeaders:true,headers:{Cookie:cookie}});
let json = JSON.parse(hhtml);
let html = json.body;
let setCk = Object.keys(json).find(it=>it.toLowerCase()==='set-cookie');
cookie = setCk ? json[setCk] : cookie;
// 3个set-Cookie
if (Array.isArray(cookie)) {
cookie = cookie.join(';');
}
cookie = cookie.split(';')[0];
log('set-cookie:'+cookie);
let code='';
if(/erphp-search-captcha/.test(html)){
code = jsp.pdfh(html,'.erphp-search-captcha--button&&Text');
if(code.includes('=')){
let a = code.replace('=','').replace(/ /g,'');
code = eval(a);
log(':'+a+' :'+code);
}
let key = jsp.pdfh(html,'.erphp-search-captcha&&input&&name');
let body = key+'='+code;
post(input,{body:body,headers:{Cookie:cookie}});
setItem(RULE_CK,cookie);
html = getHtml(input);
}
// log(html);
VODS = [];
let lis=pdfa(html,'.search_list&&ul&&li');
log(lis.length);
lis.forEach(function(it){
VODS.push({
vod_id: pd(it,'a&&href',input),
vod_name: pdfh(it,'h3.dytit&&Text'),
vod_pic: pd(it,'img.lazy&&data-original',input),
vod_remarks: pdfh(html,'.jidi&&Text')
});
});
`,
3
: 'json:list;vod_name;vod_pic;vod_remarks;vod_id',
: `js:
let kdata = JSON.parse(request(input)).data;
VOD = kdata;
VOD.type_name = kdata.vod_class
`,
: 'json:list;name;pic;;id',
4
: $js.toString(() => {
let html = post(input.split('?')[0], {body: input.split('?')[1]});
let items = pdfa(html, 'rss&&item');
// log(items);
let d = [];
items.forEach(it => {
it = it.replace(/title|link|author|pubdate|description/g, 'p');
let url = pdfh(it, 'p:eq(1)&&Text');
d.push({
title: pdfh(it, 'p&&Text'),
url: url,
desc: pdfh(it, 'p:eq(3)&&Text'),
content: pdfh(it, 'p:eq(2)&&Text'),
pic_url: "",
});
});
setResult(d);
}),
5
: $js.toString(() => {
let html = fetch(input);
let j = pdfh(html, "#__NEXT_DATA__&&Html");
let json = JSON.parse(j);
let list = json.props.pageProps;
//let list = json.props.pageProps.recommendSectionData.list;
list = JP.JSONPath("$.['columnSectionData'][*]['popular_list']['video_info'][*]", list);
//log(JSON.stringify(list,null,2));
//log(list)
VODS = list.map(function(it) {
it.vod_pic = it.cover;
it.vod_remarks = it.tag;
it.vod_name = it.name;
it.vod_id = HOST + "/detail/" + it.id;
return it
});
}),
: $js.toString(() => {
let html = fetch(input);
let j = pdfh(html, "#__NEXT_DATA__&&Html");
let json = JSON.parse(j);
let list = json.props.pageProps.mediaData.data;
//log(list)
VODS = list.map(function(it) {
it.vod_pic = it.cover;
it.vod_remarks = it.tag;
it.vod_name = it.name;
it.vod_id = HOST + "/detail/" + it.id;
return it
});
}),
: {
"title": "h1&&Text",
"img": "img&&src",
"desc": "video-desc-item&&Text;.video-desc-type-mb&&Text",
"content": ".video-introduce&&p&&Text",
"tabs": ".btn-play",
lists: $js.toString(() => {
LISTS = [];
let j = pdfh(html, "#__NEXT_DATA__&&Html");
let list = pdfa(html, ".play-list&&a");
if (list.length == 0) {
LISTS.push(["1$" + MY_URL.replace("detail", "player")])
} else {
list = list.map(it => pdfh(it, 'Text') + "$" + HOST + pdfh(it, 'a&&href'));
LISTS.push(list)
}
//log(LISTS)
}),
},
: $js.toString(() => {
let html = fetch(input);
let j = pdfh(html, "#__NEXT_DATA__&&Html");
let json = JSON.parse(j);
let list = json.props.pageProps.searchMovieList.data;
//log(list)
VODS = list.map(function(it) {
it.vod_pic = it.pic;
it.vod_remarks = it.resolution;
it.vod_name = it.name;
it.vod_id = HOST + "/detail/" + it.id;
return it
});
}),
6
:`js:
var d = [];
pdfh = jsp.pdfh;
pdfa = jsp.pdfa;
pd = jsp.pd;
var html = request(input, {
withHeaders: true
});
let json = JSON.parse(html);
let setCk = Object.keys(json).find(it => it.toLowerCase() === "set-cookie");
let cookie = setCk ? json[setCk].split(";")[0] : "";
fetch_params.headers.Cookie = cookie;
html = JSON.parse(html).body;
if (//.test(html)) {
html = request(input + "?btwaf" + html.match(/btwaf(.*?)\"/)[1], fetch_params)
}
let list = pdfa(html, "ul.stui-vodlist&&li");
list.forEach(it => {
d.push({
title: pdfh(it, "a&&title"),
desc: pdfh(it, ".pic-text&&Text"),
pic_url: pd(it, ".lazyload&&data-original"),
url: pd(it, "a&&href")
})
});
setResult(d)
`,
二级:`js:
pdfh = jsp.pdfh;
pdfa = jsp.pdfa;
pd = jsp.pd;
VOD = {};
var html = request(input, {
withHeaders: true
});
let json = JSON.parse(html);
let setCk = Object.keys(json).find((it) => it.toLowerCase() === "set-cookie");
let cookie = setCk ? json[setCk].split(";")[0] : "";
fetch_params.headers.Cookie = cookie;
html = JSON.parse(html).body;
if (/检测中/.test(html)) {
html = request(input + "?btwaf" + html.match(/btwaf(.*?)\"/)[1], fetch_params)
}
VOD.vod_name = pdfh(html, ".stui-content__detail&&h1--span&&Text");
VOD.type_name = pdfh(html, ".data--span:eq(0)&&Text");
VOD.vod_pic = pd(html, ".stui-content__thumb&&img&&data-original");
VOD.vod_remarks = pdfh(html, ".stui-content__thumb&&pic-text&&Text");
VOD.vod_actor = pdfh(html, ".data--span:eq(1)&&Text");
VOD.vod_director = pdfh(html, ".data--span:eq(2)&&Text");
VOD.vod_content = pdfh(html, ".desc.hidden-xs--a&&Text");
let playFrom = [];
let vod_tab_list = [];
let tabs = pdfa(html, "body .stui-pannel__head.bottom-line");
tabs.forEach((it) => {
playFrom.push(pdfh(it, "h3&&Text"))
});
for (let i = 0; i < playFrom.length; i++) {
let p1 = ".stui-content__playlist:eq(#id)&&li".replaceAll("#id", i);
let new_vod_list = [];
let vodList = [];
try {
vodList = pdfa(html, p1)
} catch (e) {}
for (let i = 0; i < vodList.length; i++) {
let it = vodList[i];
new_vod_list.push(pdfh(it, "body&&Text").trim() + "$" + pd(it, "a&&href"))
}
let vlist = new_vod_list.join("#");
vod_tab_list.push(vlist)
}
VOD.vod_play_from = playFrom.join("$$$");
VOD.vod_play_url = vod_tab_list.join("$$$");
`,
搜索:`js:
var d = [];
pdfh = jsp.pdfh;
pdfa = jsp.pdfa;
pd = jsp.pd;
var html = request(input, {
withHeaders: true
});
let json = JSON.parse(html);
let setCk = Object.keys(json).find(it => it.toLowerCase() === "set-cookie");
let cookie = setCk ? json[setCk].split(";")[0] : "";
fetch_params.headers.Cookie = cookie;
html = JSON.parse(html).body;
if (/检测中/.test(html)) {
html = request(input + "?btwaf" + html.match(/btwaf(.*?)\"/)[1], fetch_params)
}
let list = pdfa(html, ".stui-vodlist__media&&li");
list.forEach(it => {
d.push({
title: pdfh(it, "a&&title"),
desc: pdfh(it, ".pic-text&&Text"),
pic_url: pd(it, ".lazyload&&data-original"),
url: pd(it, "a&&href")
})
});
setResult(d)
`,
示例7
推荐/一级/搜索: $js.toString(() => {
let html = fetch(input);
let list = pdfa(html, ".public-list-box");
VODS = list.map(x => {
return {
vod_name: pdfh(x, ".thumb-txt&&Text"),
vod_pic: pdfh(x, ".lazy&&data-src"),
vod_remarks: pdfh(x, ".public-list-prb&&Text"),
vod_content: pdfh(x, ".thumb-blurb&&Text"),
vod_id: pdfh(x, "a&&href")
}
});
}),
###zyfun(zy'')
var rule = {
: $js.toString(() => {
let url = 'https://blog.ilol.top/p/zqgwes.html';
let html = request(url);
let tlist = pdfa(html, '.post-content&&h2');
log(tlist)
let alist = pdfa(html, '.post-content&&a:gt(0)');
log(alist);
VODS = [];
for (let i in tlist) {
VODS.push({
name: pdfh(tlist[i], 'Text'),
url: pdfh(alist[i], 'a&&href'),
})
}
log(JSON.stringify(VODS))
})
}
###
filter:`
let value = [];
$('ul').eq(2).find('li').each(function() {
// console.log($(this).text());
let n = $(this).text().trim();
value.push({
'n': n, 'v': n
});
});
// 电影执行:
let data = {'movie': [{'key': 'tag', 'name': '', 'value': value}]};
console.log(JSON.stringify(data));
//剧集执行:
let data = {'tv': [{'key': 'tag', 'name': '', 'value': value}]};
console.log(JSON.stringify(data));
`,
+84
View File
@@ -0,0 +1,84 @@
●多jar链接写法,根据app版本来:
Pluto Player版本:
{"key":"","name":"","api":"","type":3,"filterable":1,"quickSearch":1,"searchable":1,"plugin":"http:///.jar"},
这个:
{"key":"","name":"","type":3,"api":"","searchable":1,"quickSearch":1,"filterable":1,"spider":"http:///.jar"},
俊佬版本多jar链接写法:
{"key":"","name":"","type":3,"api":"***","searchable":1,"quickSearch":1,"filterable":1,"jar":"your_other_jar"},
●json内资源格式参数介绍
{"key":"key_〔资源名称〕",
"name":"资源名称",
"type":0,
"api":"csp_jar内文件名称〕",
"searchable":1,
"quickSearch":1,
"filterable":0,
"jar":"jar文件地址〕",
"ext":"txt json文件地址〕",
"playUrl": "〔播放解析地址〕",
"click": "ddys.tv;#vjsp > button"
"categories":["〔自定义资源列表〕",
"〔自定义资源列表〕"] }
●jar包缝合教程:
☆暴力缝合,非代码修改。
①准备工作:MT管理器或者NP管理器,B包要用的包,A包要导出的包。
②开始:A包中merge重命名,展开重命名的merge,选中需要导出的文件,导出。打开B包,导入刚才导出的重命名的merge文件,保存退出。B包就是缝合好的包。
③多试几次,关键是找个好用的MT或者NP。不是你不会,是因为你的MT或着NP没那个功能。
●api解释:
csp_XPath 普通套娃
csp_XPathMac 直链套娃
csp_XPathFilter 普通套娃带筛选
csp_XPathMacFilter 直链套娃带筛选
csp_XPathEgg 蛋蛋赞自定义套娃
套娃依赖自定义爬虫jar,同样需要在自定义json中加入相应的配置,type=3, api为csp_XPath,套娃相关规则配置在ext字段中,注意:ext字段值只能是字符串
为控制配置文件容量,同时支持在ext字段中直接配置规则和拉取规则的网址。 2021.10.21 by 小黄瓜
接口指定播放器写法示例:
{
"key": "csp_key",
"name": "api(SP)",
"type": 3,
"api": "csp_api",
"playerType": 1, // 新增字段,用来为该爬虫指定播放器 0:system, 1:ijk, 2:exo, 10:mx11:Reex,12:Kodi.默认-1为配置页面设置的播放器(app/src/main/java/com/github/tvbox/osc/util/PlayerHelper.java...161行)
"searchable": 1,
"quickSearch": 1,
"filterable": 1
},
exo会清晰点。exo不能播阿里系,小苹果。
+267
View File
@@ -0,0 +1,267 @@
🐝🐝🐝🐝🐝🐝🐝🐝🐝🐝🐝
蜂蜜的影视APP功能与操作说明
# 通用(特殊)功能
* 版本号 点按正式版更新 长按内测版更新
* 单条点播站源或直播列表配置可指定播放器
   (添加"playerType": 0,1,2   0:系统播放器 1: IJK   2: EXO 不写则默认跟随接口设定)
* 本地接口兼容TVB接口协议 自动转 file:// 协议
   (clan://localhost/  和   clan://)
* 本地接口配置可浏览模式直接选中接口文件
* 支持多线路接口识别
   (请参考仓库范例)
* EXO 支持带验证的地址
* 支持油管直播点播解析
   (网址要包含www.youtube.com才会解
    大陆地区需要翻墙)
* 支持缓存清理
* 支持DOH
  (即dns服务 可接口写入)
* EXO: 隧道模式 连线方式 ua模式
   ( APP设置 播放器切换到EXO
     然后长按即可弹窗
     隧道模式即原音原画直通输出模式
     必须使用 SurfaceView 需要高级设备支持
    一般不需打开此功能)
* IJK:ua模式
   (类同EXO操作)
* 自动切换播放器
* 支持荐片协议地址(jianpian://)
# 点播功能
* 支持投屏
   (手机端投>TV端&接口一同投送和支持DLNA接收的设备)
* 内置聚合解析
* 支持语音搜索
* 支持 HTTP/3&smb 协议
* 支持略过广告切片/支持rules规则
   (20230518内测版起壳不再自动略过广告
     需写切片广告规则到接口配置食用
     注意:此规则配置暂不能兼容TVB等APP)
* 支持邻近装置互动
* 轨道切换自动记忆
* 片头片尾快捷标记与微调(手机端无微调)
   (TV端方向上键+OK.以影片时间一半前后
    为标准设定片头/片尾 对焦后上下键微调)
* 刷新、重播一键切换
   (TV端独有 长按切换 点按实现当前功能
    手机端详情页下拉刷新)
* TV端支持分类刷新
   (焦点分类上键刷新 老版本 长按刷新)
* 自动换线路,换站源
   (可配置设定关闭换源 添加"switchable": 0
    配置载入过久可返回也可APP设定关闭)
* 收藏的影片可自动切换至该接口
* 采用最新MD3和影魔IJK播放器支持软硬解
* 支援调用idm+下载影片
   (手机版独有功能 详细页播放器窗口分享按钮 >选择idm+即可下载)
* 全屏状态下支持选集播放
   (手机版详情页选集后面的"更多"按钮也可选择更多的片集)
* 支持单集播放循环
   (需播放器菜单栏开启)
* 支持列表模式显示
   (alist one等网盘和本地视频体验最佳)
* 配置载入过久可返回
* 搜索支持文件夹格式
* 支持同步收藏和观看纪录
  (20230606版起覆盖同步 请无视下面规则)
  (需手机和电视更新到最新版 )
  同步规则(接口配置一同同步):
   1. 双向同步
       (手机 <—> 电视
        手机 <—> 手机
        电视 <XX>电视)
   2. 同一部片新的盖掉旧的
       (比如手机昨天放第二集
         今天电视播放第一集
         那么同步同为第一集)
   3. 不存在则新增纪录同步规则
* 支持手动换源
   (手机版详情页长按片名复现)
* 支持假熄屏
   (手机版独有:画中画模式可熄屏播放)
* 支持jspy本地代理
* js 支持外挂 jar
* 支持【猫影视】js 格式
* TV端支持站点观看记录无痕设置
(设置 >小房子)
* TV端站点支持多列显排设置
(同上操作)
* 搜索支持翻页
(选择支持多页搜索的站源一目了然)
* 支持站点无痕播放
(接口站点配置可添加"recordable":0参数复现 也可APP设定)
* 无播放记录时支持(线路)手动播放
(设置栏播放器长按设置)
* 播放音频支持显示广播封面
* 支持多视图模式
(站点添加"viewType": 0-5)
0:默认,1:放大,2:圆形,
3:海报,4:横向单列中图带片名,
5:横向单列小图带片名
(当图片无法加载时其他模式也显示该模式)
# 直播功能
* 带密码分组隐藏
   (狂点收藏5次弹框输入密码后才能显示分组
    电视端1.7.8版起 配置添加"pass" : true
    可以直接显示密码分类
    已收藏的密码分类的频道也可显示食用)
* 支持多条直播源列表(俗称直播接口)
* 配置支持常规txt m3u格式和影视独有的jso途同归n格式直播列表
   (即配置"type": 0和1的区别)
* 配置可设定 EPG 地址
   (节目信息和logo)
* 配置可设定启动 App 进入直播
   (添加 "boot": true)
* 支持 p2p~p9p、mitv、zlive、tvbus 等特殊协议
   (64位APP不支持)
* 配置支持header/ua/referer
   (个别源需要添加此项一种或多钟方可正常播放)
# 推送功能
* 内置直链推送服务
  (无接口配置直链也可推送播放)
* 手机版支持粘贴板识别
  (也可自行选择粘贴板)
* 手机版支持本地视频播放
* 支持推送 迅雷全家桶链接和http种子
瞎操作说明:
解密链接☞ ?url=
加密链接(仅支持非图床和非pk密码接口)
?jm=1&url=
格式如下:(多个格式链接 任选一)
m=0 ☞ 图床(默认可不填)
img=图片链接(默认可不填 下同)
?jm=1&url=配置链接&m=0&img=图片链接
?jm=1&url=配置链接&img=图片链接
?jm=1&url=配置链接&m=0
?jm=1&url=配置链接
m=1 ☞ pk密码模式 接口格式 地址;pk;密码
秘钥字串位数不能大于16 (下同)
?jm=1&url=配置链接&m=1&key=秘钥
m=2 ☞ 转2423
偏移量字串位数不能大于13 (默认可不填 下同)
?jm=1&url=配置链接&m=2&key=秘钥&iv=偏移量
?jm=1&url=配置链接&m=2&key=秘钥
m=3 ☞ 转2423➕图床
?jm=1&url=配置链接&m=3&key=秘钥&iv=偏移量&img=图片链接
?jm=1&url=配置链接&m=3&key=秘钥&iv=偏移量
?jm=1&url=配置链接&m=3&key=秘钥
接口合併链接(支持加密&jm=1)☞ ?sub=
影視TV版 影視手機/平板版
官方發佈頻道 https://t.me/fongmi_release
官方交流群 https://t.me/fongmi_offical
官方開源倉庫 https://github.com/fongmi/tv
最新APP仓库下载 https://github.com/FongMi/TV/releases
官方爬虫仓库 https://github.com/FongMi/CatVodSpider
蜂蜜原裝接口
可用 https://raw.githubusercontent.com/FongMi/CatVodSpider/main/json/config.json
网友自制蜂蜜接口轉發
(由於蜂蜜原裝接口沒有添加加速鏈 然而生之 每30分钟同步一次 國內專用)
18+ https://ts--ly23.repl.co/fm18
http://大屌蜂蜜.eu.org
正规 https://ts--ly23.repl.co/fmtv
http://蜂蜜.eu.org
本APP是臺灣大佬蜂蜜(活雷鋒)一人始於2022.06.22基于猫影视制作而成,功能强大且完全免费无广告。更多功能与操作说明请點擊這裡查看!!!
影視*最新版本更新详情与下载链接
网页下載 如果不能下载 代表蜂蜜仓库删文件了 首頁三個版本下載默認推薦的正式版(国内) 需要更多版本和海外下载請點擊"更多"按鈕
各设备版本推荐:
手机:📱py-v7a/📱py-v8a   
平板:📱py-v7a    
5.1++电视:📺py-v7a    
4.1-4.4电视:4.1📺py-v7a
版本区别:py(python)版比js(java)版多支持月佬的py站源,v7a即32位,v8a即64位。32/64位是设备核心支持位数 如果不知道什么位和哪个版本就按照推荐下载啦
原来所有链接一直有效 新增以下首页链接
影视.eu.org   影視.eu.org  ewwe.gq  ly.100km.top
由于网页部署在replit 它时常抽风 可能导致无法访问 请见谅
其他影视代言人首页 100km.top www.0701.gq
网页底部有所有版本下载列表 中文下载对应国内 英文对应海外 首页那个更多按钮可以直达下载列表
本频道將已推送過的APP 定期轉存到(需要的請點) ->>這裡
TVB/影视接口(瞎操作说明) https://api.ys66.repl.co
?url= >>加密(jm=1)&解密
?sub= >>接口合并(需规则文件直链)(支持加密)
*###-----*------*------###*
接口加密/解密 https://api.ys66.repl.co?url=
接口合并(可加密) https://api.ys66.repl.co?sub=
其他参数说明在文件内,但该文件是做合并接口实例的 ,谨记!谨记!最后最好删除所有注释,以防报错。
飞机群
讨论群发
https://t.me/fongmi_offical
频道
https://t.me/fongmi_release
調整 viewType 改為 style
type 有 4 種模式
rect、oval、full、list
ratio 為比例 寬/高
預設為直向 3:4 = 0.75
修改橫向 4:3 則是 1.33
範例:
直式 "style":{ "type":"rect" }
橫式 "style":{ "type":"rect", "ratio":1.33 }
正方 "style":{ "type":"rect", "ratio":1 }
正圓 "style":{ "type":"oval" }
橢圓 "style":{ "type":"oval", "ratio":1.1 }
点播栏位
searchable:搜索 (0:關閉、1:啟用)
changeable:換源 (0:關閉、1:啟用)
playerType:播放器 (1IJK、2EXO)
直播栏位
ua:用戶代理
referer:參照位址
epg:節目網址
logo:台標網址
pass:是否免密碼
boot:是否自動開啟
playerType:播放器
recordable = 0 不記憶
配置范例
点播-线上
https://gh-proxy.com/https://github.com/FongMi/TV/blob/dev/other/sample/vod/online.json
点播-本地
https://gh-proxy.com/https://github.com/FongMi/TV/blob/dev/other/sample/vod/offline.json
直播-线上
https://gh-proxy.com/https://github.com/FongMi/TV/blob/dev/other/sample/live/online.json
直播-本地
https://gh-proxy.com/https://github.com/FongMi/TV/blob/dev/other/sample/live/offline.json
"User-Agent"
爬蟲規則與上方一致
已更新到我倉庫
請合併 Vod.java
Binary file not shown.
+213
View File
@@ -0,0 +1,213 @@
# 影視
### 基於 CatVod 項目
https://github.com/CatVodTVOfficial/CatVodTVJarLoader
### 點播欄位
| 欄位名稱 | 預設值 | 說明 | 其他 |
|------------|------|------|------------|
| searchable | 1 | 是否搜索 | 0:關閉;1:啟用 |
| changeable | 1 | 是否換源 | 0:關閉;1:啟用 |
| quickserch | 1 | 是否快搜 | 0:關閉;1:啟用 |
| indexs | 0 | 是否聚搜 | 0:關閉;1:啟用 |
| hide | 0 | 是否隱藏 | 0:顯示;1:隱藏 |
| timeout | 15 | 播放超時 | 單位:秒 |
| header | none | 請求標頭 | 格式:json |
| click | none | 點擊js | javascript |
### 直播欄位
| 欄位名稱 | 預設值 | 說明 | 其他 |
|----------|-------|-------|------------|
| ua | none | 用戶代理 | |
| origin | none | 來源 | |
| referer | none | 參照地址 | |
| epg | none | 節目地址 | |
| logo | none | 台標地址 | |
| pass | false | 是否免密碼 | |
| boot | false | 是否自啟動 | |
| timeout | 15 | 播放超時 | 單位:秒 |
| header | none | 請求標頭 | 格式:json |
| click | none | 點擊js | javascript |
| catchup | none | 回看參數 | |
| timeZone | none | 時區 | |
### 樣式
| 欄位名稱 | 值 | 說明 |
|-------|------|-----|
| type | rect | 矩形 |
| | oval | 橢圓 |
| | list | 列表 |
| ratio | 0.75 | 34 |
| | 1.33 | 43 |
直式
```json
{
"style": {
"type": "rect"
}
}
```
橫式
```json
{
"style": {
"type": "rect",
"ratio": 1.33
}
}
```
正方
```json
{
"style": {
"type": "rect",
"ratio": 1
}
}
```
正圓
```json
{
"style": {
"type": "oval"
}
}
```
橢圓
```json
{
"style": {
"type": "oval",
"ratio": 1.1
}
}
```
### API
刷新詳情
```
http://127.0.0.1:9978/action?do=refresh&type=detail
```
刷新播放
```
http://127.0.0.1:9978/action?do=refresh&type=player
```
刷新直播
```
http://127.0.0.1:9978/action?do=refresh&type=live
```
推送字幕
```
http://127.0.0.1:9978/action?do=refresh&type=subtitle&path=http://xxx
```
推送彈幕
```
http://127.0.0.1:9978/action?do=refresh&type=danmaku&path=http://xxx
```
新增緩存字串
```
http://127.0.0.1:9978/cache?do=set&key=xxx&value=xxx
```
取得緩存字串
```
http://127.0.0.1:9978/cache?do=get&key=xxx
```
刪除緩存字串
```
http://127.0.0.1:9978/cache?do=del&key=xxx
```
### Proxy
scheme 支持 http, https, socks4, socks5
```
scheme://username:password@host:port
```
配置新增 proxy 判斷域名是否走代理
全局只需要加上一條規則 ".*."
```json
{
"spider": "",
"proxy": [
"raw.githubusercontent.com",
"googlevideo.com"
]
}
```
### Hosts
```json
{
"spider": "",
"hosts": [
"cache.ott.*.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com"
]
}
```
### Headers
```json
{
"spider": "",
"headers": [
{
"host": "gslbserv.itv.cmvideo.cn",
"header": {
"User-Agent": "okhttp/3.12.13",
"Referer": "test"
}
}
]
}
```
### 配置範例
[點播-線上](other/sample/vod/online.json)
[點播-本地](other/sample/vod/offline.json)
[直播-線上](other/sample/live/online.json)
[直播-本地](other/sample/live/offline.json)
### 飛機群
[討論群組](https://t.me/fongmi_offical)
[發布頻道](https://t.me/fongmi_release)
### 贊助
![photo_2024-01-10_11-39-12](https://github.com/FongMi/TV/assets/3471963/fdc12771-386c-4d5d-9a4d-d0bec0276fa7)
Binary file not shown.
+17
View File
@@ -0,0 +1,17 @@
1.tvbox文件夹放在手机或TV盒子存储根目录
2.TVBox设置>配置地址路径:clan://localhost/tvbox/a.json
3.影音壳子旧版设置>配置下的接口地址: clan://localhost/tvbox/a.json
4.影音壳子新版设置>配置下的订阅管理>添加>订阅源名称:本地a;订阅源地址:clan://localhost/tvbox/a.json
5.TVBox播放器>IJK播放器;IJK解码方式:硬解码;IJK解码兼容性更好,硬解码更省电,如遇不能播放再切换播放器
6.影视版播放器用EXO更强大,本地仓库地址file://tvbox/jk/drck.json或http://127.0.0.1:9978/file/tvbox/jk/drck.json
//##本源为收集网络资源整理自用,切勿拿去商用
//##1.tvbox文件夹放在手机或TV盒子根目录(盒子&TV可用应用管家操作)
//##2.TVBox或影音壳子设定>配置地址路径:clan://localhost/tvbox/a.json;蜂蜜影视地址:file://tvbox/a.json;本地代理地址设定:http://127.0.0.1:9978/file/tvbox/a.json
//##3.json的api和ext路径设定1:"api":"clan://tvbox/libs/drpy.min.js","ext":"clan://tvbox/js/豆瓣.js"
//##4.json的api和ext路径设定2:"api":"file://tvbox/libs/drpy.min.js","ext":"file://tvbox/js/豆瓣.js"
//##5.json的api和ext路径设定3"api":"./libs/drpy2.min.js","ext":"./js/豆瓣.js"
//##6.json的api和ext路径设定4:"api":"http://127.0.0.1:9978/file/tvbox/libs/drpy.min.js","ext":"http://127.0.0.1:9978/file/tvbox/js/豆瓣.js"
//##7."playerType": 1, 为该爬虫指定播放器 0:system, 1:ijk, 2:exo, 10:mx11:Reex,12:Kodi.默认1为配置页面设置的播放器
//##8.影视&Q版本多jar链接写法:{"key":"","name":"","type":3,"api":"***","searchable":1,"quickSearch":1,"filterable":1,"jar":"your_other_jar"}
Binary file not shown.
+6
View File
@@ -0,0 +1,6 @@
1、下载drpy-node,解压缩到手机存储,记住路径。
2、打开海阔视界,选择nodejs小程序(L佬多任务版本),配置,新建,名称随便填,目录选drpy-node这个文件夹,索引选index.js,保存
3、长按该配置,调试数据,复制ID
4、打开小程序DrpyHiker,设置,更换配置,名称随便,路径填
http://127.0.0.1:5757/config/1#nodejs ID=刚才复制的ID <确认>
5、选择一个源愉快的玩耍吧
+100
View File
@@ -0,0 +1,100 @@
{
//jar爬虫代理
"spider": "file://Download/custom_spider.jar",
//壁纸
"wallpaper":"./img/w2.png",
//图标
"logo":"./img/d6.gif",
//点播站源
"sites": [
{
"key": "one",
"name": "One",
"type": 3,
"api": "csp_Csp",
"searchable": 1,
"changeable": 1,
"ext": "file://Download/one.json"
},
{
"key": "two",
"name": "Two",
"type": 3,
"api": "csp_Csp",
"searchable": 1,
"changeable": 1,
"ext": "file://Download/two.json"
},
{
"key": "extend",
"name": "Extend",
"type": 3,
"api": "csp_Csp",
"searchable": 1,
"changeable": 1,
"ext": "file://Download/extend.json",
"jar": "file://Download/extend.jar"
}
],
//正则解析/广告过滤
"rules":[
{
"name":"*",
"hosts":["*"],
"regex":["*"]}
],
//解析线路
"parses": [
{
"name": "官方",
"type": 1,
"url": "https://google.com/api/?url="
}
],
//doh代理
"doh": [
{
"name": "Google",
"url": "https://dns.google/dns-query",
"ips": [
"8.8.4.4",
"8.8.8.8"
]
}
],
//网站请求头
"headers": [
{
"host": "gslbserv.itv.cmvideo.cn",
"header": {
"User-Agent": "okhttp/3.12.13"
}
}
],
//直播源
/**
*
*jar
*"lives":[{"group": "redirect","channels": [{"name": "live","urls": ["proxy://do=live&type=txt&ext=./live/zb.txt"]}]}],
*/
"lives":[
{"name":"m3u","type":0,"url":"https://*.m3u","ua":"okhttp/3.15","epg":"http://epg.112114.xyz/?ch={name}&date={date}","logo":"https://epg.112114.xyz/logo/{name}.png"},
{"name":"txt","type":0,"url":"https://*.txt","ua":"okhttp/3.15","epg":"http://epg.112114.xyz/?ch={name}&date={date}","logo":"https://epg.112114.xyz/logo/{name}.png"}
],
//网站代理
"proxy": [
"raw.githubusercontent.com"
],
//host代理
"hosts": [
"cache.ott.ystenlive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com"
],
//线路标识
"flags": [
"qq"
],
//传统解析广告过滤
"ads": [
"static-mozai.4gtv.tv"
]
}
Binary file not shown.
+17
View File
@@ -0,0 +1,17 @@
1https://www.jianguoyun.com/
2cat
3
4----(cat)-
5https://123486%40qq.com:[email protected]/dav/cat/config_open.json
6
123486%40qq.com %40123486QQ888888884
@dav.jianguoyun.com/davcat/config_open.json
Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.
+75
View File
@@ -0,0 +1,75 @@
{
"lives": [
{
"name": "M3U",
"url": "file://Download/live.m3u"
},
{
"name": "TXT",
"url": "file://Download/live.txt",
"epg": "https://epg.112114.xyz/?ch={name}&date={date}",
"logo": "https://epg.112114.xyz/logo/{name}.png"
},
{
"name": "UA",
"url": "file://Download/live.txt",
"epg": "https://epg.112114.xyz/?ch={name}&date={date}",
"logo": "https://epg.112114.xyz/logo/{name}.png",
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
"referer": "https://github.com/"
},
{
"name": "Custom",
"boot": false,
"pass": true,
"url": "file://Download/live.txt",
"epg": "https://epg.112114.xyz/?ch={name}&date={date}&serverTimeZone=Asia/Shanghai",
"logo": "https://epg.112114.xyz/logo/{name}.png",
"header": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
"Referer": "https://github.com/"
},
"catchup": {
"days": "7",
"type": "append",
"regex": "/PLTV/",
"replace": "/PLTV/,/TVOD/",
"source": "?playseek=${(b)yyyyMMddHHmmss}-${(e)yyyyMMddHHmmss}"
}
},
{
"name": "JSON",
"type": 1,
"url": "file://Download/live.json"
},
{
"name": "Spider-JS",
"type": 3,
"api": "./live.js",
"ext": ""
},
{
"name": "Spider-Python",
"type": 3,
"api": "./live.py",
"ext": ""
}
],
"headers": [
{
"host": "gslbserv.itv.cmvideo.cn",
"header": {
"User-Agent": "okhttp/3.12.13"
}
}
],
"proxy": [
"raw.githubusercontent.com"
],
"hosts": [
"cache.ott.ystenlive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com"
],
"ads": [
"static-mozai.4gtv.tv"
]
}