Add files via upload
This commit is contained in:
parent
db2753de13
commit
3b472199ce
5
TVBoxOSC/tvbox/XBPQ/三九影视.json
Normal file
5
TVBoxOSC/tvbox/XBPQ/三九影视.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"简介": "+detail-content\" style=*>&&</span>",
|
||||
"分类url": "https://www.539539.xyz/index.php/vod/show/area/{area}/class/{class}/id/{cateId}/page/{catePg}/year/{year}.html",
|
||||
"分类": "短剧$25#电视剧$2#电影$1#动漫$4#综艺$3"
|
||||
}
|
||||
15
TVBoxOSC/tvbox/XBPQ/修罗影视.json
Normal file
15
TVBoxOSC/tvbox/XBPQ/修罗影视.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"数组": "card card-sm card-link&&</div>",
|
||||
"图片": "src=\"&&\"",
|
||||
"标题": "mb-0 card-title text-truncate\">&&<",
|
||||
"副标题": "start-0 text-red-fg\">&&</span>",
|
||||
"链接": "href=\"&&\"",
|
||||
"简介": "剧情简介:&&\"",
|
||||
"线路标题": "磁力+>&&<",
|
||||
"播放数组": "download-list&&</tbody>",
|
||||
"播放列表": "<tr&&</tr>",
|
||||
"播放标题": "text-muted\">&&</td>[不包含:网盘下载]",
|
||||
"跳转播放链接": "href=\"&&\"",
|
||||
"分类url": "https://v.xlys.ltd.ua/s/all/{catePg}?type={cateId};;d0",
|
||||
"分类": "电影$0#电视剧$1"
|
||||
}
|
||||
17
TVBoxOSC/tvbox/XBPQ/养生堂.json
Normal file
17
TVBoxOSC/tvbox/XBPQ/养生堂.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"首页": "0",
|
||||
// "播放链接前缀": "https://www.gyf.lol",
|
||||
"数组": "data\":{\"tit&&s_log",
|
||||
"图片": "https://p0.ssl.cdn.btime.com/+ssl.cdn.btime.com/&&\"",
|
||||
"副标题": "le\":\"&&\"",
|
||||
"标题": "text\":\"&&\"",
|
||||
"链接": "item.btime.com/&&\"",
|
||||
"链接前缀": "https://app.api.btime.com/video/play?callback=jQuery36009651202523243325_1747927554988&id=",
|
||||
// "线路标题": "</i>&&<span",
|
||||
"播放数组": "video_streams&&audio_streams",
|
||||
"播放列表": "stream&&duration",
|
||||
"播放标题": "stream_vbt\":\"&&\"",
|
||||
"播放链接": "url\":\"&&\"",
|
||||
"分类url": "https://pc.api.btime.com/btimeweb/infoFlow?callback=jQuery36002244958011106073_1747920210579&list_id={cateId}&refresh={catePg}&count=2000&expands=pageinfo&_=1747920210580",
|
||||
"分类": "2025$btv_08da67cea600bf3c78973427bfaba12d_s0_2025#2024$btv_08da67cea600bf3c78973427bfaba12d_s0_2024#2023$btv_08da67cea600bf3c78973427bfaba12d_s0_2023#2022$btv_08da67cea600bf3c78973427bfaba12d_s0_2022#2021$btv_08da67cea600bf3c78973427bfaba12d_s0_2021#2020$btv_08da67cea600bf3c78973427bfaba12d_s0_2020#2019$btv_08da67cea600bf3c78973427bfaba12d_s0_2019#2018$btv_08da67cea600bf3c78973427bfaba12d_s0_2018"
|
||||
}
|
||||
10
TVBoxOSC/tvbox/XBPQ/农民影视.json
Normal file
10
TVBoxOSC/tvbox/XBPQ/农民影视.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"请求头": "手机",
|
||||
"编码": "UTF-8",
|
||||
"简介": "简 介:&&</p>",
|
||||
"线路数组": "javascript:;\">&&</a>",
|
||||
"数组": "<li>&&</li>",
|
||||
"图片": "data-echo=\"&&\"",
|
||||
"分类url": "https://vip.wwgz.cn:5200/vod-list-id-{cateId}-pg-{catePg}-order--by-time-class-0-year-{year}-letter--area-{area}-lang-.html",
|
||||
"分类": "电影$1#电视剧$2#动漫$4#综艺$3#短剧$26"
|
||||
}
|
||||
18
TVBoxOSC/tvbox/XBPQ/哆啦新番社.json
Normal file
18
TVBoxOSC/tvbox/XBPQ/哆啦新番社.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"请求头": "User-Agent$MOBILE_UA",
|
||||
"编码": "UTF-8",
|
||||
"主页url": "https://dora.xiaoxinbk.com/",
|
||||
"数组": "class=\"card-img-bili\"&&</a>",
|
||||
"标题": "alt=\"&&\"",
|
||||
"图片": "data-url=\"&&\"",
|
||||
"链接": "href=\"&&\"",
|
||||
"线路标题": "mt-0\">&&</h3>",
|
||||
"播放数组": "class=\"card-body button-list\"&&</div>",
|
||||
"播放列表": "<a&&a>",
|
||||
"播放链接": "href=\"&&\"",
|
||||
"播放标题": ">&&</",
|
||||
"分类url": "https://www.dora-video.cn/search/sy/?niandai={year}&cat={class}&tag={cateId}&gaojijiansuo=1&zhuangtai={by}",
|
||||
"分类": "全部$0#动画$20#剧场版$21#MV$22#预告片$23#直播$27#同人$25#民间$26#目录$28#中篇$30",
|
||||
"剧情": "哆啦A梦新番$1#新哆啦A梦 台湾配音$2#哆啦A梦剧场版$3#最新预告片$6#剧场版集合$7#哆啦A梦MV$4#哆啦A梦七小子集合$11#生日特别篇$19#哆啦A梦生日特别篇$12#哆啦美生日特别篇$14#大雄生日特别篇$13#静香生日特别篇$15#胖虎生日特别篇$16#小夫生日特别篇$17#24小时直播$24#哆啦A梦中篇附映$29#哆啦A梦大山版 - 哆啦a梦1979版国语旧版 - 旧版$31#哆啦A梦大山修复&补档区$32#藤子·F·不二雄【其它动画】$33",
|
||||
"排序": "全部$0#完结$2#连载$1#待定$-1"
|
||||
}
|
||||
51
TVBoxOSC/tvbox/XBPQ/明星影视.json
Normal file
51
TVBoxOSC/tvbox/XBPQ/明星影视.json
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"作者": "",
|
||||
"站名": "明星影院",
|
||||
"请求头": "User-Agent$MOBILE_UA",
|
||||
"编码": "UTF-8",
|
||||
"图片代理": "",
|
||||
"直接播放": "0",
|
||||
"播放请求头": "",
|
||||
"过滤词": "",
|
||||
"主页url": "https://mxvod.com",
|
||||
"首页": "120",
|
||||
"起始页": "1",
|
||||
"分类url": "https://mxvod.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html",
|
||||
"分类": "电影$dianying#电视剧$dianshiju#综艺$zongyi#动漫$dongman#短剧$duanju",
|
||||
"二次截取": "module-items\"&&id=\"page",
|
||||
"数组": "lazyloaded&&/a>",
|
||||
"标题": "title=*>&&<",
|
||||
"图片": "data-src=\"&&\"",
|
||||
"副标题": "class\">&&<",
|
||||
"链接": "href=\"&&\"[替换:vodplay>>voddetail#-1-1.html>>.html]",
|
||||
"影片年代": "-----------*.html\">&&</",
|
||||
"影片地区": "video:area\" content=\"&&\"",
|
||||
"影片类型": "video:class\" content=\"&&\"",
|
||||
"状态": "tag-link-red\">&&</div>",
|
||||
"导演": "导演:&&</div>",
|
||||
"主演": "主演:&&\">",
|
||||
"简介": "vod_content\"&&</div>",
|
||||
"线路数组": "data-dropdown&&/small>",
|
||||
"线路标题": "value=\"&&\"+【共+<small>&&<+集】",
|
||||
"播放数组": "id=\"sort-item&&</div>",
|
||||
"播放列表": "<a&&/a>",
|
||||
"播放标题": "<span>&&<",
|
||||
"播放链接": "href=\"&&\"",
|
||||
"跳转播放链接": "var player_*\"url\":\"&&\"",
|
||||
"搜索请求头": "User-Agent$MOBILE_UA",
|
||||
"搜索url": "https://mxvod.com/vodsearch/{wd}----------{pg}---.html",
|
||||
"搜索模式": "1",
|
||||
"搜索数组": "lazyload\"&&/a>",
|
||||
"搜索标题": "title=\"&&\"",
|
||||
"搜索图片": "data-src=\"&&\"",
|
||||
"搜索副标题": "title=*>&&<",
|
||||
"搜索链接": "href=\"&&\"",
|
||||
"筛选": "1",
|
||||
"类型": "动作片$dongzuopian#喜剧片$xijupian#爱情片$aiqingpian#科幻片$kehuanpian#恐怖片$kongbupian#战争片$zhanzhengpian#剧情片$juqingpian#动画片$donghuapian#悬疑片$xuanyi#纪录片$jilupian#奇幻片$qihuanpian#灾难片$zainanpian||国产剧$guochanju#欧美剧$oumeiju#日剧$riju#韩剧$hanju#港台剧$gangtai#海外剧$haiwai||大陆综艺$daluzongyi#港台综艺$gangtaizongyi#欧美综艺$oumeizongyi#日韩综艺$rihanzongyi#海外综艺$haiwaizongyi||国产动漫$guochandongman#日韩动漫$rihandongman#欧美动漫$oumeidongman#海外动漫$haiwaidongman||空",
|
||||
"剧情": "喜剧&爱情&恐怖&动作&科幻&剧情&战争&警匪&犯罪&动画&奇幻&武侠&冒险&枪战&恐怖&悬疑&惊悚&经典&青春&文艺&微电影&古装&历史&运动&农村&儿童&网络电影||古装&战争&青春偶像&喜剧&家庭&犯罪&动作&奇幻&剧情&历史&经典&乡村&情景&商战&网剧&其他||选秀&情感&访谈&播报&旅游&音乐&美食&纪实&曲艺&生活&游戏互动&财经&求职||情感&科幻&热血&推理&搞笑&冒险&萝莉&校园&动作&机战&运动&战争&少年&少女&社会&原创&亲子&益智&励志&其他||古装&虐恋&逆袭&神豪&重生&复仇&穿越&甜宠&强者&萌宝&其它",
|
||||
"年份": "1990-2025",
|
||||
"年份值": "*",
|
||||
"语言值": "*",
|
||||
"排序": "时间&人气&评分",
|
||||
"排序值": "time&hits&score"
|
||||
}
|
||||
6
TVBoxOSC/tvbox/XBPQ/樱花动漫.json
Normal file
6
TVBoxOSC/tvbox/XBPQ/樱花动漫.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"简介": "",
|
||||
"数组": "",
|
||||
"分类url": "http://www.yinghuadm.cn/show_{cateId}--{by}-{class}-----{catePg}---{year}.html",
|
||||
"分类": "日本动漫$ribendongman#国产动漫$guochandongman#动漫电影$dongmandianying#欧美动漫$oumeidongman"
|
||||
}
|
||||
7
TVBoxOSC/tvbox/XBPQ/永乐影视.json
Normal file
7
TVBoxOSC/tvbox/XBPQ/永乐影视.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"请求头": "User-Agent$MOBILE_UA",
|
||||
"编码": "UTF-8",
|
||||
"分类": "电影$1#电视剧$2#综艺$3#动漫$4",
|
||||
"类型": "动作片$6#喜剧片$7#爱情片$8#科幻片$9#奇幻片$10#恐怖片$11#剧情片$12#战争片$20#动画片$26#悬疑片$22#冒险片$23#犯罪片$24#惊悚片$45#歌舞片$46#灾难片$47#网络片$48||国产剧$13#港台剧$14#日剧$15#韩剧$33#欧美剧$16#泰剧$34#新马剧$35#其他剧$25||内地综艺$27#港台综艺$28#日本综艺$29#韩国综艺$36#欧美综艺$30#新马泰综艺$37#其他综艺$38||国产动漫$31#日本动漫$32#韩国动漫$39#港台动漫$40#新马泰动漫$41#欧美动漫$42#其他动漫$43",
|
||||
"分类url": "https://www.ylys.tv/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html"
|
||||
}
|
||||
6
TVBoxOSC/tvbox/XBPQ/海纳影视.json
Normal file
6
TVBoxOSC/tvbox/XBPQ/海纳影视.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"简介": "简介:</em>&&",
|
||||
"数组": "row\">&&</div></div>",
|
||||
"分类url": "https://www.hainatv.net/index.php/vod/show/area/{area}/id/{cateId}/lang/{lang}/page/{catePg}/year/{year}.html",
|
||||
"分类": "电影$1#电视剧$2#综艺$3#动漫$4#短剧$59"
|
||||
}
|
||||
21
TVBoxOSC/tvbox/XBPQ/狐狸君.json
Normal file
21
TVBoxOSC/tvbox/XBPQ/狐狸君.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"搜索模式": "1",
|
||||
"搜索url": "https://www.foxjun.com/s/?q={wd}",
|
||||
"搜索数组": "class=\"media\">&&/div>",
|
||||
"搜索图片": "src=\"&&\"",
|
||||
"搜索标题": "《&&》",
|
||||
"搜索副标题": "》&&\"",
|
||||
"搜索链接": "href=\"&&\"",
|
||||
"标题": "《&&》",
|
||||
"副标题": "》&&\"",
|
||||
"影片年代": "上映日期:&&</p>",
|
||||
"影片类型": "类型:&&</p>",
|
||||
"主演": "主演:&&</p>",
|
||||
"简介": "简介:&&</p>",
|
||||
"播放数组": "<tbody>&&</tbody>",
|
||||
"播放列表": "<a&&/a>[包含:magnet]",
|
||||
"播放标题": ">&&<",
|
||||
"播放链接": "href=\"&&\"",
|
||||
"分类url": "https://www.foxjun.com/channel/{cateId}.html?apage1={catepg}",
|
||||
"分类": "国产剧$guochanju#电影$dianying#动画$donghua#美欧剧$meiouju#日韩剧$rihanju"
|
||||
}
|
||||
37
TVBoxOSC/tvbox/XBPQ/番茄短剧.json
Normal file
37
TVBoxOSC/tvbox/XBPQ/番茄短剧.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"请求头": "User-Agent$MOBILE_UA",
|
||||
"编码": "UTF-8",
|
||||
"主页url": "https://www.dzwhs.com/zwhstp/5.html",
|
||||
"首页": "120",
|
||||
"起始页": "1",
|
||||
"分类url": "/zwhssw/5--{by}-{cateId}-{lang}-{letter}---{catePg}---{year}.html;",
|
||||
"分类": "古装&反转&穿越&总裁&言情&爽文&女恋&都市",
|
||||
"分类值": "*",
|
||||
"数组": "默认--lazyload\"&&</a||搜索--lazyload\"&&</a",
|
||||
"标题": "title=\"&&\"",
|
||||
"图片": "data-original=\"&&\"",
|
||||
"副标题": "right\">&&</",
|
||||
"链接": "href=\"&&\"",
|
||||
"影片年代": "年份:&&</p",
|
||||
"影片地区": "地区:</span>&&<",
|
||||
"影片类型": "类型:</span>&&<",
|
||||
"状态": "状态:&&</p",
|
||||
"导演": "导演:&&</p",
|
||||
"主演": "主演:&&</p",
|
||||
"简介": "description\": \"&&\"",
|
||||
"线路数组": "<h3&&/h3>",
|
||||
"线路标题": "(>&&<)",
|
||||
"播放二次截取": "",
|
||||
"播放数组": "playlist clearfix&&</ul>",
|
||||
"倒序": "0",
|
||||
"播放列表": "<a&&/a>",
|
||||
"播放标题": ">&&<",
|
||||
"播放链接": "href=\"&&\"",
|
||||
"跳转播放链接": "var player_*\"url\":\"&&\"",
|
||||
"搜索请求头": "User-Agent$MOBILE_UA",
|
||||
"搜索url": "/zwhssc/{wd}----------{pg}---.html",
|
||||
"搜索模式": "1",
|
||||
"排序": "最新上映&超高人气&全网热播&高分好评",
|
||||
"排序值": "time&hits&up&score",
|
||||
"筛选": "1"
|
||||
}
|
||||
7
TVBoxOSC/tvbox/XBPQ/面包影视.json
Normal file
7
TVBoxOSC/tvbox/XBPQ/面包影视.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"请求头": "User-Agent$MOBILE_UA",
|
||||
"编码": "UTF-8",
|
||||
"分类url": "https://v.aiwule.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html",
|
||||
"分类": "电影$20#电视剧$21#动漫$23#综艺$22#短剧$47",
|
||||
"简介": "简介:&&"
|
||||
}
|
||||
16
TVBoxOSC/tvbox/XBPQ/骚火影视.json
Normal file
16
TVBoxOSC/tvbox/XBPQ/骚火影视.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"首页": "0",
|
||||
"请求头": "User-Agent$MOBILE_UA#Accept$text/html,application/xhtml+xml,application/xml;;q=0.9,image/avif,image/webp,image/apng,*/*;;q=0.8,application/signed-exchange;;v=b3;;q=0.7&&Accept-Language@zh-CN,zh;;q=0.9",
|
||||
"分类url": "https://shdy2.com/list/{cateId}-{catePg}.html",
|
||||
"分类": "剧集$2#电影$1#港剧$21#台剧$26#日剧$24#韩剧$22#美剧$23",
|
||||
"数组": "class=\"v_img&&/li>",
|
||||
"标题": "alt=\"&&\"",
|
||||
"图片": "original=\"&&\"",
|
||||
"链接": "href=\"&&\"",
|
||||
"简介": "show_part\">&&<a",
|
||||
"演员": "主演:&&<a",
|
||||
"导演": "导演:&&/",
|
||||
"播放二次截取": "class=\"play_list&&/ul>",
|
||||
"播放数组": "<li&&/li>",
|
||||
"倒序": "1"
|
||||
}
|
||||
81
TVBoxOSC/tvbox/XYQHiker/巴士动漫.json
Normal file
81
TVBoxOSC/tvbox/XYQHiker/巴士动漫.json
Normal file
@ -0,0 +1,81 @@
|
||||
{
|
||||
"规则名": "动漫巴士",
|
||||
"规则作者": "",
|
||||
"请求头参数": "User-Agent$MOBILE_UA#Accept$text/html#accept-language$zh-CN,zh;q=0.8",
|
||||
"网页编码格式": "UTF-8",
|
||||
"图片是否需要代理": "0",
|
||||
"是否开启获取首页数据": "1",
|
||||
"首页推荐链接": "https://dm84.net",
|
||||
"首页列表数组规则": "body&&.v_list",
|
||||
"首页片单列表数组规则": "li",
|
||||
"首页片单是否Jsoup写法": "1",
|
||||
"分类起始页码": "1",
|
||||
"分类链接": "https://dm84.net/list-{cateId}-{catePg}.html[firstPage=https://dm84.net/list-{cateId}.html]",
|
||||
"分类名称": "国产动漫&日本动漫&欧美动漫&动漫电影",
|
||||
"分类名称替换词": "1&2&3&4",
|
||||
"筛选数据": {},
|
||||
//"筛选数据": "ext",
|
||||
//{cateId}
|
||||
"筛选子分类名称": "",
|
||||
"筛选子分类替换词": "",
|
||||
//{class}
|
||||
"筛选类型名称": "",
|
||||
"筛选类型替换词": "*",
|
||||
//{area}
|
||||
"筛选地区名称": "",
|
||||
"筛选地区替换词": "*",
|
||||
//{year}
|
||||
"筛选年份名称": "",
|
||||
"筛选年份替换词": "*",
|
||||
//{lang}
|
||||
"筛选语言名称": "",
|
||||
"筛选语言替换词": "*",
|
||||
//{by}
|
||||
"筛选排序名称": "时间&人气&评分",
|
||||
"筛选排序替换词": "time&hits&score",
|
||||
"分类截取模式": "1",
|
||||
"分类列表数组规则": ".v_list&&li",
|
||||
"分类片单是否Jsoup写法": "1",
|
||||
"分类片单标题": "a&&title!在线观看",
|
||||
"分类片单链接": "a&&href",
|
||||
"分类片单图片": ".lazy&&data-bg",
|
||||
"分类片单副标题": ".desc&&Text",
|
||||
"分类片单链接加前缀": "https://dm84.net",
|
||||
"分类片单链接加后缀": "",
|
||||
"搜索请求头参数": "User-Agent$手机#Accept$text/html#accept-language$zh-CN,zh;q=0.8",
|
||||
"搜索链接": "https://dm84.net/s-{wd}---------{SearchPg}.html",
|
||||
"POST请求数据": "",
|
||||
"搜索截取模式": "1",
|
||||
"搜索列表数组规则": ".v_list&&li",
|
||||
"搜索片单是否Jsoup写法": "1",
|
||||
"搜索片单图片": ".lazy&&data-bg",
|
||||
"搜索片单标题": "a&&title!在线观看",
|
||||
"搜索片单链接": "a&&href",
|
||||
"搜索片单副标题": ".desc&&Text",
|
||||
"搜索片单链接加前缀": "https://dm84.net",
|
||||
"搜索片单链接加后缀": "",
|
||||
"链接是否直接播放": "0",
|
||||
"直接播放链接加前缀": "",
|
||||
"直接播放链接加后缀": "",
|
||||
"直接播放直链视频请求头": "",
|
||||
"详情是否Jsoup写法": "1",
|
||||
"类型详情": "",
|
||||
"年代详情": "",
|
||||
"地区详情": "",
|
||||
"演员详情": "",
|
||||
"简介详情": ".intro&&-p&&Text",
|
||||
"线路列表数组规则": ".play_from&&li",
|
||||
"线路标题": "Text",
|
||||
"播放列表数组规则": ".tab_content&&.play_list",
|
||||
"选集列表数组规则": "a",
|
||||
"选集标题链接是否Jsoup写法": "1",
|
||||
"选集标题": "a&&Text",
|
||||
"选集链接": "a&&href",
|
||||
"是否反转选集序列": "1",
|
||||
"选集链接加前缀": "https://dm84.net",
|
||||
"选集链接加后缀": "",
|
||||
"分析MacPlayer": "0",
|
||||
"是否开启手动嗅探": "0",
|
||||
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
|
||||
"手动嗅探视频链接过滤词": ".html#=http"
|
||||
}
|
||||
131
TVBoxOSC/tvbox/XYQHiker/电影港.json
Normal file
131
TVBoxOSC/tvbox/XYQHiker/电影港.json
Normal file
@ -0,0 +1,131 @@
|
||||
//写法思路来海阔视界,xpath筛选。本人是海阔用户,所以搬了海阔的jsoup写法过来。2022年9月17日
|
||||
//jsoup规则写法请查阅海阔视界或者海阔影视相关教程。不支持js写法
|
||||
//本文档为完整模板,请不要去无中生有添加多余的键值参数。
|
||||
{
|
||||
//规则名
|
||||
"title": "电影港",
|
||||
//作者
|
||||
"author": "香雅情",
|
||||
//请求头UA,键名$键值,每一组用#分开,不填则默认okhttp/3.12.11,可填MOBILE_UA或PC_UA使用内置的手机版或电脑版UA
|
||||
//多个请求头参数写法示例,"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok",每一组用#分开。
|
||||
//习惯查看手机源码写建议用手机版UA,习惯查看PC版源码写建议用电脑版UA
|
||||
"Headers":"PC_UA",
|
||||
//网页编码格式默认UTF-8编码,UTF-8,GBK,GB2312
|
||||
"Coding_format":"gb2312",
|
||||
//图片是否需要代理
|
||||
"PicNeedProxy":"0",
|
||||
//是否开启获取首页数据,0关闭,1开启
|
||||
"homeContent":"0",
|
||||
//分类链接起始页码,禁止负数和含小数点。
|
||||
"firstpage": "1",
|
||||
//分类链接,{cateId}是分类,{catePg}是页码,第一页没有页码的可以这样写 第二页链接[firstPage=第一页的链接]
|
||||
"class_url": "https://www.dygang.tv/{cateId}/index_{catePg}.htm[firstPage=https://www.dygang.cc/{cateId}/index.htm]",
|
||||
//分类名,分类1&分类2&分类3
|
||||
"class_name": "最新电影&经典高清&国配电影&经典港片&国剧&日韩剧&美剧&综艺&动漫&纪录片&高清原盘&4K高清区&3D电影&电影专题",
|
||||
//分类名替换词,替换词1&替换词2&替换词3,替换词包含英文&的用两个中文&&代替,示例:&&id=0&&&id=1
|
||||
"class_value": "ys&bd&gy&gp&dsj&dsj1&yx&zy&dmq&jilupian&1080p&4K&3d&dyzt",
|
||||
//筛选数据,json格式,参考xpath的筛选写法
|
||||
"filterdata":{},
|
||||
|
||||
//分类页面截取数据模式,0为json,其它数字为普通网页。
|
||||
"cat_mode": "1",
|
||||
//分类列表数组定位,最多支持3层,能力有限,不是所有页面都能支持
|
||||
"cat_arr_rule": "body&&table[width=388]",
|
||||
//分类片单信息jsoup与xb截取写法切换,只作用于html网页,1为jsoup写法(默认),0为xb写法
|
||||
"cat_is_jsoup":"1",
|
||||
//分类片单标题
|
||||
"cat_title": "img&&alt",
|
||||
//分类片单链接
|
||||
"cat_url": "a&&href",
|
||||
//分类片单图片,支持自定义图片链接
|
||||
"cat_pic": "img&&src",
|
||||
//分类片单副标题
|
||||
"cat_subtitle":"[align=center]&&Text",
|
||||
//分类片单链接补前缀
|
||||
"cat_prefix": "https://www.dygang.tv",
|
||||
//分类片单链接补后缀
|
||||
"cat_suffix": "",
|
||||
|
||||
//搜索请求头参数,不填则默认okhttp/3.12.11,可填MOBILE_UA或PC_UA使用内置的手机版或电脑版UA
|
||||
//多个请求头参数写法示例,键名$键值,每一组用#分开。"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok"。
|
||||
"SHeaders":"User-Agent$PC_UA#Content-Type$charset=gb2312",
|
||||
//搜索链接,搜索关键字用{wd}表示,post请求的最后面加;post
|
||||
//POST链接示例 http://www.lezhutv.com/index.php?m=vod-search;post
|
||||
"search_url": "https://www.dygang.tv/e/search/index123.php;post",
|
||||
//POST搜索body,填写搜索关键字的键值,一般常见的是searchword和wd,不是POST搜索的可留空或删除。
|
||||
"sea_PtBody":"keyboard={wd}&submit=搜+索&show=title,smalltext&tempid=1&tbname=article",
|
||||
|
||||
//搜索截取模式,0为json搜索,只支持列表在list数组里的,其它数字为网页截取。
|
||||
"search_mode": "1",
|
||||
//搜索列表数组定位,不填默认内置list,最多支持3层,能力有限,不是所有页面都能支持。
|
||||
"sea_arr_rule": "body&&table[width=388]",
|
||||
//搜索片单信息jsoup与xb截取写法切换,只作用于html网页,1为jsoup写法(默认),0为xb写法
|
||||
"sea_is_jsoup":"1",
|
||||
//搜索片单图片,支持自定义图片链接
|
||||
"sea_pic": "img&&src",
|
||||
//搜索片单标题
|
||||
"sea_title": "img&&alt",
|
||||
//搜索片单链接
|
||||
"sea_url": "a&&href",
|
||||
//搜索片单副标题
|
||||
"sea_subtitle":"",
|
||||
//搜索片单链接补前缀
|
||||
"search_prefix": "https://www.dygang.tv",
|
||||
//搜索片单链接补后缀,这个一般json搜索的需要
|
||||
"search_suffix": "",
|
||||
|
||||
//片单链接是否直接播放,0否,1分类片单链接直接播放,2详情选集链接直接播放。
|
||||
//设置成直接播放后,后面3个参数请注意该留空的请务必留空。
|
||||
"force_play": "0",
|
||||
//直接播放链接补前缀
|
||||
"play_prefix": "",
|
||||
//直接播放链接补后缀,设置为#isVideo=true#可强制识别为视频链接
|
||||
"play_suffix": "",
|
||||
//直接播放链接设置请求头,只对直链视频有效,每一组用#分开
|
||||
"play_header": "",
|
||||
|
||||
//项目信息jsoup与xb截取写法切换,1为jsoup写法(默认),0为xb写法
|
||||
"proj_is_jsoup":"0",
|
||||
//类型数据,截取前缀&&截取后缀
|
||||
"proj_cate": "",
|
||||
//年代数据,截取前缀&&截取后缀
|
||||
"proj_year": "",
|
||||
//地区数据,截取前缀&&截取后缀
|
||||
"proj_area": "",
|
||||
//演员数据,截取前缀&&截取后缀
|
||||
"proj_actor": "演 员&&</",
|
||||
//简介内容,截取前缀&&截取后缀
|
||||
"proj_plot": "简 介&&</",
|
||||
|
||||
//线路截取区域,如果不需要请把tab_title或tab_arr_rule置空或者全部不要填。
|
||||
//线路截取数组
|
||||
"tab_arr_rule": "#dede_content",
|
||||
//线路标题,截取前缀&&截取后缀
|
||||
"tab_title": "strong&&Text",
|
||||
|
||||
//列表数组截取,必须
|
||||
"list_arr_rule": "#dede_content",
|
||||
//集数数组截取,必须
|
||||
"epi_arr_rule": "table&&[href*=magnet]",
|
||||
//集数标题,截取前缀&&截取后缀
|
||||
"epi_title": "a&&Text",
|
||||
//集数链接,截取前缀&&截取后缀
|
||||
"epi_url": "a&&href",
|
||||
//选集是否反转显示
|
||||
"epi_reverse": "0",
|
||||
//集数链接补前缀
|
||||
"epiurl_prefix": "",
|
||||
//集数链接补后缀
|
||||
"epiurl_suffix": "",
|
||||
|
||||
//下面几个参数请勿乱用。否则可能会有副作用。
|
||||
//分析网页源码中有<script type="text/javascript">var player_aaaa={"flag":"play","encrypt这种源码的链接解析
|
||||
//如果网页源码里没有这种请设置为0
|
||||
"Anal_MacPlayer":"0",
|
||||
//是否开启手动嗅探,只对网页嗅探有效,0否,1是
|
||||
"ManualSniffer":"0",
|
||||
//手动嗅探视频链接关键字,每个用#隔开
|
||||
"VideoFormat":".mp4#.m3u8#.flv",
|
||||
//手动嗅探视频链接过滤关键词,每个用#隔开
|
||||
"VideoFilter":".html#=http"
|
||||
}
|
||||
2380
TVBoxOSC/tvbox/api.json
Normal file
2380
TVBoxOSC/tvbox/api.json
Normal file
File diff suppressed because it is too large
Load Diff
40
TVBoxOSC/tvbox/js/56动漫.js
Normal file
40
TVBoxOSC/tvbox/js/56动漫.js
Normal file
@ -0,0 +1,40 @@
|
||||
var rule = {
|
||||
title: '56动漫',
|
||||
host: 'https://www.56dm.cc/',
|
||||
url: 'https://www.56dm.cc/type/fyclass-fypage.html',
|
||||
searchUrl: 'https://www.56dm.cc/search/**----------fypage---.html',
|
||||
searchable: 2, //是否启用全局搜索,
|
||||
quickSearch: 0, //是否启用快速搜索,
|
||||
filterable: 0, //是否启用分类筛选,
|
||||
headers: {
|
||||
'User-Agent': 'UC_UA', // "Cookie": ""
|
||||
}, // class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
|
||||
class_parse: '.snui-header-menu-nav li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html',
|
||||
play_parse: true,
|
||||
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;
|
||||
}
|
||||
}
|
||||
`,
|
||||
limit: 6,
|
||||
推荐: '.cCBf_FAAEfbc;li;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href',
|
||||
double: true, // 推荐内容是否双层定位
|
||||
一级: '.cCBf_FAAEfbc li;a&&title;a&&data-original;.dAD_BBCI&&Text;a&&href',
|
||||
二级: {
|
||||
"title": "h1&&Text",
|
||||
"img": ".stui-content__thumb .lazyload&&data-original",
|
||||
"desc": ".cCBf_DABCcac__hcIdeE p:eq(0)&&Text;.cCBf_DABCcac__hcIdeE p:eq(1)&&Text;.cCBf_DABCcac__hcIdeE p:eq(2)&&Text;.cCBf_DABCcac__hcIdeE p:eq(3)&&Text;.cCBf_DABCcac__hcIdeE p:eq(4)&&Text",
|
||||
"content": ".detail&&Text",
|
||||
"tabs": ".channel-tab li",
|
||||
"lists": ".play-list-content:eq(#id) li"
|
||||
},
|
||||
搜索: '.cCBf_FAAEfbc__dbD;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href;.cCBf_FAAEfbc__hcIdeE&&p:eq(0) p&&Text',
|
||||
}
|
||||
61
TVBoxOSC/tvbox/js/88看球.js
Normal file
61
TVBoxOSC/tvbox/js/88看球.js
Normal file
@ -0,0 +1,61 @@
|
||||
var rule = {
|
||||
title:'88看球',
|
||||
// host:'http://www.88kanqiu.cc',
|
||||
host:'http://www.88kanqiu.bar/',
|
||||
url: "/match/fyclass/live",
|
||||
searchUrl: "",
|
||||
searchable: 0,
|
||||
quickSearch: 0,
|
||||
class_parse: ".nav-pills li;a&&Text;a&&href;/match/(\\d+)/live",
|
||||
headers: {
|
||||
"User-Agent": "PC_UA",
|
||||
},
|
||||
timeout: 5000,
|
||||
play_parse: true,
|
||||
pagecount:{"1":1,"2":1,"4":1,"22":1,"8":1,"9":1,"10":1,"14":1,"15":1,"12":1,"13":1,"16":1,"28":1,"7":1,"11":1,"33":1,"27":1,"23":1,"26":1,"3":1,"21":1,"18":1},
|
||||
lazy: `js:
|
||||
if(/embed=/.test(input)) {
|
||||
let url = input.match(/embed=(.*?)&/)[1];
|
||||
url = base64Decode(url);
|
||||
input = {
|
||||
jx:0,
|
||||
url: url.split('#')[0],
|
||||
parse: 0
|
||||
}
|
||||
} else if (/\?url=/.test(input)){
|
||||
input = {
|
||||
jx:0,
|
||||
url: input.split('?url=')[1].split('#')[0],
|
||||
parse: 0
|
||||
}
|
||||
} else {
|
||||
input
|
||||
}
|
||||
`,
|
||||
limit: 6,
|
||||
double: false,
|
||||
推荐: "*",
|
||||
一级: ".list-group .group-game-item;.d-none&&Text;img&&src;.btn&&Text;a&&href",
|
||||
二级: {
|
||||
title: ".game-info-container&&Text;.customer-navbar-nav li&&Text",
|
||||
img: "img&&src",
|
||||
desc: ";;;div.team-name:eq(0)&&Text;div.team-name:eq(1)&&Text",
|
||||
content: "div.game-time&&Text",
|
||||
tabs: "js:TABS=['实时直播']",
|
||||
lists: `js:
|
||||
LISTS = [];
|
||||
let html = request(input.replace('play', 'play-url'));
|
||||
let pdata = JSON.parse(html).data;
|
||||
pdata = pdata.slice(6);
|
||||
pdata = pdata.slice(0, -2);
|
||||
pdata = base64Decode(pdata);
|
||||
// log(pdata);
|
||||
let jo = JSON.parse(pdata).links;
|
||||
let d = jo.map(function (it) {
|
||||
return it.name + '$' + urlencode(it.url)
|
||||
});
|
||||
LISTS.push(d)
|
||||
`,
|
||||
},
|
||||
搜索: "",
|
||||
};
|
||||
109
TVBoxOSC/tvbox/js/APPV2.js
Normal file
109
TVBoxOSC/tvbox/js/APPV2.js
Normal file
@ -0,0 +1,109 @@
|
||||
/**
|
||||
* 传参 ?type=url¶ms=http://122.228.85.203:1000@泽少1
|
||||
* 传参 ?type=url¶ms=http://122.228.85.203:1000@泽少2
|
||||
*/
|
||||
|
||||
var rule = {
|
||||
title: 'APPV2[模板]',
|
||||
author: '道长',
|
||||
version: '20241012 beta1',
|
||||
update_info: `
|
||||
20241012:
|
||||
1.根据群友嗷呜的appv2模板修改成可传参源,类似采集之王用法传参
|
||||
`.trim(),
|
||||
host: '',
|
||||
url: '/api.php/app/video?tid=fyclassfyfilter&limit=20&pg=fypage',
|
||||
filter_url: '',
|
||||
filter: {},
|
||||
homeUrl: '/api.php/app/index_video',
|
||||
detailUrl: '/api.php/app/video_detail?id=fyid',
|
||||
searchUrl: '/api.php/app/search?text=**&pg=fypage',
|
||||
parseUrl: '',
|
||||
searchable: 2,
|
||||
quickSearch: 1,
|
||||
filterable: 1,
|
||||
headers: {
|
||||
'User-Agent': 'okhttp/4.1.0'
|
||||
},
|
||||
params: 'http://122.228.85.203:1000$http://122.228.85.203:1000/play?url=',
|
||||
hostJs: $js.toString(() => {
|
||||
HOST = rule.params.split('$')[0];
|
||||
}),
|
||||
预处理: $js.toString(() => {
|
||||
log(`传入参数:${rule.params}`);
|
||||
let _host = rule.params.split('$')[0];
|
||||
rule.parseUrl = rule.params.split('$')[1];
|
||||
let _url = _host.rstrip('/') + '/api.php/app/nav?token';
|
||||
let _headers = {'User-Agent': 'Dart/2.14 (dart:io)'};
|
||||
let html = request(_url, {headers: _headers});
|
||||
let data = JSON.parse(html);
|
||||
let _classes = [];
|
||||
let _filter = {};
|
||||
let _filter_url = '';
|
||||
let dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序"};
|
||||
let jsonData = data.list;
|
||||
for (let k = 0; k < jsonData.length; k++) {
|
||||
let hasNonEmptyField = false;
|
||||
let _obj = {
|
||||
type_name: jsonData[k].type_name,
|
||||
type_id: jsonData[k].type_id,
|
||||
};
|
||||
_classes.push(_obj);
|
||||
for (let key in dy) {
|
||||
if (key in jsonData[k].type_extend && jsonData[k].type_extend[key].trim() !== "") {
|
||||
hasNonEmptyField = true;
|
||||
break
|
||||
}
|
||||
}
|
||||
if (hasNonEmptyField) {
|
||||
_filter[String(jsonData[k].type_id)] = [];
|
||||
for (let dkey in jsonData[k].type_extend) {
|
||||
if (dkey in dy && jsonData[k].type_extend[dkey].trim() !== "") {
|
||||
if (k === 0) {
|
||||
_filter_url += `&${dkey}={{fl.${dkey}}}`
|
||||
}
|
||||
let values = jsonData[k].type_extend[dkey].split(',');
|
||||
let valueArray = values.map(value => ({"n": value.trim(), "v": value.trim()}));
|
||||
_filter[String(jsonData[k].type_id)].push({"key": dkey, "name": dy[dkey], "value": valueArray})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
rule.classes = _classes;
|
||||
rule.filter = _filter;
|
||||
rule.filter_url = _filter_url;
|
||||
}),
|
||||
class_parse: $js.toString(() => {
|
||||
input = rule.classes;
|
||||
}),
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
if (!/^http/.test(input)) {
|
||||
input = rule.parseUrl + input
|
||||
} else {
|
||||
input = {
|
||||
url: input,
|
||||
parse: 0,
|
||||
header: ''
|
||||
}
|
||||
}
|
||||
|
||||
}),
|
||||
推荐: $js.toString(() => {
|
||||
let data = JSON.parse(request(input)).list;
|
||||
let com = [];
|
||||
data.forEach(item => {
|
||||
if (Array.isArray(item.vlist) && item.vlist.length !== 0) {
|
||||
com = com.concat(item.vlist)
|
||||
}
|
||||
})
|
||||
VODS = com
|
||||
}),
|
||||
一级: $js.toString(() => {
|
||||
VODS = JSON.parse(request(input)).list
|
||||
}),
|
||||
二级: $js.toString(() => {
|
||||
VOD = JSON.parse(request(input)).data
|
||||
}),
|
||||
搜索: '*',
|
||||
}
|
||||
169
TVBoxOSC/tvbox/js/Anime1.js
Normal file
169
TVBoxOSC/tvbox/js/Anime1.js
Normal file
@ -0,0 +1,169 @@
|
||||
// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
|
||||
// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
|
||||
// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
|
||||
// 3个set-Cookie
|
||||
|
||||
var rule = {
|
||||
title:'Anime1动畫',
|
||||
host:'https://anime1.me',
|
||||
url: '/fyclass',
|
||||
detailUrl:'/?cat=fyid',
|
||||
searchUrl: '/page/fypage?s=**',
|
||||
searchable:2,
|
||||
quickSearch:0,
|
||||
headers:{'User-Agent': 'PC_UA'},
|
||||
timeout:5000,
|
||||
class_name:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&更早',
|
||||
class_url:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&2017',
|
||||
play_parse:true,
|
||||
lazy:`js:
|
||||
var apiurl = 'https://v.anime1.me/api';
|
||||
var html = request(apiurl, {
|
||||
headers: {
|
||||
'Referer': HOST,
|
||||
},
|
||||
body: 'd=' + input,
|
||||
method: 'POST',
|
||||
withHeaders: true
|
||||
});
|
||||
let json = JSON.parse(html);
|
||||
print(json);
|
||||
log(Object.keys(json));
|
||||
let setCk = Object.keys(json).filter(it => it.toLowerCase() === "set-cookie");
|
||||
let cookie = setCk ? json[setCk] : "";
|
||||
// 3个set-Cookie
|
||||
if (Array.isArray(cookie)) {
|
||||
cookie = cookie.join(';');
|
||||
}
|
||||
cookie = cookie.split(';').filter(function(it) {
|
||||
return ['e', 'p', 'h'].includes(it.split('=')[0])
|
||||
}).join(';');
|
||||
log(cookie);
|
||||
var purl = JSON.parse(json.body).s[0].src;
|
||||
if (purl.startsWith('/')) {
|
||||
purl = 'https:' + purl
|
||||
}
|
||||
input = {
|
||||
jx: 0,
|
||||
url: purl,
|
||||
parse: 0,
|
||||
header: JSON.stringify({
|
||||
'referer': HOST,
|
||||
'Cookie': cookie,
|
||||
'user-agent': PC_UA
|
||||
}),
|
||||
}
|
||||
`,
|
||||
limit:6,
|
||||
推荐: `js:
|
||||
var d = [];
|
||||
function stripHtmlTag(src) {
|
||||
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
|
||||
}
|
||||
var timestamp = new Date().getTime();
|
||||
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
|
||||
var list = JSON.parse(json);
|
||||
let playKeys = Object.values(list).filter(function(x) {
|
||||
return x[2].includes('連載中');
|
||||
});
|
||||
playKeys.forEach(function(it) {
|
||||
d.push({
|
||||
title: stripHtmlTag(it[1]),
|
||||
img: 'https://sta.anicdn.com/playerImg/8.jpg',
|
||||
desc: it[2],
|
||||
url: it[0],
|
||||
});
|
||||
});
|
||||
setResult(d);
|
||||
`,
|
||||
一级: `js:
|
||||
var d = [];
|
||||
function stripHtmlTag(src) {
|
||||
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
|
||||
}
|
||||
var timestamp = new Date().getTime();
|
||||
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
|
||||
var list = JSON.parse(json);
|
||||
let playKeys = Object.values(list).filter(function(x) {
|
||||
if (MY_CATE === '連載中') return x[2].includes(MY_CATE);
|
||||
else if (MY_CATE === '2017') return x[3] <= MY_CATE;
|
||||
else return x[3] == MY_CATE;
|
||||
});
|
||||
playKeys.forEach(function(it) {
|
||||
d.push({
|
||||
title: stripHtmlTag(it[1]),
|
||||
img: 'https://sta.anicdn.com/playerImg/8.jpg',
|
||||
desc: it[2],
|
||||
url: it[0],
|
||||
});
|
||||
});
|
||||
setResult(d);
|
||||
`,
|
||||
二级: `js:
|
||||
pdfh = jsp.pdfh; pdfa = jsp.pdfa; pd = jsp.pd;
|
||||
var html = request(input);
|
||||
var timestamp = new Date().getTime();
|
||||
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
|
||||
var list = JSON.parse(json);
|
||||
var vid = input.split('=')[1];
|
||||
let playKeys = Object.values(list).find(function(x) {
|
||||
return x[0] === parseInt(vid);
|
||||
});
|
||||
VOD = {
|
||||
vod_pic: 'https://sta.anicdn.com/playerImg/8.jpg',
|
||||
vod_id: playKeys[0],
|
||||
vod_name: playKeys[1],
|
||||
vod_content: playKeys[2],
|
||||
vod_year: playKeys[3],
|
||||
type_name: playKeys[4],
|
||||
vod_actor: playKeys[5],
|
||||
};
|
||||
var pageurl = pd(html, '.cat-links&&a&&href');
|
||||
var pagenum = 1;
|
||||
let vod_tab_list = [];
|
||||
let vlist = [];
|
||||
for (let p = 1; p < parseInt(pagenum) + 1; p++) {
|
||||
let phtml = request(pageurl + '/page/' + pagenum);
|
||||
let new_vod_list = [];
|
||||
let vodList = [];
|
||||
vodList = pdfa(phtml, '.site-main&&article');
|
||||
for (let i = 0; i < vodList.length; i++) {
|
||||
let it = vodList[i];
|
||||
let ptitle = pdfh(it, '.entry-title&&Text').replace(/\\[(.*)\\]/, '$1');
|
||||
let purl = pd(it, '.video-js&&data-apireq');
|
||||
new_vod_list.push(ptitle + '$' + purl);
|
||||
}
|
||||
vlist = vlist.concat(new_vod_list);
|
||||
try {
|
||||
pagenum = pd(phtml, '.nav-previous&&a&&href').split('/page/')[1];
|
||||
} catch(e) {}
|
||||
}
|
||||
let vlist2 = vlist.reverse().join("#");
|
||||
vod_tab_list.push(vlist2);
|
||||
VOD.vod_play_from = '在线播放';
|
||||
VOD.vod_play_url = vod_tab_list.join("$$$");
|
||||
`,
|
||||
搜索: `js:
|
||||
var d = [];
|
||||
function stripHtmlTag(src) {
|
||||
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
|
||||
}
|
||||
var timestamp = new Date().getTime();
|
||||
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
|
||||
var list = JSON.parse(json);
|
||||
var wd = input.split('=')[1];
|
||||
let playKeys = Object.values(list).filter(function(x) {
|
||||
return x[1].includes(wd);
|
||||
});
|
||||
log(playKeys);
|
||||
playKeys.forEach(function(it) {
|
||||
d.push({
|
||||
title: stripHtmlTag(it[1]),
|
||||
img: 'https://sta.anicdn.com/playerImg/8.jpg',
|
||||
desc: it[2],
|
||||
url: it[0],
|
||||
});
|
||||
});
|
||||
setResult(d);
|
||||
`,
|
||||
}
|
||||
1013
TVBoxOSC/tvbox/js/NT动漫.js
Normal file
1013
TVBoxOSC/tvbox/js/NT动漫.js
Normal file
File diff suppressed because it is too large
Load Diff
13
TVBoxOSC/tvbox/js/NyaFun.js
Normal file
13
TVBoxOSC/tvbox/js/NyaFun.js
Normal file
@ -0,0 +1,13 @@
|
||||
muban.短视2.二级.img = '.detail-pic&&img&&data-src';
|
||||
var rule = {
|
||||
title: 'NyaFun',
|
||||
模板:'短视2',
|
||||
host: 'https://www.nyafun.net',
|
||||
homeUrl:'/map.html',
|
||||
url: '/index.php/api/vod#type=fyclass&page=fypage',
|
||||
class_name:'番剧&剧场',
|
||||
class_url:'2&1',
|
||||
detailUrl:'/bangumi/fyid.html',
|
||||
推荐:'.border-box .public-list-box;a&&title;.lazy&&data-src;.public-list-prb&&Text;a&&href',
|
||||
double: false, // 推荐内容是否双层定位
|
||||
}
|
||||
1
TVBoxOSC/tvbox/js/drpy-core-lite.min.js
vendored
Normal file
1
TVBoxOSC/tvbox/js/drpy-core-lite.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3201
TVBoxOSC/tvbox/js/drpy2.min.js
vendored
Normal file
3201
TVBoxOSC/tvbox/js/drpy2.min.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
843
TVBoxOSC/tvbox/js/三六零.js
Normal file
843
TVBoxOSC/tvbox/js/三六零.js
Normal file
@ -0,0 +1,843 @@
|
||||
var rule = {
|
||||
title: '360影视[官]',
|
||||
host: 'https://www.360kan.com',
|
||||
homeUrl: 'https://api.web.360kan.com/v1/rank?cat=2&size=9',
|
||||
detailUrl: 'https://api.web.360kan.com/v1/detail?cat=fyclass&id=fyid',
|
||||
searchUrl: 'https://api.so.360kan.com/index?force_v=1&kw=**&from=&pageno=fypage&v_ap=1&tab=all',
|
||||
url: 'https://api.web.360kan.com/v1/fyfilter&size=35&pageno=fypage&callback=',
|
||||
filterable: 1,
|
||||
filter_url: 'filter/list?catid=fyclass&rank={{fl.排序}}&cat={{fl.类型}}&year={{fl.年代}}&area={{fl.地区}}',
|
||||
filter: {
|
||||
"1": [{
|
||||
"key": "类型",
|
||||
"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": "地区",
|
||||
"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": "其他"
|
||||
}]
|
||||
}, {
|
||||
"key": "年代",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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": "2010",
|
||||
"v": "2010"
|
||||
}, {
|
||||
"n": "2009",
|
||||
"v": "2009"
|
||||
}, {
|
||||
"n": "2008",
|
||||
"v": "2008"
|
||||
}, {
|
||||
"n": "2007",
|
||||
"v": "2007"
|
||||
}, {
|
||||
"n": "更早",
|
||||
"v": "lt_year"
|
||||
}]
|
||||
}, {
|
||||
"key": "排序",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最近热映",
|
||||
"v": "rankhot"
|
||||
}, {
|
||||
"n": "最近上映",
|
||||
"v": "ranklatest"
|
||||
}, {
|
||||
"n": "最受好评",
|
||||
"v": "rankpoint"
|
||||
}]
|
||||
}],
|
||||
"2": [{
|
||||
"key": "类型",
|
||||
"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": "其他"
|
||||
}]
|
||||
}, {
|
||||
"key": "地区",
|
||||
"name": "地区",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "内地",
|
||||
"v": "内地"
|
||||
}, {
|
||||
"n": "中国香港",
|
||||
"v": "香港"
|
||||
}, {
|
||||
"n": "中国台湾",
|
||||
"v": "台湾"
|
||||
}, {
|
||||
"n": "泰国",
|
||||
"v": "泰国"
|
||||
}, {
|
||||
"n": "日本",
|
||||
"v": "日本"
|
||||
}, {
|
||||
"n": "韩国",
|
||||
"v": "韩国"
|
||||
}, {
|
||||
"n": "美国",
|
||||
"v": "美国"
|
||||
}, {
|
||||
"n": "英国",
|
||||
"v": "英国"
|
||||
}, {
|
||||
"n": "新加坡",
|
||||
"v": "新加坡"
|
||||
}]
|
||||
}, {
|
||||
"key": "年代",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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": "2010",
|
||||
"v": "2010"
|
||||
}, {
|
||||
"n": "2009",
|
||||
"v": "2009"
|
||||
}, {
|
||||
"n": "2008",
|
||||
"v": "2008"
|
||||
}, {
|
||||
"n": "2007",
|
||||
"v": "2007"
|
||||
}, {
|
||||
"n": "更早",
|
||||
"v": "lt_year"
|
||||
}]
|
||||
}, {
|
||||
"key": "排序",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最近热映",
|
||||
"v": "rankhot"
|
||||
}, {
|
||||
"n": "最近上映",
|
||||
"v": "ranklatest"
|
||||
}, {
|
||||
"n": "最受好评",
|
||||
"v": "rankpoint"
|
||||
}]
|
||||
}],
|
||||
"3": [{
|
||||
"key": "类型",
|
||||
"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": "其他"
|
||||
}]
|
||||
}, {
|
||||
"key": "地区",
|
||||
"name": "地区",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "内地",
|
||||
"v": "大陆"
|
||||
}, {
|
||||
"n": "中国香港",
|
||||
"v": "香港"
|
||||
}, {
|
||||
"n": "中国台湾",
|
||||
"v": "台湾"
|
||||
}, {
|
||||
"n": "日本",
|
||||
"v": "日本"
|
||||
}, {
|
||||
"n": "欧美",
|
||||
"v": "欧美"
|
||||
}]
|
||||
}, {
|
||||
"key": "排序",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最近热映",
|
||||
"v": "rankhot"
|
||||
}, {
|
||||
"n": "最近上映",
|
||||
"v": "ranklatest"
|
||||
}]
|
||||
}],
|
||||
"4": [{
|
||||
"key": "类型",
|
||||
"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": "动作"
|
||||
}, {
|
||||
"n": "社会",
|
||||
"v": "社会"
|
||||
}, {
|
||||
"n": "友情",
|
||||
"v": "友情"
|
||||
}, {
|
||||
"n": "真人版",
|
||||
"v": "真人版"
|
||||
}, {
|
||||
"n": "电影版",
|
||||
"v": "电影版"
|
||||
}, {
|
||||
"n": "OVA版",
|
||||
"v": "OVA版"
|
||||
}, {
|
||||
"n": "TV版",
|
||||
"v": "TV版"
|
||||
}, {
|
||||
"n": "新番动画",
|
||||
"v": "新番动画"
|
||||
}, {
|
||||
"n": "完结动画",
|
||||
"v": "完结动画"
|
||||
}]
|
||||
}, {
|
||||
"key": "地区",
|
||||
"name": "地区",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "内地",
|
||||
"v": "大陆"
|
||||
}, {
|
||||
"n": "日本",
|
||||
"v": "日本"
|
||||
}, {
|
||||
"n": "美国",
|
||||
"v": "美国"
|
||||
}]
|
||||
}, {
|
||||
"key": "年代",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}, {
|
||||
"n": "更早",
|
||||
"v": "更早"
|
||||
}]
|
||||
}, {
|
||||
"key": "排序",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最近热映",
|
||||
"v": "rankhot"
|
||||
}, {
|
||||
"n": "最近上映",
|
||||
"v": "ranklatest"
|
||||
}]
|
||||
}]
|
||||
},
|
||||
filter_def: {},
|
||||
headers: {
|
||||
'User-Agent': 'MOBILE_UA'
|
||||
},
|
||||
timeout: 5000,
|
||||
class_name: '电视剧&电影&综艺&动漫',
|
||||
class_url: '2&1&3&4',
|
||||
limit: 5,
|
||||
multi: 1,
|
||||
searchable: 2,
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
try {
|
||||
let api = "" + input.split("?")[0];
|
||||
console.log(api);
|
||||
let response = fetch(api, {
|
||||
method: 'get',
|
||||
headers: {
|
||||
'User-Agent': 'okhttp/3.14.9',
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
});
|
||||
let bata = JSON.parse(response);
|
||||
if (bata.url.includes("qq,qiyi,imgo,youku,leshi,bilibili1,m1905")) {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: bata.url,
|
||||
jx: 0,
|
||||
danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
|
||||
};
|
||||
} else {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: input.split("?")[0],
|
||||
jx: 1,
|
||||
danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
|
||||
};
|
||||
}
|
||||
} catch {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: input.split("?")[0],
|
||||
jx: 1,
|
||||
danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0]
|
||||
};
|
||||
}
|
||||
}),
|
||||
// 疑似t4专用的
|
||||
// lazy:'js:input={parse: 1, playUrl: "", jx: 1, url: input.split("?")[0]}',
|
||||
// 手动调用解析请求json的url,此lazy不方便
|
||||
// lazy:'js:input="https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url="+input.split("?")[0];log(input);let html=JSON.parse(request(input));log(html);input=html.url||input',
|
||||
推荐: 'json:data;title;cover;comment;cat+ent_id;description',
|
||||
一级: 'json:data.movies;title;cover;pubdate;id;description',
|
||||
二级: '',
|
||||
二级: $js.toString(() => {
|
||||
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;
|
||||
let 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 = 50;
|
||||
let vod_play = {};
|
||||
let sites = data.playlink_sites;
|
||||
sites.forEach(function(site) {
|
||||
let playList = "";
|
||||
let vodItems = [];
|
||||
print(data)
|
||||
if (data.allupinfo) {
|
||||
let total = parseInt(data.allupinfo[site]);
|
||||
print(total)
|
||||
for (let j = 1; j < total; j += delta) {
|
||||
let end = Math.min(total, j + delta - 1);
|
||||
print(end)
|
||||
let url2 = buildUrl(input, {
|
||||
start: j,
|
||||
end: end,
|
||||
site: site
|
||||
});
|
||||
let vod_data = JSON.parse(fetch(url2), fetch_params).data;
|
||||
if (vod_data != null) {
|
||||
if (vod_data.allepidetail) {
|
||||
vod_data = vod_data.allepidetail[site];
|
||||
vod_data.forEach(function(item, index) {
|
||||
vodItems.push((item.playlink_num || "") + "$" + urlDeal(item.url || ""))
|
||||
})
|
||||
} else {
|
||||
vod_data = vod_data.defaultepisode;
|
||||
vod_data.forEach(function(item, index) {
|
||||
vodItems.push((item.period || "") + (item.name || "") + "$" + urlDeal(item.url) || "")
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let item = data.playlinksdetail[site];
|
||||
vodItems.push((item.sort || "") + "$" + urlDeal(item.default_url || ""))
|
||||
}
|
||||
if (vodItems.length > 0) {
|
||||
playList = vodItems.join("#")
|
||||
}
|
||||
if (playList.length < 1) {
|
||||
return
|
||||
}
|
||||
vod_play[site] = playList
|
||||
});
|
||||
let tabs = Object.keys(vod_play);
|
||||
let playUrls = [];
|
||||
for (let id in tabs) {
|
||||
print("id:" + id);
|
||||
playUrls.push(vod_play[tabs[id]])
|
||||
}
|
||||
if (tabs.length > 0) {
|
||||
let vod_play_from = tabs.join("$$$");
|
||||
let vod_play_url = playUrls.join("$$$");
|
||||
base_vod.vod_play_from = vod_play_from;
|
||||
base_vod.vod_play_url = vod_play_url
|
||||
}
|
||||
VOD = base_vod;
|
||||
}),
|
||||
搜索: 'json:data.longData.rows;titleTxt||titlealias;cover;cat_name;cat_id+en_id;description',
|
||||
}
|
||||
113
TVBoxOSC/tvbox/js/人人电影网.js
Normal file
113
TVBoxOSC/tvbox/js/人人电影网.js
Normal file
@ -0,0 +1,113 @@
|
||||
var rule = {
|
||||
title: '人人电影网',
|
||||
host: 'https://www.rrdynb.com',
|
||||
homeUrl: '/',
|
||||
url: '/fyclass_fypage.html?',
|
||||
filter_url: '{{fl.class}}',
|
||||
filter: {},
|
||||
searchUrl: '/plus/search.php?q=**&pagesize=10&submit=',
|
||||
searchable: 2,
|
||||
quickSearch: 1,
|
||||
filterable: 0,
|
||||
headers: {
|
||||
'User-Agent': 'PC_UA',
|
||||
'Cookie': ''
|
||||
},
|
||||
timeout: 5000,
|
||||
class_name: '影视&电视剧&老电影&动漫',
|
||||
class_url: 'movie/list_2&dianshiju/list_6&zongyi/list_10&dongman/list_13',
|
||||
play_parse: true,
|
||||
play_json: [{
|
||||
re: '*',
|
||||
json: {
|
||||
parse: 0,
|
||||
jx: 0
|
||||
}
|
||||
}],
|
||||
lazy: "js:\n input = 'push://' + input;\n ",
|
||||
limit: 6,
|
||||
推荐: '',
|
||||
一级: 'li:has(img);img&&alt;img&&data-original;;a&&href',
|
||||
二级: {
|
||||
title: "h1&&Text",
|
||||
img: "img&&src",
|
||||
desc: ".info:eq(0)&&Text",
|
||||
content: ".content&&Text",
|
||||
tabs: `js:
|
||||
pdfh = jsp.pdfh;
|
||||
pdfa = jsp.pdfa;
|
||||
pd = jsp.pd;
|
||||
TABS = [];
|
||||
let d = pdfa(html, 'span a');
|
||||
let tabsq = [];
|
||||
let tabsb = [];
|
||||
let tabsm = false;
|
||||
let tabse = false;
|
||||
|
||||
d.forEach(function(it) {
|
||||
let burl = pdfh(it, 'a&&href');
|
||||
if (burl.includes("pan.quark.cn/s/")) {
|
||||
tabsq.push("夸克网盘");
|
||||
} else if (burl.includes("pan.baidu.com/s/")) {
|
||||
tabsb.push("百度网盘");
|
||||
} else if (burl.startsWith("magnet")) {
|
||||
tabsm = true;
|
||||
} else if (burl.startsWith("ed2k")) {
|
||||
tabse = true;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if (tabsb.length > 0) TABS.push("百度网盘");
|
||||
if (tabsq.length > 0) TABS.push("夸克网盘");
|
||||
if (tabsm) TABS.push("磁力");
|
||||
if (tabse) TABS.push("电驴");
|
||||
log('生成TABS: ' + JSON.stringify(TABS));`,
|
||||
lists: `js:
|
||||
pdfh = jsp.pdfh;
|
||||
pdfa = jsp.pdfa;
|
||||
pd = jsp.pd;
|
||||
LISTS = [];
|
||||
let d = pdfa(html, 'span a');
|
||||
let listm = [];
|
||||
let liste = [];
|
||||
let listq = [];
|
||||
let listb = [];
|
||||
|
||||
d.forEach(function(it) {
|
||||
let burl = pdfh(it, 'a&&href');
|
||||
let title = pdfh(it, 'a&&Text');
|
||||
let loopresult = title + '$' + burl;
|
||||
|
||||
if (burl.includes("pan.quark.cn/s/")) {
|
||||
burl = burl.split("?")[0];
|
||||
loopresult = title + '$' + burl;
|
||||
listq.push(loopresult);
|
||||
} else if (burl.includes("pan.baidu.com/s/")) {
|
||||
let codeMatch = title.match(/提取码[::]?\s*(\w{4})|(\w{4})(?=提取|百度|网盘)/i);
|
||||
if (codeMatch) {
|
||||
let code = codeMatch[1] || codeMatch[2];
|
||||
burl += '#' + code;
|
||||
}
|
||||
loopresult = title + '$' + burl;
|
||||
listb.push(loopresult);
|
||||
} else if (burl.startsWith("magnet")) {
|
||||
listm.push(loopresult);
|
||||
} else if (burl.startsWith("ed2k")) {
|
||||
liste.push(loopresult);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if (listb.length > 0) LISTS.push(listb);
|
||||
if (listq.length > 0) LISTS.push(listq);
|
||||
if (listm.length > 0) LISTS.push(listm);
|
||||
if (liste.length > 0) LISTS.push(liste);
|
||||
|
||||
|
||||
if (LISTS.length === 0 && listq.length > 0) {
|
||||
LISTS = [listq];
|
||||
}`,
|
||||
},
|
||||
搜索: 'li:has(img);h2&&Text;img&&data-original;.tags&&Text;a&&href',
|
||||
};
|
||||
2299
TVBoxOSC/tvbox/js/优酷视频.js
Normal file
2299
TVBoxOSC/tvbox/js/优酷视频.js
Normal file
File diff suppressed because it is too large
Load Diff
12
TVBoxOSC/tvbox/js/剧圈圈.js
Normal file
12
TVBoxOSC/tvbox/js/剧圈圈.js
Normal file
@ -0,0 +1,12 @@
|
||||
Object.assign(muban.mxpro.二级, {
|
||||
tab_text: 'div--small&&Text',
|
||||
});
|
||||
var rule = {
|
||||
模板: 'mxpro',
|
||||
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: '今日更新|热榜',
|
||||
}
|
||||
1100
TVBoxOSC/tvbox/js/动漫岛.js
Normal file
1100
TVBoxOSC/tvbox/js/动漫岛.js
Normal file
File diff suppressed because it is too large
Load Diff
64
TVBoxOSC/tvbox/js/动漫巴士.js
Normal file
64
TVBoxOSC/tvbox/js/动漫巴士.js
Normal file
@ -0,0 +1,64 @@
|
||||
var rule = {
|
||||
author: '小可乐/240526/第一版',
|
||||
title: '动漫巴士[漫]',
|
||||
host: 'http://dm84.site',
|
||||
hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":MOBILE_UA}});let src= jsp.pdfh(html,"ul&&a:eq(0)&&href");print(src);HOST=src',
|
||||
headers: {
|
||||
'User-Agent': 'MOBILE_UA'
|
||||
},
|
||||
编码: 'utf-8',
|
||||
timeout: 5000,
|
||||
|
||||
homeUrl: '/',
|
||||
url: '/show-fyclass--fyfilter-fypage.html',
|
||||
filter_url: '{{fl.by}}-{{fl.class}}--{{fl.year}}',
|
||||
detailUrl: '',
|
||||
searchUrl: '/s-**---------fypage.html',
|
||||
searchable: 1,
|
||||
quickSearch: 1,
|
||||
filterable: 1,
|
||||
|
||||
class_name: '国产动漫&日本动漫&欧美动漫&电影',
|
||||
class_url: '1&2&3&4',
|
||||
filter_def: {},
|
||||
|
||||
proxy_rule: '',
|
||||
sniffer: 0,
|
||||
isVideo: '',
|
||||
play_parse: true,
|
||||
parse_url: '',
|
||||
lazy: `js:
|
||||
let html = request(input);
|
||||
let kurl = pdfh(html,'body&&iframe').match(/src="(.*?)"/)[1];
|
||||
input= kurl
|
||||
`,
|
||||
|
||||
limit: 9,
|
||||
double: false,
|
||||
推荐: '*',
|
||||
//列表;标题;图片;描述;链接;详情(可不写)
|
||||
一级: '.v_list li;a&&title;a&&data-bg;.desc&&Text;a&&href',
|
||||
二级: {
|
||||
//名称;类型
|
||||
"title": "h1&&Text;meta[name*=class]&&content",
|
||||
//图片
|
||||
"img": "img&&src",
|
||||
//主要描述;年份;地区;演员;导演
|
||||
"desc": "meta[name*=update_date]&&content;meta[name*=release_date]&&content;meta[name*=area]&&content;meta[name*=actor]&&content;meta[name*=director]&&content",
|
||||
//简介
|
||||
"content": "p:eq(-2)&&Text",
|
||||
//线路数组
|
||||
"tabs": ".tab_control&&li",
|
||||
//线路标题
|
||||
"tab_text": "body&&Text",
|
||||
//播放数组 选集列表
|
||||
"lists": ".play_list:eq(#id)&&a",
|
||||
//选集标题
|
||||
"list_text": "body&&Text",
|
||||
//选集链接
|
||||
"list_url": "a&&href"
|
||||
},
|
||||
搜索: '*',
|
||||
|
||||
filter: 'H4sIAAAAAAAAA+2WbUsqQRTH3+/HmNe+0LWn21eJXlgIRU+Q3UBEsLTaCrYtSm9cb2RQ2YOVFUFa9mWcGf0Wjc6cMxPFstDlcgXf7e/39+zo2XPUlEUiZHTMSpGZeJKMksnZWCJBQmQ+NhcXyKt1erQteDk2+1OIsRSZF5quldvZckcLIOmQsqcb9LmurALImPOL5QsqUwAZd3O6TgFmF2+tpy3IJGB2vmvUScDzKmfNxjGcJwHrspVWKQN1EiBrZV55w1WZArynd8Svd+GeEvCzb5VZZoW9XPF97ICp0uPpEDY5GY8t6h6zwlO78Biwx3bYHlCue2n4qPZR00e0j5je1t42fVj7sOEjP9CLS8OPaD9i+mHth00/pP2Q6Qe1H/zYr4mk0S13j9Z2PnVLN1HA0rR4Kdy5Wauxu32VTE0vJfSzvs1RZ10licmFxXjnWGs8ZBH7r+3E+l778AImQkKQnfDbJeq59OYKMgl6Dqv0rYAT2AU877hEf1fgPAlBdoIVa+LdQZ2EIDvBVq95HjMJmN3XWc6BTAK+l8MG9SBTgHUrHsvkoU4CZm6Ze/A8Fei6be5Usa4LmD2U2n9O+MElxMj9re2prY3+z1vr92vlW+e3mT7b9+UW9ee5l+Z54F/Ms/ib0nwt6v8sHfj2POeLdPMc6iQE+eb3nWenyrJrcJ6E/jz3zjxb6XeqCRqqbAwAAA=='
|
||||
}
|
||||
28
TVBoxOSC/tvbox/js/动画片大全.js
Normal file
28
TVBoxOSC/tvbox/js/动画片大全.js
Normal file
@ -0,0 +1,28 @@
|
||||
var rule = {
|
||||
title: '动画片大全',
|
||||
host: 'https://www.dhpdq2.com/',
|
||||
url: 'https://www.dhpdq2.com/katong/fyclass-fypage/',
|
||||
searchUrl: '/vodsearch/**----------fypage---/',
|
||||
class_parse: '.c_class li;a&&Text;a&&href;.*/(.*?)/',
|
||||
searchable: 2,
|
||||
quickSearch: 0,
|
||||
filterable: 0,
|
||||
headers: {
|
||||
'User-Agent': 'MOBILE_UA',
|
||||
},
|
||||
play_parse: true,
|
||||
lazy: '',
|
||||
limit: 6,
|
||||
推荐: '.stui-vodlist;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
|
||||
double: true,
|
||||
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
|
||||
二级: {
|
||||
title: 'h1&&Text;.detail_list&&ul:eq(1)&&li&&a:eq(2)&&Text',
|
||||
img: '.vodlist_thumb&&data-original',
|
||||
desc: '.playinfo&&p:eq(0)&&Text;.playinfo&&p:eq(1)&&Text;.playinfo&&p:eq(2)&&Text;.playinfo&&p:eq(3)&&Text',
|
||||
content: '.content:eq(1)',
|
||||
tabs: '.relatesdh .title h3',
|
||||
lists: '.relatesdh:eq(#id) li',
|
||||
},
|
||||
搜索: '*',
|
||||
}
|
||||
1127
TVBoxOSC/tvbox/js/去看吧.js
Normal file
1127
TVBoxOSC/tvbox/js/去看吧.js
Normal file
File diff suppressed because it is too large
Load Diff
52
TVBoxOSC/tvbox/js/双星.js
Normal file
52
TVBoxOSC/tvbox/js/双星.js
Normal file
@ -0,0 +1,52 @@
|
||||
var rule = {
|
||||
title: '双子星',
|
||||
host: 'https://1.star2.cn',
|
||||
hostJs: '',
|
||||
headers: {
|
||||
'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36',
|
||||
},
|
||||
编码: 'utf-8',
|
||||
timeout: 5000,
|
||||
url: 'https://1.star2.cn/fyclass/',
|
||||
filter_url: '',
|
||||
detailUrl: '',
|
||||
searchUrl: 'https://1.star2.cn/search/?keyword=**',
|
||||
searchable: 1,
|
||||
quickSearch: 1,
|
||||
filterable: 1,
|
||||
class_name: '短剧&国剧&综艺&电影&韩日&英美&外剧&动漫',
|
||||
class_url: 'dj&ju&zy&mv&rh&ym&wj&dm',
|
||||
proxy_rule: '',
|
||||
sniffer: false,
|
||||
isVideo: '',
|
||||
play_parse: true,
|
||||
parse_url: '',
|
||||
lazy: "js:\n input = 'push://' + input;\n ",
|
||||
limit: 9,
|
||||
double: false,
|
||||
推荐: '*',
|
||||
一级: 'js:\n let html = fetch(input);\n let list = pdfa(html, ".erx-list&&li");\n VODS = list.map(x => {\n return {\n vod_name: pdfh(x, "a&&Text"),\n vod_pic: \'https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1746269827120/1.jpeg\',\n vod_remarks: pdfh(x, "a&&Text"),\n vod_content: pdfh(x, "a&&Text"),\n vod_id: pdfh(x, "a&&href")\n }\n });\n ',
|
||||
二级: {
|
||||
title: 'h1&&Text',
|
||||
img: 'https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1746269827120/1.jpeg',
|
||||
desc: '.card-text:eq(2)&&Text;;;;',
|
||||
content: '.card-text:eq(0)&&Text',
|
||||
tabs: "js:TABS = ['双星']",
|
||||
lists: "js:\n LISTS = [];\n let lists1 = pdfa(html, '.dlipp-cont-bd').map(it => {\n let _tt = pdfh(it, 'a&&Text');\n let _uu = pdfh(it, 'a&&href');\n return _tt + '$' + _uu;\n });\n LISTS.push(lists1);\n ",
|
||||
},
|
||||
搜索: 'js:\n let html = fetch(input);\n let list = pdfa(html, ".erx-list&&li");\n VODS = list.map(x => {\n return {\n vod_name: pdfh(x, "a&&Text"),\n vod_pic: \'https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1746269827120/1.jpeg\', \n vod_remarks: pdfh(x, "a&&Text"),\n vod_content: pdfh(x, "a&&Text"),\n vod_id: pdfh(x, "a&&href")\n }\n });\n ',
|
||||
cate_exclude: '首页|留言|APP|下载|资讯|新闻|动态',
|
||||
tab_exclude: '猜你|喜欢|下载|剧情|榜|评论',
|
||||
类型: '影视',
|
||||
homeUrl: 'https://1.star2.cn',
|
||||
二级访问前: '',
|
||||
encoding: 'utf-8',
|
||||
search_encoding: '',
|
||||
图片来源: '',
|
||||
图片替换: '',
|
||||
play_json: [],
|
||||
pagecount: {},
|
||||
tab_remove: [],
|
||||
tab_order: [],
|
||||
tab_rename: {},
|
||||
}
|
||||
1164
TVBoxOSC/tvbox/js/奇米动漫.js
Normal file
1164
TVBoxOSC/tvbox/js/奇米动漫.js
Normal file
File diff suppressed because it is too large
Load Diff
29
TVBoxOSC/tvbox/js/好看动漫.js
Normal file
29
TVBoxOSC/tvbox/js/好看动漫.js
Normal file
@ -0,0 +1,29 @@
|
||||
var rule = {
|
||||
title: '好看动漫',
|
||||
host: 'https://www.youjiula.com/',
|
||||
url: 'https://www.youjiula.com/youjiu/fyclass-fypage.html',
|
||||
searchUrl: 'https://www.youjiula.com/search.php?page=fypage&searchword=**&searchtype=',
|
||||
searchable: 2, //是否启用全局搜索,
|
||||
quickSearch: 0, //是否启用快速搜索,
|
||||
filterable: 0, //是否启用分类筛选,
|
||||
headers: {
|
||||
'User-Agent': 'UC_UA', // "Cookie": ""
|
||||
}, // class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
|
||||
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
|
||||
play_parse: true,
|
||||
lazy: '',
|
||||
limit: 6,
|
||||
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
|
||||
double: true, // 推荐内容是否双层定位
|
||||
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
|
||||
二级: {
|
||||
"title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
|
||||
"img": ".stui-content__thumb .lazyload&&data-original",
|
||||
"desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
|
||||
"content": "#desc&&Text",
|
||||
"tabs": ".stui-pannel-box h3",
|
||||
"lists": ".stui-content__playlist:eq(#id) li"
|
||||
},
|
||||
搜索: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
|
||||
|
||||
}
|
||||
278
TVBoxOSC/tvbox/js/异世界.js
Normal file
278
TVBoxOSC/tvbox/js/异世界.js
Normal file
@ -0,0 +1,278 @@
|
||||
var rule = {
|
||||
title: '异世界动漫',
|
||||
host: 'https://www.dmmiku.com/',
|
||||
homeUrl: '/index.php/vod/show/id/22.html',
|
||||
// url:'/index.php/vod/show/class/fyclass/id/20/page/fypage.html',
|
||||
url: '/index.php/vod/show/fyclassfyfilter.html',
|
||||
filterable: 1,
|
||||
filter_url: '{{fl.type}}/id/20/page/fypage{{fl.year}}',
|
||||
filter: {
|
||||
"area/日本": [{
|
||||
"key": "type",
|
||||
"name": "类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "OVA",
|
||||
"v": "/class/OVA"
|
||||
}, {
|
||||
"n": "剧场版",
|
||||
"v": "/class/剧场版"
|
||||
}, {
|
||||
"n": "无修",
|
||||
"v": "/class/BD无修"
|
||||
}, {
|
||||
"n": "萝莉",
|
||||
"v": "/class/萝莉"
|
||||
}, {
|
||||
"n": "学園",
|
||||
"v": "/class/学園"
|
||||
}, {
|
||||
"n": "后宫",
|
||||
"v": "/class/后宫"
|
||||
}, {
|
||||
"n": "恋爱",
|
||||
"v": "/class/恋爱"
|
||||
}, {
|
||||
"n": "热血",
|
||||
"v": "/class/热血"
|
||||
}, {
|
||||
"n": "神魔",
|
||||
"v": "/class/神魔"
|
||||
}, {
|
||||
"n": "奇幻",
|
||||
"v": "/class/奇幻"
|
||||
}, {
|
||||
"n": "治愈",
|
||||
"v": "/class/治愈"
|
||||
}, {
|
||||
"n": "搞笑",
|
||||
"v": "/class/搞笑"
|
||||
}, {
|
||||
"n": "百合",
|
||||
"v": "/class/百合"
|
||||
}, {
|
||||
"n": "冒险",
|
||||
"v": "/class/冒险"
|
||||
}, {
|
||||
"n": "魔法",
|
||||
"v": "/class/魔法"
|
||||
}, {
|
||||
"n": "机战",
|
||||
"v": "/class/机战"
|
||||
}, {
|
||||
"n": "战争",
|
||||
"v": "/class/战争"
|
||||
}, {
|
||||
"n": "犯罪",
|
||||
"v": "/class/犯罪"
|
||||
}, {
|
||||
"n": "悬疑",
|
||||
"v": "/class/悬疑"
|
||||
}, {
|
||||
"n": "推理",
|
||||
"v": "/class/推理"
|
||||
}, {
|
||||
"n": "科幻",
|
||||
"v": "/class/科幻"
|
||||
}, {
|
||||
"n": "竞技",
|
||||
"v": "/class/竞技"
|
||||
}, {
|
||||
"n": "运动",
|
||||
"v": "/class/运动"
|
||||
}, {
|
||||
"n": "耽美",
|
||||
"v": "/class/耽美"
|
||||
}, {
|
||||
"n": "其他",
|
||||
"v": "/class/其他"
|
||||
}]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "年份",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "/year/2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "/year/2024"
|
||||
}, {
|
||||
"n": "2023",
|
||||
"v": "/year/2023"
|
||||
}, {
|
||||
"n": "2022",
|
||||
"v": "/year/2022"
|
||||
}, {
|
||||
"n": "2021",
|
||||
"v": "/year/2021"
|
||||
}, {
|
||||
"n": "2020",
|
||||
"v": "/year/2020"
|
||||
}, {
|
||||
"n": "2019",
|
||||
"v": "/year/2019"
|
||||
}, {
|
||||
"n": "2018",
|
||||
"v": "/year/2018"
|
||||
}, {
|
||||
"n": "2017",
|
||||
"v": "/year/2017"
|
||||
}, {
|
||||
"n": "2016",
|
||||
"v": "/year/2016"
|
||||
}, {
|
||||
"n": "2015",
|
||||
"v": "/year/2015"
|
||||
}, {
|
||||
"n": "2014",
|
||||
"v": "/year/2014"
|
||||
}, {
|
||||
"n": "2013",
|
||||
"v": "/year/2013"
|
||||
}, {
|
||||
"n": "2012",
|
||||
"v": "/year/2012"
|
||||
}, {
|
||||
"n": "2011",
|
||||
"v": "/year/2011"
|
||||
}, {
|
||||
"n": "2010",
|
||||
"v": "/year/2010"
|
||||
}, {
|
||||
"n": "2009",
|
||||
"v": "/year/2009"
|
||||
}, {
|
||||
"n": "2008",
|
||||
"v": "/year/2008"
|
||||
}]
|
||||
}],
|
||||
"area/中國": [{
|
||||
"key": "year",
|
||||
"name": "年份",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "/year/2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "/year/2024"
|
||||
}, {
|
||||
"n": "2023",
|
||||
"v": "/year/2023"
|
||||
}, {
|
||||
"n": "2022",
|
||||
"v": "/year/2022"
|
||||
}, {
|
||||
"n": "2021",
|
||||
"v": "/year/2021"
|
||||
}, {
|
||||
"n": "2020",
|
||||
"v": "/year/2020"
|
||||
}, {
|
||||
"n": "2019",
|
||||
"v": "/year/2019"
|
||||
}, {
|
||||
"n": "2018",
|
||||
"v": "/year/2018"
|
||||
}, {
|
||||
"n": "2017",
|
||||
"v": "/year/2017"
|
||||
}, {
|
||||
"n": "2016",
|
||||
"v": "/year/2016"
|
||||
}, {
|
||||
"n": "2015",
|
||||
"v": "/year/2015"
|
||||
}, {
|
||||
"n": "2014",
|
||||
"v": "/year/2014"
|
||||
}, {
|
||||
"n": "2013",
|
||||
"v": "/year/2013"
|
||||
}, {
|
||||
"n": "2012",
|
||||
"v": "/year/2012"
|
||||
}, {
|
||||
"n": "2011",
|
||||
"v": "/year/2011"
|
||||
}, {
|
||||
"n": "2010",
|
||||
"v": "/year/2010"
|
||||
}, {
|
||||
"n": "2009",
|
||||
"v": "/year/2009"
|
||||
}, {
|
||||
"n": "2008",
|
||||
"v": "/year/2008"
|
||||
}]
|
||||
}]
|
||||
},
|
||||
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
|
||||
searchable: 2,
|
||||
quickSearch: 0,
|
||||
headers: {
|
||||
'User-Agent': 'MOBILE_UA'
|
||||
},
|
||||
timeout: 5000, //网站的全局请求超时,默认是3000毫秒
|
||||
class_name: '日漫&国漫',
|
||||
class_url: 'area/日本&area/中國',
|
||||
play_parse: true,
|
||||
lazy: `js:
|
||||
var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
|
||||
var url = html.url;
|
||||
var from = html.from;
|
||||
if (html.encrypt == '1') {
|
||||
url = unescape(url)
|
||||
} else if (html.encrypt == '2') {
|
||||
url = unescape(base64Decode(url))
|
||||
}
|
||||
if (/m3u8|mp4/.test(url)) {
|
||||
input = url
|
||||
} else {
|
||||
var MacPlayerConfig={};
|
||||
eval(fetch(HOST + "/static/js/playerconfig.js").replace('var Mac','Mac'));
|
||||
var jx = MacPlayerConfig.player_list[from].parse;
|
||||
if (jx == '') {
|
||||
jx = MacPlayerConfig.parse
|
||||
};
|
||||
if (jx.startsWith("/")) {
|
||||
jx = "https:" + jx;
|
||||
}
|
||||
input={
|
||||
jx:0,
|
||||
url:jx+url,
|
||||
parse:1,
|
||||
header: JSON.stringify({
|
||||
'referer': HOST
|
||||
})
|
||||
}
|
||||
}
|
||||
`,
|
||||
limit: 6,
|
||||
// 图片来源:'@Referer=https://api.douban.com/@User-Agent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/113.0.0.0%20Safari/537.36',
|
||||
推荐: '*',
|
||||
一级: '.vodlist_wi&&li;.lazyload&&title;.lazyload&&data-original;.pic_text&&Text;a&&href',
|
||||
二级: {
|
||||
"title": "h2&&Text;li.data--span:eq(0)&&Text",
|
||||
"img": ".lazyload&&data-original",
|
||||
"desc": "li.data--span:eq(1)&&Text;;;li.data--span:eq(2)&&Text;li.data--span:eq(3)&&Text",
|
||||
"content": ".full_text&&span&&Text",
|
||||
"tabs": `js:
|
||||
TABS = [];
|
||||
let tabs = pdfa(html, '#NumTab&&a');
|
||||
tabs.forEach((it) => {
|
||||
TABS.push(pdfh(it, 'a&&alt'))
|
||||
});
|
||||
`,
|
||||
// "lists": ".content_playlist:not(.list_scroll):eq(#id) a"
|
||||
"lists": "div.playlist_full:eq(#id) li"
|
||||
},
|
||||
搜索: 'li.searchlist_item;*;*;*;*',
|
||||
}
|
||||
1392
TVBoxOSC/tvbox/js/爱奇艺.js
Normal file
1392
TVBoxOSC/tvbox/js/爱奇艺.js
Normal file
File diff suppressed because it is too large
Load Diff
935
TVBoxOSC/tvbox/js/腾讯视频.js
Normal file
935
TVBoxOSC/tvbox/js/腾讯视频.js
Normal file
@ -0,0 +1,935 @@
|
||||
globalThis.vod1 = function(ids) {
|
||||
let html1 = request('https://pbaccess.video.qq.com/trpc.videosearch.mobile_search.MultiTerminalSearch/MbSearch?vplatform=2', {
|
||||
body: {
|
||||
"version": "25042201",
|
||||
"clientType": 1,
|
||||
"filterValue": "",
|
||||
"uuid": "B1E50847-D25F-4C4B-BBA0-36F0093487F6",
|
||||
"retry": 0,
|
||||
"query": ids,
|
||||
"pagenum": 0,
|
||||
"isPrefetch": true,
|
||||
"pagesize": 30,
|
||||
"queryFrom": 0,
|
||||
"searchDatakey": "",
|
||||
"transInfo": "",
|
||||
"isneedQc": true,
|
||||
"preQid": "",
|
||||
"adClientInfo": "",
|
||||
"extraInfo": {
|
||||
"isNewMarkLabel": "1",
|
||||
"multi_terminal_pc": "1",
|
||||
"themeType": "1",
|
||||
"sugRelatedIds": "{}",
|
||||
"appVersion": ""
|
||||
}
|
||||
},
|
||||
headers: {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.139 Safari/537.36',
|
||||
'Content-Type': 'application/json',
|
||||
'origin': 'https://v.qq.com',
|
||||
'referer': 'https://v.qq.com/'
|
||||
},
|
||||
'method': 'POST'
|
||||
}, true);
|
||||
return html1;
|
||||
}
|
||||
var rule = {
|
||||
title: '腾云驾雾[官]',
|
||||
host: 'https://v.%71%71.com',
|
||||
// homeUrl: '/x/bu/pagesheet/list?_all=1&append=1&channel=choice&listpage=1&offset=0&pagesize=21&iarea=-1&sort=18',
|
||||
homeUrl: '/x/bu/pagesheet/list?_all=1&append=1&channel=cartoon&listpage=1&offset=0&pagesize=21&iarea=-1&sort=18',
|
||||
detailUrl: 'https://node.video.%71%71.com/x/api/float_vinfo2?cid=fyid',
|
||||
searchUrl: '/x/search/?q=**&stag=fypage',
|
||||
searchUrl: 'https://pbaccess.video.%71%71.com/trpc.videosearch.smartboxServer.HttpRountRecall/Smartbox?query=**&appID=3172&appKey=lGhFIPeD3HsO9xEp&pageNum=(fypage-1)&pageSize=10',
|
||||
searchUrl: '**',
|
||||
searchable: 2,
|
||||
filterable: 1,
|
||||
multi: 1,
|
||||
// url:'/channel/fyclass?listpage=fypage&channel=fyclass&sort=18&_all=1',
|
||||
url: '/x/bu/pagesheet/list?_all=1&append=1&channel=fyclass&listpage=1&offset=((fypage-1)*21)&pagesize=21&iarea=-1',
|
||||
// filter_url: 'sort={{fl.sort or 18}}&year={{fl.year}}&pay={{fl.pay}}',
|
||||
// filter_url: 'sort={{fl.sort or 75}}&year={{fl.year}}&pay={{fl.pay}}',
|
||||
filter_url: 'sort={{fl.sort or 75}}&iyear={{fl.iyear}}&year={{fl.year}}&itype={{fl.type}}&ifeature={{fl.feature}}&iarea={{fl.area}}&itrailer={{fl.itrailer}}&gender={{fl.sex}}',
|
||||
// filter: 'H4sIAAAAAAAAA+2UzUrDQBCA32XOEZLUJrGvIj0saaDBNisxBkIJCG3Fi4oepIg3EQoieqiH+vM23Zq+hRuaZLZ4ce9z2/lmd2d2+NgR+H0e+gF0DkdwFGTQgRMeJ2BAxIaSwvrqVnxcyzhlg9PttqjED2c/45cSy8DyIDcavr57q/lBw8XTd/E6qbnT8M3zTFyc72RtC/Jumd+2c8wy7KZ4nxSL5Z9uxHS+Gc+r83sWVp1eVttl4Dluk1h93YubWZVwduplAYuxoFguVp+P/y5om/Z+/YxyqfAW8pbKbeS2yi3kO/ebyE2Fy1nXXBm7DDzknspd5K7KHeSOytvI2+XAugYkKWlD2mhrM+RpSB8OmaNvTsriMEgycofc0XbHZ3HCeUTukDv67vTDQY/MIXO0zelxn5M4JI6mOPkvgswSEpgPAAA=',
|
||||
filter: {
|
||||
"choice": [{
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最热",
|
||||
"v": "75"
|
||||
}, {
|
||||
"n": "最新",
|
||||
"v": "83"
|
||||
}, {
|
||||
"n": "好评",
|
||||
"v": "81"
|
||||
}]
|
||||
}, {
|
||||
"key": "iyear",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}]
|
||||
}],
|
||||
"tv": [{
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最热",
|
||||
"v": "75"
|
||||
}, {
|
||||
"n": "最新",
|
||||
"v": "79"
|
||||
}, {
|
||||
"n": "好评",
|
||||
"v": "16"
|
||||
}]
|
||||
}, {
|
||||
"key": "feature",
|
||||
"name": "类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "爱情",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "古装",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "悬疑",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "都市",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "家庭",
|
||||
"v": "5"
|
||||
}, {
|
||||
"n": "喜剧",
|
||||
"v": "6"
|
||||
}, {
|
||||
"n": "传奇",
|
||||
"v": "7"
|
||||
}, {
|
||||
"n": "武侠",
|
||||
"v": "8"
|
||||
}, {
|
||||
"n": "军旅",
|
||||
"v": "9"
|
||||
}, {
|
||||
"n": "权谋",
|
||||
"v": "10"
|
||||
}, {
|
||||
"n": "革命",
|
||||
"v": "11"
|
||||
}, {
|
||||
"n": "现实",
|
||||
"v": "13"
|
||||
}, {
|
||||
"n": "青春",
|
||||
"v": "14"
|
||||
}, {
|
||||
"n": "猎奇",
|
||||
"v": "15"
|
||||
}, {
|
||||
"n": "科幻",
|
||||
"v": "16"
|
||||
}, {
|
||||
"n": "竞技",
|
||||
"v": "17"
|
||||
}, {
|
||||
"n": "玄幻",
|
||||
"v": "18"
|
||||
}]
|
||||
}, {
|
||||
"key": "iyear",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}]
|
||||
}],
|
||||
"movie": [{
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最热",
|
||||
"v": "75"
|
||||
}, {
|
||||
"n": "最新",
|
||||
"v": "83"
|
||||
}, {
|
||||
"n": "好评",
|
||||
"v": "81"
|
||||
}]
|
||||
}, {
|
||||
"key": "type",
|
||||
"name": "类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "犯罪",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "励志",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "喜剧",
|
||||
"v": "100004"
|
||||
}, {
|
||||
"n": "热血",
|
||||
"v": "100061"
|
||||
}, {
|
||||
"n": "悬疑",
|
||||
"v": "100009"
|
||||
}, {
|
||||
"n": "爱情",
|
||||
"v": "100005"
|
||||
}, {
|
||||
"n": "科幻",
|
||||
"v": "100012"
|
||||
}, {
|
||||
"n": "恐怖",
|
||||
"v": "100010"
|
||||
}, {
|
||||
"n": "动画",
|
||||
"v": "100015"
|
||||
}, {
|
||||
"n": "战争",
|
||||
"v": "100006"
|
||||
}, {
|
||||
"n": "家庭",
|
||||
"v": "100017"
|
||||
}, {
|
||||
"n": "剧情",
|
||||
"v": "100022"
|
||||
}, {
|
||||
"n": "奇幻",
|
||||
"v": "100016"
|
||||
}, {
|
||||
"n": "武侠",
|
||||
"v": "100011"
|
||||
}, {
|
||||
"n": "历史",
|
||||
"v": "100021"
|
||||
}, {
|
||||
"n": "老片",
|
||||
"v": "100013"
|
||||
}, {
|
||||
"n": "西部",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "记录片",
|
||||
"v": "100020"
|
||||
}]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}]
|
||||
}],
|
||||
"variety": [{
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最热",
|
||||
"v": "75"
|
||||
}, {
|
||||
"n": "最新",
|
||||
"v": "23"
|
||||
}]
|
||||
}, {
|
||||
"key": "iyear",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}]
|
||||
}],
|
||||
"cartoon": [{
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最热",
|
||||
"v": "75"
|
||||
}, {
|
||||
"n": "最新",
|
||||
"v": "83"
|
||||
}, {
|
||||
"n": "好评",
|
||||
"v": "81"
|
||||
}]
|
||||
}, {
|
||||
"key": "area",
|
||||
"name": "地区",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "内地",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "日本",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "欧美",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "其他",
|
||||
"v": "4"
|
||||
}]
|
||||
}, {
|
||||
"key": "type",
|
||||
"name": "类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "玄幻",
|
||||
"v": "9"
|
||||
}, {
|
||||
"n": "科幻",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "武侠",
|
||||
"v": "13"
|
||||
}, {
|
||||
"n": "冒险",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "战斗",
|
||||
"v": "5"
|
||||
}, {
|
||||
"n": "搞笑",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "恋爱",
|
||||
"v": "7"
|
||||
}, {
|
||||
"n": "魔幻",
|
||||
"v": "6"
|
||||
}, {
|
||||
"n": "竞技",
|
||||
"v": "20"
|
||||
}, {
|
||||
"n": "悬疑",
|
||||
"v": "17"
|
||||
}, {
|
||||
"n": "日常",
|
||||
"v": "15"
|
||||
}, {
|
||||
"n": "校园",
|
||||
"v": "16"
|
||||
}, {
|
||||
"n": "真人",
|
||||
"v": "18"
|
||||
}, {
|
||||
"n": "推理",
|
||||
"v": "14"
|
||||
}, {
|
||||
"n": "历史",
|
||||
"v": "19"
|
||||
}, {
|
||||
"n": "经典",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "其他",
|
||||
"v": "12"
|
||||
}]
|
||||
}, {
|
||||
"key": "iyear",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}]
|
||||
}],
|
||||
"child": [{
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最热",
|
||||
"v": "75"
|
||||
}, {
|
||||
"n": "最新",
|
||||
"v": "76"
|
||||
}, {
|
||||
"n": "好评",
|
||||
"v": "20"
|
||||
}]
|
||||
}, {
|
||||
"key": "sex",
|
||||
"name": "性别",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "女孩",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "男孩",
|
||||
"v": "2"
|
||||
}]
|
||||
}, {
|
||||
"key": "area",
|
||||
"name": "地区",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "内地",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "日本",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "其他",
|
||||
"v": "1"
|
||||
}]
|
||||
}, {
|
||||
"key": "iyear",
|
||||
"name": "年龄段",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "0-3岁",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "4-6岁",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "7-9岁",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10岁以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "全年龄段",
|
||||
"v": "7"
|
||||
}]
|
||||
}],
|
||||
"doco": [{
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最热",
|
||||
"v": "75"
|
||||
}, {
|
||||
"n": "最新",
|
||||
"v": "74"
|
||||
}]
|
||||
}, {
|
||||
"key": "itrailer",
|
||||
"name": "出品方",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "BBC",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "国家地理",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "HBO",
|
||||
"v": "3175"
|
||||
}, {
|
||||
"n": "NHK",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "历史频道",
|
||||
"v": "7"
|
||||
}, {
|
||||
"n": "ITV",
|
||||
"v": "3530"
|
||||
}, {
|
||||
"n": "探索频道",
|
||||
"v": "3174"
|
||||
}, {
|
||||
"n": "ZDF",
|
||||
"v": "3176"
|
||||
}, {
|
||||
"n": "腾讯自制",
|
||||
"v": "15"
|
||||
}, {
|
||||
"n": "合作机构",
|
||||
"v": "6"
|
||||
}, {
|
||||
"n": "其他",
|
||||
"v": "5"
|
||||
}]
|
||||
}, {
|
||||
"key": "type",
|
||||
"name": "类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
}, {
|
||||
"n": "自然",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "美食",
|
||||
"v": "10"
|
||||
}, {
|
||||
"n": "社会",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "人文",
|
||||
"v": "6"
|
||||
}, {
|
||||
"n": "历史",
|
||||
"v": "1"
|
||||
}, {
|
||||
"n": "军事",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "科技",
|
||||
"v": "8"
|
||||
}, {
|
||||
"n": "财经",
|
||||
"v": "14"
|
||||
}, {
|
||||
"n": "探险",
|
||||
"v": "15"
|
||||
}, {
|
||||
"n": "罪案",
|
||||
"v": "7"
|
||||
}, {
|
||||
"n": "竞技",
|
||||
"v": "12"
|
||||
}, {
|
||||
"n": "旅游",
|
||||
"v": "11"
|
||||
}]
|
||||
}]
|
||||
},
|
||||
headers: {
|
||||
'User-Agent': 'PC_UA'
|
||||
},
|
||||
timeout: 5000,
|
||||
// class_parse:'.site_channel a;a&&Text;a&&href;channel/(.*)',
|
||||
cate_exclude: '会员|游戏|全部',
|
||||
// class_name: '精选&电视剧&电影&综艺&动漫&少儿&纪录片',
|
||||
// class_url: 'choice&tv&movie&variety&cartoon&child&doco',
|
||||
class_name: '精选&电影&电视剧&综艺&动漫&少儿&纪录片',
|
||||
class_url: 'choice&movie&tv&variety&cartoon&child&doco',
|
||||
limit: 20,
|
||||
// play_parse:true,
|
||||
// 手动调用解析请求json的url,此lazy不方便
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
try {
|
||||
let api = "http://127.0.0.1:9978/proxy?do=seachdanmu&go=getuserjx&url=" + input.split("?")[0];
|
||||
console.log(api);
|
||||
let response = fetch(api, {
|
||||
method: 'get',
|
||||
headers: {
|
||||
'User-Agent': 'okhttp/3.14.9',
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
});
|
||||
|
||||
let bata = JSON.parse(response);
|
||||
log(bata)
|
||||
if (bata.url.includes("http")) {
|
||||
input = {
|
||||
header: {
|
||||
'User-Agent': ""
|
||||
},
|
||||
parse: 0,
|
||||
url: bata.url,
|
||||
jx: 0,
|
||||
danmaku: 'http://127.0.0.1:9978/proxy?do=danmu&site=js&url=' + input.split("?")[0]
|
||||
};
|
||||
} else {
|
||||
|
||||
input = {
|
||||
header: {
|
||||
'User-Agent': ""
|
||||
},
|
||||
parse: 0,
|
||||
url: input.split("?")[0],
|
||||
jx: 1,
|
||||
danmaku: 'http://127.0.0.1:9978/proxy?do=danmu&site=js&url=' + input.split("?")[0]
|
||||
};
|
||||
}
|
||||
} catch {
|
||||
input = {
|
||||
header: {
|
||||
'User-Agent': ""
|
||||
},
|
||||
parse: 0,
|
||||
url: input.split("?")[0],
|
||||
jx: 1,
|
||||
danmaku: 'http://127.0.0.1:9978/proxy?do=danmu&site=js&url=' + input.split("?")[0]
|
||||
};
|
||||
}
|
||||
}),
|
||||
推荐: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
|
||||
一级: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
|
||||
二级: $js.toString(() => {
|
||||
VOD = {};
|
||||
let d = [];
|
||||
let video_list = [];
|
||||
let video_lists = [];
|
||||
let list = [];
|
||||
let QZOutputJson;
|
||||
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);
|
||||
pdfh = jsp.pdfh;
|
||||
pd = jsp.pd;
|
||||
try {
|
||||
let json = JSON.parse(html);
|
||||
VOD = {
|
||||
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 (video_lists.length === 1) {
|
||||
let vid = video_lists[0];
|
||||
url = "https://v.qq.com/x/cover/" + cid + "/" + vid + ".html";
|
||||
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=1804&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,
|
||||
type: it1.category_map && it1.category_map.length > 1 ? it1.category_map[1] : ""
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
let yg = d.filter(function(it) {
|
||||
return it.type && it.type !== "正片"
|
||||
});
|
||||
let zp = d.filter(function(it) {
|
||||
return !(it.type && it.type !== "正片")
|
||||
});
|
||||
VOD.vod_play_from = yg.length < 1 ? "qq" : "qq$$$qq 预告及花絮";
|
||||
VOD.vod_play_url = yg.length < 1 ? d.map(function(it) {
|
||||
return it.title + "$" + it.url
|
||||
}).join("#") : [zp, yg].map(function(it) {
|
||||
return it.map(function(its) {
|
||||
return its.title + "$" + its.url
|
||||
}).join("#")
|
||||
}).join("$$$");
|
||||
}),
|
||||
搜索: $js.toString(() => {
|
||||
let d = [];
|
||||
pdfa = jsp.pdfa;
|
||||
pdfh = jsp.pdfh;
|
||||
pd = jsp.pd;
|
||||
let html = request(input);
|
||||
let baseList = pdfa(html, "body&&.result_item_v");
|
||||
log(baseList.length);
|
||||
baseList.forEach(function(it) {
|
||||
let longText = pdfh(it, ".result_title&&a&&Text");
|
||||
let shortText = pdfh(it, ".type&&Text");
|
||||
let fromTag = pdfh(it, ".result_source&&Text");
|
||||
let score = pdfh(it, ".figure_info&&Text");
|
||||
let content = pdfh(it, ".desc_text&&Text");
|
||||
// let url = pdfh(it, ".result_title&&a&&href");
|
||||
let url = pdfh(it, "div&&r-data");
|
||||
// log(longText);
|
||||
// log(shortText);
|
||||
// log('url:'+url);
|
||||
let img = pd(it, ".figure_pic&&src");
|
||||
url = "https://node.video.qq.com/x/api/float_vinfo2?cid=" + url.match(/.*\/(.*?)\.html/)[1];
|
||||
log(shortText + "|" + url);
|
||||
if (fromTag.match(/腾讯/)) {
|
||||
d.push({
|
||||
title: longText.split(shortText)[0],
|
||||
img: img,
|
||||
url: url,
|
||||
content: content,
|
||||
desc: shortText + " " + score
|
||||
})
|
||||
}
|
||||
});
|
||||
setResult(d);
|
||||
}),
|
||||
搜索: $js.toString(() => {
|
||||
let d = [];
|
||||
let html = request(input);
|
||||
let json = JSON.parse(html);
|
||||
if (json.data.smartboxItemList.length > 0) {
|
||||
let cid = json.data.smartboxItemList[0].basicDoc.id;
|
||||
let url = 'https://node.video.qq.com/x/api/float_vinfo2?cid=' + cid;
|
||||
let html1 = request(url);
|
||||
let data = JSON.parse(html1);
|
||||
|
||||
d.push({
|
||||
title: data.c.title,
|
||||
img: data.c.pic,
|
||||
url: url,
|
||||
content: data.c.description,
|
||||
desc: data.rec
|
||||
});
|
||||
}
|
||||
setResult(d);
|
||||
}),
|
||||
搜索: $js.toString(() => {
|
||||
let d = [];
|
||||
let mame = (input.split("/")[3]);
|
||||
let html = vod1(input.split("/")[3]);
|
||||
let json = JSON.parse(html);
|
||||
|
||||
let list = json.data.normalList.itemList;
|
||||
console.log(json);
|
||||
log(list[0].videoInfo.title);
|
||||
list.forEach(function(it) {
|
||||
try {
|
||||
if (it.doc.id.length > 11) {
|
||||
d.push({
|
||||
title: it.videoInfo.title,
|
||||
img: it.videoInfo.imgUrl,
|
||||
url: it.doc.id,
|
||||
// content: "",
|
||||
//desc: "data.rec"
|
||||
});
|
||||
}
|
||||
} catch {
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
let list2 = json.data.areaBoxList[0].itemList;
|
||||
list2.forEach(function(it) {
|
||||
try {
|
||||
if (it.doc.id.length > 11 && it.videoInfo.title.match(mame)) {
|
||||
d.push({
|
||||
title: it.videoInfo.title,
|
||||
img: it.videoInfo.imgUrl,
|
||||
url: it.doc.id,
|
||||
// content: "",
|
||||
//desc: "data.rec"
|
||||
});
|
||||
}
|
||||
} catch {
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
setResult(d);
|
||||
})
|
||||
}
|
||||
843
TVBoxOSC/tvbox/js/芒果视频.js
Normal file
843
TVBoxOSC/tvbox/js/芒果视频.js
Normal file
@ -0,0 +1,843 @@
|
||||
var rule = {
|
||||
title: '百忙无果[官]',
|
||||
host: 'https://pianku.api.%6d%67%74%76.com',
|
||||
homeUrl: '',
|
||||
// searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/pc/search/v1?q=**&pn=fypage&pc=10',
|
||||
// 新版接口搜索变成v2并且加了验证,蛋疼
|
||||
// searchUrl: 'https://mobileso.bz.mgtv.com/pc/search/v2?allowedRC=1&src=mgtv&did=cf03b959-6945-4cb6-bcb3-88762459354d×tamp=2024-06-21T15%3A52%3A55Z&signVersion=1&signNonce=8dae67a1fafc4bda984ec8deb47666ad&q=**&pn=fypage&pc=10&corr=1&_support=10000000&signature=4e27fddcd2a1a66d6c1764ed6b74bab7',
|
||||
// 用手机的吧,搞不定这个
|
||||
searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/msite/search/v2?q=**&pn=fypage&pc=10',
|
||||
detailUrl: 'https://pcweb.api.mgtv.com/episode/list?page=1&size=50&video_id=fyid',
|
||||
searchable: 2,
|
||||
quickSearch: 0,
|
||||
filterable: 1,
|
||||
multi: 1,
|
||||
// 分类链接fypage参数支持1个()表达式
|
||||
// https://www.mgtv.com/lib/3?lastp=list_index&kind=a1&year=all&chargeInfo=a1&sort=c2
|
||||
url: '/rider/list/pcweb/v3?platform=pcweb&channelId=fyclass&pn=fypage&pc=80&hudong=1&_support=10000000&kind=a1&area=a1',
|
||||
filter_url: 'year={{fl.year or "all"}}&sort={{fl.sort or "all"}}&chargeInfo={{fl.chargeInfo or "all"}}',
|
||||
headers: {
|
||||
'User-Agent': 'PC_UA'
|
||||
},
|
||||
timeout: 5000,
|
||||
class_name: '电视剧&电影&综艺&动漫&纪录片&教育&少儿',
|
||||
class_url: '2&3&1&50&51&115&10',
|
||||
filter: {
|
||||
"1": [{
|
||||
"key": "chargeInfo",
|
||||
"name": "付费类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "免费",
|
||||
"v": "b1"
|
||||
}, {
|
||||
"n": "vip",
|
||||
"v": "b2"
|
||||
}, {
|
||||
"n": "VIP用券",
|
||||
"v": "b3"
|
||||
}, {
|
||||
"n": "付费点播",
|
||||
"v": "b4"
|
||||
}]
|
||||
}, {
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最新",
|
||||
"v": "c1"
|
||||
}, {
|
||||
"n": "最热",
|
||||
"v": "c2"
|
||||
}, {
|
||||
"n": "知乎高分",
|
||||
"v": "c4"
|
||||
}]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}]
|
||||
}],
|
||||
"2": [{
|
||||
"key": "chargeInfo",
|
||||
"name": "付费类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "免费",
|
||||
"v": "b1"
|
||||
}, {
|
||||
"n": "vip",
|
||||
"v": "b2"
|
||||
}, {
|
||||
"n": "VIP用券",
|
||||
"v": "b3"
|
||||
}, {
|
||||
"n": "付费点播",
|
||||
"v": "b4"
|
||||
}]
|
||||
}, {
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最新",
|
||||
"v": "c1"
|
||||
}, {
|
||||
"n": "最热",
|
||||
"v": "c2"
|
||||
}, {
|
||||
"n": "知乎高分",
|
||||
"v": "c4"
|
||||
}]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}]
|
||||
}],
|
||||
"3": [{
|
||||
"key": "chargeInfo",
|
||||
"name": "付费类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "免费",
|
||||
"v": "b1"
|
||||
}, {
|
||||
"n": "vip",
|
||||
"v": "b2"
|
||||
}, {
|
||||
"n": "VIP用券",
|
||||
"v": "b3"
|
||||
}, {
|
||||
"n": "付费点播",
|
||||
"v": "b4"
|
||||
}]
|
||||
}, {
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最新",
|
||||
"v": "c1"
|
||||
}, {
|
||||
"n": "最热",
|
||||
"v": "c2"
|
||||
}, {
|
||||
"n": "知乎高分",
|
||||
"v": "c4"
|
||||
}]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}]
|
||||
}],
|
||||
"50": [{
|
||||
"key": "chargeInfo",
|
||||
"name": "付费类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "免费",
|
||||
"v": "b1"
|
||||
}, {
|
||||
"n": "vip",
|
||||
"v": "b2"
|
||||
}, {
|
||||
"n": "VIP用券",
|
||||
"v": "b3"
|
||||
}, {
|
||||
"n": "付费点播",
|
||||
"v": "b4"
|
||||
}]
|
||||
}, {
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最新",
|
||||
"v": "c1"
|
||||
}, {
|
||||
"n": "最热",
|
||||
"v": "c2"
|
||||
}, {
|
||||
"n": "知乎高分",
|
||||
"v": "c4"
|
||||
}]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}]
|
||||
}],
|
||||
"51": [{
|
||||
"key": "chargeInfo",
|
||||
"name": "付费类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "免费",
|
||||
"v": "b1"
|
||||
}, {
|
||||
"n": "vip",
|
||||
"v": "b2"
|
||||
}, {
|
||||
"n": "VIP用券",
|
||||
"v": "b3"
|
||||
}, {
|
||||
"n": "付费点播",
|
||||
"v": "b4"
|
||||
}]
|
||||
}, {
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最新",
|
||||
"v": "c1"
|
||||
}, {
|
||||
"n": "最热",
|
||||
"v": "c2"
|
||||
}, {
|
||||
"n": "知乎高分",
|
||||
"v": "c4"
|
||||
}]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}]
|
||||
}],
|
||||
"115": [{
|
||||
"key": "chargeInfo",
|
||||
"name": "付费类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "免费",
|
||||
"v": "b1"
|
||||
}, {
|
||||
"n": "vip",
|
||||
"v": "b2"
|
||||
}, {
|
||||
"n": "VIP用券",
|
||||
"v": "b3"
|
||||
}, {
|
||||
"n": "付费点播",
|
||||
"v": "b4"
|
||||
}]
|
||||
}, {
|
||||
"key": "sort",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最新",
|
||||
"v": "c1"
|
||||
}, {
|
||||
"n": "最热",
|
||||
"v": "c2"
|
||||
}, {
|
||||
"n": "知乎高分",
|
||||
"v": "c4"
|
||||
}]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "all"
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}]
|
||||
}]
|
||||
},
|
||||
limit: 20,
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
try {
|
||||
let api = "" + input.split("?")[0];
|
||||
console.log(api);
|
||||
let response = fetch(api, {
|
||||
method: 'get',
|
||||
headers: {
|
||||
'User-Agent': 'okhttp/3.14.9',
|
||||
'Content-Type': 'application/x-www-form-urlencoded'
|
||||
}
|
||||
});
|
||||
let bata = JSON.parse(response);
|
||||
if (bata.url.includes("mgtv")) {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: bata.url,
|
||||
jx: 0,
|
||||
danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=" + input.split("?")[0]
|
||||
};
|
||||
} else {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: input.split("?")[0],
|
||||
jx: 1,
|
||||
danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=" + input.split("?")[0]
|
||||
};
|
||||
}
|
||||
} catch {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: input.split("?")[0],
|
||||
jx: 1,
|
||||
danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=" + input.split("?")[0]
|
||||
};
|
||||
}
|
||||
}),
|
||||
// 手动调用解析请求json的url,此lazy不方便
|
||||
// lazy:'js:print(input);fetch_params.headers["user-agent"]=MOBILE_UA;let html=request(input);let rurl=html.match(/window\\.open\\(\'(.*?)\',/)[1];rurl=urlDeal(rurl);input={parse:1,url:rurl};',
|
||||
// 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float',
|
||||
一级: 'json:data.hitDocs;title;img;updateInfo||rightCorner.text;playPartId',
|
||||
// 一级:'json:data.hitDocs;title;img;updateInfo;playPartId',
|
||||
二级: $js.toString(() => {
|
||||
fetch_params.headers.Referer = "https://www.mgtv.com";
|
||||
fetch_params.headers["User-Agent"] = MOBILE_UA;
|
||||
pdfh = jsp.pdfh;
|
||||
pdfa = jsp.pdfa;
|
||||
pd = jsp.pd;
|
||||
VOD = {};
|
||||
let d = [];
|
||||
let html = request(input);
|
||||
let json = JSON.parse(html);
|
||||
let host = "https://www.mgtv.com";
|
||||
let ourl = json.data.list.length > 0 ? json.data.list[0].url : json.data.series[0].url;
|
||||
if (!/^http/.test(ourl)) {
|
||||
ourl = host + ourl
|
||||
}
|
||||
fetch_params.headers["User-Agent"] = MOBILE_UA;
|
||||
html = request(ourl);
|
||||
if (html.includes("window.location =")) {
|
||||
print("开始获取ourl");
|
||||
ourl = pdfh(html, "meta[http-equiv=refresh]&&content").split("url=")[1];
|
||||
print("获取到ourl:" + ourl);
|
||||
html = request(ourl)
|
||||
}
|
||||
try {
|
||||
let details = pdfh(html, ".m-details&&Html").replace(/h1>/, "h6>").replace(/div/g, "br");
|
||||
print(details);
|
||||
let actor = "",
|
||||
director = "",
|
||||
time = "";
|
||||
if (/播出时间/.test(details)) {
|
||||
actor = pdfh(html, "p:eq(5)&&Text").substr(0, 25);
|
||||
director = pdfh(html, "p:eq(4)&&Text");
|
||||
time = pdfh(html, "p:eq(3)&&Text")
|
||||
} else {
|
||||
actor = pdfh(html, "p:eq(4)&&Text").substr(0, 25);
|
||||
director = pdfh(html, "p:eq(3)&&Text");
|
||||
time = "已完结"
|
||||
}
|
||||
let _img = pd(html, ".video-img&&img&&src");
|
||||
let JJ = pdfh(html, ".desc&&Text").split("简介:")[1];
|
||||
let _desc = time;
|
||||
VOD.vod_name = pdfh(html, ".vt-txt&&Text");
|
||||
VOD.type_name = pdfh(html, "p:eq(0)&&Text").substr(0, 6);
|
||||
VOD.vod_area = pdfh(html, "p:eq(1)&&Text");
|
||||
VOD.vod_actor = actor;
|
||||
VOD.vod_director = director;
|
||||
VOD.vod_remarks = _desc;
|
||||
VOD.vod_pic = _img;
|
||||
VOD.vod_content = JJ;
|
||||
if (!VOD.vod_name) {
|
||||
VOD.vod_name = VOD.type_name;
|
||||
}
|
||||
} catch (e) {
|
||||
log("获取影片信息发生错误:" + e.message)
|
||||
}
|
||||
|
||||
function getRjpg(imgUrl, xs) {
|
||||
xs = xs || 3;
|
||||
let picSize = /jpg_/.test(imgUrl) ? imgUrl.split("jpg_")[1].split(".")[0] : false;
|
||||
let rjpg = false;
|
||||
if (picSize) {
|
||||
let a = parseInt(picSize.split("x")[0]) * xs;
|
||||
let b = parseInt(picSize.split("x")[1]) * xs;
|
||||
rjpg = a + "x" + b + ".jpg"
|
||||
}
|
||||
let img = /jpg_/.test(imgUrl) && rjpg ? imgUrl.replace(imgUrl.split("jpg_")[1], rjpg) : imgUrl;
|
||||
return img
|
||||
}
|
||||
|
||||
if (json.data.total === 1 && json.data.list.length === 1) {
|
||||
let data = json.data.list[0];
|
||||
let url = "https://www.mgtv.com" + data.url;
|
||||
d.push({
|
||||
title: data.t4,
|
||||
desc: data.t2,
|
||||
pic_url: getRjpg(data.img),
|
||||
url: url
|
||||
})
|
||||
} else if (json.data.list.length > 1) {
|
||||
for (let i = 1; i <= json.data.total_page; i++) {
|
||||
if (i > 1) {
|
||||
json = JSON.parse(fetch(input.replace("page=1", "page=" + i), {}))
|
||||
}
|
||||
json.data.list.forEach(function(data) {
|
||||
let url = "https://www.mgtv.com" + data.url;
|
||||
if (data.isIntact == "1") {
|
||||
d.push({
|
||||
title: data.t4,
|
||||
desc: data.t2,
|
||||
pic_url: getRjpg(data.img),
|
||||
url: url
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
print(input + "暂无片源")
|
||||
}
|
||||
VOD.vod_play_from = "mgtv";
|
||||
VOD.vod_play_url = d.map(function(it) {
|
||||
return it.title + "$" + it.url
|
||||
}).join("#");
|
||||
setResult(d);
|
||||
}),
|
||||
|
||||
搜索: $js.toString(() => {
|
||||
fetch_params.headers.Referer = "https://www.mgtv.com";
|
||||
fetch_params.headers["User-Agent"] = MOBILE_UA;
|
||||
let d = [];
|
||||
let html = request(input);
|
||||
let json = JSON.parse(html);
|
||||
json.data.contents.forEach(function(data) {
|
||||
if (data.type && data.type == 'media') {
|
||||
let item = data.data[0];
|
||||
let desc = item.desc.join(',');
|
||||
let fyclass = '';
|
||||
if (item.source === "imgo") {
|
||||
let img = item.img ? item.img : '';
|
||||
try {
|
||||
fyclass = item.rpt.match(/idx=(.*?)&/)[1] + '$';
|
||||
} catch (e) {
|
||||
log(e.message);
|
||||
fyclass = '';
|
||||
}
|
||||
log(fyclass);
|
||||
d.push({
|
||||
title: item.title.replace(/<B>|<\/B>/g, ''),
|
||||
img: img,
|
||||
content: '',
|
||||
desc: desc,
|
||||
url: fyclass + item.url.match(/.*\/(.*?)\.html/)[1]
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
setResult(d);
|
||||
}),
|
||||
}
|
||||
970
TVBoxOSC/tvbox/js/花子动漫.js
Normal file
970
TVBoxOSC/tvbox/js/花子动漫.js
Normal file
@ -0,0 +1,970 @@
|
||||
var rule = {
|
||||
title: '花子动漫[漫]',
|
||||
host: 'https://www.huazidm.com',
|
||||
class_name: 'TV动漫&剧场&特摄',
|
||||
class_url: '1&2&3',
|
||||
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
|
||||
searchUrl: '/vodsearch/**----------fypage---.html',
|
||||
searchable: 2,
|
||||
quickSearch: 0,
|
||||
headers: {
|
||||
'User-Agent': 'MOBILE_UA',
|
||||
},
|
||||
url: '/index.php/api/vod#type=fyclassfyfilter&page=fypage',
|
||||
filterable: 0,
|
||||
filter_url: '&class={{fl.class}}&year={{fl.year}}&letter={{fl.letter}}&by={{fl.by}}',
|
||||
filter: {
|
||||
"1": [{
|
||||
"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": "year",
|
||||
"name": "年份",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}, {
|
||||
"n": "2003",
|
||||
"v": "2003"
|
||||
}, {
|
||||
"n": "2002",
|
||||
"v": "2002"
|
||||
}, {
|
||||
"n": "2001",
|
||||
"v": "2001"
|
||||
}, {
|
||||
"n": "2000",
|
||||
"v": "2000"
|
||||
}, {
|
||||
"n": "1999",
|
||||
"v": "1999"
|
||||
}, {
|
||||
"n": "1998",
|
||||
"v": "1998"
|
||||
}, {
|
||||
"n": "1997",
|
||||
"v": "1997"
|
||||
}, {
|
||||
"n": "1996",
|
||||
"v": "1996"
|
||||
}, {
|
||||
"n": "1995",
|
||||
"v": "1995"
|
||||
}, {
|
||||
"n": "1994",
|
||||
"v": "1994"
|
||||
}, {
|
||||
"n": "1993",
|
||||
"v": "1993"
|
||||
}, {
|
||||
"n": "1992",
|
||||
"v": "1992"
|
||||
}, {
|
||||
"n": "1991",
|
||||
"v": "1991"
|
||||
}, {
|
||||
"n": "1990",
|
||||
"v": "1990"
|
||||
}, {
|
||||
"n": "1989",
|
||||
"v": "1989"
|
||||
}, {
|
||||
"n": "1988",
|
||||
"v": "1988"
|
||||
}, {
|
||||
"n": "1987",
|
||||
"v": "1987"
|
||||
}, {
|
||||
"n": "1986",
|
||||
"v": "1986"
|
||||
}, {
|
||||
"n": "1985",
|
||||
"v": "1985"
|
||||
}, {
|
||||
"n": "1984",
|
||||
"v": "1984"
|
||||
}, {
|
||||
"n": "1983",
|
||||
"v": "1983"
|
||||
}, {
|
||||
"n": "1982",
|
||||
"v": "1982"
|
||||
}, {
|
||||
"n": "1981",
|
||||
"v": "1981"
|
||||
}, {
|
||||
"n": "1980",
|
||||
"v": "1980"
|
||||
}]
|
||||
}, {
|
||||
"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"
|
||||
}, {
|
||||
"n": "0-9",
|
||||
"v": "0-9"
|
||||
}]
|
||||
}, {
|
||||
"key": "by",
|
||||
"name": "时间",
|
||||
"value": [{
|
||||
"n": "按最新",
|
||||
"v": "time"
|
||||
}, {
|
||||
"n": "按最热",
|
||||
"v": "hits"
|
||||
}, {
|
||||
"n": "按评分",
|
||||
"v": "score"
|
||||
}]
|
||||
}],
|
||||
"2": [{
|
||||
"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": "音乐"
|
||||
}]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "年份",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}, {
|
||||
"n": "2003",
|
||||
"v": "2003"
|
||||
}, {
|
||||
"n": "2002",
|
||||
"v": "2002"
|
||||
}, {
|
||||
"n": "2001",
|
||||
"v": "2001"
|
||||
}, {
|
||||
"n": "2000",
|
||||
"v": "2000"
|
||||
}, {
|
||||
"n": "1999",
|
||||
"v": "1999"
|
||||
}, {
|
||||
"n": "1998",
|
||||
"v": "1998"
|
||||
}, {
|
||||
"n": "1997",
|
||||
"v": "1997"
|
||||
}, {
|
||||
"n": "1996",
|
||||
"v": "1996"
|
||||
}, {
|
||||
"n": "1995",
|
||||
"v": "1995"
|
||||
}, {
|
||||
"n": "1994",
|
||||
"v": "1994"
|
||||
}, {
|
||||
"n": "1993",
|
||||
"v": "1993"
|
||||
}, {
|
||||
"n": "1992",
|
||||
"v": "1992"
|
||||
}, {
|
||||
"n": "1991",
|
||||
"v": "1991"
|
||||
}, {
|
||||
"n": "1990",
|
||||
"v": "1990"
|
||||
}, {
|
||||
"n": "1989",
|
||||
"v": "1989"
|
||||
}, {
|
||||
"n": "1988",
|
||||
"v": "1988"
|
||||
}, {
|
||||
"n": "1987",
|
||||
"v": "1987"
|
||||
}, {
|
||||
"n": "1986",
|
||||
"v": "1986"
|
||||
}, {
|
||||
"n": "1985",
|
||||
"v": "1985"
|
||||
}, {
|
||||
"n": "1984",
|
||||
"v": "1984"
|
||||
}, {
|
||||
"n": "1983",
|
||||
"v": "1983"
|
||||
}, {
|
||||
"n": "1982",
|
||||
"v": "1982"
|
||||
}, {
|
||||
"n": "1981",
|
||||
"v": "1981"
|
||||
}, {
|
||||
"n": "1980",
|
||||
"v": "1980"
|
||||
}]
|
||||
}, {
|
||||
"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"
|
||||
}, {
|
||||
"n": "0-9",
|
||||
"v": "0-9"
|
||||
}]
|
||||
}, {
|
||||
"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": "科幻"
|
||||
}]
|
||||
}, {
|
||||
"key": "year",
|
||||
"name": "年份",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "2024"
|
||||
}, {
|
||||
"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"
|
||||
}, {
|
||||
"n": "2003",
|
||||
"v": "2003"
|
||||
}, {
|
||||
"n": "2002",
|
||||
"v": "2002"
|
||||
}, {
|
||||
"n": "2001",
|
||||
"v": "2001"
|
||||
}, {
|
||||
"n": "2000",
|
||||
"v": "2000"
|
||||
}, {
|
||||
"n": "1999",
|
||||
"v": "1999"
|
||||
}, {
|
||||
"n": "1998",
|
||||
"v": "1998"
|
||||
}, {
|
||||
"n": "1997",
|
||||
"v": "1997"
|
||||
}, {
|
||||
"n": "1996",
|
||||
"v": "1996"
|
||||
}, {
|
||||
"n": "1995",
|
||||
"v": "1995"
|
||||
}, {
|
||||
"n": "1994",
|
||||
"v": "1994"
|
||||
}, {
|
||||
"n": "1993",
|
||||
"v": "1993"
|
||||
}, {
|
||||
"n": "1992",
|
||||
"v": "1992"
|
||||
}, {
|
||||
"n": "1991",
|
||||
"v": "1991"
|
||||
}, {
|
||||
"n": "1990",
|
||||
"v": "1990"
|
||||
}, {
|
||||
"n": "1989",
|
||||
"v": "1989"
|
||||
}, {
|
||||
"n": "1988",
|
||||
"v": "1988"
|
||||
}, {
|
||||
"n": "1987",
|
||||
"v": "1987"
|
||||
}, {
|
||||
"n": "1986",
|
||||
"v": "1986"
|
||||
}, {
|
||||
"n": "1985",
|
||||
"v": "1985"
|
||||
}, {
|
||||
"n": "1984",
|
||||
"v": "1984"
|
||||
}, {
|
||||
"n": "1983",
|
||||
"v": "1983"
|
||||
}, {
|
||||
"n": "1982",
|
||||
"v": "1982"
|
||||
}, {
|
||||
"n": "1981",
|
||||
"v": "1981"
|
||||
}, {
|
||||
"n": "1980",
|
||||
"v": "1980"
|
||||
}]
|
||||
}, {
|
||||
"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"
|
||||
}, {
|
||||
"n": "0-9",
|
||||
"v": "0-9"
|
||||
}]
|
||||
}, {
|
||||
"key": "by",
|
||||
"name": "时间",
|
||||
"value": [{
|
||||
"n": "按最新",
|
||||
"v": "time"
|
||||
}, {
|
||||
"n": "按最热",
|
||||
"v": "hits"
|
||||
}, {
|
||||
"n": "按评分",
|
||||
"v": "score"
|
||||
}]
|
||||
}]
|
||||
},
|
||||
filter_def: {},
|
||||
detailUrl: '/voddetail/fyid.html',
|
||||
play_parse: true,
|
||||
sniffer: 1,
|
||||
is_video: 'obj/tos|bd.xhscdn|/ugc/',
|
||||
lazy: $js.toString(() => {
|
||||
input = {
|
||||
parse: 1,
|
||||
url: input,
|
||||
//js:'try{let urls=Array.from(document.querySelectorAll("iframe")).filter(x=>x.src.includes("?url="));if(urls){location.href=urls[0].src}}catch{}document.querySelector("button").click()',
|
||||
js: 'try{location.href=document.querySelector("#playleft iframe").src}catch{}document.querySelector("button.swal-button--confirm").click()',
|
||||
parse_extra: '&is_pc=1&custom_regex=' + rule.is_video,
|
||||
}
|
||||
}),
|
||||
limit: 6,
|
||||
推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
|
||||
一级: $js.toString(() => {
|
||||
let body = input.split("#")[1];
|
||||
let t = Math.round(new Date / 1e3).toString();
|
||||
let key = md5("DS" + t + "DCC147D11943AF75");
|
||||
let url = input.split("#")[0];
|
||||
body = body + "&time=" + t + "&key=" + key;
|
||||
print(body);
|
||||
fetch_params.body = body;
|
||||
let html = post(url, fetch_params);
|
||||
let data = JSON.parse(html);
|
||||
VODS = data.list.map(function(it) {
|
||||
it.vod_pic = urljoin2(input.split("/i")[0], it.vod_pic);
|
||||
return it
|
||||
});
|
||||
}),
|
||||
二级: {
|
||||
title: '.slide-info-title&&Text;.slide-info:eq(3)--strong&&Text',
|
||||
img: '.detail-pic&&data-original',
|
||||
desc: '.fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text',
|
||||
content: '#height_limit&&Text',
|
||||
tabs: '.anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a',
|
||||
tab_text: '.swiper-slide&&Text',
|
||||
lists: '.anthology-list-box:eq(#id) li',
|
||||
},
|
||||
搜索: 'json:list;name;pic;;id',
|
||||
搜索: $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")
|
||||
}
|
||||
});
|
||||
}),
|
||||
图片替换: '&=>&'
|
||||
}
|
||||
549
TVBoxOSC/tvbox/js/路漫漫.js
Normal file
549
TVBoxOSC/tvbox/js/路漫漫.js
Normal file
@ -0,0 +1,549 @@
|
||||
var rule = {
|
||||
title: "路漫漫",
|
||||
host: "http://www.lmm36.com",
|
||||
url: "/vod/show/id/fyclassfyfilter.html",
|
||||
searchUrl: '/vod/search/page/fypage/wd/**.html',
|
||||
searchable: 2,
|
||||
quickSearch: 0,
|
||||
filterable: 1,
|
||||
filter: {
|
||||
"3": [{
|
||||
"key": "年代",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "/year/2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "/year/2024"
|
||||
}, {
|
||||
"n": "2023",
|
||||
"v": "/year/2023"
|
||||
}, {
|
||||
"n": "2022",
|
||||
"v": "/year/2022"
|
||||
}, {
|
||||
"n": "2021",
|
||||
"v": "/year/2021"
|
||||
}, {
|
||||
"n": "2020",
|
||||
"v": "/year/2020"
|
||||
}, {
|
||||
"n": "2019",
|
||||
"v": "/year/2019"
|
||||
}, {
|
||||
"n": "2018",
|
||||
"v": "/year/2018"
|
||||
}, {
|
||||
"n": "2017",
|
||||
"v": "/year/2017"
|
||||
}, {
|
||||
"n": "2016",
|
||||
"v": "/year/2016"
|
||||
}, {
|
||||
"n": "2015",
|
||||
"v": "/year/2015"
|
||||
}, {
|
||||
"n": "更早",
|
||||
"v": "/year/2014-1980"
|
||||
}]
|
||||
}, {
|
||||
"key": "排序",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最近更新",
|
||||
"v": "/by/time"
|
||||
}, {
|
||||
"n": "最高人气",
|
||||
"v": "/by/hits"
|
||||
}, {
|
||||
"n": "最高评分",
|
||||
"v": "/by/score"
|
||||
}, {
|
||||
"n": "最多点赞",
|
||||
"v": "/by/up"
|
||||
}]
|
||||
}],
|
||||
"4": [{
|
||||
"key": "年代",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "/year/2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "/year/2024"
|
||||
}, {
|
||||
"n": "2023",
|
||||
"v": "/year/2023"
|
||||
}, {
|
||||
"n": "2022",
|
||||
"v": "/year/2022"
|
||||
}, {
|
||||
"n": "2021",
|
||||
"v": "/year/2021"
|
||||
}, {
|
||||
"n": "2020",
|
||||
"v": "/year/2020"
|
||||
}, {
|
||||
"n": "2019",
|
||||
"v": "/year/2019"
|
||||
}, {
|
||||
"n": "2018",
|
||||
"v": "/year/2018"
|
||||
}, {
|
||||
"n": "2017",
|
||||
"v": "/year/2017"
|
||||
}, {
|
||||
"n": "2016",
|
||||
"v": "/year/2016"
|
||||
}, {
|
||||
"n": "2015",
|
||||
"v": "/year/2015"
|
||||
}, {
|
||||
"n": "更早",
|
||||
"v": "/year/2014-1980"
|
||||
}]
|
||||
}, {
|
||||
"key": "排序",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最近更新",
|
||||
"v": "/by/time"
|
||||
}, {
|
||||
"n": "最高人气",
|
||||
"v": "/by/hits"
|
||||
}, {
|
||||
"n": "最高评分",
|
||||
"v": "/by/score"
|
||||
}, {
|
||||
"n": "最多点赞",
|
||||
"v": "/by/up"
|
||||
}]
|
||||
}],
|
||||
"5": [{
|
||||
"key": "年代",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "/year/2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "/year/2024"
|
||||
}, {
|
||||
"n": "2023",
|
||||
"v": "/year/2023"
|
||||
}, {
|
||||
"n": "2022",
|
||||
"v": "/year/2022"
|
||||
}, {
|
||||
"n": "2021",
|
||||
"v": "/year/2021"
|
||||
}, {
|
||||
"n": "2020",
|
||||
"v": "/year/2020"
|
||||
}, {
|
||||
"n": "2019",
|
||||
"v": "/year/2019"
|
||||
}, {
|
||||
"n": "2018",
|
||||
"v": "/year/2018"
|
||||
}, {
|
||||
"n": "2017",
|
||||
"v": "/year/2017"
|
||||
}, {
|
||||
"n": "2016",
|
||||
"v": "/year/2016"
|
||||
}, {
|
||||
"n": "2015",
|
||||
"v": "/year/2015"
|
||||
}, {
|
||||
"n": "更早",
|
||||
"v": "/year/2014-1980"
|
||||
}]
|
||||
}, {
|
||||
"key": "排序",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最近更新",
|
||||
"v": "/by/time"
|
||||
}, {
|
||||
"n": "最高人气",
|
||||
"v": "/by/hits"
|
||||
}, {
|
||||
"n": "最高评分",
|
||||
"v": "/by/score"
|
||||
}, {
|
||||
"n": "最多点赞",
|
||||
"v": "/by/up"
|
||||
}]
|
||||
}],
|
||||
"6": [{
|
||||
"key": "年代",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "/year/2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "/year/2024"
|
||||
}, {
|
||||
"n": "2023",
|
||||
"v": "/year/2023"
|
||||
}, {
|
||||
"n": "2022",
|
||||
"v": "/year/2022"
|
||||
}, {
|
||||
"n": "2021",
|
||||
"v": "/year/2021"
|
||||
}, {
|
||||
"n": "2020",
|
||||
"v": "/year/2020"
|
||||
}, {
|
||||
"n": "2019",
|
||||
"v": "/year/2019"
|
||||
}, {
|
||||
"n": "2018",
|
||||
"v": "/year/2018"
|
||||
}, {
|
||||
"n": "2017",
|
||||
"v": "/year/2017"
|
||||
}, {
|
||||
"n": "2016",
|
||||
"v": "/year/2016"
|
||||
}, {
|
||||
"n": "2015",
|
||||
"v": "/year/2015"
|
||||
}, {
|
||||
"n": "更早",
|
||||
"v": "/year/2014-1980"
|
||||
}]
|
||||
}, {
|
||||
"key": "排序",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最近更新",
|
||||
"v": "/by/time"
|
||||
}, {
|
||||
"n": "最高人气",
|
||||
"v": "/by/hits"
|
||||
}, {
|
||||
"n": "最高评分",
|
||||
"v": "/by/score"
|
||||
}, {
|
||||
"n": "最多点赞",
|
||||
"v": "/by/up"
|
||||
}]
|
||||
}],
|
||||
"7": [{
|
||||
"key": "年代",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "/year/2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "/year/2024"
|
||||
}, {
|
||||
"n": "2023",
|
||||
"v": "/year/2023"
|
||||
}, {
|
||||
"n": "2022",
|
||||
"v": "/year/2022"
|
||||
}, {
|
||||
"n": "2021",
|
||||
"v": "/year/2021"
|
||||
}, {
|
||||
"n": "2020",
|
||||
"v": "/year/2020"
|
||||
}, {
|
||||
"n": "2019",
|
||||
"v": "/year/2019"
|
||||
}, {
|
||||
"n": "2018",
|
||||
"v": "/year/2018"
|
||||
}, {
|
||||
"n": "2017",
|
||||
"v": "/year/2017"
|
||||
}, {
|
||||
"n": "2016",
|
||||
"v": "/year/2016"
|
||||
}, {
|
||||
"n": "2015",
|
||||
"v": "/year/2015"
|
||||
}, {
|
||||
"n": "更早",
|
||||
"v": "/year/2014-1980"
|
||||
}]
|
||||
}, {
|
||||
"key": "排序",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最近更新",
|
||||
"v": "/by/time"
|
||||
}, {
|
||||
"n": "最高人气",
|
||||
"v": "/by/hits"
|
||||
}, {
|
||||
"n": "最高评分",
|
||||
"v": "/by/score"
|
||||
}, {
|
||||
"n": "最多点赞",
|
||||
"v": "/by/up"
|
||||
}]
|
||||
}],
|
||||
"8": [{
|
||||
"key": "年代",
|
||||
"name": "年代",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}, {
|
||||
"n": "2025",
|
||||
"v": "/year/2025"
|
||||
}, {
|
||||
"n": "2024",
|
||||
"v": "/year/2024"
|
||||
}, {
|
||||
"n": "2023",
|
||||
"v": "/year/2023"
|
||||
}, {
|
||||
"n": "2022",
|
||||
"v": "/year/2022"
|
||||
}, {
|
||||
"n": "2021",
|
||||
"v": "/year/2021"
|
||||
}, {
|
||||
"n": "2020",
|
||||
"v": "/year/2020"
|
||||
}, {
|
||||
"n": "2019",
|
||||
"v": "/year/2019"
|
||||
}, {
|
||||
"n": "2018",
|
||||
"v": "/year/2018"
|
||||
}, {
|
||||
"n": "2017",
|
||||
"v": "/year/2017"
|
||||
}, {
|
||||
"n": "2016",
|
||||
"v": "/year/2016"
|
||||
}, {
|
||||
"n": "2015",
|
||||
"v": "/year/2015"
|
||||
}, {
|
||||
"n": "更早",
|
||||
"v": "/year/2014-1980"
|
||||
}]
|
||||
}, {
|
||||
"key": "排序",
|
||||
"name": "排序",
|
||||
"value": [{
|
||||
"n": "最近更新",
|
||||
"v": "/by/time"
|
||||
}, {
|
||||
"n": "最高人气",
|
||||
"v": "/by/hits"
|
||||
}, {
|
||||
"n": "最高评分",
|
||||
"v": "/by/score"
|
||||
}, {
|
||||
"n": "最多点赞",
|
||||
"v": "/by/up"
|
||||
}]
|
||||
}]
|
||||
},
|
||||
filter_url: "{{fl.排序}}{{fl.年代}}/page/fypage",
|
||||
filter_def: "",
|
||||
headers: {
|
||||
"User-Agent": "MOBILE_UA"
|
||||
},
|
||||
timeout: 5000,
|
||||
class_name: "日本动漫&国产动漫&欧美动漫&日本动画电影&国产动画电影&欧美动画电影",
|
||||
class_url: "6&7&8&3&4&5",
|
||||
class_parse: "",
|
||||
cate_exclude: "",
|
||||
play_parse: true,
|
||||
lazy: $js.toString(() => {
|
||||
function getDAesString(token) {
|
||||
eval(getCryptoJS());
|
||||
var key = CryptoJS.enc.Utf8.parse("ejjooopppqqqrwww");
|
||||
|
||||
var iv = CryptoJS.enc.Utf8.parse("1348987635684651");
|
||||
|
||||
var token = CryptoJS.AES.decrypt(token, key, {
|
||||
iv: iv,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.Pkcs7,
|
||||
});
|
||||
|
||||
return token.toString(CryptoJS.enc.Utf8);
|
||||
}
|
||||
|
||||
var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
|
||||
var url = html.url;
|
||||
var from = html.from;
|
||||
if (html.encrypt == "1") {
|
||||
url = unescape(url);
|
||||
} else if (html.encrypt == "2") {
|
||||
url = unescape(base64Decode(url));
|
||||
}
|
||||
if (/\.mp4|\.m3u8|\.flv/.test(url)) {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: url.split("&")[0],
|
||||
js: ''
|
||||
};
|
||||
} else {
|
||||
var jsh = request(HOST + "/static/player/" + from + ".js", {
|
||||
headers: {
|
||||
Referer: input
|
||||
},
|
||||
}).match(/\.src\s*=\s*(.*?);/)[1];
|
||||
//log(MY_HOME);
|
||||
if (/type=/.test(jsh)) {
|
||||
jsh = jsh
|
||||
.replace(/[\+\s']/g, "")
|
||||
.replace(/MacPlayer.Parse/, "")
|
||||
.replace(/MacPlayer.PlayUrl/, url)
|
||||
.replace(/window.location.href/, input);
|
||||
var playht = fetch(jsh, {
|
||||
headers: {
|
||||
Referer: HOST
|
||||
}
|
||||
});
|
||||
} else {
|
||||
jsh = jsh
|
||||
.replace(/[\+\s']/g, "")
|
||||
.replace(/MacPlayer.Parse/, "")
|
||||
.replace(/MacPlayer.PlayUrl/, url)
|
||||
.replace(/window.location.href/, input);
|
||||
|
||||
jsh = JSON.parse(
|
||||
fetch(jsh, {
|
||||
headers: {
|
||||
Referer: HOST
|
||||
},
|
||||
onlyHeaders: true
|
||||
})
|
||||
).url;
|
||||
var playht = fetch(jsh, {
|
||||
headers: {
|
||||
Referer: HOST
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var postapi = jsh.match(/^(.*?\/\/.*?\/.*?\/)/)[1];
|
||||
|
||||
var posturl = postapi + playht.match(/post\("(.*?)"/)[1];
|
||||
if (/act\s*=/.test(playht)) {
|
||||
var vid = playht.match(/vid\s*=\s*"(.*?)"/)[1];
|
||||
var t = playht.match(/var\s*t\s*=\s*"(.*?)"/)[1];
|
||||
var token = playht.match(/token\s*=\s*"(.*?)"/)[1];
|
||||
var act = playht.match(/act\s*=\s*"(.*?)"/)[1];
|
||||
var play = playht.match(/play\s*=\s*"(.*?)"/)[1];
|
||||
token = getDAesString(token);
|
||||
|
||||
var data = JSON.parse(
|
||||
post(posturl, {
|
||||
headers: {
|
||||
Referer: HOST
|
||||
},
|
||||
body: {
|
||||
vid: vid,
|
||||
t: t,
|
||||
token: token,
|
||||
act: act,
|
||||
play: play,
|
||||
},
|
||||
timeout: 5000
|
||||
})
|
||||
);
|
||||
input = {
|
||||
parse: 0,
|
||||
url: data.url,
|
||||
js: ''
|
||||
};
|
||||
} else {
|
||||
var key = "";
|
||||
|
||||
playht.match(/var (\w+)="(.*?)";/g).forEach(function(list) {
|
||||
key += list.match(/"(.*?)"/)[1];
|
||||
});
|
||||
const bodys = JSON.parse(
|
||||
playht
|
||||
.match(/post\(.*?,(.*?),\n/)[1]
|
||||
.replace(/"keyyy"\s*:\s*''.*?''/, '"keyyy" : "' + key + '"')
|
||||
);
|
||||
var data = JSON.parse(
|
||||
post(posturl, {
|
||||
headers: {
|
||||
Referer: HOST
|
||||
},
|
||||
body: bodys
|
||||
})
|
||||
);
|
||||
if (data.ext == "xgplayer") {
|
||||
var dataurl =
|
||||
"https://yun.366day.site/mp4hls/xgplayer.php?vid=" + data.url;
|
||||
var video = fetch(dataurl, {
|
||||
headers: {
|
||||
Referer: jsh
|
||||
}
|
||||
}).match(
|
||||
/"url": "(.*?)"/
|
||||
)[1];
|
||||
input = {
|
||||
parse: 0,
|
||||
url: video,
|
||||
js: ''
|
||||
};
|
||||
} else if (data.ext == "hls" || data.ext == "hls_list") {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: decodeURIComponent(data.url),
|
||||
js: ''
|
||||
};
|
||||
} else {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: data.url,
|
||||
js: ''
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}),
|
||||
double: false,
|
||||
推荐: "*",
|
||||
一级: ".video-img-box;h6.title&&Text;.lazyload&&data-src;.label&&Text;a&&href",
|
||||
二级: {
|
||||
title: ".page-title&&Text;.tag-link&&Text",
|
||||
img: ".module-item-pic&&.lazyload&&src",
|
||||
desc: ".video-info-items:eq(3)&&Text;.video-info-items:eq(2)&&Text;;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text",
|
||||
content: ".video-info-content&&Text",
|
||||
tabs: ".module-tab-item.tab-item",
|
||||
lists: ".module-player-list:eq(#id) a",
|
||||
tab_text: "body&&Text",
|
||||
list_text: "body&&Text",
|
||||
list_url: "a&&href"
|
||||
},
|
||||
detailUrl: "",
|
||||
搜索: "*"
|
||||
}
|
||||
378
TVBoxOSC/tvbox/js/采集之王.js
Normal file
378
TVBoxOSC/tvbox/js/采集之王.js
Normal file
@ -0,0 +1,378 @@
|
||||
globalThis.getRandomItem = function(items) {
|
||||
return items[Math.random() * items.length | 0];
|
||||
}
|
||||
var rule = {
|
||||
title: '采集之王[合]',
|
||||
author: '道长',
|
||||
version: '20240706 beta17',
|
||||
update_info: ``.trim(),
|
||||
host: '',
|
||||
homeTid: '',
|
||||
homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
|
||||
detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
|
||||
searchUrl: '/api.php/provide/vod/?wd=**&pg=#TruePage##page=fypage',
|
||||
classUrl: '/api.php/provide/vod/',
|
||||
url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyfilter',
|
||||
filter_url: '{{fl.类型}}',
|
||||
headers: {
|
||||
'User-Agent': 'MOBILE_UA'
|
||||
},
|
||||
timeout: 5000,
|
||||
limit: 20,
|
||||
search_limit: 10,
|
||||
searchable: 1,
|
||||
quickSearch: 0,
|
||||
filterable: 1,
|
||||
play_parse: true,
|
||||
parse_url: '',
|
||||
search_match: false,
|
||||
search_pic: true,
|
||||
预处理: $js.toString(() => {
|
||||
function getClasses(item) {
|
||||
let classes = [];
|
||||
if (item.class_name && item.class_url) {
|
||||
if (!/&|电影|电视剧|综艺|动漫[\u4E00-\u9FA5]+/.test(item.class_name)) {
|
||||
try {
|
||||
item.class_name = ungzip(item.class_name)
|
||||
} catch (e) {
|
||||
log(`不识别的class_name导致gzip解码失败:${e}`)
|
||||
return classes
|
||||
}
|
||||
}
|
||||
let names = item.class_name.split('&');
|
||||
let urls = item.class_url.split('&');
|
||||
let cnt = Math.min(names.length, urls.length);
|
||||
for (let i = 0; i < cnt; i++) {
|
||||
classes.push({
|
||||
'type_id': urls[i],
|
||||
'type_name': names[i]
|
||||
});
|
||||
}
|
||||
}
|
||||
return classes
|
||||
}
|
||||
if (typeof(batchFetch) === 'function') {
|
||||
rule.search_limit = 16;
|
||||
log('当前程序支持批量请求[batchFetch],搜索限制已设置为16');
|
||||
}
|
||||
let _url = rule.params;
|
||||
log(`传入参数:${_url}`);
|
||||
if (_url && typeof(_url) === 'string' && /^(http|file)/.test(_url)) {
|
||||
if (_url.includes('$')) {
|
||||
let _url_params = _url.split('$');
|
||||
_url = _url_params[0];
|
||||
rule.search_match = !!(_url_params[1]);
|
||||
if (_url_params.length > 2) {
|
||||
rule.search_pic = !!(_url_params[2]);
|
||||
}
|
||||
}
|
||||
let html = request(_url);
|
||||
let json = JSON.parse(html);
|
||||
let _classes = [];
|
||||
rule.filter = {};
|
||||
rule.filter_def = {};
|
||||
json.forEach(it => {
|
||||
let _obj = {
|
||||
type_name: it.name,
|
||||
type_id: it.url,
|
||||
parse_url: it.parse_url || '',
|
||||
searchable: it.searchable !== 0,
|
||||
api: it.api || '',
|
||||
cate_exclude: it.cate_exclude || '',
|
||||
cate_excludes: it.cate_excludes || [],
|
||||
};
|
||||
_classes.push(_obj);
|
||||
try {
|
||||
let json1 = [];
|
||||
if (it.class_name && it.class_url) {
|
||||
json1 = getClasses(it);
|
||||
} else {
|
||||
json1 = JSON.parse(request(urljoin(_obj.type_id, _obj.api || rule.classUrl))).class;
|
||||
}
|
||||
if (_obj.cate_excludes && Array.isArray(_obj.cate_excludes) && _obj.cate_excludes.length > 0) {
|
||||
json1 = json1.filter(cl => !_obj.cate_excludes.includes(cl.type_name));
|
||||
} else if (_obj.cate_exclude) {
|
||||
json1 = json1.filter(cl => !new RegExp(_obj.cate_exclude, 'i').test(cl.type_name));
|
||||
}
|
||||
rule.filter[_obj.type_id] = [{
|
||||
"key": "类型",
|
||||
"name": "类型",
|
||||
"value": json1.map(i => {
|
||||
return {
|
||||
"n": i.type_name,
|
||||
'v': i.type_id
|
||||
}
|
||||
})
|
||||
}];
|
||||
if (json1.length > 0) {
|
||||
rule.filter_def[it.url] = {
|
||||
"类型": json1[0].type_id
|
||||
};
|
||||
}
|
||||
} catch (e) {
|
||||
rule.filter[it.url] = [{
|
||||
"key": "类型",
|
||||
"name": "类型",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": ""
|
||||
}]
|
||||
}];
|
||||
}
|
||||
});
|
||||
rule.classes = _classes;
|
||||
}
|
||||
}),
|
||||
class_parse: $js.toString(() => {
|
||||
input = rule.classes;
|
||||
}),
|
||||
推荐: $js.toString(() => {
|
||||
VODS = [];
|
||||
if (rule.classes) {
|
||||
let randomClass = getRandomItem(rule.classes);
|
||||
let _url = urljoin(randomClass.type_id, input);
|
||||
if (randomClass.api) {
|
||||
_url = _url.replace('/api.php/provide/vod/', randomClass.api)
|
||||
}
|
||||
try {
|
||||
let html = request(_url, {
|
||||
timeout: rule.timeout
|
||||
});
|
||||
let json = JSON.parse(html);
|
||||
VODS = json.list;
|
||||
VODS.forEach(it => {
|
||||
it.vod_id = randomClass.type_id + '$' + it.vod_id;
|
||||
it.vod_remarks = it.vod_remarks + '|' + randomClass.type_name;
|
||||
});
|
||||
} catch (e) {}
|
||||
}
|
||||
}),
|
||||
一级: $js.toString(() => {
|
||||
VODS = [];
|
||||
if (rule.classes) {
|
||||
let _url = urljoin(MY_CATE, input);
|
||||
let current_vod = rule.classes.find(item => item.type_id === MY_CATE);
|
||||
if (current_vod && current_vod.api) {
|
||||
_url = _url.replace('/api.php/provide/vod/', current_vod.api)
|
||||
}
|
||||
let html = request(_url);
|
||||
let json = JSON.parse(html);
|
||||
VODS = json.list;
|
||||
VODS.forEach(it => {
|
||||
it.vod_id = MY_CATE + '$' + it.vod_id
|
||||
});
|
||||
}
|
||||
}),
|
||||
二级: $js.toString(() => {
|
||||
VOD = {};
|
||||
if (orId === 'update_info') {
|
||||
VOD = {
|
||||
vod_content: rule.update_info.trim(),
|
||||
vod_name: '更新日志',
|
||||
type_name: '更新日志',
|
||||
vod_pic: 'https://resource-cdn.tuxiaobei.com/video/FtWhs2mewX_7nEuE51_k6zvg6awl.png',
|
||||
vod_remarks: `版本:${rule.version}`,
|
||||
vod_play_from: '道长在线',
|
||||
vod_play_url: '随机小视频$http://api.yujn.cn/api/zzxjj.php',
|
||||
};
|
||||
} else {
|
||||
if (rule.classes) {
|
||||
let _url = urljoin(fyclass, input);
|
||||
let current_vod = rule.classes.find(item => item.type_id === fyclass);
|
||||
if (current_vod && current_vod.api) {
|
||||
_url = _url.replace('/api.php/provide/vod/', current_vod.api)
|
||||
}
|
||||
let html = request(_url);
|
||||
let json = JSON.parse(html);
|
||||
let data = json.list;
|
||||
VOD = data[0];
|
||||
if (current_vod && current_vod.type_name) {
|
||||
VOD.vod_play_from = VOD.vod_play_from.split('$$$').map(it => current_vod.type_name + '|' + it).join('$$$')
|
||||
}
|
||||
}
|
||||
}
|
||||
}),
|
||||
搜索: $js.toString(() => {
|
||||
VODS = [];
|
||||
if (rule.classes) {
|
||||
let canSearch = rule.classes.filter(it => it.searchable);
|
||||
let page = Number(MY_PAGE);
|
||||
page = (MY_PAGE - 1) % Math.ceil(canSearch.length / rule.search_limit) + 1;
|
||||
let truePage = Math.ceil(MY_PAGE / Math.ceil(canSearch.length / rule.search_limit));
|
||||
if (rule.search_limit) {
|
||||
let start = (page - 1) * rule.search_limit;
|
||||
let end = page * rule.search_limit;
|
||||
let t1 = new Date().getTime();
|
||||
let searchMode = typeof(batchFetch) === 'function' ? '批量' : '单个';
|
||||
log('start:' + start);
|
||||
log('end:' + end);
|
||||
log('搜索模式:' + searchMode);
|
||||
log('精准搜索:' + rule.search_match);
|
||||
log('强制获取图片:' + rule.search_pic);
|
||||
if (start < canSearch.length) {
|
||||
let search_classes = canSearch.slice(start, end);
|
||||
let urls = [];
|
||||
search_classes.forEach(it => {
|
||||
let _url = urljoin(it.type_id, input);
|
||||
if (it.api) {
|
||||
_url = _url.replace('/api.php/provide/vod/', it.api)
|
||||
}
|
||||
_url = _url.replace("#TruePage#", "" + truePage);
|
||||
urls.push(_url);
|
||||
});
|
||||
let results_list = [];
|
||||
let results = [];
|
||||
if (typeof(batchFetch) === 'function') {
|
||||
let reqUrls = urls.map(it => {
|
||||
return {
|
||||
url: it,
|
||||
options: {
|
||||
timeout: rule.timeout
|
||||
}
|
||||
}
|
||||
});
|
||||
let rets = batchFetch(reqUrls);
|
||||
let detailUrls = [];
|
||||
let detailUrlCount = 0;
|
||||
rets.forEach((ret, idx) => {
|
||||
let it = search_classes[idx];
|
||||
if (ret) {
|
||||
try {
|
||||
let json = JSON.parse(ret);
|
||||
let data = json.list;
|
||||
data.forEach(i => {
|
||||
i.site_name = it.type_name;
|
||||
i.vod_id = it.type_id + '$' + i.vod_id;
|
||||
i.vod_remarks = i.vod_remarks + '|' + it.type_name;
|
||||
});
|
||||
if (rule.search_match) {
|
||||
data = data.filter(item => item.vod_name && (new RegExp(KEY, 'i')).test(item.vod_name))
|
||||
}
|
||||
if (data.length > 0) {
|
||||
if (rule.search_pic && !data[0].vod_pic) {
|
||||
log(`当前搜索站点【${it.type_name}】没图片,尝试访问二级去获取图片`);
|
||||
let detailUrl = urls[idx].split('wd=')[0] + 'ac=detail&ids=' + data.map(k => k.vod_id.split('$')[1]).join(',');
|
||||
detailUrls.push(detailUrl);
|
||||
results_list.push({
|
||||
data: data,
|
||||
has_pic: false,
|
||||
detailUrlCount: detailUrlCount
|
||||
});
|
||||
detailUrlCount++;
|
||||
} else {
|
||||
results_list.push({
|
||||
data: data,
|
||||
has_pic: true
|
||||
});
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
log(`请求:${it.type_id}发生错误:${e.message}`)
|
||||
}
|
||||
}
|
||||
});
|
||||
let reqUrls2 = detailUrls.map(it => {
|
||||
return {
|
||||
url: it,
|
||||
options: {
|
||||
timeout: rule.timeout
|
||||
}
|
||||
}
|
||||
});
|
||||
let rets2 = reqUrls2.length > 0 ? batchFetch(reqUrls2) : [];
|
||||
for (let k = 0; k < results_list.length; k++) {
|
||||
let result_data = results_list[k].data;
|
||||
if (!results_list[k].has_pic) {
|
||||
try {
|
||||
let detailJson = JSON.parse(rets2[results_list[k].detailUrlCount]);
|
||||
log('二级数据列表元素数:' + detailJson.list.length);
|
||||
result_data.forEach((d, _seq) => {
|
||||
let detailVodPic = detailJson.list.find(vod => vod.vod_id.toString() === d.vod_id.split('$')[1]);
|
||||
if (detailVodPic) {
|
||||
Object.assign(d, {
|
||||
vod_pic: detailVodPic.vod_pic
|
||||
});
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
log(`强制获取网站${result_data[0].site_name}的搜索图片失败:${e.message}`);
|
||||
}
|
||||
}
|
||||
results = results.concat(result_data);
|
||||
}
|
||||
} else {
|
||||
urls.forEach((_url, idx) => {
|
||||
let it = search_classes[idx];
|
||||
try {
|
||||
let html = request(_url);
|
||||
let json = JSON.parse(html);
|
||||
let data = json.list;
|
||||
data.forEach(i => {
|
||||
i.vod_id = it.type_id + '$' + i.vod_id;
|
||||
i.vod_remarks = i.vod_remarks + '|' + it.type_name;
|
||||
});
|
||||
if (rule.search_match) {
|
||||
data = data.filter(item => item.vod_name && (new RegExp(KEY, 'i')).test(item.vod_name))
|
||||
}
|
||||
if (data.length > 0) {
|
||||
if (rule.search_pic && !data[0].vod_pic) {
|
||||
log(`当前搜索站点【${it.type_name}】没图片,尝试访问二级去获取图片`);
|
||||
let detailUrl = urls[idx].split('wd=')[0] + 'ac=detail&ids=' + data.map(k => k.vod_id.split('$')[1]).join(',');
|
||||
try {
|
||||
let detailJson = JSON.parse(request(detailUrl));
|
||||
log('二级数据列表元素数:' + detailJson.list.length);
|
||||
data.forEach((d, _seq) => {
|
||||
let detailVodPic = detailJson.list.find(vod => vod.vod_id.toString() === d.vod_id.split('$')[1]);
|
||||
if (detailVodPic) {
|
||||
Object.assign(d, {
|
||||
vod_pic: detailVodPic.vod_pic
|
||||
});
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
log(`强制获取网站${it.type_id}的搜索图片失败:${e.message}`);
|
||||
}
|
||||
}
|
||||
results = results.concat(data);
|
||||
}
|
||||
results = results.concat(data);
|
||||
} catch (e) {
|
||||
log(`请求:${it.type_id}发生错误:${e.message}`)
|
||||
}
|
||||
});
|
||||
}
|
||||
VODS = results;
|
||||
let t2 = new Date().getTime();
|
||||
log(`${searchMode}搜索:${urls.length}个站耗时:${(Number(t2) - Number(t1))}ms`)
|
||||
}
|
||||
}
|
||||
}
|
||||
}),
|
||||
lazy: $js.toString(() => {
|
||||
let parse_url = '';
|
||||
if (flag && flag.includes('|')) {
|
||||
let type_name = flag.split('|')[0];
|
||||
let current_vod = rule.classes.find(item => item.type_name === type_name);
|
||||
if (current_vod && current_vod.parse_url) {
|
||||
parse_url = current_vod.parse_url
|
||||
}
|
||||
}
|
||||
if (/\.(m3u8|mp4)/.test(input)) {
|
||||
input = {
|
||||
parse: 0,
|
||||
url: input
|
||||
}
|
||||
} else {
|
||||
if (parse_url.startsWith('json:')) {
|
||||
let purl = parse_url.replace('json:', '') + input;
|
||||
let html = request(purl);
|
||||
input = {
|
||||
parse: 0,
|
||||
url: JSON.parse(html).url
|
||||
}
|
||||
} else {
|
||||
input = parse_url + input;
|
||||
}
|
||||
}
|
||||
}),
|
||||
}
|
||||
25
TVBoxOSC/tvbox/json/123.json
Normal file
25
TVBoxOSC/tvbox/json/123.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"SiteUrl": "https://123panfx.com,https://pan1.me",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "电影",
|
||||
"type_id": "2"
|
||||
},
|
||||
{
|
||||
"type_name": "剧集",
|
||||
"type_id": "48"
|
||||
},
|
||||
{
|
||||
"type_name": "4K原盘",
|
||||
"type_id": "56"
|
||||
},
|
||||
{
|
||||
"type_name": "综艺",
|
||||
"type_id": "52"
|
||||
},
|
||||
{
|
||||
"type_name": "动漫",
|
||||
"type_id": "37"
|
||||
}
|
||||
]
|
||||
}
|
||||
105
TVBoxOSC/tvbox/json/aliShare.json
Normal file
105
TVBoxOSC/tvbox/json/aliShare.json
Normal file
@ -0,0 +1,105 @@
|
||||
[
|
||||
{
|
||||
"name": "我的网盘",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "",
|
||||
"folder": "root"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "短剧合集",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "Y5wMKfVDD6K",
|
||||
"folder": "6616613853041ba53f2842918e02346943d980b4"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "动漫合集",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "LEaepiYfxcw",
|
||||
"folder": "61019a966975bfef583449a39b36da512384b2d7"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "电影合集",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "ZHNChQfiPfk",
|
||||
"folder": "root"
|
||||
},
|
||||
{
|
||||
"shareId": "e27BPgDwxeA",
|
||||
"folder": "root"
|
||||
},
|
||||
{
|
||||
"shareId": "XUH7r6BZuML",
|
||||
"folder": "root"
|
||||
},
|
||||
{
|
||||
"shareId": "qZ4f1i2EFW2",
|
||||
"folder": "root"
|
||||
},
|
||||
{
|
||||
"shareId": "ohJ68NV7iFw",
|
||||
"folder": "root"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "电视剧合集",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "ftMhRaKUfYp",
|
||||
"folder": "root"
|
||||
},
|
||||
{
|
||||
"shareId": "MLWPRHRt9W3",
|
||||
"folder": "root"
|
||||
},
|
||||
{
|
||||
"shareId": "8Fg4TNsd2A2",
|
||||
"folder": "root"
|
||||
},
|
||||
{
|
||||
"shareId": "ar8Kg9azw1S",
|
||||
"folder": "root"
|
||||
},
|
||||
{
|
||||
"shareId": "GMYSz3AHFaA",
|
||||
"folder": "root"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "综艺合集",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "UuHi9PeYSVz",
|
||||
"folder": "root"
|
||||
},
|
||||
{
|
||||
"shareId": "v9To3HC6vhs",
|
||||
"folder": "root"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "其它合集",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "4ydLxf7VgH7",
|
||||
"folder": "root"
|
||||
},
|
||||
{
|
||||
"shareId": "uWa9gbM3RJ7",
|
||||
"folder": "root"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
21
TVBoxOSC/tvbox/json/alist.json
Normal file
21
TVBoxOSC/tvbox/json/alist.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"vodPic": "https://rogsoft.ddnsto.com/softcenter/softcenter/res/icon-alist.png",
|
||||
"drives": [
|
||||
{
|
||||
"name": "小雅",
|
||||
"server": "http://alist.xiaoya.pro"
|
||||
},
|
||||
{
|
||||
"name": "触光",
|
||||
"server": "https://pan.ichuguang.com"
|
||||
},
|
||||
{
|
||||
"name": "魔都云",
|
||||
"server": "https://cdn.modupan.com"
|
||||
},
|
||||
{
|
||||
"name": "七米蓝",
|
||||
"server": "https://al.chirmyram.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
199
TVBoxOSC/tvbox/json/aliyunpansearch.json
Normal file
199
TVBoxOSC/tvbox/json/aliyunpansearch.json
Normal file
@ -0,0 +1,199 @@
|
||||
{
|
||||
"classes": [
|
||||
{
|
||||
"type_name": "电影",
|
||||
"type_id": "dy"
|
||||
},
|
||||
{
|
||||
"type_name": "电视",
|
||||
"type_id": "ds"
|
||||
},
|
||||
{
|
||||
"type_name": "短剧",
|
||||
"type_id": "dj"
|
||||
},
|
||||
{
|
||||
"type_name": "综艺",
|
||||
"type_id": "zy"
|
||||
},
|
||||
{
|
||||
"type_name": "动漫",
|
||||
"type_id": "dm"
|
||||
},
|
||||
{
|
||||
"type_name": "音乐",
|
||||
"type_id": "yy"
|
||||
}
|
||||
],
|
||||
"filters": {
|
||||
"dy": [
|
||||
{
|
||||
"key": "root",
|
||||
"name": "来源",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "夸克",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "UC",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "阿里",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "百度",
|
||||
"v": "4"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"ds": [
|
||||
{
|
||||
"key": "root",
|
||||
"name": "来源",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "夸克",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "UC",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "阿里",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "百度",
|
||||
"v": "4"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"dj": [
|
||||
{
|
||||
"key": "root",
|
||||
"name": "来源",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "夸克",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "UC",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "阿里",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "百度",
|
||||
"v": "4"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"zy": [
|
||||
{
|
||||
"key": "root",
|
||||
"name": "来源",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "夸克",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "UC",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "阿里",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "百度",
|
||||
"v": "4"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"dm": [
|
||||
{
|
||||
"key": "root",
|
||||
"name": "来源",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "夸克",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "UC",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "阿里",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "百度",
|
||||
"v": "4"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"yy": [
|
||||
{
|
||||
"key": "root",
|
||||
"name": "来源",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "夸克",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "UC",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "阿里",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "百度",
|
||||
"v": "4"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"siteUrl": "https://ys1api.yingso.fun/v7/ali/all"
|
||||
}
|
||||
33
TVBoxOSC/tvbox/json/ex.json
Normal file
33
TVBoxOSC/tvbox/json/ex.json
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"SiteUrl": "https://xhww.net",
|
||||
"Domains": [
|
||||
"https://xhww.net",
|
||||
"https://erxiaofn.click",
|
||||
"https://erxiaofn.site",
|
||||
"https://www.xhww.net"
|
||||
],
|
||||
"SiteWord": "ex",
|
||||
"SiteName": "二小",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "热播资源",
|
||||
"type_id": "22"
|
||||
},
|
||||
{
|
||||
"type_name": "二小电影",
|
||||
"type_id": "1"
|
||||
},
|
||||
{
|
||||
"type_name": "二小剧集",
|
||||
"type_id": "2"
|
||||
},
|
||||
{
|
||||
"type_name": "二小动漫",
|
||||
"type_id": "3"
|
||||
},
|
||||
{
|
||||
"type_name": "二小综艺",
|
||||
"type_id": "17"
|
||||
}
|
||||
]
|
||||
}
|
||||
34
TVBoxOSC/tvbox/json/hb.json
Normal file
34
TVBoxOSC/tvbox/json/hb.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"SiteUrl": "http://103.45.162.207:20720",
|
||||
"Domains": [
|
||||
"http://103.45.162.207:20720"
|
||||
],
|
||||
"SiteWord": "hb",
|
||||
"SiteName": "虎斑",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "小虎斑电影",
|
||||
"type_id": "1"
|
||||
},
|
||||
{
|
||||
"type_name": "小虎斑剧集",
|
||||
"type_id": "2"
|
||||
},
|
||||
{
|
||||
"type_name": "小虎斑综艺",
|
||||
"type_id": "3"
|
||||
},
|
||||
{
|
||||
"type_name": "小虎斑动漫",
|
||||
"type_id": "4"
|
||||
},
|
||||
{
|
||||
"type_name": "小虎斑精品",
|
||||
"type_id": "5"
|
||||
},
|
||||
{
|
||||
"type_name": "小虎斑短剧",
|
||||
"type_id": "6"
|
||||
}
|
||||
]
|
||||
}
|
||||
25
TVBoxOSC/tvbox/json/hm.json
Normal file
25
TVBoxOSC/tvbox/json/hm.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"SiteUrl": "https://www.haimianxz.com,https://www.hmxz.org",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "电影",
|
||||
"type_id": "1"
|
||||
},
|
||||
{
|
||||
"type_name": "剧集",
|
||||
"type_id": "2"
|
||||
},
|
||||
{
|
||||
"type_name": "动漫",
|
||||
"type_id": "3"
|
||||
},
|
||||
{
|
||||
"type_name": "其它",
|
||||
"type_id": "3"
|
||||
},
|
||||
{
|
||||
"type_name": "综艺",
|
||||
"type_id": "5"
|
||||
}
|
||||
]
|
||||
}
|
||||
30
TVBoxOSC/tvbox/json/kf.json
Normal file
30
TVBoxOSC/tvbox/json/kf.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"SiteUrl": "https://www.kuafuzy.com,https://www.kfzy.cc",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "电影",
|
||||
"type_id": "1"
|
||||
},
|
||||
{
|
||||
"type_name": "剧集",
|
||||
"type_id": "2"
|
||||
},
|
||||
{
|
||||
"type_name": "4K电影",
|
||||
"type_id": "3"
|
||||
},
|
||||
{
|
||||
"type_name": "4K剧集",
|
||||
"type_id": "4"
|
||||
},
|
||||
{
|
||||
"type_name": "动漫",
|
||||
"type_id": "5"
|
||||
},
|
||||
{
|
||||
"type_name": "短剧",
|
||||
"type_id": "6"
|
||||
}
|
||||
],
|
||||
"Cookie": "bbs_sid=qtrfbfct9gs8e7qat96o3nf09t; isClose=yes; __mxau__c2-lS6GI0pR=de438e75-e385-47c4-acb1-6564b407c7b1; __mxaf__c2-lS6GI0pR=1761439615; bbs_token=9NqiBWxAvM2MN_2FST20QOg5g9gcyzm2Hqfd9YwaQjK6Y_3D; __mxas__c2-lS6GI0pR=%7B%22sid%22%3A%22e4f30c47-1290-431b-b228-b9116c4744bd%22%2C%22vd%22%3A5%2C%22stt%22%3A168%2C%22dr%22%3A3%2C%22expires%22%3A1761476207%2C%22ct%22%3A1761474407%7D; __mxav__c2-lS6GI0pR=13"
|
||||
}
|
||||
40
TVBoxOSC/tvbox/json/lb.json
Normal file
40
TVBoxOSC/tvbox/json/lb.json
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"SiteUrl": "http://www.labi88.sbs",
|
||||
"Domains": [
|
||||
"http://www.labi88.sbs",
|
||||
"https://feimao666.fun",
|
||||
"http://feimao888.fun"
|
||||
],
|
||||
"SiteWord": "labi",
|
||||
"SiteName": "蜡笔",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "蜡笔电影",
|
||||
"type_id": "1"
|
||||
},
|
||||
{
|
||||
"type_name": "蜡笔剧集",
|
||||
"type_id": "2"
|
||||
},
|
||||
{
|
||||
"type_name": "蜡笔动漫",
|
||||
"type_id": "3"
|
||||
},
|
||||
{
|
||||
"type_name": "蜡笔综艺",
|
||||
"type_id": "4"
|
||||
},
|
||||
{
|
||||
"type_name": "蜡笔短剧",
|
||||
"type_id": "5"
|
||||
},
|
||||
{
|
||||
"type_name": "臻彩4K",
|
||||
"type_id": "24"
|
||||
},
|
||||
{
|
||||
"type_name": "蜡笔臻彩",
|
||||
"type_id": "29"
|
||||
}
|
||||
]
|
||||
}
|
||||
33
TVBoxOSC/tvbox/json/lj.json
Normal file
33
TVBoxOSC/tvbox/json/lj.json
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"SiteUrl": "https://www.leijing.xyz,https://www.leijing1.com,https://leijing.xyz,https://leijing1.com",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "电影",
|
||||
"type_id": "42204681950354"
|
||||
},
|
||||
{
|
||||
"type_name": "剧集",
|
||||
"type_id": "42204684250355"
|
||||
},
|
||||
{
|
||||
"type_name": "动漫",
|
||||
"type_id": "42204792950357"
|
||||
},
|
||||
{
|
||||
"type_name": "影视原盘",
|
||||
"type_id": "42212287587456"
|
||||
},
|
||||
{
|
||||
"type_name": "纪录",
|
||||
"type_id": "42204697150356"
|
||||
},
|
||||
{
|
||||
"type_name": "综艺",
|
||||
"type_id": "42210356650363"
|
||||
},
|
||||
{
|
||||
"type_name": "演唱会",
|
||||
"type_id": "42317879720298"
|
||||
}
|
||||
]
|
||||
}
|
||||
28
TVBoxOSC/tvbox/json/mogg.json
Normal file
28
TVBoxOSC/tvbox/json/mogg.json
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"SiteUrl": "http://123.666291.xyz",
|
||||
"Domains": [
|
||||
"http://123.666291.xyz",
|
||||
"https://www.muou.site",
|
||||
"https://www.muou.asia"
|
||||
],
|
||||
"SiteWord": "mogg",
|
||||
"SiteName": "木偶",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "木偶电影",
|
||||
"type_id": "1"
|
||||
},
|
||||
{
|
||||
"type_name": "木偶剧集",
|
||||
"type_id": "2"
|
||||
},
|
||||
{
|
||||
"type_name": "木偶动漫",
|
||||
"type_id": "3"
|
||||
},
|
||||
{
|
||||
"type_name": "木偶纪录片",
|
||||
"type_id": "4"
|
||||
}
|
||||
]
|
||||
}
|
||||
30
TVBoxOSC/tvbox/json/og.json
Normal file
30
TVBoxOSC/tvbox/json/og.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"SiteUrl": "https://woog.nxog.eu.org",
|
||||
"Domains": [
|
||||
"https://woog.nxog.eu.org"
|
||||
],
|
||||
"SiteWord": "og",
|
||||
"SiteName": "欧歌",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "电影",
|
||||
"type_id": "1"
|
||||
},
|
||||
{
|
||||
"type_name": "剧集",
|
||||
"type_id": "2"
|
||||
},
|
||||
{
|
||||
"type_name": "动漫",
|
||||
"type_id": "3"
|
||||
},
|
||||
{
|
||||
"type_name": "综艺",
|
||||
"type_id": "4"
|
||||
},
|
||||
{
|
||||
"type_name": "短剧",
|
||||
"type_id": "5"
|
||||
}
|
||||
]
|
||||
}
|
||||
111
TVBoxOSC/tvbox/json/quarkShare.json
Normal file
111
TVBoxOSC/tvbox/json/quarkShare.json
Normal file
@ -0,0 +1,111 @@
|
||||
[
|
||||
{
|
||||
"name": "我的网盘",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "",
|
||||
"folder": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "幼儿教育",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "a08f66152533",
|
||||
"folder": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "短剧合集",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "885fd4ba2d92",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "a1cda418984f",
|
||||
"folder": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "电影合集",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "49ab75d52e00",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "a632967760cf",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "2f59bb5d96b9",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "50828c368def",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "e07e26aecc08",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "0536a38a356e",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "e273ef697403",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "c8ac6c88e5d8",
|
||||
"folder": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "电视剧合集",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "d19c4ebe1ff7",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "cd4c5ac7e830",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "e1b2ba8b6d6c",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "166fa0a7ca6f",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "37a92c0b7f10",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "fb3386e42af2",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "46ce214f4ed7",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "fe4681d7fb43",
|
||||
"folder": "0"
|
||||
},
|
||||
{
|
||||
"shareId": "8d65e885b059",
|
||||
"folder": "0"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
47
TVBoxOSC/tvbox/json/ucShare.json
Normal file
47
TVBoxOSC/tvbox/json/ucShare.json
Normal file
@ -0,0 +1,47 @@
|
||||
[
|
||||
{
|
||||
"name": "我的网盘",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "",
|
||||
"folder": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "豆瓣TOP250部",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "c0503fdee6644",
|
||||
"folder": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "日剧",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "391b86c09cd24",
|
||||
"folder": "9df4921d548841199e625765413f8bd6"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "韩剧",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "21f04a22052f4",
|
||||
"folder": "950f5ca7d5e54d528c0dae1fddec5c78"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "音乐",
|
||||
"folders": [
|
||||
{
|
||||
"shareId": "369e30038dae4",
|
||||
"folder": "1b8a55dc18a54fb7aea8ed2b6fd6ad53"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
2054
TVBoxOSC/tvbox/json/wogg.json
Normal file
2054
TVBoxOSC/tvbox/json/wogg.json
Normal file
File diff suppressed because it is too large
Load Diff
38
TVBoxOSC/tvbox/json/xbky.json
Normal file
38
TVBoxOSC/tvbox/json/xbky.json
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"SiteUrl": "http://xsayang.fun:12512",
|
||||
"Domains": [
|
||||
"http://xsayang.fun:12512"
|
||||
],
|
||||
"SiteWord": "xbky",
|
||||
"SiteName": "小斑快映",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "电影",
|
||||
"type_id": "1"
|
||||
},
|
||||
{
|
||||
"type_name": "剧集",
|
||||
"type_id": "2"
|
||||
},
|
||||
{
|
||||
"type_name": "综艺",
|
||||
"type_id": "3"
|
||||
},
|
||||
{
|
||||
"type_name": "动漫",
|
||||
"type_id": "4"
|
||||
},
|
||||
{
|
||||
"type_name": "精品",
|
||||
"type_id": "5"
|
||||
},
|
||||
{
|
||||
"type_name": "短剧",
|
||||
"type_id": "6"
|
||||
},
|
||||
{
|
||||
"type_name": "123",
|
||||
"type_id": "35"
|
||||
}
|
||||
]
|
||||
}
|
||||
36
TVBoxOSC/tvbox/json/yyds.json
Normal file
36
TVBoxOSC/tvbox/json/yyds.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"SiteUrl": "https://tv.yydsys.top",
|
||||
"Domains": [
|
||||
"https://tv.yydsys.top",
|
||||
"https://tv.yydsys.cc",
|
||||
"https://tv.214521.xyz"
|
||||
],
|
||||
"SiteWord": "yyds",
|
||||
"SiteName": "多多",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "多多电影",
|
||||
"type_id": "1"
|
||||
},
|
||||
{
|
||||
"type_name": "多多剧集",
|
||||
"type_id": "2"
|
||||
},
|
||||
{
|
||||
"type_name": "综艺",
|
||||
"type_id": "3"
|
||||
},
|
||||
{
|
||||
"type_name": "动漫",
|
||||
"type_id": "4"
|
||||
},
|
||||
{
|
||||
"type_name": "短剧",
|
||||
"type_id": "5"
|
||||
},
|
||||
{
|
||||
"type_name": "纪录",
|
||||
"type_id": "20"
|
||||
}
|
||||
]
|
||||
}
|
||||
41
TVBoxOSC/tvbox/json/zz.json
Normal file
41
TVBoxOSC/tvbox/json/zz.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"SiteUrl": "https://mihdr.top",
|
||||
"Domains": [
|
||||
"https://mihdr.top",
|
||||
"http://xiaomi666.fun",
|
||||
"http://www.miqk.cc",
|
||||
"https://xiaomiai.site"
|
||||
],
|
||||
"SiteWord": "zz",
|
||||
"SiteName": "至臻",
|
||||
"Classes": [
|
||||
{
|
||||
"type_name": "臻彩电影",
|
||||
"type_id": "1"
|
||||
},
|
||||
{
|
||||
"type_name": "臻彩剧集",
|
||||
"type_id": "2"
|
||||
},
|
||||
{
|
||||
"type_name": "臻彩动漫",
|
||||
"type_id": "3"
|
||||
},
|
||||
{
|
||||
"type_name": "臻彩综艺",
|
||||
"type_id": "4"
|
||||
},
|
||||
{
|
||||
"type_name": "短剧吃到饱",
|
||||
"type_id": "5"
|
||||
},
|
||||
{
|
||||
"type_name": "老剧计划",
|
||||
"type_id": "24"
|
||||
},
|
||||
{
|
||||
"type_name": "臻彩严选",
|
||||
"type_id": "26"
|
||||
}
|
||||
]
|
||||
}
|
||||
1398
TVBoxOSC/tvbox/json/初中课堂.json
Normal file
1398
TVBoxOSC/tvbox/json/初中课堂.json
Normal file
File diff suppressed because it is too large
Load Diff
5310
TVBoxOSC/tvbox/json/哔哩合集.json
Normal file
5310
TVBoxOSC/tvbox/json/哔哩合集.json
Normal file
File diff suppressed because it is too large
Load Diff
52
TVBoxOSC/tvbox/json/哔哩哔哩听书.json
Normal file
52
TVBoxOSC/tvbox/json/哔哩哔哩听书.json
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"class": [
|
||||
{
|
||||
"type_name": "有声小说",
|
||||
"type_id": "有声小说"
|
||||
},
|
||||
{
|
||||
"type_name": "玄幻有声小说",
|
||||
"type_id": "玄幻有声小说"
|
||||
},
|
||||
{
|
||||
"type_name": "奇幻有声小说",
|
||||
"type_id": "奇幻有声小说"
|
||||
},
|
||||
{
|
||||
"type_name": "都市有声小说",
|
||||
"type_id": "都市有声小说"
|
||||
},
|
||||
{
|
||||
"type_name": "言情有声小说",
|
||||
"type_id": "言情有声小说"
|
||||
},
|
||||
{
|
||||
"type_name": "武侠有声小说",
|
||||
"type_id": "武侠有声小说"
|
||||
},
|
||||
{
|
||||
"type_name": "仙侠有声小说",
|
||||
"type_id": "仙侠有声小说"
|
||||
},
|
||||
{
|
||||
"type_name": "科幻有声小说",
|
||||
"type_id": "科幻有声小说"
|
||||
},
|
||||
{
|
||||
"type_name": "重生有声小说",
|
||||
"type_id": "重生有声小说"
|
||||
},
|
||||
{
|
||||
"type_name": "穿越有声小说",
|
||||
"type_id": "穿越有声小说"
|
||||
},
|
||||
{
|
||||
"type_name": "恐怖惊悚有声小说",
|
||||
"type_id": "恐怖惊悚有声小说"
|
||||
},
|
||||
{
|
||||
"type_name": "网游竞技有声小说",
|
||||
"type_id": "网游竞技有声小说"
|
||||
}
|
||||
]
|
||||
}
|
||||
52
TVBoxOSC/tvbox/json/哔哩哔哩小品.json
Normal file
52
TVBoxOSC/tvbox/json/哔哩哔哩小品.json
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"class": [
|
||||
{
|
||||
"type_name": "春晚小品",
|
||||
"type_id": "春晚小品"
|
||||
},
|
||||
{
|
||||
"type_name": "赵本山",
|
||||
"type_id": "赵本山"
|
||||
},
|
||||
{
|
||||
"type_name": "陈佩斯",
|
||||
"type_id": "陈佩斯"
|
||||
},
|
||||
{
|
||||
"type_name": "冯巩",
|
||||
"type_id": "冯巩"
|
||||
},
|
||||
{
|
||||
"type_name": "宋小宝",
|
||||
"type_id": "宋小宝"
|
||||
},
|
||||
{
|
||||
"type_name": "赵丽蓉",
|
||||
"type_id": "赵丽蓉"
|
||||
},
|
||||
{
|
||||
"type_name": "郭达",
|
||||
"type_id": "郭达"
|
||||
},
|
||||
{
|
||||
"type_name": "潘长江",
|
||||
"type_id": "潘长江"
|
||||
},
|
||||
{
|
||||
"type_name": "郭冬临",
|
||||
"type_id": "郭冬临"
|
||||
},
|
||||
{
|
||||
"type_name": "严顺开",
|
||||
"type_id": "严顺开"
|
||||
},
|
||||
{
|
||||
"type_name": "文松",
|
||||
"type_id": "文松"
|
||||
},
|
||||
{
|
||||
"type_name": "开心麻花",
|
||||
"type_id": "开心麻花"
|
||||
}
|
||||
]
|
||||
}
|
||||
200
TVBoxOSC/tvbox/json/哔哩哔哩戏曲.json
Normal file
200
TVBoxOSC/tvbox/json/哔哩哔哩戏曲.json
Normal file
@ -0,0 +1,200 @@
|
||||
{
|
||||
"class": [
|
||||
{
|
||||
"type_name": "潮剧",
|
||||
"type_id": "潮剧"
|
||||
},
|
||||
{
|
||||
"type_name": "粤剧",
|
||||
"type_id": "粤剧"
|
||||
},
|
||||
{
|
||||
"type_name": "京剧",
|
||||
"type_id": "京剧"
|
||||
},
|
||||
{
|
||||
"type_name": "越剧",
|
||||
"type_id": "越剧"
|
||||
},
|
||||
{
|
||||
"type_name": "芗剧",
|
||||
"type_id": "芗剧"
|
||||
},
|
||||
{
|
||||
"type_name": "蒲剧",
|
||||
"type_id": "蒲剧"
|
||||
},
|
||||
{
|
||||
"type_name": "闽剧",
|
||||
"type_id": "闽剧"
|
||||
},
|
||||
{
|
||||
"type_name": "喊麦",
|
||||
"type_id": "喊麦"
|
||||
},
|
||||
{
|
||||
"type_name": "陕北说书",
|
||||
"type_id": "陕北说书"
|
||||
},
|
||||
{
|
||||
"type_name": "庐剧",
|
||||
"type_id": "庐剧"
|
||||
},
|
||||
{
|
||||
"type_name": "吕剧",
|
||||
"type_id": "吕剧"
|
||||
},
|
||||
{
|
||||
"type_name": "眉户",
|
||||
"type_id": "眉户"
|
||||
},
|
||||
{
|
||||
"type_name": "歌仔戏",
|
||||
"type_id": "歌仔戏"
|
||||
},
|
||||
{
|
||||
"type_name": "黄梅戏",
|
||||
"type_id": "黄梅戏"
|
||||
},
|
||||
{
|
||||
"type_name": "黄梅戏",
|
||||
"type_id": "黄梅戏"
|
||||
},
|
||||
{
|
||||
"type_name": "评剧",
|
||||
"type_id": "评剧"
|
||||
},
|
||||
{
|
||||
"type_name": "豫剧",
|
||||
"type_id": "豫剧"
|
||||
},
|
||||
{
|
||||
"type_name": "沪剧",
|
||||
"type_id": "沪剧"
|
||||
},
|
||||
{
|
||||
"type_name": "昆曲",
|
||||
"type_id": "昆曲"
|
||||
},
|
||||
{
|
||||
"type_name": "花鼓戏",
|
||||
"type_id": "花鼓戏"
|
||||
},
|
||||
{
|
||||
"type_name": "超清潮剧",
|
||||
"type_id": "超清潮剧"
|
||||
},
|
||||
{
|
||||
"type_name": "百花潮剧院",
|
||||
"type_id": "百花潮剧院"
|
||||
},
|
||||
{
|
||||
"type_name": "香港潮剧",
|
||||
"type_id": "香港潮剧"
|
||||
},
|
||||
{
|
||||
"type_name": "潮剧院",
|
||||
"type_id": "潮剧院"
|
||||
},
|
||||
{
|
||||
"type_name": "潮剧团",
|
||||
"type_id": "潮剧团"
|
||||
},
|
||||
{
|
||||
"type_name": "潮剧全剧",
|
||||
"type_id": "潮剧全剧"
|
||||
},
|
||||
{
|
||||
"type_name": "潮剧选段",
|
||||
"type_id": "潮剧选段"
|
||||
},
|
||||
{
|
||||
"type_name": "名家潮剧",
|
||||
"type_id": "名家潮剧"
|
||||
},
|
||||
{
|
||||
"type_name": "潮汕小品",
|
||||
"type_id": "潮汕小品"
|
||||
},
|
||||
{
|
||||
"type_name": "潮汕讲古",
|
||||
"type_id": "潮汕讲古"
|
||||
},
|
||||
{
|
||||
"type_name": "河北梆子",
|
||||
"type_id": "河北梆子"
|
||||
},
|
||||
{
|
||||
"type_name": "梆子腔",
|
||||
"type_id": "梆子腔"
|
||||
},
|
||||
{
|
||||
"type_name": "晋剧",
|
||||
"type_id": "晋剧"
|
||||
},
|
||||
{
|
||||
"type_name": "龙江剧",
|
||||
"type_id": "龙江剧"
|
||||
},
|
||||
{
|
||||
"type_name": "越调",
|
||||
"type_id": "越调"
|
||||
},
|
||||
{
|
||||
"type_name": "河南曲剧",
|
||||
"type_id": "河南曲剧"
|
||||
},
|
||||
{
|
||||
"type_name": "山东梆子",
|
||||
"type_id": "山东梆子"
|
||||
},
|
||||
{
|
||||
"type_name": "淮剧",
|
||||
"type_id": "淮剧"
|
||||
},
|
||||
{
|
||||
"type_name": "滑稽戏",
|
||||
"type_id": "滑稽戏"
|
||||
},
|
||||
{
|
||||
"type_name": "婺剧",
|
||||
"type_id": "婺剧"
|
||||
},
|
||||
{
|
||||
"type_name": "绍剧",
|
||||
"type_id": "绍剧"
|
||||
},
|
||||
{
|
||||
"type_name": "徽剧",
|
||||
"type_id": "徽剧"
|
||||
},
|
||||
{
|
||||
"type_name": "雁剧",
|
||||
"type_id": "雁剧"
|
||||
},
|
||||
{
|
||||
"type_name": "上党梆子",
|
||||
"type_id": "上党梆子"
|
||||
},
|
||||
{
|
||||
"type_name": "秦腔",
|
||||
"type_id": "秦腔"
|
||||
},
|
||||
{
|
||||
"type_name": "武安平调",
|
||||
"type_id": "武安平调"
|
||||
},
|
||||
{
|
||||
"type_name": "二人台",
|
||||
"type_id": "二人台"
|
||||
},
|
||||
{
|
||||
"type_name": "吉剧",
|
||||
"type_id": "吉剧"
|
||||
},
|
||||
{
|
||||
"type_name": "高腔",
|
||||
"type_id": "高腔"
|
||||
}
|
||||
]
|
||||
}
|
||||
702
TVBoxOSC/tvbox/json/哔哩哔哩演唱会.json
Normal file
702
TVBoxOSC/tvbox/json/哔哩哔哩演唱会.json
Normal file
@ -0,0 +1,702 @@
|
||||
{
|
||||
"class": [
|
||||
{
|
||||
"type_name": "演唱会筛选",
|
||||
"type_id": "演唱会超清"
|
||||
},
|
||||
{
|
||||
"type_name": "粤语",
|
||||
"type_id": "粤语歌曲超清"
|
||||
},
|
||||
{
|
||||
"type_name": "热榜",
|
||||
"type_id": "2022年热们歌曲超清"
|
||||
},
|
||||
{
|
||||
"type_name": "抖音神曲",
|
||||
"type_id": "抖音神曲超清"
|
||||
},
|
||||
{
|
||||
"type_name": "经典老歌",
|
||||
"type_id": "经典老歌超清"
|
||||
},
|
||||
{
|
||||
"type_name": "DJ",
|
||||
"type_id": "DJ歌曲超清"
|
||||
},
|
||||
{
|
||||
"type_name": "网红翻唱",
|
||||
"type_id": "网红翻唱歌曲超清"
|
||||
},
|
||||
{
|
||||
"type_name": "韩国女团",
|
||||
"type_id": "韩国女团演唱会超清"
|
||||
}
|
||||
],
|
||||
"filters": {
|
||||
"演唱会超清": [
|
||||
{
|
||||
"key": "order",
|
||||
"name": "排序",
|
||||
"value": [
|
||||
{
|
||||
"n": "综合排序",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "最多点击",
|
||||
"v": "click"
|
||||
},
|
||||
{
|
||||
"n": "最新发布",
|
||||
"v": "pubdate"
|
||||
},
|
||||
{
|
||||
"n": "最多弹幕",
|
||||
"v": "dm"
|
||||
},
|
||||
{
|
||||
"n": "最多收藏",
|
||||
"v": "stow"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "A阿杜",
|
||||
"v": "阿杜演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "A阿黛尔",
|
||||
"v": "阿黛尔演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "BBeyond",
|
||||
"v": "Beyond演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "BBy2",
|
||||
"v": "By2演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "BBIGBANG",
|
||||
"v": "BIGBANG演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "B布兰妮",
|
||||
"v": "布兰妮演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "B坂井泉水",
|
||||
"v": "坂井泉水演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "C陈奕迅",
|
||||
"v": "陈奕迅演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "C蔡依林",
|
||||
"v": "蔡依林演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "C初音未来",
|
||||
"v": "初音未来演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "C蔡健雅",
|
||||
"v": "蔡健雅演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "C陈小春",
|
||||
"v": "陈小春演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "C草蜢",
|
||||
"v": "草蜢演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "C陈慧娴",
|
||||
"v": "陈慧娴演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "C崔健",
|
||||
"v": "崔健演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "C仓木麻衣",
|
||||
"v": "仓木麻衣演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "D戴荃",
|
||||
"v": "戴荃演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "D动力火车",
|
||||
"v": "动力火车演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "D邓丽君",
|
||||
"v": "邓丽君演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "D丁当",
|
||||
"v": "丁当演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "D刀郎",
|
||||
"v": "刀郎演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "D邓紫棋",
|
||||
"v": "邓紫棋演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "D戴佩妮",
|
||||
"v": "戴佩妮演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "D邓丽君",
|
||||
"v": "邓丽君演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "F飞儿乐队",
|
||||
"v": "飞儿乐队演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "F费玉清",
|
||||
"v": "费玉清演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "F费翔",
|
||||
"v": "费翔演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "F方大同",
|
||||
"v": "方大同演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "F房东的猫",
|
||||
"v": "房东的猫演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "F凤飞飞",
|
||||
"v": "凤飞飞演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "F凤凰传奇",
|
||||
"v": "凤凰传奇演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "G郭采洁",
|
||||
"v": "郭采洁演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "G光良",
|
||||
"v": "光良演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "G郭静",
|
||||
"v": "郭静演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "G郭富城",
|
||||
"v": "郭富城演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "H胡彦斌",
|
||||
"v": "胡彦斌演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "H胡夏",
|
||||
"v": "胡夏演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "H韩红",
|
||||
"v": "韩红演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "H黄品源",
|
||||
"v": "黄品源演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "H黄小琥",
|
||||
"v": "黄小琥演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "H花儿乐队",
|
||||
"v": "花儿乐队演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "H黄家强",
|
||||
"v": "黄家强演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "H后街男孩",
|
||||
"v": "后街男孩演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "J经典老歌",
|
||||
"v": "经典老歌演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "J贾斯丁比伯",
|
||||
"v": "贾斯丁比伯演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "J金池",
|
||||
"v": "金池演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "J金志文",
|
||||
"v": "金志文演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "J焦迈奇",
|
||||
"v": "焦迈奇演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "K筷子兄弟",
|
||||
"v": "筷子兄弟演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L李玟",
|
||||
"v": "李玟演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L林忆莲",
|
||||
"v": "林忆莲演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L李克勤",
|
||||
"v": "李克勤演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L刘宪华",
|
||||
"v": "刘宪华演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L李圣杰",
|
||||
"v": "李圣杰演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L林宥嘉",
|
||||
"v": "林宥嘉演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L梁静茹",
|
||||
"v": "梁静茹演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L李健",
|
||||
"v": "李健演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L林俊杰",
|
||||
"v": "林俊杰演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L李玉刚",
|
||||
"v": "李玉刚演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L林志炫",
|
||||
"v": "林志炫演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L李荣浩",
|
||||
"v": "李荣浩演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L李宇春",
|
||||
"v": "李宇春演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L洛天依",
|
||||
"v": "洛天依演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L林子祥",
|
||||
"v": "林子祥演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L李宗盛",
|
||||
"v": "李宗盛演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L黎明",
|
||||
"v": "黎明演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L刘德华",
|
||||
"v": "刘德华演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L罗大佑",
|
||||
"v": "罗大佑演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L林肯公园",
|
||||
"v": "林肯公园演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "LLadyGaga",
|
||||
"v": "LadyGaga演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "L旅行团乐队",
|
||||
"v": "旅行团乐队演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "M莫文蔚",
|
||||
"v": "莫文蔚演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "M毛不易",
|
||||
"v": "毛不易演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "M梅艳芳",
|
||||
"v": "梅艳芳演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "M迈克尔杰克逊",
|
||||
"v": "迈克尔杰克逊演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "N南拳妈妈",
|
||||
"v": "南拳妈妈演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "P朴树",
|
||||
"v": "朴树演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Q齐秦",
|
||||
"v": "齐秦演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Q青鸟飞鱼",
|
||||
"v": "青鸟飞鱼演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "R容祖儿",
|
||||
"v": "容祖儿演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "R任贤齐",
|
||||
"v": "任贤齐演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "S水木年华",
|
||||
"v": "水木年华演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "S孙燕姿",
|
||||
"v": "孙燕姿演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "S苏打绿",
|
||||
"v": "苏打绿演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "SSHE",
|
||||
"v": "SHE演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "S孙楠",
|
||||
"v": "孙楠演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "T陶喆",
|
||||
"v": "陶喆演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "T谭咏麟",
|
||||
"v": "谭咏麟演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "T田馥甄",
|
||||
"v": "田馥甄演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "T谭维维",
|
||||
"v": "谭维维演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "T逃跑计划",
|
||||
"v": "逃跑计划演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "T田震",
|
||||
"v": "田震演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "T谭晶",
|
||||
"v": "谭晶演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "T屠洪刚",
|
||||
"v": "屠洪刚演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "T泰勒·斯威夫特",
|
||||
"v": "泰勒·斯威夫特演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "W王力宏",
|
||||
"v": "王力宏演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "W王杰",
|
||||
"v": "王杰演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "W吴克群",
|
||||
"v": "吴克群演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "W王心凌",
|
||||
"v": "王心凌演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "W王靖雯",
|
||||
"v": "好声音王靖雯演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "W汪峰",
|
||||
"v": "汪峰演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "W伍佰",
|
||||
"v": "伍佰演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "W王菲",
|
||||
"v": "王菲演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "W五月天",
|
||||
"v": "五月天演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "W汪苏泷",
|
||||
"v": "汪苏泷演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "X徐佳莹",
|
||||
"v": "徐佳莹演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "X弦子",
|
||||
"v": "弦子演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "X萧亚轩",
|
||||
"v": "萧亚轩演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "X许巍",
|
||||
"v": "许巍演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "X薛之谦",
|
||||
"v": "薛之谦演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "X许嵩",
|
||||
"v": "许嵩演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "X小虎队",
|
||||
"v": "小虎队演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "X萧敬腾",
|
||||
"v": "萧敬腾演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "X谢霆锋",
|
||||
"v": "谢霆锋演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "X徐小凤",
|
||||
"v": "徐小凤演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "X信乐队",
|
||||
"v": "信乐队演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y夜愿乐队",
|
||||
"v": "夜愿乐队演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y羽泉",
|
||||
"v": "羽泉演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y郁可唯",
|
||||
"v": "郁可唯演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y叶倩文",
|
||||
"v": "叶倩文演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y杨坤",
|
||||
"v": "杨坤演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y庾澄庆",
|
||||
"v": "庾澄庆演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y尤长靖",
|
||||
"v": "尤长靖演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y易烊千玺",
|
||||
"v": "易烊千玺演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y袁娅维",
|
||||
"v": "袁娅维演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y杨丞琳",
|
||||
"v": "杨丞琳演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y杨千嬅",
|
||||
"v": "杨千嬅演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Y杨宗纬",
|
||||
"v": "杨宗纬演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z郑秀文",
|
||||
"v": "郑秀文演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z周杰伦",
|
||||
"v": "周杰伦演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z张学友",
|
||||
"v": "张学友演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z张信哲",
|
||||
"v": "张信哲演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z张宇",
|
||||
"v": "张宇演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z周华健",
|
||||
"v": "周华健演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z张韶涵",
|
||||
"v": "张韶涵演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z周深",
|
||||
"v": "周深演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z纵贯线",
|
||||
"v": "纵贯线演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z赵雷",
|
||||
"v": "赵雷演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z周传雄",
|
||||
"v": "周传雄演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z张国荣",
|
||||
"v": "张国荣演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z周慧敏",
|
||||
"v": "周慧敏演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z张惠妹",
|
||||
"v": "张惠妹演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z周笔畅",
|
||||
"v": "周笔畅演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z郑中基",
|
||||
"v": "郑中基演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z张艺兴",
|
||||
"v": "张艺兴演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z张震岳",
|
||||
"v": "张震岳演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z张雨生",
|
||||
"v": "张雨生演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z郑智化",
|
||||
"v": "郑智化演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z卓依婷",
|
||||
"v": "卓依婷演唱会超清"
|
||||
},
|
||||
{
|
||||
"n": "Z中岛美雪",
|
||||
"v": "中岛美雪演唱会超清"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
32
TVBoxOSC/tvbox/json/哔哩哔哩相声.json
Normal file
32
TVBoxOSC/tvbox/json/哔哩哔哩相声.json
Normal file
@ -0,0 +1,32 @@
|
||||
{
|
||||
"class": [
|
||||
{
|
||||
"type_name": "单口相声",
|
||||
"type_id": "单口相声"
|
||||
},
|
||||
{
|
||||
"type_name": "群口相声",
|
||||
"type_id": "群口相声"
|
||||
},
|
||||
{
|
||||
"type_name": "德云社",
|
||||
"type_id": "德云社"
|
||||
},
|
||||
{
|
||||
"type_name": "青曲社",
|
||||
"type_id": "青曲社"
|
||||
},
|
||||
{
|
||||
"type_name": "郭德纲",
|
||||
"type_id": "郭德纲"
|
||||
},
|
||||
{
|
||||
"type_name": "岳云鹏",
|
||||
"type_id": "岳云鹏"
|
||||
},
|
||||
{
|
||||
"type_name": "曹云金",
|
||||
"type_id": "曹云金"
|
||||
}
|
||||
]
|
||||
}
|
||||
374
TVBoxOSC/tvbox/json/哔哩视频.json
Normal file
374
TVBoxOSC/tvbox/json/哔哩视频.json
Normal file
@ -0,0 +1,374 @@
|
||||
{
|
||||
"class": [
|
||||
{
|
||||
"type_name": "番剧",
|
||||
"type_id": "1"
|
||||
},
|
||||
{
|
||||
"type_name": "国创",
|
||||
"type_id": "4"
|
||||
},
|
||||
{
|
||||
"type_name": "剧集",
|
||||
"type_id": "5"
|
||||
},
|
||||
{
|
||||
"type_name": "综艺",
|
||||
"type_id": "7"
|
||||
},
|
||||
{
|
||||
"type_name": "纪录",
|
||||
"type_id": "3"
|
||||
}
|
||||
],
|
||||
"filters": {
|
||||
"2": [
|
||||
{
|
||||
"key": "order",
|
||||
"name": "排序",
|
||||
"value": [
|
||||
{
|
||||
"n": "播放数量",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "更新时间",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "最高评分",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "弹幕数量",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "追看人数",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "开播时间",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "上映时间",
|
||||
"v": "6"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "season_status",
|
||||
"name": "付费",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
},
|
||||
{
|
||||
"n": "免费",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "付费",
|
||||
"v": "2%2C6"
|
||||
},
|
||||
{
|
||||
"n": "大会员",
|
||||
"v": "4%2C6"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"5": [
|
||||
{
|
||||
"key": "order",
|
||||
"name": "排序",
|
||||
"value": [
|
||||
{
|
||||
"n": "播放数量",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "更新时间",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "最高评分",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "弹幕数量",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "追看人数",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "开播时间",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "上映时间",
|
||||
"v": "6"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "season_status",
|
||||
"name": "付费",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
},
|
||||
{
|
||||
"n": "免费",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "付费",
|
||||
"v": "2%2C6"
|
||||
},
|
||||
{
|
||||
"n": "大会员",
|
||||
"v": "4%2C6"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"7": [
|
||||
{
|
||||
"key": "order",
|
||||
"name": "排序",
|
||||
"value": [
|
||||
{
|
||||
"n": "播放数量",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "更新时间",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "最高评分",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "弹幕数量",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "追看人数",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "开播时间",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "上映时间",
|
||||
"v": "6"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "season_status",
|
||||
"name": "付费",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
},
|
||||
{
|
||||
"n": "免费",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "付费",
|
||||
"v": "2%2C6"
|
||||
},
|
||||
{
|
||||
"n": "大会员",
|
||||
"v": "4%2C6"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"3": [
|
||||
{
|
||||
"key": "order",
|
||||
"name": "排序",
|
||||
"value": [
|
||||
{
|
||||
"n": "播放数量",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "更新时间",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "最高评分",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "弹幕数量",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "追看人数",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "开播时间",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "上映时间",
|
||||
"v": "6"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "season_status",
|
||||
"name": "付费",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
},
|
||||
{
|
||||
"n": "免费",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "付费",
|
||||
"v": "2%2C6"
|
||||
},
|
||||
{
|
||||
"n": "大会员",
|
||||
"v": "4%2C6"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"1": [
|
||||
{
|
||||
"key": "order",
|
||||
"name": "排序",
|
||||
"value": [
|
||||
{
|
||||
"n": "播放数量",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "更新时间",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "最高评分",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "弹幕数量",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "追看人数",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "开播时间",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "上映时间",
|
||||
"v": "6"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "season_status",
|
||||
"name": "付费",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
},
|
||||
{
|
||||
"n": "免费",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "付费",
|
||||
"v": "2%2C6"
|
||||
},
|
||||
{
|
||||
"n": "大会员",
|
||||
"v": "4%2C6"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"4": [
|
||||
{
|
||||
"key": "order",
|
||||
"name": "排序",
|
||||
"value": [
|
||||
{
|
||||
"n": "播放数量",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "更新时间",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "最高评分",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "弹幕数量",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "追看人数",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "开播时间",
|
||||
"v": "5"
|
||||
},
|
||||
{
|
||||
"n": "上映时间",
|
||||
"v": "6"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "season_status",
|
||||
"name": "付费",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "-1"
|
||||
},
|
||||
{
|
||||
"n": "免费",
|
||||
"v": "1"
|
||||
},
|
||||
{
|
||||
"n": "付费",
|
||||
"v": "2%2C6"
|
||||
},
|
||||
{
|
||||
"n": "大会员",
|
||||
"v": "4%2C6"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
1050
TVBoxOSC/tvbox/json/小学课堂.json
Normal file
1050
TVBoxOSC/tvbox/json/小学课堂.json
Normal file
File diff suppressed because it is too large
Load Diff
454
TVBoxOSC/tvbox/json/少儿教育.json
Normal file
454
TVBoxOSC/tvbox/json/少儿教育.json
Normal file
@ -0,0 +1,454 @@
|
||||
{
|
||||
"class": [
|
||||
{
|
||||
"type_name": "儿童早教",
|
||||
"type_id": "儿童早教"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童启蒙故事",
|
||||
"type_id": "儿童启蒙故事"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童英语启蒙",
|
||||
"type_id": "儿童英语启蒙"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童歌曲",
|
||||
"type_id": "儿童歌曲"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童绘画",
|
||||
"type_id": "儿童绘画"
|
||||
},
|
||||
{
|
||||
"type_name": "睡前故事",
|
||||
"type_id": "睡前故事"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童动画",
|
||||
"type_id": "儿童动画"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童音乐",
|
||||
"type_id": "儿童音乐"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童安全教育",
|
||||
"type_id": "儿童安全教育"
|
||||
},
|
||||
{
|
||||
"type_name": "贝瓦儿歌",
|
||||
"type_id": "贝瓦儿歌"
|
||||
},
|
||||
{
|
||||
"type_name": "悟空识字",
|
||||
"type_id": "悟空识字"
|
||||
},
|
||||
{
|
||||
"type_name": "宝宝巴士",
|
||||
"type_id": "宝宝巴士"
|
||||
},
|
||||
{
|
||||
"type_name": "儿歌多多",
|
||||
"type_id": "儿歌多多"
|
||||
},
|
||||
{
|
||||
"type_name": "学而思",
|
||||
"type_id": "学而思"
|
||||
}
|
||||
],
|
||||
"filters": {
|
||||
"儿童早教": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童启蒙故事": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童英语启蒙": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童歌曲": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童绘画": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"睡前故事": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童动画": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童音乐": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童安全教育": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"贝瓦儿歌": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"悟空识字": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"宝宝巴士": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿歌多多": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"学而思": [
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
124
TVBoxOSC/tvbox/json/采集静态.json
Normal file
124
TVBoxOSC/tvbox/json/采集静态.json
Normal file
@ -0,0 +1,124 @@
|
||||
[
|
||||
{
|
||||
"name": "魔都资源",
|
||||
"url": "https://caiji.moduapi.cc",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|连续剧|综艺|伦理片",
|
||||
"class_name": "H4sIAAAAAAAAAzWPWQ6CQBBEb8M5FaMyxIh8iAskfriMIiJqXECH09A9cAtnmuGrX3VXV1IQiqrg4B7xd7ZwsW82p04kXJbTTnyu4GVGNOOJnMdGqFGJSLKxBUEEjGuSzg0HQyLuQ/7VhP0Z9gLyMW6u6CyrghENXLTXdE1fUFyIvF29JR9MR+DdyWcnMvAp2b1KERP1y2ZdaqrTDMScdps2om3HuNUcVrqDJtUwFJpMQ0WqG+Yl7RZ7jBKi5xt2AdEjMx8qVo0/1LC8rzQBAAA=",
|
||||
"class_url": "1&2&3&4&5&6&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38"
|
||||
},
|
||||
{
|
||||
"name": "360资源",
|
||||
"url": "https://360zy.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|连续剧|综艺|动漫|伦理片|体育|爽文短剧",
|
||||
"class_name": "H4sIALGjdWYC/zWRa3aCMBCFd5N9tAvomhRaFHoqcKpYrUd7VEQtCD6rYGAzee6iYYi/8s0kmZl7h/fPFO+RqKa8SKgdIV7chZ0j6qzZ/ReR+4p7Frc7dYLgCVAwUQ9r4t09M9+AIp/eippY22OtAN7Zkb5l3S+S25D7xiSP6j5yNWLXFGi2UemaWBzxslcTwZ/COKCX5yfETIcZY/i8u9A84akidykWUJr2LOoeoIkR88CHYZyU4y1Qu5TjEijfUjwAmiVaD+/DxNTN2K2E/sOQTWKg8x9dBkDHTE9Hl5EcWdqfenY3ewTDUIl4BCDiYWOjtzFTy9MB/NGBuBy5ZyKe7uqDTba0a/F9gURYSXPdWI1Z0FGzw456GSkW0sT0aiDx6rPTtFGP6O2kbvimEhdHu0SKESl/VPAhcKzKgJTwKOc+a7+rDarteHJQyZYl5sk/IOiszA8CAAA=",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&45&46&47&48&49&50&51&52&53"
|
||||
},
|
||||
{
|
||||
"name": "豪华资源",
|
||||
"url": "https://hhzyapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电视剧|电影|综艺|动漫|短剧|伦理片",
|
||||
"class_name": "H4sIALGjdWYC/zVPWw6CMBC8Tc/pI6D1w0eCKErCj1ofKBBjokg5DbsLt7Bdy1dnZrezMxS8WuWDVIKCF+hCYKqonluhO0X4zhglF/vg5sjskuIzt6ipTrT0SU4EzM6Nji2iaYFjj7UwNkusqRV8vhbhcImDkKdSuT2cbptSWtQ+ctBr54fVTYDvQcynjEABWzTvO+y1WzCRME578o/+J/StWlkKWOT4qdnhoLrId7L5Z0r1xLRc5D1hE0doWHe7mkOOUgpXXGaWkb5yyOPE1aLkbk78ALNMUSlMAQAA",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&20&23&24&25&26&27&28&30&31&32&33&34&35&36&37&38"
|
||||
},
|
||||
{
|
||||
"name": "速播资源",
|
||||
"url": "https://subocaiji.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|电视剧|动漫|综艺|短剧|伦理片",
|
||||
"class_name": "H4sIALGjdWYC/zWPWw6CMBBFd9N1+ohKNVGMiBpI+FHrAyJISHiV1bQzsAuZgl/39LY9k0En0zJh6GStWGoumF4/oH4zrOqWlwzLl5ZH5CvqlfSJ0EpgvjAk9rqoiMA6q5Kbd1yMtzC1YeKazvX7erT0dhyG6qvoLsPQXQxFQ9QFTwpsthSQf6BJDZ1uJtKYQtV3tJckVPLQzr5t5qlyw1QeaU+OG/Q/wA//h1CQctwtiHrJD0Ycn8r6AAAA",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27"
|
||||
},
|
||||
{
|
||||
"name": "红牛资源",
|
||||
"url": "https://www.hongniuzy2.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|连续剧|综艺|动漫|纪录片|伦理片|体育赛事|短剧",
|
||||
"class_name": "H4sIALGjdWYC/y2PXQ6CMBCEb9Nz+hOVaqIYFU0g8qRV1AgSEikUL9Pu1lvorj7Nl5nNZBbXlTOF8K89NjcnlcCm9VILNz1BeyGxJkE5ES5KvjERBgUMR0xq6eqGCPoh9CK+k+qfQrCzWrIXG6sVtcPzDl3JtD2wXBV2cyK3yKHu2Ctzknd65kE6c2bDNbwJf4tte8RwTLY1Kz94+Cq2eiYwpS8+mOVyptYAAAA=",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&21&29&30"
|
||||
},
|
||||
{
|
||||
"name": "新浪资源",
|
||||
"url": "https://api.xinlangapi.com",
|
||||
"parse_url": "",
|
||||
"api": "/xinlangapi.php/provide/vod/from/xlm3u8/",
|
||||
"cate_exclude": "电影|电视剧|动漫|综艺|纪录片|伦理片|体育|短剧",
|
||||
"class_name": "H4sIALGjdWYC/0WOXQ6CMBCEb9Nz+hOR+qAYETUh4UWtikaQkEihPU27W24hXU18msk3m53BuLaqZBjXTgSWC2YXF+hyhm3nuGQob1Ztkc89Nyr1DsMSpjNyYm2b1jsI90ZyuuPil8I4glFCLEkHTO4o+gP1wPsJuqLGVQGNJnYXqJf/Ffgd12dXSncnkqrwYrozRoH/adTGTV4Ms8fAP2ziC/TQAAAA",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24"
|
||||
},
|
||||
{
|
||||
"name": "黑木耳资源",
|
||||
"url": "https://www.heimuer.tv",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "^电影$|^电视剧$|^综艺$|^动漫$|^短剧$",
|
||||
"class_name": "H4sIALGjdWYC/0WSbXKCQAyGb8M5UQcRqgU7DFal2mllKBa/pqNjQexl2M1yi7LZpP2175PNJnkDEJ1FfbIgOqtsKLzMEv6HvH1aUN2UV1pdRA4c8Fwdb+oE1fCpneeowrG0M1Rx0qWiSl3xXWkle6G0Y4wt66bMdHV5PeijXedIsxSPfgHxFJ8MfNlfaAW9e7u4oxqdaATwD1BvUWVTatKNBVEF5GK9w3pfR3QS4CGLDO6PqOJjmxd45VyaKsbYbqxGK+w9em5KD6tXgXCuqOopVAlV7x6J/eDfD61IWwqOBNrYsuabWSqTggHHYMBJujl5zTgPQ7BR7w55UfNQ9h4IWnuo3nbs0mzNAKQrddpymjuBaE0gNpOmcjkt/1EXnyFKxP6V026lsv+ahmOxf+EbY5uammWaf8T4IzDOCeiDUxouiIGdcyZWN/ALQpTFCIwCAAA=",
|
||||
"class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63"
|
||||
},
|
||||
{
|
||||
"name": "暴风资源",
|
||||
"url": "https://bfzyapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影片|连续剧|综艺片|动漫片|伦理片|电影解说|体育|演员|新闻资讯",
|
||||
"class_name": "H4sIALGjdWYC/zWRa3aCMBCFd5N1+kIFj1VOLdbq0Z6iBq0VrI8qGN1MMhN20WSAP8x34c7NZMDRWYkDuh2mvEiKGVEwUy63BPUh1AJLyH11y4i6B2g65HN5SdB9l6lLX9OtEm9Ew7bep5b0c47Zj3EzNRUy5ZZgx/HxYilfT+AaEy02xkC+QQK3B/nGK5jtiM5/ahkQHZPK50Vw/6ZZimTStslmlaI4qRTmpEFSiSKxEJjdtUvjqiXPJ+1Clw2VoNxKUG4pTAiOivXQQjUPdXxi+VdL+Z59LcWrbvzq81SmPaYvRxw2GcZ7KsK3BYJYx6lyegwXdllmDOVELO/0cbSAxDc3ZLh56ounbieZhQxfElN0VDM/wWysr8UOuwICc4PVEeo9qGU6rLN8vFWbD1xn5snyplDXhm75cJqbnqUOHZlN5OPzH964N6gIAgAA",
|
||||
"class_url": "20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&65&66&67&68&69&70&71&72"
|
||||
},
|
||||
{
|
||||
"name": "量子资源",
|
||||
"url": "https://cj.lziapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影片|连续剧|动漫片|综艺片|伦理片|电影解说|体育|演员|新闻资讯",
|
||||
"class_name": "H4sIALGjdWYC/zWR607DMAyF3ybPCbuxDom1Yms3UTEJtmWI0bSMAr1kvEzspG9B46S/8h3b8XEcvSpBFjq4Y+bvWTcfEHCmm9YEtY3B4oTtuyclU6I47Yss6XmB4ykRj6BqLOFtiDcx1QXcZ3G+UXVAsSepam49uuMWfwXR7q0PW8Iz19cHSybLQa7pxjLH6krZ5IDpmaj8gX1MdMn9XdjzbjtzkzPbeZkPIjn0FoMgCy/8NPRGXzYIN4kX1G0QztsJ1R51OKMF0BoNfzXiiyn5aEafzHxfdDhmWmR0yMgeGAsjapjeM2xXEG36QN4ljSknJhNDGyfgVKgqdHnWvUwgWpDVzn7SP/ilxw64AQAA",
|
||||
"class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46"
|
||||
},
|
||||
{
|
||||
"name": "非凡资源",
|
||||
"url": "http://cj.ffzyapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影片|连续剧|动漫片|综艺片|伦理片",
|
||||
"class_name": "H4sIAFhXhmYC/zWQWw6CMBBFd8M6NUakfggmChKJ/ADViFpiiPIobqadwi6kQ/k7d153ZtShlLxQZGP1v4tqHpJQSzVtT2odk9srtHdDgkdIfjQWaVJOAas1Et3LqtEESw8WPtYRarLgnERNMHbmoqbaY8hC+L6Q4tsY1gQ5Vd1OU/9kkh+xw2VQdZgNUohypPIjEx/pzUyvTOgQ2tPmlp7sslkE6WgxC7QwwmyDN5qyWUybGIHTZjF5T0K0mfJsfECsP/cHYziM500BAAA=",
|
||||
"class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&36"
|
||||
},
|
||||
{
|
||||
"name": "索尼资源",
|
||||
"url": "https://suoniapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|电视剧|综艺|动漫|体育赛事|预告片|影视解说|爽文短剧|伦理|港台三级|两性课堂|写真热舞",
|
||||
"class_name": "H4sIAFlXhmYC/z1RbXaCMBC8TU7QW/RSip/oq8orxVp56hNoaqtFq1gFopfJZsMtGhLor93Z3czuTNBNgB0IuomkXbApwSyXdkpg8CHyrzJw5qPdI+D5ql1m2D+IVkdn1IFrVmaiORENT8/ZtOqK/itPbV2bM57Skl1sKd5GZVYsN7owjXS4xGWA8V6jow6YfgJ70VTJL4SenghpMetWR6rHiqYGimK8r4HeU2sx640i86YG5px/regaNZqqnjG7K5C74B54/kY4e5bWj0zmPB0SjL9x0iLyfCxDsW6DM9BEXizjFDpDokxWBksayPikHGTC6+FyVyri+TtOutVOfrExNeaoo01HRnfhXeuxaST8bQX4JRQNKuMbrCwC3Rn6S2ztZH9BHh7RfKzwbQhqKRAdi7UjmkP1hcrrJ8m26hRjfCiDDs9m/LYicD3xLMDNXZ4HRLYdcVoIa4ueQ3C0V52ixeBikcJKxH5s9vwBtOQp10cCAAA=",
|
||||
"class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&23&25&26&27&28&29&30&31&39&44&45&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63&64&65&66&67&68&69&70"
|
||||
},
|
||||
{
|
||||
"name": "️极速资源",
|
||||
"url": "https://jszyapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电视剧|电影|动漫|综艺|短剧|伦理片",
|
||||
"api": "/api.php/provide/vod/at/json/",
|
||||
"class_name": "H4sIAGJXhmYC/zVP0W7CMBD7m3znYKIQkICKUsaoxMsgsBUooEpQmn5N7i79iyVH+hTbsXw2JaVVEUglKClBXwXmipqpF9r9Gh8XRtujf3C1Y3bM8V54ZOo9zSOSQwHjg9GZRzS64ueAtTRzJtZUDM+XR9ib40fKv1IFH46+TCU9sucC9DLkYf0nIBpAxqecQAlHmMcJNjoYXCXM8o68q78JvWorKwGzAp8Nl9UL27/ZcmOqiYAf1a6j4HEhbmFH3ORZ0RFODIR6TfvdcON+TmnMy8YX0r/ceDcMG2l7cvf+AYiMpdZZAQAA",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&20&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38"
|
||||
},
|
||||
{
|
||||
"name": "光速资源",
|
||||
"url": "https://api.guangsuapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|电视剧|综艺|动漫|记录片|伦理片|体育赛事|短剧",
|
||||
"class_name": "H4sIAFVXhmYC/y2Oaw6CMBCEb9Nz+ohINVGMiBpJ+KNW4gskJPJoT9PulltIF3/Nl5nJ7GJYGpkzDEsrPMMFw6a1vGZmcYP27kTLGPmcmSjuY0fo5zCdEYmNqRpKufh7MA5gFBH5B11zSs+iO9I6PASqFdH3Dapw1CWpk+EiDv/A/kLeOoNKUb3InNhXZuTOber2ioFHJLd28rHlSddLhsmz7/0A4RcQUdYAAAA=",
|
||||
"class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&30&31"
|
||||
},
|
||||
{
|
||||
"name": "卧龙资源",
|
||||
"url": "https://collect.wolongzy.cc",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影片|连续剧|综艺片|动漫片|伦理片|电影解说|体育|短剧",
|
||||
"class_name": "H4sIAFZXhmYC/1WR0VLCQAxF/6bfqXQsbB9omYEq2JEHKqtQ2iIC0nbxZ5pk+Qt303VG307uZnJvsjQ9gtqTGHr6+4WaHQjpUdNqUVsNwjdst446lTIlqWmyRKM9+g9McgKXxhLex3iXcJ+Q7hVHT10tWHtWXS2tx209x6+SafluZEuYS7qOLUFU4eXK2uMrpjnT8QxZYkkXFagZ+y53LhxNmz8GHPt3niv6Qa4w1lHV7+kCuAIyeZsHrsBD9S+ak4lvpuVKl58e+iEOFuxdnKDu80SZXvHqMA4g+uAjDHJKJhw6LEltmMqCYt/r2jXFAf/B6WAFs5Yx/QEG4wmPmwEAAA==",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&22&23&24&25&26&27&30&31&32&33&37&38&39&42&43&44&45&46&48&49&51&54"
|
||||
},
|
||||
{
|
||||
"name": "无尽资源",
|
||||
"url": "https://api.wujinapi.me",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|连续剧|综艺|动漫|伦理片|体育赛事|影视解说|短剧|预告片|资讯|公告|头条|港台三级|韩国伦理|西方伦理|日本伦理|两性课堂|写真热舞",
|
||||
"class_name": "H4sIAFhXhmYC/zVRWVbCQBC8zZxTwxp8CnliFI2AEhzUaIIQhSxwmeklt3Ayk/xVdVe/7qqmaQrlVvB5TvkXuFJQXrCbCRhtsPgUnHb5O66ZKgNyBwL8QKtqRMMtdnoGSQ+OeY3wcoIXvtG5suni8EFlrqk9lSqT9ZLqbYaHuEYwTvB4MotPN1pgar0IvJGAcI/PL0IVbzTpmz3ZB5R3NaoW740W79cYRAalfxD6Zj6U1azfGNECrW6JXjpOWhJJvbP1a2+zru1MS4ysJU5EvmfMjDY0NaZpFFP5YWrrQRNE5aSYjMmGi7ukPkuVt+z8cPqksitB8TdNOkK3WfZZrjjeC1qYD9gj24XWVUOKKUy3qngU/Lurx6vXrk7KpGyG1MGlTDbx2OAEr8/oHxti42qIOoR4ITk+wdIR0J9RsKDOFw/nAgMXVu0JsN5Vrx5eXumP639dcxnR0ITPXQ/3c5uJgONe5St6P/Ov/t045FVP5TN1Wgq6SXSn6pRwcP4BxMt0fHACAAA=",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&59"
|
||||
}
|
||||
]
|
||||
1576
TVBoxOSC/tvbox/json/高中课堂.json
Normal file
1576
TVBoxOSC/tvbox/json/高中课堂.json
Normal file
File diff suppressed because it is too large
Load Diff
329
TVBoxOSC/tvbox/py/剧王短剧.py
Normal file
329
TVBoxOSC/tvbox/py/剧王短剧.py
Normal file
@ -0,0 +1,329 @@
|
||||
# coding=utf-8
|
||||
# !/usr/bin/python
|
||||
|
||||
"""
|
||||
|
||||
作者 丢丢喵推荐 🚓 内容均从互联网收集而来 仅供交流学习使用 版权归原创者所有 如侵犯了您的权益 请通知作者 将及时删除侵权内容
|
||||
====================Diudiumiao====================
|
||||
|
||||
"""
|
||||
|
||||
from Crypto.Util.Padding import unpad
|
||||
from Crypto.Util.Padding import pad
|
||||
from urllib.parse import unquote
|
||||
from Crypto.Cipher import ARC4
|
||||
from urllib.parse import quote
|
||||
from base.spider import Spider
|
||||
from Crypto.Cipher import AES
|
||||
from datetime import datetime
|
||||
from bs4 import BeautifulSoup
|
||||
from base64 import b64decode
|
||||
import urllib.request
|
||||
import urllib.parse
|
||||
import datetime
|
||||
import binascii
|
||||
import requests
|
||||
import base64
|
||||
import json
|
||||
import time
|
||||
import sys
|
||||
import re
|
||||
import os
|
||||
|
||||
sys.path.append('..')
|
||||
|
||||
xurl = "https://djw1.com"
|
||||
|
||||
headerx = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36'
|
||||
}
|
||||
|
||||
class Spider(Spider):
|
||||
global xurl
|
||||
global headerx
|
||||
|
||||
def getName(self):
|
||||
return "首页"
|
||||
|
||||
def init(self, extend):
|
||||
pass
|
||||
|
||||
def isVideoFormat(self, url):
|
||||
pass
|
||||
|
||||
def manualVideoCheck(self):
|
||||
pass
|
||||
|
||||
def extract_middle_text(self, text, start_str, end_str, pl, start_index1: str = '', end_index2: str = ''):
|
||||
if pl == 3:
|
||||
plx = []
|
||||
while True:
|
||||
start_index = text.find(start_str)
|
||||
if start_index == -1:
|
||||
break
|
||||
end_index = text.find(end_str, start_index + len(start_str))
|
||||
if end_index == -1:
|
||||
break
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
plx.append(middle_text)
|
||||
text = text.replace(start_str + middle_text + end_str, '')
|
||||
if len(plx) > 0:
|
||||
purl = ''
|
||||
for i in range(len(plx)):
|
||||
matches = re.findall(start_index1, plx[i])
|
||||
output = ""
|
||||
for match in matches:
|
||||
match3 = re.search(r'(?:^|[^0-9])(\d+)(?:[^0-9]|$)', match[1])
|
||||
if match3:
|
||||
number = match3.group(1)
|
||||
else:
|
||||
number = 0
|
||||
if 'http' not in match[0]:
|
||||
output += f"#{match[1]}${number}{xurl}{match[0]}"
|
||||
else:
|
||||
output += f"#{match[1]}${number}{match[0]}"
|
||||
output = output[1:]
|
||||
purl = purl + output + "$$$"
|
||||
purl = purl[:-3]
|
||||
return purl
|
||||
else:
|
||||
return ""
|
||||
else:
|
||||
start_index = text.find(start_str)
|
||||
if start_index == -1:
|
||||
return ""
|
||||
end_index = text.find(end_str, start_index + len(start_str))
|
||||
if end_index == -1:
|
||||
return ""
|
||||
|
||||
if pl == 0:
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
return middle_text.replace("\\", "")
|
||||
|
||||
if pl == 1:
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
matches = re.findall(start_index1, middle_text)
|
||||
if matches:
|
||||
jg = ' '.join(matches)
|
||||
return jg
|
||||
|
||||
if pl == 2:
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
matches = re.findall(start_index1, middle_text)
|
||||
if matches:
|
||||
new_list = [f'{item}' for item in matches]
|
||||
jg = '$$$'.join(new_list)
|
||||
return jg
|
||||
|
||||
def homeContent(self, filter):
|
||||
result = {"class": []}
|
||||
|
||||
detail = requests.get(url=xurl + "/all/", headers=headerx)
|
||||
detail.encoding = "utf-8"
|
||||
res = detail.text
|
||||
|
||||
doc = BeautifulSoup(res, "lxml")
|
||||
|
||||
soups = doc.find_all('section', class_="container items")
|
||||
|
||||
for soup in soups:
|
||||
vods = soup.find_all('li')
|
||||
|
||||
for vod in vods:
|
||||
|
||||
id = vod.find('a')['href']
|
||||
|
||||
name = vod.text.strip()
|
||||
|
||||
result["class"].append({"type_id": id, "type_name": "" + name})
|
||||
|
||||
return result
|
||||
|
||||
def homeVideoContent(self):
|
||||
pass
|
||||
|
||||
def categoryContent(self, cid, pg, filter, ext):
|
||||
result = {}
|
||||
videos = []
|
||||
|
||||
if pg:
|
||||
page = int(pg)
|
||||
else:
|
||||
page = 1
|
||||
|
||||
url = f'{cid}page/{str(page)}/'
|
||||
detail = requests.get(url=url, headers=headerx)
|
||||
detail.encoding = "utf-8"
|
||||
res = detail.text
|
||||
doc = BeautifulSoup(res, "lxml")
|
||||
|
||||
soups = doc.find_all('section', class_="container items")
|
||||
|
||||
for soup in soups:
|
||||
vods = soup.find_all('li')
|
||||
|
||||
for vod in vods:
|
||||
|
||||
name = vod.find('img')['alt']
|
||||
|
||||
ids = vod.find('a', class_="image-line")
|
||||
id = ids['href']
|
||||
|
||||
pic = vod.find('img')['src']
|
||||
|
||||
remark = self.extract_middle_text(str(vod), 'class="remarks light">', '<', 0)
|
||||
|
||||
video = {
|
||||
"vod_id": id,
|
||||
"vod_name": name,
|
||||
"vod_pic": pic,
|
||||
"vod_remarks": '▶️' + remark
|
||||
}
|
||||
videos.append(video)
|
||||
|
||||
result = {'list': videos}
|
||||
result['page'] = pg
|
||||
result['pagecount'] = 9999
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
return result
|
||||
|
||||
def detailContent(self, ids):
|
||||
did = ids[0]
|
||||
result = {}
|
||||
videos = []
|
||||
xianlu = ''
|
||||
bofang = ''
|
||||
|
||||
if 'http' not in did:
|
||||
did = xurl + did
|
||||
|
||||
res = requests.get(url=did, headers=headerx)
|
||||
res.encoding = "utf-8"
|
||||
res = res.text
|
||||
doc = BeautifulSoup(res, "lxml")
|
||||
|
||||
url = 'https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1732707176882/jiduo.txt'
|
||||
response = requests.get(url)
|
||||
response.encoding = 'utf-8'
|
||||
code = response.text
|
||||
name = self.extract_middle_text(code, "s1='", "'", 0)
|
||||
Jumps = self.extract_middle_text(code, "s2='", "'", 0)
|
||||
|
||||
content = '集多为您介绍剧情📢' + self.extract_middle_text(res,'class="info-detail">','<', 0)
|
||||
|
||||
remarks = self.extract_middle_text(res, 'class="info-mark">', '<', 0)
|
||||
|
||||
year = self.extract_middle_text(res, 'class="info-addtime">', '<', 0)
|
||||
|
||||
if name not in content:
|
||||
bofang = Jumps
|
||||
xianlu = '1'
|
||||
else:
|
||||
soups = doc.find('div', class_="ep-list-items")
|
||||
|
||||
soup = soups.find_all('a')
|
||||
|
||||
for sou in soup:
|
||||
|
||||
id = sou['href']
|
||||
|
||||
name = sou.text.strip()
|
||||
|
||||
bofang = bofang + name + '$' + id + '#'
|
||||
|
||||
bofang = bofang[:-1]
|
||||
|
||||
xianlu = '专线'
|
||||
|
||||
videos.append({
|
||||
"vod_id": did,
|
||||
"vod_remarks": remarks,
|
||||
"vod_year": year,
|
||||
"vod_content": content,
|
||||
"vod_play_from": xianlu,
|
||||
"vod_play_url": bofang
|
||||
})
|
||||
|
||||
result['list'] = videos
|
||||
return result
|
||||
|
||||
def playerContent(self, flag, id, vipFlags):
|
||||
|
||||
res = requests.get(url=id, headers=headerx)
|
||||
res.encoding = "utf-8"
|
||||
res = res.text
|
||||
|
||||
url = self.extract_middle_text(res, '"wwm3u8":"', '"', 0).replace('\\', '')
|
||||
|
||||
result = {}
|
||||
result["parse"] = 0
|
||||
result["playUrl"] = ''
|
||||
result["url"] = url
|
||||
result["header"] = headerx
|
||||
return result
|
||||
|
||||
def searchContentPage(self, key, quick, pg):
|
||||
result = {}
|
||||
videos = []
|
||||
|
||||
if pg:
|
||||
page = int(pg)
|
||||
else:
|
||||
page = 1
|
||||
|
||||
url = f'{xurl}/search/{key}/page/{str(page)}/'
|
||||
detail = requests.get(url=url, headers=headerx)
|
||||
detail.encoding = "utf-8"
|
||||
res = detail.text
|
||||
doc = BeautifulSoup(res, "lxml")
|
||||
|
||||
soups = doc.find_all('section', class_="container items")
|
||||
|
||||
for soup in soups:
|
||||
vods = soup.find_all('li')
|
||||
|
||||
for vod in vods:
|
||||
|
||||
name = vod.find('img')['alt']
|
||||
|
||||
ids = vod.find('a', class_="image-line")
|
||||
id = ids['href']
|
||||
|
||||
pic = vod.find('img')['src']
|
||||
|
||||
remark = self.extract_middle_text(str(vod), 'class="remarks light">', '<', 0)
|
||||
|
||||
video = {
|
||||
"vod_id": id,
|
||||
"vod_name": name,
|
||||
"vod_pic": pic,
|
||||
"vod_remarks": '▶️' + remark
|
||||
}
|
||||
videos.append(video)
|
||||
|
||||
result['list'] = videos
|
||||
result['page'] = pg
|
||||
result['pagecount'] = 9999
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
return result
|
||||
|
||||
def searchContent(self, key, quick, pg="1"):
|
||||
return self.searchContentPage(key, quick, '1')
|
||||
|
||||
def localProxy(self, params):
|
||||
if params['type'] == "m3u8":
|
||||
return self.proxyM3u8(params)
|
||||
elif params['type'] == "media":
|
||||
return self.proxyMedia(params)
|
||||
elif params['type'] == "ts":
|
||||
return self.proxyTs(params)
|
||||
return None
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
314
TVBoxOSC/tvbox/py/哔哩直播.py
Normal file
314
TVBoxOSC/tvbox/py/哔哩直播.py
Normal file
@ -0,0 +1,314 @@
|
||||
# coding=utf-8
|
||||
# !/usr/bin/python
|
||||
|
||||
"""
|
||||
|
||||
作者 丢丢喵 🚓 内容均从互联网收集而来 仅供交流学习使用 版权归原创者所有 如侵犯了您的权益 请通知作者 将及时删除侵权内容
|
||||
====================Diudiumiao====================
|
||||
|
||||
"""
|
||||
|
||||
from Crypto.Util.Padding import unpad
|
||||
from Crypto.Util.Padding import pad
|
||||
from urllib.parse import unquote
|
||||
from Crypto.Cipher import ARC4
|
||||
from urllib.parse import quote
|
||||
from base.spider import Spider
|
||||
from Crypto.Cipher import AES
|
||||
from datetime import datetime
|
||||
from bs4 import BeautifulSoup
|
||||
from base64 import b64decode
|
||||
import urllib.request
|
||||
import urllib.parse
|
||||
import datetime
|
||||
import binascii
|
||||
import requests
|
||||
import base64
|
||||
import json
|
||||
import time
|
||||
import sys
|
||||
import re
|
||||
import os
|
||||
|
||||
sys.path.append('..')
|
||||
|
||||
xurl = "https://search.bilibili.com"
|
||||
|
||||
xurl1 = "https://api.live.bilibili.com"
|
||||
|
||||
headerx = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0'
|
||||
}
|
||||
|
||||
class Spider(Spider):
|
||||
global xurl
|
||||
global xurl1
|
||||
global headerx
|
||||
|
||||
def getName(self):
|
||||
return "首页"
|
||||
|
||||
def init(self, extend):
|
||||
pass
|
||||
|
||||
def isVideoFormat(self, url):
|
||||
pass
|
||||
|
||||
def manualVideoCheck(self):
|
||||
pass
|
||||
|
||||
def extract_middle_text(self, text, start_str, end_str, pl, start_index1: str = '', end_index2: str = ''):
|
||||
if pl == 3:
|
||||
plx = []
|
||||
while True:
|
||||
start_index = text.find(start_str)
|
||||
if start_index == -1:
|
||||
break
|
||||
end_index = text.find(end_str, start_index + len(start_str))
|
||||
if end_index == -1:
|
||||
break
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
plx.append(middle_text)
|
||||
text = text.replace(start_str + middle_text + end_str, '')
|
||||
if len(plx) > 0:
|
||||
purl = ''
|
||||
for i in range(len(plx)):
|
||||
matches = re.findall(start_index1, plx[i])
|
||||
output = ""
|
||||
for match in matches:
|
||||
match3 = re.search(r'(?:^|[^0-9])(\d+)(?:[^0-9]|$)', match[1])
|
||||
if match3:
|
||||
number = match3.group(1)
|
||||
else:
|
||||
number = 0
|
||||
if 'http' not in match[0]:
|
||||
output += f"#{match[1]}${number}{xurl}{match[0]}"
|
||||
else:
|
||||
output += f"#{match[1]}${number}{match[0]}"
|
||||
output = output[1:]
|
||||
purl = purl + output + "$$$"
|
||||
purl = purl[:-3]
|
||||
return purl
|
||||
else:
|
||||
return ""
|
||||
else:
|
||||
start_index = text.find(start_str)
|
||||
if start_index == -1:
|
||||
return ""
|
||||
end_index = text.find(end_str, start_index + len(start_str))
|
||||
if end_index == -1:
|
||||
return ""
|
||||
|
||||
if pl == 0:
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
return middle_text.replace("\\", "")
|
||||
|
||||
if pl == 1:
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
matches = re.findall(start_index1, middle_text)
|
||||
if matches:
|
||||
jg = ' '.join(matches)
|
||||
return jg
|
||||
|
||||
if pl == 2:
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
matches = re.findall(start_index1, middle_text)
|
||||
if matches:
|
||||
new_list = [f'{item}' for item in matches]
|
||||
jg = '$$$'.join(new_list)
|
||||
return jg
|
||||
|
||||
def homeContent(self, filter):
|
||||
result = {}
|
||||
result = {"class": [{"type_id": "舞", "type_name": "舞蹈"},
|
||||
{"type_id": "音乐", "type_name": "音乐"},
|
||||
{"type_id": "手游", "type_name": "手游"},
|
||||
{"type_id": "网游", "type_name": "网游"},
|
||||
{"type_id": "单机游戏", "type_name": "单机游戏"},
|
||||
{"type_id": "虚拟主播", "type_name": "虚拟主播"},
|
||||
{"type_id": "电台", "type_name": "电台"},
|
||||
{"type_id": "体育", "type_name": "体育"},
|
||||
{"type_id": "聊天", "type_name": "聊天"},
|
||||
{"type_id": "娱乐", "type_name": "娱乐"},
|
||||
{"type_id": "电影", "type_name": "影视"},
|
||||
{"type_id": "新闻", "type_name": "新闻"}]
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
def homeVideoContent(self):
|
||||
pass
|
||||
|
||||
def categoryContent(self, cid, pg, filter, ext):
|
||||
result = {}
|
||||
videos = []
|
||||
|
||||
if pg:
|
||||
page = int(pg)
|
||||
else:
|
||||
page = 1
|
||||
|
||||
url = f'{xurl}/live?keyword={cid}&page={str(page)}'
|
||||
detail = requests.get(url=url, headers=headerx)
|
||||
detail.encoding = "utf-8"
|
||||
res = detail.text
|
||||
doc = BeautifulSoup(res, "lxml")
|
||||
|
||||
soups = doc.find_all('div', class_="video-list-item")
|
||||
|
||||
for vod in soups:
|
||||
|
||||
names = vod.find('h3', class_="bili-live-card__info--tit")
|
||||
name = names.text.strip().replace('直播中', '')
|
||||
|
||||
id = names.find('a')['href']
|
||||
id = self.extract_middle_text(id, 'bilibili.com/', '?', 0)
|
||||
|
||||
pic = vod.find('img')['src']
|
||||
if 'http' not in pic:
|
||||
pic = "https:" + pic
|
||||
|
||||
remarks = vod.find('a', class_="bili-live-card__info--uname")
|
||||
remark = remarks.text.strip()
|
||||
|
||||
video = {
|
||||
"vod_id": id,
|
||||
"vod_name": name,
|
||||
"vod_pic": pic,
|
||||
"vod_remarks": remark
|
||||
}
|
||||
videos.append(video)
|
||||
|
||||
result = {'list': videos}
|
||||
result['page'] = pg
|
||||
result['pagecount'] = 9999
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
return result
|
||||
|
||||
def detailContent(self, ids):
|
||||
did = ids[0]
|
||||
result = {}
|
||||
videos = []
|
||||
xianlu = ''
|
||||
bofang = ''
|
||||
|
||||
url = f'{xurl1}/xlive/web-room/v2/index/getRoomPlayInfo?room_id={did}&platform=web&protocol=0,1&format=0,1,2&codec=0,1'
|
||||
detail = requests.get(url=url, headers=headerx)
|
||||
detail.encoding = "utf-8"
|
||||
data = detail.json()
|
||||
|
||||
content = '欢迎观看哔哩直播'
|
||||
|
||||
setup = data['data']['playurl_info']['playurl']['stream']
|
||||
|
||||
nam = 0
|
||||
|
||||
for vod in setup:
|
||||
|
||||
try:
|
||||
host = vod['format'][nam]['codec'][0]['url_info'][1]['host']
|
||||
except (KeyError, IndexError):
|
||||
continue
|
||||
|
||||
base = vod['format'][nam]['codec'][0]['base_url']
|
||||
|
||||
extra = vod['format'][nam]['codec'][0]['url_info'][1]['extra']
|
||||
|
||||
id = host + base + extra
|
||||
|
||||
nam = nam + 1
|
||||
|
||||
namc = f"{nam}号线路"
|
||||
|
||||
bofang = bofang + namc + '$' + id + '#'
|
||||
|
||||
bofang = bofang[:-1]
|
||||
|
||||
xianlu = '哔哩专线'
|
||||
|
||||
videos.append({
|
||||
"vod_id": did,
|
||||
"vod_content": content,
|
||||
"vod_play_from": xianlu,
|
||||
"vod_play_url": bofang
|
||||
})
|
||||
|
||||
result['list'] = videos
|
||||
return result
|
||||
|
||||
def playerContent(self, flag, id, vipFlags):
|
||||
|
||||
result = {}
|
||||
result["parse"] = 0
|
||||
result["playUrl"] = ''
|
||||
result["url"] = id
|
||||
result["header"] = headerx
|
||||
return result
|
||||
|
||||
def searchContentPage(self, key, quick, pg):
|
||||
result = {}
|
||||
videos = []
|
||||
|
||||
if pg:
|
||||
page = int(pg)
|
||||
else:
|
||||
page = 1
|
||||
|
||||
url = f'{xurl}/live?keyword={key}&page={str(page)}'
|
||||
detail = requests.get(url=url, headers=headerx)
|
||||
detail.encoding = "utf-8"
|
||||
res = detail.text
|
||||
doc = BeautifulSoup(res, "lxml")
|
||||
|
||||
soups = doc.find_all('div', class_="video-list-item")
|
||||
|
||||
for vod in soups:
|
||||
|
||||
names = vod.find('h3', class_="bili-live-card__info--tit")
|
||||
name = names.text.strip().replace('直播中', '')
|
||||
|
||||
id = names.find('a')['href']
|
||||
id = self.extract_middle_text(id, 'bilibili.com/', '?', 0)
|
||||
|
||||
pic = vod.find('img')['src']
|
||||
if 'http' not in pic:
|
||||
pic = "https:" + pic
|
||||
|
||||
remarks = vod.find('a', class_="bili-live-card__info--uname")
|
||||
remark = remarks.text.strip()
|
||||
|
||||
video = {
|
||||
"vod_id": id,
|
||||
"vod_name": name,
|
||||
"vod_pic": pic,
|
||||
"vod_remarks": remark
|
||||
}
|
||||
videos.append(video)
|
||||
|
||||
result['list'] = videos
|
||||
result['page'] = pg
|
||||
result['pagecount'] = 9999
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
return result
|
||||
|
||||
def searchContent(self, key, quick, pg="1"):
|
||||
return self.searchContentPage(key, quick, '1')
|
||||
|
||||
def localProxy(self, params):
|
||||
if params['type'] == "m3u8":
|
||||
return self.proxyM3u8(params)
|
||||
elif params['type'] == "media":
|
||||
return self.proxyMedia(params)
|
||||
elif params['type'] == "ts":
|
||||
return self.proxyTs(params)
|
||||
return None
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
343
TVBoxOSC/tvbox/py/星芽短剧.py
Normal file
343
TVBoxOSC/tvbox/py/星芽短剧.py
Normal file
@ -0,0 +1,343 @@
|
||||
# coding = utf-8
|
||||
# !/usr/bin/python
|
||||
|
||||
"""
|
||||
"""
|
||||
|
||||
from Crypto.Util.Padding import unpad
|
||||
from Crypto.Util.Padding import pad
|
||||
from urllib.parse import unquote
|
||||
from Crypto.Cipher import ARC4
|
||||
from urllib.parse import quote
|
||||
from base.spider import Spider
|
||||
from Crypto.Cipher import AES
|
||||
from bs4 import BeautifulSoup
|
||||
from base64 import b64decode
|
||||
import urllib.request
|
||||
import urllib.parse
|
||||
import binascii
|
||||
import requests
|
||||
import base64
|
||||
import json
|
||||
import time
|
||||
import sys
|
||||
import re
|
||||
import os
|
||||
|
||||
sys.path.append('..')
|
||||
|
||||
xurl = "https://app.whjzjx.cn"
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Linux; Android 12; Pixel 3 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.101 Mobile Safari/537.36'
|
||||
}
|
||||
|
||||
headerf = {
|
||||
"platform": "1",
|
||||
"user_agent": "Mozilla/5.0 (Linux; Android 9; V1938T Build/PQ3A.190705.08211809; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Safari/537.36",
|
||||
"content-type": "application/json; charset=utf-8"
|
||||
}
|
||||
|
||||
times = int(time.time() * 1000)
|
||||
|
||||
data = {
|
||||
"device": "2a50580e69d38388c94c93605241fb306",
|
||||
"package_name": "com.jz.xydj",
|
||||
"android_id": "ec1280db12795506",
|
||||
"install_first_open": True,
|
||||
"first_install_time": 1752505243345,
|
||||
"last_update_time": 1752505243345,
|
||||
"report_link_url": "",
|
||||
"authorization": "",
|
||||
"timestamp": times
|
||||
}
|
||||
|
||||
plain_text = json.dumps(data, separators=(',', ':'), ensure_ascii=False)
|
||||
|
||||
key = "B@ecf920Od8A4df7"
|
||||
key_bytes = key.encode('utf-8')
|
||||
plain_bytes = plain_text.encode('utf-8')
|
||||
cipher = AES.new(key_bytes, AES.MODE_ECB)
|
||||
padded_data = pad(plain_bytes, AES.block_size)
|
||||
ciphertext = cipher.encrypt(padded_data)
|
||||
encrypted = base64.b64encode(ciphertext).decode('utf-8')
|
||||
|
||||
response = requests.post("https://u.shytkjgs.com/user/v3/account/login", headers=headerf, data=encrypted)
|
||||
response_data = response.json()
|
||||
Authorization = response_data['data']['token']
|
||||
|
||||
headerx = {
|
||||
'authorization': Authorization,
|
||||
'platform': '1',
|
||||
'version_name': '3.8.3.1'
|
||||
}
|
||||
|
||||
class Spider(Spider):
|
||||
global xurl
|
||||
global headerx
|
||||
global headers
|
||||
|
||||
def getName(self):
|
||||
return "首页"
|
||||
|
||||
def init(self, extend):
|
||||
pass
|
||||
|
||||
def isVideoFormat(self, url):
|
||||
pass
|
||||
|
||||
def manualVideoCheck(self):
|
||||
pass
|
||||
|
||||
def extract_middle_text(self, text, start_str, end_str, pl, start_index1: str = '', end_index2: str = ''):
|
||||
if pl == 3:
|
||||
plx = []
|
||||
while True:
|
||||
start_index = text.find(start_str)
|
||||
if start_index == -1:
|
||||
break
|
||||
end_index = text.find(end_str, start_index + len(start_str))
|
||||
if end_index == -1:
|
||||
break
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
plx.append(middle_text)
|
||||
text = text.replace(start_str + middle_text + end_str, '')
|
||||
if len(plx) > 0:
|
||||
purl = ''
|
||||
for i in range(len(plx)):
|
||||
matches = re.findall(start_index1, plx[i])
|
||||
output = ""
|
||||
for match in matches:
|
||||
match3 = re.search(r'(?:^|[^0-9])(\d+)(?:[^0-9]|$)', match[1])
|
||||
if match3:
|
||||
number = match3.group(1)
|
||||
else:
|
||||
number = 0
|
||||
if 'http' not in match[0]:
|
||||
output += f"#{match[1]}${number}{xurl}{match[0]}"
|
||||
else:
|
||||
output += f"#{match[1]}${number}{match[0]}"
|
||||
output = output[1:]
|
||||
purl = purl + output + "$$$"
|
||||
purl = purl[:-3]
|
||||
return purl
|
||||
else:
|
||||
return ""
|
||||
else:
|
||||
start_index = text.find(start_str)
|
||||
if start_index == -1:
|
||||
return ""
|
||||
end_index = text.find(end_str, start_index + len(start_str))
|
||||
if end_index == -1:
|
||||
return ""
|
||||
|
||||
if pl == 0:
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
return middle_text.replace("\\", "")
|
||||
|
||||
if pl == 1:
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
matches = re.findall(start_index1, middle_text)
|
||||
if matches:
|
||||
jg = ' '.join(matches)
|
||||
return jg
|
||||
|
||||
if pl == 2:
|
||||
middle_text = text[start_index + len(start_str):end_index]
|
||||
matches = re.findall(start_index1, middle_text)
|
||||
if matches:
|
||||
new_list = [f'{item}' for item in matches]
|
||||
jg = '$$$'.join(new_list)
|
||||
return jg
|
||||
|
||||
def homeContent(self, filter):
|
||||
result = {}
|
||||
result = {"class": [{"type_id": "1", "type_name": "剧场"},
|
||||
{"type_id": "3", "type_name": "新剧"},
|
||||
{"type_id": "2", "type_name": "热播"},
|
||||
{"type_id": "7", "type_name": "星选"},
|
||||
{"type_id": "5", "type_name": "阳光"}],
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
def homeVideoContent(self):
|
||||
videos = []
|
||||
|
||||
url= f'{xurl}/v1/theater/home_page?theater_class_id=1&class2_id=4&page_num=1&page_size=24'
|
||||
detail = requests.get(url=url, headers=headerx)
|
||||
detail.encoding = "utf-8"
|
||||
if detail.status_code == 200:
|
||||
data = detail.json()
|
||||
|
||||
for vod in data['data']['list']:
|
||||
|
||||
name = vod['theater']['title']
|
||||
|
||||
id = vod['theater']['id']
|
||||
|
||||
pic = vod['theater']['cover_url']
|
||||
|
||||
remark = vod['theater']['play_amount_str']
|
||||
|
||||
video = {
|
||||
"vod_id": id,
|
||||
"vod_name": name,
|
||||
"vod_pic": pic,
|
||||
"vod_remarks": remark
|
||||
}
|
||||
videos.append(video)
|
||||
|
||||
result = {'list': videos}
|
||||
return result
|
||||
|
||||
def categoryContent(self, cid, pg, filter, ext):
|
||||
result = {}
|
||||
videos = []
|
||||
|
||||
url = f'{xurl}/v1/theater/home_page?theater_class_id={cid}&page_num={pg}&page_size=24'
|
||||
detail = requests.get(url=url,headers=headerx)
|
||||
detail.encoding = "utf-8"
|
||||
if detail.status_code == 200:
|
||||
data = detail.json()
|
||||
|
||||
for vod in data['data']['list']:
|
||||
|
||||
name = vod['theater']['title']
|
||||
|
||||
id = vod['theater']['id']
|
||||
|
||||
pic = vod['theater']['cover_url']
|
||||
|
||||
remark = vod['theater']['theme']
|
||||
|
||||
video = {
|
||||
"vod_id": id,
|
||||
"vod_name": name,
|
||||
"vod_pic": pic,
|
||||
"vod_remarks": remark
|
||||
}
|
||||
videos.append(video)
|
||||
|
||||
result = {'list': videos}
|
||||
result['page'] = pg
|
||||
result['pagecount'] = 9999
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
return result
|
||||
|
||||
def detailContent(self, ids):
|
||||
did = ids[0]
|
||||
result = {}
|
||||
videos = []
|
||||
xianlu = ''
|
||||
bofang = ''
|
||||
|
||||
url = f'{xurl}/v2/theater_parent/detail?theater_parent_id={did}'
|
||||
detail = requests.get(url=url, headers=headerx)
|
||||
detail.encoding = "utf-8"
|
||||
if detail.status_code == 200:
|
||||
data = detail.json()
|
||||
|
||||
url = 'https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1732707176882/jiduo.txt'
|
||||
response = requests.get(url)
|
||||
response.encoding = 'utf-8'
|
||||
code = response.text
|
||||
name = self.extract_middle_text(code, "s1='", "'", 0)
|
||||
Jumps = self.extract_middle_text(code, "s2='", "'", 0)
|
||||
|
||||
content = '剧情:' + data['data']['introduction']
|
||||
|
||||
area = data['data']['desc_tags'][0]
|
||||
|
||||
remarks = data['data']['filing']
|
||||
|
||||
# 修复剧集只有一集的问题 - 检查theaters数据是否存在且不为空
|
||||
if 'theaters' in data['data'] and data['data']['theaters']:
|
||||
for sou in data['data']['theaters']:
|
||||
id = sou['son_video_url']
|
||||
name = sou['num']
|
||||
bofang = bofang + str(name) + '$' + id + '#'
|
||||
|
||||
bofang = bofang[:-1] if bofang.endswith('#') else bofang
|
||||
xianlu = '星芽'
|
||||
else:
|
||||
# 如果没有theaters数据,检查是否有单个视频URL
|
||||
if 'video_url' in data['data'] and data['data']['video_url']:
|
||||
bofang = '1$' + data['data']['video_url']
|
||||
xianlu = '星芽'
|
||||
else:
|
||||
bofang = Jumps
|
||||
xianlu = '1'
|
||||
|
||||
videos.append({
|
||||
"vod_id": did,
|
||||
"vod_content": content,
|
||||
"vod_remarks": remarks,
|
||||
"vod_area": area,
|
||||
"vod_play_from": xianlu,
|
||||
"vod_play_url": bofang
|
||||
})
|
||||
|
||||
result['list'] = videos
|
||||
return result
|
||||
|
||||
def playerContent(self, flag, id, vipFlags):
|
||||
|
||||
result = {}
|
||||
result["parse"] = 0
|
||||
result["playUrl"] = ''
|
||||
result["url"] = id
|
||||
result["header"] = headers
|
||||
return result
|
||||
|
||||
def searchContentPage(self, key, quick, page):
|
||||
result = {}
|
||||
videos = []
|
||||
|
||||
payload = {
|
||||
"text": key
|
||||
}
|
||||
|
||||
url = f"{xurl}/v3/search"
|
||||
detail = requests.post(url=url, headers=headerx, json=payload)
|
||||
if detail.status_code == 200:
|
||||
detail.encoding = "utf-8"
|
||||
data = detail.json()
|
||||
|
||||
for vod in data['data']['theater']['search_data']:
|
||||
|
||||
name = vod['title']
|
||||
|
||||
id = vod['id']
|
||||
|
||||
pic = vod['cover_url']
|
||||
|
||||
remark = vod['score_str']
|
||||
|
||||
video = {
|
||||
"vod_id": id,
|
||||
"vod_name": name,
|
||||
"vod_pic": pic,
|
||||
"vod_remarks": remark
|
||||
}
|
||||
videos.append(video)
|
||||
|
||||
result['list'] = videos
|
||||
result['page'] = page
|
||||
result['pagecount'] = 9999
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
return result
|
||||
|
||||
def searchContent(self, key, quick, pg="1"):
|
||||
return self.searchContentPage(key, quick, '1')
|
||||
|
||||
def localProxy(self, params):
|
||||
if params['type'] == "m3u8":
|
||||
return self.proxyM3u8(params)
|
||||
elif params['type'] == "media":
|
||||
return self.proxyMedia(params)
|
||||
elif params['type'] == "ts":
|
||||
return self.proxyTs(params)
|
||||
return None
|
||||
109
TVBoxOSC/tvbox/py/爱看短剧.py
Normal file
109
TVBoxOSC/tvbox/py/爱看短剧.py
Normal file
@ -0,0 +1,109 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# by @嗷呜
|
||||
import json
|
||||
import sys
|
||||
from pyquery import PyQuery as pq
|
||||
sys.path.append('..')
|
||||
from base.spider import Spider
|
||||
|
||||
class Spider(Spider):
|
||||
|
||||
def init(self, extend=""):
|
||||
pass
|
||||
|
||||
def getName(self):
|
||||
pass
|
||||
|
||||
def isVideoFormat(self, url):
|
||||
pass
|
||||
|
||||
def manualVideoCheck(self):
|
||||
pass
|
||||
|
||||
def destroy(self):
|
||||
pass
|
||||
|
||||
host='http://www.toule.top'
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
|
||||
'Referer':f'{host}/',
|
||||
'Origin':host
|
||||
}
|
||||
|
||||
def homeContent(self, filter):
|
||||
data=self.getpq()
|
||||
result = {}
|
||||
classes = []
|
||||
for k in data('.swiper-wrapper .swiper-slide').items():
|
||||
classes.append({
|
||||
'type_name': k.text(),
|
||||
'type_id': k.text()
|
||||
})
|
||||
result['class'] = classes
|
||||
result['list'] = self.getlist(data('.container.items ul li'))
|
||||
return result
|
||||
|
||||
def homeVideoContent(self):
|
||||
pass
|
||||
|
||||
def categoryContent(self, tid, pg, filter, extend):
|
||||
data=self.getpq(f"/index.php/vod/show/class/{tid}/id/1/page/{pg}.html")
|
||||
result = {}
|
||||
result['list'] = self.getlist(data('.container.items ul li'))
|
||||
result['page'] = pg
|
||||
result['pagecount'] = 9999
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
return result
|
||||
|
||||
def detailContent(self, ids):
|
||||
data=self.getpq(ids[0])
|
||||
v=data('.container.detail-content')
|
||||
vod = {
|
||||
'vod_remarks': v('.items-tags a').text(),
|
||||
'vod_content': v('.text-content .detail').text(),
|
||||
'vod_play_from': '爱看短剧',
|
||||
'vod_play_url': '#'.join([f"{i.text()}${i('a').attr('href')}" for i in data('.swiper-wrapper .swiper-slide').items()])
|
||||
}
|
||||
return {'list':[vod]}
|
||||
|
||||
def searchContent(self, key, quick, pg="1"):
|
||||
data=self.getpq(f"/index.php/vod/search/page/{pg}/wd/{key}.html")
|
||||
return {'list':self.getlist(data('.container.items ul li')),'page':pg}
|
||||
|
||||
def playerContent(self, flag, id, vipFlags):
|
||||
data=self.getpq(id)
|
||||
try:
|
||||
jstr=data('.player-content script').eq(0).text()
|
||||
jt=json.loads(jstr.split('=',1)[-1])
|
||||
p,url=0,jt['url']
|
||||
except Exception as e:
|
||||
print(f"获取播放地址失败: {e}")
|
||||
p,url=1,f'{self.host}{id}'
|
||||
return {'parse': p, 'url': url, 'header': self.headers}
|
||||
|
||||
def localProxy(self, param):
|
||||
pass
|
||||
|
||||
def liveContent(self, url):
|
||||
pass
|
||||
|
||||
def getpq(self, path=''):
|
||||
data=self.fetch(f"{self.host}{path}",headers=self.headers).text
|
||||
try:
|
||||
return pq(data)
|
||||
except Exception as e:
|
||||
print(f"{str(e)}")
|
||||
return pq(data.encode('utf-8'))
|
||||
|
||||
def getlist(self,data):
|
||||
videos = []
|
||||
for i in data.items():
|
||||
videos.append({
|
||||
'vod_id': i('.image-line').attr('href'),
|
||||
'vod_name': i('img').attr('alt'),
|
||||
'vod_pic': i('img').attr('src'),
|
||||
'vod_remarks': i('.remarks.light').text()
|
||||
})
|
||||
return videos
|
||||
156
TVBoxOSC/tvbox/py/甜圈短剧.py
Normal file
156
TVBoxOSC/tvbox/py/甜圈短剧.py
Normal file
@ -0,0 +1,156 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# by @嗷呜
|
||||
import sys
|
||||
sys.path.append('..')
|
||||
from base.spider import Spider
|
||||
|
||||
class Spider(Spider):
|
||||
|
||||
def init(self, extend=""):
|
||||
pass
|
||||
|
||||
def getName(self):
|
||||
return "甜圈短剧"
|
||||
|
||||
def isVideoFormat(self, url):
|
||||
return True
|
||||
|
||||
def manualVideoCheck(self):
|
||||
return False
|
||||
|
||||
def destroy(self):
|
||||
pass
|
||||
|
||||
# 更新为新的域名
|
||||
ahost = 'https://mov.cenguigui.cn'
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
|
||||
'sec-ch-ua-platform': '"macOS"',
|
||||
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="134", "Google Chrome";v="134"',
|
||||
'DNT': '1',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
'Sec-Fetch-Site': 'cross-site',
|
||||
'Sec-Fetch-Mode': 'no-cors',
|
||||
'Sec-Fetch-Dest': 'video',
|
||||
'Sec-Fetch-Storage-Access': 'active',
|
||||
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
||||
}
|
||||
|
||||
def homeContent(self, filter):
|
||||
result = {'class': [{'type_id': '推荐榜', 'type_name': '🔥 推荐榜'},
|
||||
{'type_id': '新剧', 'type_name': '🎬 新剧'},
|
||||
{'type_id': '逆袭', 'type_name': '🎬 逆袭'},
|
||||
{'type_id': '霸总', 'type_name': '🎬 霸总'},
|
||||
{'type_id': '现代言情', 'type_name': '🎬 现代言情'},
|
||||
{'type_id': '打脸虐渣', 'type_name': '🎬 打脸虐渣'},
|
||||
{'type_id': '豪门恩怨', 'type_name': '🎬 豪门恩怨'},
|
||||
{'type_id': '神豪', 'type_name': '🎬 神豪'},
|
||||
{'type_id': '马甲', 'type_name': '🎬 马甲'},
|
||||
{'type_id': '都市日常', 'type_name': '🎬 都市日常'},
|
||||
{'type_id': '战神归来', 'type_name': '🎬 战神归来'},
|
||||
{'type_id': '小人物', 'type_name': '🎬 小人物'},
|
||||
{'type_id': '女性成长', 'type_name': '🎬 女性成长'},
|
||||
{'type_id': '大女主', 'type_name': '🎬 大女主'},
|
||||
{'type_id': '穿越', 'type_name': '🎬 穿越'},
|
||||
{'type_id': '都市修仙', 'type_name': '🎬 都市修仙'},
|
||||
{'type_id': '强者回归', 'type_name': '🎬 强者回归'},
|
||||
{'type_id': '亲情', 'type_name': '🎬 亲情'},
|
||||
{'type_id': '古装', 'type_name': '🎬 古装'},
|
||||
{'type_id': '重生', 'type_name': '🎬 重生'},
|
||||
{'type_id': '闪婚', 'type_name': '🎬 闪婚'},
|
||||
{'type_id': '赘婿逆袭', 'type_name': '🎬 赘婿逆袭'},
|
||||
{'type_id': '虐恋', 'type_name': '🎬 虐恋'},
|
||||
{'type_id': '追妻', 'type_name': '🎬 追妻'},
|
||||
{'type_id': '天下无敌', 'type_name': '🎬 天下无敌'},
|
||||
{'type_id': '家庭伦理', 'type_name': '🎬 家庭伦理'},
|
||||
{'type_id': '萌宝', 'type_name': '🎬 萌宝'},
|
||||
{'type_id': '古风权谋', 'type_name': '🎬 古风权谋'},
|
||||
{'type_id': '职场', 'type_name': '🎬 职场'},
|
||||
{'type_id': '奇幻脑洞', 'type_name': '🎬 奇幻脑洞'},
|
||||
{'type_id': '异能', 'type_name': '🎬 异能'},
|
||||
{'type_id': '无敌神医', 'type_name': '🎬 无敌神医'},
|
||||
{'type_id': '古风言情', 'type_name': '🎬 古风言情'},
|
||||
{'type_id': '传承觉醒', 'type_name': '🎬 传承觉醒'},
|
||||
{'type_id': '现言甜宠', 'type_name': '🎬 现言甜宠'},
|
||||
{'type_id': '奇幻爱情', 'type_name': '🎬 奇幻爱情'},
|
||||
{'type_id': '乡村', 'type_name': '🎬 乡村'},
|
||||
{'type_id': '历史古代', 'type_name': '🎬 历史古代'},
|
||||
{'type_id': '王妃', 'type_name': '🎬 王妃'},
|
||||
{'type_id': '高手下山', 'type_name': '🎬 高手下山'},
|
||||
{'type_id': '娱乐圈', 'type_name': '🎬 娱乐圈'},
|
||||
{'type_id': '强强联合', 'type_name': '🎬 强强联合'},
|
||||
{'type_id': '破镜重圆', 'type_name': '🎬 破镜重圆'},
|
||||
{'type_id': '暗恋成真', 'type_name': '🎬 暗恋成真'},
|
||||
{'type_id': '民国', 'type_name': '🎬 民国'},
|
||||
{'type_id': '欢喜冤家', 'type_name': '🎬 欢喜冤家'},
|
||||
{'type_id': '系统', 'type_name': '🎬 系统'},
|
||||
{'type_id': '真假千金', 'type_name': '🎬 真假千金'},
|
||||
{'type_id': '龙王', 'type_name': '🎬 龙王'},
|
||||
{'type_id': '校园', 'type_name': '🎬 校园'},
|
||||
{'type_id': '穿书', 'type_name': '🎬 穿书'},
|
||||
{'type_id': '女帝', 'type_name': '🎬 女帝'},
|
||||
{'type_id': '团宠', 'type_name': '🎬 团宠'},
|
||||
{'type_id': '年代爱情', 'type_name': '🎬 年代爱情'},
|
||||
{'type_id': '玄幻仙侠', 'type_name': '🎬 玄幻仙侠'},
|
||||
{'type_id': '青梅竹马', 'type_name': '🎬 青梅竹马'},
|
||||
{'type_id': '悬疑推理', 'type_name': '🎬 悬疑推理'},
|
||||
{'type_id': '皇后', 'type_name': '🎬 皇后'},
|
||||
{'type_id': '替身', 'type_name': '🎬 替身'},
|
||||
{'type_id': '大叔', 'type_name': '🎬 大叔'},
|
||||
{'type_id': '喜剧', 'type_name': '🎬 喜剧'},
|
||||
{'type_id': '剧情', 'type_name': '🎬 剧情'}]}
|
||||
return result
|
||||
|
||||
def homeVideoContent(self):
|
||||
return []
|
||||
|
||||
def categoryContent(self, tid, pg, filter, extend):
|
||||
params = {
|
||||
'classname': tid,
|
||||
'offset': str((int(pg) - 1)),
|
||||
}
|
||||
# 更新请求路径为 /duanju/api.php
|
||||
data = self.fetch(f'{self.ahost}/duanju/api.php', params=params, headers=self.headers).json()
|
||||
videos = []
|
||||
for k in data['data']:
|
||||
videos.append({
|
||||
'vod_id': k.get('book_id'),
|
||||
'vod_name': k.get('title'),
|
||||
'vod_pic': k.get('cover'),
|
||||
'vod_year': k.get('score'),
|
||||
'vod_remarks': f"{k.get('sub_title')}|{k.get('episode_cnt')}"
|
||||
})
|
||||
result = {}
|
||||
result['list'] = videos
|
||||
result['page'] = pg
|
||||
result['pagecount'] = 9999
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
return result
|
||||
|
||||
def detailContent(self, ids):
|
||||
# 更新请求路径为 /duanju/api.php
|
||||
v = self.fetch(f'{self.ahost}/duanju/api.php', params={'book_id': ids[0]}, headers=self.headers).json()
|
||||
vod = {
|
||||
'vod_id': ids[0],
|
||||
'vod_name': v.get('title'),
|
||||
'type_name': v.get('category'),
|
||||
'vod_year': v.get('time'),
|
||||
'vod_remarks': v.get('duration'),
|
||||
'vod_content': v.get('desc'),
|
||||
'vod_play_from': '爱看短剧',
|
||||
'vod_play_url': '#'.join([f"{i['title']}${i['video_id']}" for i in v['data']])
|
||||
}
|
||||
return {'list': [vod]}
|
||||
|
||||
def searchContent(self, key, quick, pg="1"):
|
||||
return self.categoryContent(key, pg, True, {})
|
||||
|
||||
def playerContent(self, flag, id, vipFlags):
|
||||
# 更新请求路径为 /duanju/api.php
|
||||
data = self.fetch(f'{self.ahost}/duanju/api.php', params={'video_id': id}, headers=self.headers).json()
|
||||
return {'parse': 0, 'url': data['data']['url'], 'header': self.headers}
|
||||
|
||||
def localProxy(self, param):
|
||||
pass
|
||||
767
TVBoxOSC/tvbox/py/网络直播.py
Normal file
767
TVBoxOSC/tvbox/py/网络直播.py
Normal file
@ -0,0 +1,767 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# by @嗷呜
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
import time
|
||||
from base64 import b64decode, b64encode
|
||||
from urllib.parse import parse_qs
|
||||
import requests
|
||||
from pyquery import PyQuery as pq
|
||||
sys.path.append('..')
|
||||
from base.spider import Spider
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
|
||||
|
||||
class Spider(Spider):
|
||||
|
||||
def init(self, extend=""):
|
||||
tid = 'douyin'
|
||||
headers = self.gethr(0, tid)
|
||||
response = requests.head(self.hosts[tid], headers=headers)
|
||||
ttwid = response.cookies.get('ttwid')
|
||||
headers.update({
|
||||
'authority': self.hosts[tid].split('//')[-1],
|
||||
'cookie': f'ttwid={ttwid}' if ttwid else ''
|
||||
})
|
||||
self.dyheaders = headers
|
||||
pass
|
||||
|
||||
def getName(self):
|
||||
pass
|
||||
|
||||
def isVideoFormat(self, url):
|
||||
pass
|
||||
|
||||
def manualVideoCheck(self):
|
||||
pass
|
||||
|
||||
def destroy(self):
|
||||
pass
|
||||
|
||||
headers = [
|
||||
{
|
||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
|
||||
},
|
||||
{
|
||||
"User-Agent": "Dart/3.4 (dart:io)"
|
||||
}
|
||||
]
|
||||
|
||||
excepturl = 'https://www.baidu.com'
|
||||
|
||||
hosts = {
|
||||
"huya": ["https://www.huya.com","https://mp.huya.com"],
|
||||
"douyin": "https://live.douyin.com",
|
||||
"douyu": "https://www.douyu.com",
|
||||
"wangyi": "https://cc.163.com",
|
||||
"bili": ["https://api.live.bilibili.com", "https://api.bilibili.com"]
|
||||
}
|
||||
|
||||
referers = {
|
||||
"huya": "https://live.cdn.huya.com",
|
||||
"douyin": "https://live.douyin.com",
|
||||
"douyu": "https://m.douyu.com",
|
||||
"bili": "https://live.bilibili.com"
|
||||
}
|
||||
|
||||
playheaders = {
|
||||
"wangyi": {
|
||||
"User-Agent": "ExoPlayer",
|
||||
"Connection": "Keep-Alive",
|
||||
"Icy-MetaData": "1"
|
||||
},
|
||||
"bili": {
|
||||
'Accept': '*/*',
|
||||
'Icy-MetaData': '1',
|
||||
'referer': referers['bili'],
|
||||
'user-agent': headers[0]['User-Agent']
|
||||
},
|
||||
'douyin': {
|
||||
'User-Agent': 'libmpv',
|
||||
'Icy-MetaData': '1'
|
||||
},
|
||||
'huya': {
|
||||
'User-Agent': 'ExoPlayer',
|
||||
'Connection': 'Keep-Alive',
|
||||
'Icy-MetaData': '1'
|
||||
},
|
||||
'douyu': {
|
||||
'User-Agent': 'libmpv',
|
||||
'Icy-MetaData': '1'
|
||||
}
|
||||
}
|
||||
|
||||
def process_bili(self):
|
||||
try:
|
||||
self.blfdata = self.fetch(
|
||||
f'{self.hosts["bili"][0]}/room/v1/Area/getList?need_entrance=1&parent_id=0',
|
||||
headers=self.gethr(0, 'bili')
|
||||
).json()
|
||||
return ('bili', [{'key': 'cate', 'name': '分类',
|
||||
'value': [{'n': i['name'], 'v': str(i['id'])}
|
||||
for i in self.blfdata['data']]}])
|
||||
except Exception as e:
|
||||
print(f"bili处理错误: {e}")
|
||||
return 'bili', None
|
||||
|
||||
def process_douyin(self):
|
||||
try:
|
||||
data = self.getpq(self.hosts['douyin'], headers=self.dyheaders)('script')
|
||||
for i in data.items():
|
||||
if 'categoryData' in i.text():
|
||||
content = i.text()
|
||||
start = content.find('{')
|
||||
end = content.rfind('}') + 1
|
||||
if start != -1 and end != -1:
|
||||
json_str = content[start:end]
|
||||
json_str = json_str.replace('\\"', '"')
|
||||
try:
|
||||
self.dyifdata = json.loads(json_str)
|
||||
return ('douyin', [{'key': 'cate', 'name': '分类',
|
||||
'value': [{'n': i['partition']['title'],
|
||||
'v': f"{i['partition']['id_str']}@@{i['partition']['title']}"}
|
||||
for i in self.dyifdata['categoryData']]}])
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"douyin解析错误: {e}")
|
||||
return 'douyin', None
|
||||
except Exception as e:
|
||||
print(f"douyin请求或处理错误: {e}")
|
||||
return 'douyin', None
|
||||
|
||||
def process_douyu(self):
|
||||
try:
|
||||
self.dyufdata = self.fetch(
|
||||
f'{self.referers["douyu"]}/api/cate/list',
|
||||
headers=self.headers[1]
|
||||
).json()
|
||||
return ('douyu', [{'key': 'cate', 'name': '分类',
|
||||
'value': [{'n': i['cate1Name'], 'v': str(i['cate1Id'])}
|
||||
for i in self.dyufdata['data']['cate1Info']]}])
|
||||
except Exception as e:
|
||||
print(f"douyu错误: {e}")
|
||||
return 'douyu', None
|
||||
|
||||
def homeContent(self, filter):
|
||||
result = {}
|
||||
cateManual = {
|
||||
"虎牙": "huya",
|
||||
"抖音": "douyin",
|
||||
"斗鱼": "douyu",
|
||||
"网易": "wangyi"
|
||||
}
|
||||
classes = []
|
||||
filters = {
|
||||
'huya': [{'key': 'cate', 'name': '分类',
|
||||
'value': [{'n': '网游', 'v': '1'}, {'n': '单机', 'v': '2'},
|
||||
{'n': '娱乐', 'v': '8'}, {'n': '手游', 'v': '3'}]}]
|
||||
}
|
||||
|
||||
with ThreadPoolExecutor(max_workers=3) as executor:
|
||||
futures = {
|
||||
executor.submit(self.process_bili): 'bili',
|
||||
executor.submit(self.process_douyin): 'douyin',
|
||||
executor.submit(self.process_douyu): 'douyu'
|
||||
}
|
||||
|
||||
for future in futures:
|
||||
platform, filter_data = future.result()
|
||||
if filter_data:
|
||||
filters[platform] = filter_data
|
||||
|
||||
for k in cateManual:
|
||||
classes.append({
|
||||
'type_name': k,
|
||||
'type_id': cateManual[k]
|
||||
})
|
||||
|
||||
result['class'] = classes
|
||||
result['filters'] = filters
|
||||
return result
|
||||
|
||||
def homeVideoContent(self):
|
||||
pass
|
||||
|
||||
def categoryContent(self, tid, pg, filter, extend):
|
||||
vdata = []
|
||||
result = {}
|
||||
pagecount = 9999
|
||||
result['page'] = pg
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
if tid == 'wangyi':
|
||||
vdata, pagecount = self.wyccContent(tid, pg, filter, extend, vdata)
|
||||
elif 'bili' in tid:
|
||||
vdata, pagecount = self.biliContent(tid, pg, filter, extend, vdata)
|
||||
elif 'huya' in tid:
|
||||
vdata, pagecount = self.huyaContent(tid, pg, filter, extend, vdata)
|
||||
elif 'douyin' in tid:
|
||||
vdata, pagecount = self.douyinContent(tid, pg, filter, extend, vdata)
|
||||
elif 'douyu' in tid:
|
||||
vdata, pagecount = self.douyuContent(tid, pg, filter, extend, vdata)
|
||||
result['list'] = vdata
|
||||
result['pagecount'] = pagecount
|
||||
return result
|
||||
|
||||
def wyccContent(self, tid, pg, filter, extend, vdata):
|
||||
params = {
|
||||
'format': 'json',
|
||||
'start': (int(pg) - 1) * 20,
|
||||
'size': '20',
|
||||
}
|
||||
response = self.fetch(f'{self.hosts[tid]}/api/category/live/', params=params, headers=self.headers[0]).json()
|
||||
for i in response['lives']:
|
||||
if i.get('cuteid'):
|
||||
bvdata = self.buildvod(
|
||||
vod_id=f"{tid}@@{i['cuteid']}",
|
||||
vod_name=i.get('title'),
|
||||
vod_pic=i.get('cover'),
|
||||
vod_remarks=i.get('nickname'),
|
||||
style={"type": "rect", "ratio": 1.33}
|
||||
)
|
||||
vdata.append(bvdata)
|
||||
return vdata, 9999
|
||||
|
||||
def biliContent(self, tid, pg, filter, extend, vdata):
|
||||
if extend.get('cate') and pg == '1' and 'click' not in tid:
|
||||
for i in self.blfdata['data']:
|
||||
if str(i['id']) == extend['cate']:
|
||||
for j in i['list']:
|
||||
v = self.buildvod(
|
||||
vod_id=f"click_{tid}@@{i['id']}@@{j['id']}",
|
||||
vod_name=j.get('name'),
|
||||
vod_pic=j.get('pic'),
|
||||
vod_tag=1,
|
||||
style={"type": "oval", "ratio": 1}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 1
|
||||
else:
|
||||
path = f'/xlive/web-interface/v1/second/getListByArea?platform=web&sort=online&page_size=30&page={pg}'
|
||||
if 'click' in tid:
|
||||
ids = tid.split('_')[1].split('@@')
|
||||
tid = ids[0]
|
||||
path = f'/xlive/web-interface/v1/second/getList?platform=web&parent_area_id={ids[1]}&area_id={ids[-1]}&sort_type=&page={pg}'
|
||||
data = self.fetch(f'{self.hosts[tid][0]}{path}', headers=self.gethr(0, tid)).json()
|
||||
for i in data['data']['list']:
|
||||
if i.get('roomid'):
|
||||
data = self.buildvod(
|
||||
f"{tid}@@{i['roomid']}",
|
||||
i.get('title'),
|
||||
i.get('cover'),
|
||||
i.get('watched_show', {}).get('text_large'),
|
||||
0,
|
||||
i.get('uname'),
|
||||
style={"type": "rect", "ratio": 1.33}
|
||||
)
|
||||
vdata.append(data)
|
||||
return vdata, 9999
|
||||
|
||||
def huyaContent(self, tid, pg, filter, extend, vdata):
|
||||
if extend.get('cate') and pg == '1' and 'click' not in tid:
|
||||
id = extend.get('cate')
|
||||
data = self.fetch(f'{self.referers[tid]}/liveconfig/game/bussLive?bussType={id}',
|
||||
headers=self.headers[1]).json()
|
||||
for i in data['data']:
|
||||
v = self.buildvod(
|
||||
vod_id=f"click_{tid}@@{int(i['gid'])}",
|
||||
vod_name=i.get('gameFullName'),
|
||||
vod_pic=f'https://huyaimg.msstatic.com/cdnimage/game/{int(i["gid"])}-MS.jpg',
|
||||
vod_tag=1,
|
||||
style={"type": "oval", "ratio": 1}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 1
|
||||
else:
|
||||
gid = ''
|
||||
if 'click' in tid:
|
||||
ids = tid.split('_')[1].split('@@')
|
||||
tid = ids[0]
|
||||
gid = f'&gameId={ids[1]}'
|
||||
data = self.fetch(f'{self.hosts[tid][0]}/cache.php?m=LiveList&do=getLiveListByPage&tagAll=0{gid}&page={pg}',
|
||||
headers=self.headers[1]).json()
|
||||
for i in data['data']['datas']:
|
||||
if i.get('profileRoom'):
|
||||
v = self.buildvod(
|
||||
f"{tid}@@{i['profileRoom']}",
|
||||
i.get('introduction'),
|
||||
i.get('screenshot'),
|
||||
str(int(i.get('totalCount', '1')) / 10000) + '万',
|
||||
0,
|
||||
i.get('nick'),
|
||||
style={"type": "rect", "ratio": 1.33}
|
||||
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 9999
|
||||
|
||||
def douyinContent(self, tid, pg, filter, extend, vdata):
|
||||
if extend.get('cate') and pg == '1' and 'click' not in tid:
|
||||
ids = extend.get('cate').split('@@')
|
||||
for i in self.dyifdata['categoryData']:
|
||||
c = i['partition']
|
||||
if c['id_str'] == ids[0] and c['title'] == ids[1]:
|
||||
vlist = i['sub_partition'].copy()
|
||||
vlist.insert(0, {'partition': c})
|
||||
for j in vlist:
|
||||
j = j['partition']
|
||||
v = self.buildvod(
|
||||
vod_id=f"click_{tid}@@{j['id_str']}@@{j['type']}",
|
||||
vod_name=j.get('title'),
|
||||
vod_pic='https://p3-pc-weboff.byteimg.com/tos-cn-i-9r5gewecjs/pwa_v3/512x512-1.png',
|
||||
vod_tag=1,
|
||||
style={"type": "oval", "ratio": 1}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 1
|
||||
else:
|
||||
path = f'/webcast/web/partition/detail/room/?aid=6383&app_name=douyin_web&live_id=1&device_platform=web&count=15&offset={(int(pg) - 1) * 15}&partition=720&partition_type=1'
|
||||
if 'click' in tid:
|
||||
ids = tid.split('_')[1].split('@@')
|
||||
tid = ids[0]
|
||||
path = f'/webcast/web/partition/detail/room/?aid=6383&app_name=douyin_web&live_id=1&device_platform=web&count=15&offset={(int(pg) - 1) * 15}&partition={ids[1]}&partition_type={ids[-1]}&req_from=2'
|
||||
data = self.fetch(f'{self.hosts[tid]}{path}', headers=self.dyheaders).json()
|
||||
for i in data['data']['data']:
|
||||
v = self.buildvod(
|
||||
vod_id=f"{tid}@@{i['web_rid']}",
|
||||
vod_name=i['room'].get('title'),
|
||||
vod_pic=i['room']['cover'].get('url_list')[0],
|
||||
vod_year=i.get('user_count_str'),
|
||||
vod_remarks=i['room']['owner'].get('nickname'),
|
||||
style={"type": "rect", "ratio": 1.33}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 9999
|
||||
|
||||
def douyuContent(self, tid, pg, filter, extend, vdata):
|
||||
if extend.get('cate') and pg == '1' and 'click' not in tid:
|
||||
for i in self.dyufdata['data']['cate2Info']:
|
||||
if str(i['cate1Id']) == extend['cate']:
|
||||
v = self.buildvod(
|
||||
vod_id=f"click_{tid}@@{i['cate2Id']}",
|
||||
vod_name=i.get('cate2Name'),
|
||||
vod_pic=i.get('icon'),
|
||||
vod_remarks=i.get('count'),
|
||||
vod_tag=1,
|
||||
style={"type": "oval", "ratio": 1}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 1
|
||||
else:
|
||||
path = f'/japi/weblist/apinc/allpage/6/{pg}'
|
||||
if 'click' in tid:
|
||||
ids = tid.split('_')[1].split('@@')
|
||||
tid = ids[0]
|
||||
path = f'/gapi/rkc/directory/mixList/2_{ids[1]}/{pg}'
|
||||
url = f'{self.hosts[tid]}{path}'
|
||||
data = self.fetch(url, headers=self.headers[1]).json()
|
||||
for i in data['data']['rl']:
|
||||
v = self.buildvod(
|
||||
vod_id=f"{tid}@@{i['rid']}",
|
||||
vod_name=i.get('rn'),
|
||||
vod_pic=i.get('rs16'),
|
||||
vod_year=str(int(i.get('ol', 1)) / 10000) + '万',
|
||||
vod_remarks=i.get('nn'),
|
||||
style={"type": "rect", "ratio": 1.33}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 9999
|
||||
|
||||
def detailContent(self, ids):
|
||||
ids = ids[0].split('@@')
|
||||
if ids[0] == 'wangyi':
|
||||
vod = self.wyccDetail(ids)
|
||||
elif ids[0] == 'bili':
|
||||
vod = self.biliDetail(ids)
|
||||
elif ids[0] == 'huya':
|
||||
vod = self.huyaDetail(ids)
|
||||
elif ids[0] == 'douyin':
|
||||
vod = self.douyinDetail(ids)
|
||||
elif ids[0] == 'douyu':
|
||||
vod = self.douyuDetail(ids)
|
||||
return {'list': [vod]}
|
||||
|
||||
def wyccDetail(self, ids):
|
||||
try:
|
||||
vdata = self.getpq(f'{self.hosts[ids[0]]}/{ids[1]}', self.headers[0])('script').eq(-1).text()
|
||||
|
||||
def get_quality_name(vbr):
|
||||
if vbr <= 600:
|
||||
return "标清"
|
||||
elif vbr <= 1000:
|
||||
return "高清"
|
||||
elif vbr <= 2000:
|
||||
return "超清"
|
||||
else:
|
||||
return "蓝光"
|
||||
|
||||
data = json.loads(vdata)['props']['pageProps']['roomInfoInitData']
|
||||
name = data['live'].get('title', ids[0])
|
||||
vod = self.buildvod(vod_name=data.get('keywords_suffix'), vod_remarks=data['live'].get('title'),
|
||||
vod_content=data.get('description_suffix'))
|
||||
resolution_data = data['live']['quickplay']['resolution']
|
||||
all_streams = {}
|
||||
sorted_qualities = sorted(resolution_data.items(),
|
||||
key=lambda x: x[1]['vbr'],
|
||||
reverse=True)
|
||||
for quality, data in sorted_qualities:
|
||||
vbr = data['vbr']
|
||||
quality_name = get_quality_name(vbr)
|
||||
for cdn_name, url in data['cdn'].items():
|
||||
if cdn_name not in all_streams and type(url) == str and url.startswith('http'):
|
||||
all_streams[cdn_name] = []
|
||||
if isinstance(url, str) and url.startswith('http'):
|
||||
all_streams[cdn_name].extend([quality_name, url])
|
||||
plists = []
|
||||
names = []
|
||||
for i, (cdn_name, stream_list) in enumerate(all_streams.items(), 1):
|
||||
names.append(f'线路{i}')
|
||||
pstr = f"{name}${ids[0]}@@{self.e64(json.dumps(stream_list))}"
|
||||
plists.append(pstr)
|
||||
vod['vod_play_from'] = "$$$".join(names)
|
||||
vod['vod_play_url'] = "$$$".join(plists)
|
||||
return vod
|
||||
except Exception as e:
|
||||
return self.handle_exception(e)
|
||||
|
||||
def biliDetail(self, ids):
|
||||
try:
|
||||
vdata = self.fetch(
|
||||
f'{self.hosts[ids[0]][0]}/xlive/web-room/v1/index/getInfoByRoom?room_id={ids[1]}&wts={int(time.time())}',
|
||||
headers=self.gethr(0, ids[0])).json()
|
||||
v = vdata['data']['room_info']
|
||||
vod = self.buildvod(
|
||||
vod_name=v.get('title'),
|
||||
type_name=v.get('parent_area_name') + '/' + v.get('area_name'),
|
||||
vod_remarks=v.get('tags'),
|
||||
vod_play_from=v.get('title'),
|
||||
)
|
||||
data = self.fetch(
|
||||
f'{self.hosts[ids[0]][0]}/xlive/web-room/v2/index/getRoomPlayInfo?room_id={ids[1]}&protocol=0%2C1&format=0%2C1%2C2&codec=0%2C1&platform=web',
|
||||
headers=self.gethr(0, ids[0])).json()
|
||||
vdnams = data['data']['playurl_info']['playurl']['g_qn_desc']
|
||||
all_accept_qns = []
|
||||
streams = data['data']['playurl_info']['playurl']['stream']
|
||||
for stream in streams:
|
||||
for format_item in stream['format']:
|
||||
for codec in format_item['codec']:
|
||||
if 'accept_qn' in codec:
|
||||
all_accept_qns.append(codec['accept_qn'])
|
||||
max_accept_qn = max(all_accept_qns, key=len) if all_accept_qns else []
|
||||
quality_map = {
|
||||
item['qn']: item['desc']
|
||||
for item in vdnams
|
||||
}
|
||||
quality_names = [f"{quality_map.get(qn)}${ids[0]}@@{ids[1]}@@{qn}" for qn in max_accept_qn]
|
||||
vod['vod_play_url'] = "#".join(quality_names)
|
||||
return vod
|
||||
except Exception as e:
|
||||
return self.handle_exception(e)
|
||||
|
||||
def huyaDetail(self, ids):
|
||||
try:
|
||||
vdata = self.fetch(f'{self.hosts[ids[0]][1]}/cache.php?m=Live&do=profileRoom&roomid={ids[1]}',
|
||||
headers=self.headers[0]).json()
|
||||
v = vdata['data']['liveData']
|
||||
vod = self.buildvod(
|
||||
vod_name=v.get('introduction'),
|
||||
type_name=v.get('gameFullName'),
|
||||
vod_director=v.get('nick'),
|
||||
vod_remarks=v.get('contentIntro'),
|
||||
)
|
||||
data = dict(reversed(list(vdata['data']['stream'].items())))
|
||||
names = []
|
||||
plist = []
|
||||
|
||||
for stream_type, stream_data in data.items():
|
||||
if isinstance(stream_data, dict) and 'multiLine' in stream_data and 'rateArray' in stream_data:
|
||||
names.append(f"线路{len(names) + 1}")
|
||||
qualities = sorted(
|
||||
stream_data['rateArray'],
|
||||
key=lambda x: (x['iBitRate'], x['sDisplayName']),
|
||||
reverse=True
|
||||
)
|
||||
cdn_urls = []
|
||||
for cdn in stream_data['multiLine']:
|
||||
quality_urls = []
|
||||
for quality in qualities:
|
||||
quality_name = quality['sDisplayName']
|
||||
bit_rate = quality['iBitRate']
|
||||
base_url = cdn['url']
|
||||
if bit_rate > 0:
|
||||
if '.m3u8' in base_url:
|
||||
new_url = base_url.replace(
|
||||
'ratio=2000',
|
||||
f'ratio={bit_rate}'
|
||||
)
|
||||
else:
|
||||
new_url = base_url.replace(
|
||||
'imgplus.flv',
|
||||
f'imgplus_{bit_rate}.flv'
|
||||
)
|
||||
else:
|
||||
new_url = base_url
|
||||
quality_urls.extend([quality_name, new_url])
|
||||
encoded_urls = self.e64(json.dumps(quality_urls))
|
||||
cdn_urls.append(f"{cdn['cdnType']}${ids[0]}@@{encoded_urls}")
|
||||
|
||||
if cdn_urls:
|
||||
plist.append('#'.join(cdn_urls))
|
||||
vod['vod_play_from'] = "$$$".join(names)
|
||||
vod['vod_play_url'] = "$$$".join(plist)
|
||||
return vod
|
||||
except Exception as e:
|
||||
return self.handle_exception(e)
|
||||
|
||||
def douyinDetail(self, ids):
|
||||
url = f'{self.hosts[ids[0]]}/webcast/room/web/enter/?aid=6383&app_name=douyin_web&live_id=1&device_platform=web&enter_from=web_live&web_rid={ids[1]}&room_id_str=&enter_source=&Room-Enter-User-Login-Ab=0&is_need_double_stream=false&cookie_enabled=true&screen_width=1980&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Edge&browser_version=125.0.0.0'
|
||||
data = self.fetch(url, headers=self.dyheaders).json()
|
||||
try:
|
||||
vdata = data['data']['data'][0]
|
||||
vod = self.buildvod(
|
||||
vod_name=vdata['title'],
|
||||
vod_remarks=vdata['user_count_str'],
|
||||
)
|
||||
resolution_data = vdata['stream_url']['live_core_sdk_data']['pull_data']['options']['qualities']
|
||||
stream_json = vdata['stream_url']['live_core_sdk_data']['pull_data']['stream_data']
|
||||
stream_json = json.loads(stream_json)
|
||||
available_types = []
|
||||
if any(sdk_key in stream_json['data'] and 'main' in stream_json['data'][sdk_key] for sdk_key in
|
||||
stream_json['data']):
|
||||
available_types.append('main')
|
||||
if any(sdk_key in stream_json['data'] and 'backup' in stream_json['data'][sdk_key] for sdk_key in
|
||||
stream_json['data']):
|
||||
available_types.append('backup')
|
||||
plist = []
|
||||
for line_type in available_types:
|
||||
format_arrays = {'flv': [], 'hls': [], 'lls': []}
|
||||
qualities = sorted(resolution_data, key=lambda x: x['level'], reverse=True)
|
||||
for quality in qualities:
|
||||
sdk_key = quality['sdk_key']
|
||||
if sdk_key in stream_json['data'] and line_type in stream_json['data'][sdk_key]:
|
||||
stream_info = stream_json['data'][sdk_key][line_type]
|
||||
if stream_info.get('flv'):
|
||||
format_arrays['flv'].extend([quality['name'], stream_info['flv']])
|
||||
if stream_info.get('hls'):
|
||||
format_arrays['hls'].extend([quality['name'], stream_info['hls']])
|
||||
if stream_info.get('lls'):
|
||||
format_arrays['lls'].extend([quality['name'], stream_info['lls']])
|
||||
format_urls = []
|
||||
for format_name, url_array in format_arrays.items():
|
||||
if url_array:
|
||||
encoded_urls = self.e64(json.dumps(url_array))
|
||||
format_urls.append(f"{format_name}${ids[0]}@@{encoded_urls}")
|
||||
|
||||
if format_urls:
|
||||
plist.append('#'.join(format_urls))
|
||||
|
||||
names = ['线路1', '线路2'][:len(plist)]
|
||||
vod['vod_play_from'] = "$$$".join(names)
|
||||
vod['vod_play_url'] = "$$$".join(plist)
|
||||
return vod
|
||||
|
||||
except Exception as e:
|
||||
return self.handle_exception(e)
|
||||
|
||||
def douyuDetail(self, ids):
|
||||
headers = self.gethr(0, zr=f'{self.hosts[ids[0]]}/{ids[1]}')
|
||||
try:
|
||||
data = self.fetch(f'{self.hosts[ids[0]]}/betard/{ids[1]}', headers=headers).json()
|
||||
vname = data['room']['room_name']
|
||||
vod = self.buildvod(
|
||||
vod_name=vname,
|
||||
vod_remarks=data['room'].get('second_lvl_name'),
|
||||
vod_director=data['room'].get('nickname'),
|
||||
)
|
||||
vdata = self.fetch(f'{self.hosts[ids[0]]}/swf_api/homeH5Enc?rids={ids[1]}', headers=headers).json()
|
||||
json_body = vdata['data']
|
||||
json_body = {"html": self.douyu_text(json_body[f'room{ids[1]}']), "rid": ids[1]}
|
||||
sign = self.post('http://alive.nsapps.cn/api/AllLive/DouyuSign', json=json_body, headers=self.headers[1]).json()['data']
|
||||
body = f'{sign}&cdn=&rate=-1&ver=Douyu_223061205&iar=1&ive=1&hevc=0&fa=0'
|
||||
body=self.params_to_json(body)
|
||||
nubdata = self.post(f'{self.hosts[ids[0]]}/lapi/live/getH5Play/{ids[1]}', data=body, headers=headers).json()
|
||||
plist = []
|
||||
names = []
|
||||
for i,x in enumerate(nubdata['data']['cdnsWithName']):
|
||||
names.append(f'线路{i+1}')
|
||||
d = {'sign': sign, 'cdn': x['cdn'], 'id': ids[1]}
|
||||
plist.append(
|
||||
f'{vname}${ids[0]}@@{self.e64(json.dumps(d))}@@{self.e64(json.dumps(nubdata["data"]["multirates"]))}')
|
||||
vod['vod_play_from'] = "$$$".join(names)
|
||||
vod['vod_play_url'] = "$$$".join(plist)
|
||||
return vod
|
||||
except Exception as e:
|
||||
return self.handle_exception(e)
|
||||
|
||||
def douyu_text(self, text):
|
||||
function_positions = [m.start() for m in re.finditer('function', text)]
|
||||
total_functions = len(function_positions)
|
||||
if total_functions % 2 == 0:
|
||||
target_index = total_functions // 2 + 1
|
||||
else:
|
||||
target_index = (total_functions - 1) // 2 + 1
|
||||
if total_functions >= target_index:
|
||||
cut_position = function_positions[target_index - 1]
|
||||
ctext = text[4:cut_position]
|
||||
return re.sub(r'eval\(strc\)\([\w\d,]+\)', 'strc', ctext)
|
||||
return text
|
||||
|
||||
def searchContent(self, key, quick, pg="1"):
|
||||
pass
|
||||
|
||||
def playerContent(self, flag, id, vipFlags):
|
||||
try:
|
||||
ids = id.split('@@')
|
||||
p = 1
|
||||
if ids[0] in ['wangyi', 'douyin','huya']:
|
||||
p, url = 0, json.loads(self.d64(ids[1]))
|
||||
elif ids[0] == 'bili':
|
||||
p, url = self.biliplay(ids)
|
||||
elif ids[0] == 'huya':
|
||||
p, url = 0, json.loads(self.d64(ids[1]))
|
||||
elif ids[0] == 'douyu':
|
||||
p, url = self.douyuplay(ids)
|
||||
return {'parse': p, 'url': url, 'header': self.playheaders[ids[0]]}
|
||||
except Exception as e:
|
||||
return {'parse': 1, 'url': self.excepturl, 'header': self.headers[0]}
|
||||
|
||||
def biliplay(self, ids):
|
||||
try:
|
||||
data = self.fetch(
|
||||
f'{self.hosts[ids[0]][0]}/xlive/web-room/v2/index/getRoomPlayInfo?room_id={ids[1]}&protocol=0,1&format=0,2&codec=0&platform=web&qn={ids[2]}',
|
||||
headers=self.gethr(0, ids[0])).json()
|
||||
urls = []
|
||||
line_index = 1
|
||||
for stream in data['data']['playurl_info']['playurl']['stream']:
|
||||
for format_item in stream['format']:
|
||||
for codec in format_item['codec']:
|
||||
for url_info in codec['url_info']:
|
||||
full_url = f"{url_info['host']}/{codec['base_url'].lstrip('/')}{url_info['extra']}"
|
||||
urls.extend([f"线路{line_index}", full_url])
|
||||
line_index += 1
|
||||
return 0, urls
|
||||
except Exception as e:
|
||||
return 1, self.excepturl
|
||||
|
||||
def douyuplay(self, ids):
|
||||
try:
|
||||
sdata = json.loads(self.d64(ids[1]))
|
||||
headers = self.gethr(0, zr=f'{self.hosts[ids[0]]}/{sdata["id"]}')
|
||||
ldata = json.loads(self.d64(ids[2]))
|
||||
result_obj = {}
|
||||
with ThreadPoolExecutor(max_workers=len(ldata)) as executor:
|
||||
futures = [
|
||||
executor.submit(
|
||||
self.douyufp,
|
||||
sdata,
|
||||
quality,
|
||||
headers,
|
||||
self.hosts[ids[0]],
|
||||
result_obj
|
||||
) for quality in ldata
|
||||
]
|
||||
for future in futures:
|
||||
future.result()
|
||||
|
||||
result = []
|
||||
for bit in sorted(result_obj.keys(), reverse=True):
|
||||
result.extend(result_obj[bit])
|
||||
|
||||
if result:
|
||||
return 0, result
|
||||
return 1, self.excepturl
|
||||
|
||||
except Exception as e:
|
||||
return 1, self.excepturl
|
||||
|
||||
def douyufp(self, sdata, quality, headers, host, result_obj):
|
||||
try:
|
||||
body = f'{sdata["sign"]}&cdn={sdata["cdn"]}&rate={quality["rate"]}'
|
||||
body=self.params_to_json(body)
|
||||
data = self.post(f'{host}/lapi/live/getH5Play/{sdata["id"]}',
|
||||
data=body, headers=headers).json()
|
||||
if data.get('data'):
|
||||
play_url = data['data']['rtmp_url'] + '/' + data['data']['rtmp_live']
|
||||
bit = quality.get('bit', 0)
|
||||
if bit not in result_obj:
|
||||
result_obj[bit] = []
|
||||
result_obj[bit].extend([quality['name'], play_url])
|
||||
except Exception as e:
|
||||
print(f"Error fetching {quality['name']}: {str(e)}")
|
||||
|
||||
def localProxy(self, param):
|
||||
pass
|
||||
|
||||
def e64(self, text):
|
||||
try:
|
||||
text_bytes = text.encode('utf-8')
|
||||
encoded_bytes = b64encode(text_bytes)
|
||||
return encoded_bytes.decode('utf-8')
|
||||
except Exception as e:
|
||||
print(f"Base64编码错误: {str(e)}")
|
||||
return ""
|
||||
|
||||
def d64(self, encoded_text):
|
||||
try:
|
||||
encoded_bytes = encoded_text.encode('utf-8')
|
||||
decoded_bytes = b64decode(encoded_bytes)
|
||||
return decoded_bytes.decode('utf-8')
|
||||
except Exception as e:
|
||||
print(f"Base64解码错误: {str(e)}")
|
||||
return ""
|
||||
|
||||
def josn_to_params(self, params, skip_empty=False):
|
||||
query = []
|
||||
for k, v in params.items():
|
||||
if skip_empty and not v:
|
||||
continue
|
||||
query.append(f"{k}={v}")
|
||||
return "&".join(query)
|
||||
|
||||
def params_to_json(self, query_string):
|
||||
parsed_data = parse_qs(query_string)
|
||||
result = {key: value[0] for key, value in parsed_data.items()}
|
||||
return result
|
||||
|
||||
def buildvod(self, vod_id='', vod_name='', vod_pic='', vod_year='', vod_tag='', vod_remarks='', style='',
|
||||
type_name='', vod_area='', vod_actor='', vod_director='',
|
||||
vod_content='', vod_play_from='', vod_play_url=''):
|
||||
vod = {
|
||||
'vod_id': vod_id,
|
||||
'vod_name': vod_name,
|
||||
'vod_pic': vod_pic,
|
||||
'vod_year': vod_year,
|
||||
'vod_tag': 'folder' if vod_tag else '',
|
||||
'vod_remarks': vod_remarks,
|
||||
'style': style,
|
||||
'type_name': type_name,
|
||||
'vod_area': vod_area,
|
||||
'vod_actor': vod_actor,
|
||||
'vod_director': vod_director,
|
||||
'vod_content': vod_content,
|
||||
'vod_play_from': vod_play_from,
|
||||
'vod_play_url': vod_play_url
|
||||
}
|
||||
vod = {key: value for key, value in vod.items() if value}
|
||||
return vod
|
||||
|
||||
def getpq(self, url, headers=None, cookies=None):
|
||||
data = self.fetch(url, headers=headers, cookies=cookies).text
|
||||
try:
|
||||
return pq(data)
|
||||
except Exception as e:
|
||||
print(f"解析页面错误: {str(e)}")
|
||||
return pq(data.encode('utf-8'))
|
||||
|
||||
def gethr(self, index, rf='', zr=''):
|
||||
headers = self.headers[index]
|
||||
if zr:
|
||||
headers['referer'] = zr
|
||||
else:
|
||||
headers['referer'] = f"{self.referers[rf]}/"
|
||||
return headers
|
||||
|
||||
def handle_exception(self, e):
|
||||
print(f"报错: {str(e)}")
|
||||
return {'vod_play_from': '哎呀翻车啦', 'vod_play_url': f'翻车啦${self.excepturl}'}
|
||||
|
||||
147
TVBoxOSC/tvbox/py/锦鲤短剧.py
Normal file
147
TVBoxOSC/tvbox/py/锦鲤短剧.py
Normal file
@ -0,0 +1,147 @@
|
||||
from base.spider import Spider
|
||||
import re,sys,json
|
||||
sys.path.append('..')
|
||||
|
||||
class Spider(Spider):
|
||||
api_host = 'https://api.jinlidj.com'
|
||||
origin = 'https://www.jinlidj.com'
|
||||
api_path = '/api/search'
|
||||
headers = {
|
||||
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36",
|
||||
'Content-Type': "application/json",
|
||||
'accept-language': "zh-CN,zh;q=0.9",
|
||||
'cache-control': "no-cache",
|
||||
'origin': origin,
|
||||
'pragma': "no-cache",
|
||||
'priority': "u=1, i",
|
||||
'referer': origin+'/',
|
||||
'sec-ch-ua': "\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\", \"Google Chrome\";v=\"138\"",
|
||||
'sec-ch-ua-mobile': "?0",
|
||||
'sec-ch-ua-platform': "\"Windows\"",
|
||||
'sec-fetch-dest': "empty",
|
||||
'sec-fetch-mode': "cors",
|
||||
'sec-fetch-site': "same-site"
|
||||
}
|
||||
|
||||
def homeContent(self, filter):
|
||||
return {'class': [{'type_id': 1, 'type_name': '情感关系'}, {'type_id': 2, 'type_name': '成长逆袭'}, {'type_id': 3, 'type_name': '奇幻异能'}, {'type_id': 4, 'type_name': '战斗热血'}, {'type_id': 5, 'type_name': '伦理现实'}, {'type_id': 6, 'type_name': '时空穿越'}, {'type_id': 7, 'type_name': '权谋身份'}]}
|
||||
|
||||
def homeVideoContent(self):
|
||||
payload = {
|
||||
"page": 1,
|
||||
"limit": 24,
|
||||
"type_id": "",
|
||||
"year": "",
|
||||
"keyword": ""
|
||||
}
|
||||
response = self.post(f"{self.api_host}{self.api_path}", data=json.dumps(payload), headers=self.headers).json()
|
||||
data = response['data']
|
||||
videos = []
|
||||
for i in data['list']:
|
||||
videos.append({
|
||||
'vod_id': i.get('vod_id'),
|
||||
'vod_name': i.get('vod_name'),
|
||||
'vod_class': i.get('vod_class'),
|
||||
'vod_pic': i.get('vod_pic'),
|
||||
'vod_year': i.get('vod_year'),
|
||||
'vod_remarks': i.get('vod_total')+'集',
|
||||
'vod_score': i.get('vod_score')
|
||||
})
|
||||
return {'list': videos}
|
||||
|
||||
def detailContent(self, ids):
|
||||
response = self.post(f'{self.api_host}/api/detail/{ids[0]}', data=json.dumps({}), headers=self.headers).json()
|
||||
data = response['data']
|
||||
videos = []
|
||||
vod_play_url = ''
|
||||
for name,url in data['player'].items():
|
||||
vod_play_url += f'{name}${url}#'
|
||||
vod_play_url.rstrip('#')
|
||||
videos.append({
|
||||
'vod_id': data.get('vod_id'),
|
||||
'vod_name': data.get('vod_name'),
|
||||
'vod_content': data.get('vod_blurb'),
|
||||
'vod_remarks': '集数:' + data.get('vod_total'),
|
||||
"vod_director": data.get('vod_director'),
|
||||
"vod_actor": data.get('vod_actor'),
|
||||
'vod_year': data.get('vod_year'),
|
||||
'vod_area': data.get('vod_area'),
|
||||
'vod_play_from': '锦鲤短剧',
|
||||
'vod_play_url': vod_play_url
|
||||
})
|
||||
return {'list': videos}
|
||||
|
||||
def searchContent(self, key, quick, pg="1"):
|
||||
payload = {
|
||||
"page": pg,
|
||||
"limit": 24,
|
||||
"type_id": "",
|
||||
"keyword": key
|
||||
}
|
||||
response = self.post(f'{self.api_host}{self.api_path}', data=json.dumps(payload), headers=self.headers).json()
|
||||
data = response['data']
|
||||
videos = []
|
||||
for i in data['list']:
|
||||
videos.append({
|
||||
"vod_id": i['vod_id'],
|
||||
"vod_name": i['vod_name'],
|
||||
"vod_class": i['vod_class'],
|
||||
"vod_pic": i['vod_pic'],
|
||||
'vod_year': i.get('vod_year'),
|
||||
"vod_remarks": i['vod_total'] + '集'
|
||||
})
|
||||
return {'list': videos, 'page': pg, 'total': data['total'], 'limit': 24}
|
||||
|
||||
def categoryContent(self, tid, pg, filter, extend):
|
||||
payload = {
|
||||
"page": pg,
|
||||
"limit": 24,
|
||||
"type_id": tid,
|
||||
"year": "",
|
||||
"keyword": ""
|
||||
}
|
||||
response = self.post(f'{self.api_host}{self.api_path}', data=json.dumps(payload), headers=self.headers).json()
|
||||
data = response['data']
|
||||
videos = []
|
||||
for i in data['list']:
|
||||
videos.append({
|
||||
'vod_id': i.get('vod_id'),
|
||||
'vod_name': i.get('vod_name'),
|
||||
'vod_class': i.get('vod_class'),
|
||||
'vod_pic': i.get('vod_pic'),
|
||||
'vod_remarks': i.get('vod_total')+'集',
|
||||
'vod_year': i.get('vod_year'),
|
||||
'vod_score': i.get('vod_score')
|
||||
})
|
||||
return {'list': videos}
|
||||
|
||||
def playerContent(self, flag, id, vipflags):
|
||||
parse = 0
|
||||
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36'}
|
||||
try:
|
||||
response = self.fetch(id, headers=self.headers).text
|
||||
match = re.search(r'let\s+data\s*=\s*(\{[^}]*http[^}]*\});', response, re.IGNORECASE)
|
||||
data = match.group(1)
|
||||
data2 = json.loads(data)
|
||||
url = data2['url']
|
||||
except Exception:
|
||||
url, parse, header = id, 1, self.headers
|
||||
return {'parse': parse, 'url': url,'header': header}
|
||||
|
||||
def init(self, extend=''):
|
||||
pass
|
||||
|
||||
def getName(self):
|
||||
pass
|
||||
|
||||
def isVideoFormat(self, url):
|
||||
pass
|
||||
|
||||
def manualVideoCheck(self):
|
||||
pass
|
||||
|
||||
def destroy(self):
|
||||
pass
|
||||
|
||||
def localProxy(self, param):
|
||||
pass
|
||||
BIN
TVBoxOSC/tvbox/spider.jar
Normal file
BIN
TVBoxOSC/tvbox/spider.jar
Normal file
Binary file not shown.
19
TVBoxOSC/订阅链接.txt
Normal file
19
TVBoxOSC/订阅链接.txt
Normal file
@ -0,0 +1,19 @@
|
||||
★订阅链接★
|
||||
|
||||
通用订阅链接:
|
||||
|
||||
clan://localhost/TVBoxOSC/tvbox/api.json
|
||||
|
||||
影视(fongmi版)专用订阅链接:
|
||||
|
||||
file://TVBoxOSC/tvbox/api.json
|
||||
|
||||
|
||||
|
||||
★本地包在线更新方式★
|
||||
|
||||
1、点击“豆瓣|首页”选择“检查|更新”
|
||||
2、根据个人喜好选择单线路或多线路
|
||||
3、点击图标后会自动下载解压
|
||||
4、更新完成后会有提示
|
||||
5、最后重启软件即可
|
||||
Loading…
x
Reference in New Issue
Block a user