diff --git a/JS/js/JustLive.js b/JS/js/JustLive.js
index 8b242a0..b47a4d2 100644
--- a/JS/js/JustLive.js
+++ b/JS/js/JustLive.js
@@ -1,50 +1,158 @@
-// 道长 drpy仓库 https://gitcode.net/qq_32394351/dr_py
-// drpy安卓本地搭建说明 https://gitcode.net/qq_32394351/dr_py/-/blob/master/%E5%AE%89%E5%8D%93%E6%9C%AC%E5%9C%B0%E6%90%AD%E5%BB%BA%E8%AF%B4%E6%98%8E.md
-// Pluto Player官方TG https://t.me/PlutoPlayer
-// Pluto Player官方TG https://t.me/PlutoPlayerChannel
-
+// 搜索功能需登录使用
var rule = {
title: 'JustLive',
host: 'http://live.yj1211.work',
- homeUrl: '/api/live/getRecommend?page=1&size=20',//网站的首页链接,用于分类获取和推荐获取
+ // homeUrl: '/api/live/getRecommend?page=1&size=20',//网站的首页链接,用于分类获取和推荐获取
+ homeUrl: '/api/live/getRecommendByPlatformArea?platform=bilibili&area=舞见&page=1&size=20',//网站的首页链接,用于分类获取和推荐获取
url: '/api/live/getRecommendByPlatformArea?platform=fyclass&area=fyfilter&page=fypage&size=20', //网站的分类页面链接
- class_name: '斗鱼&虎牙&哔哩&网易',
- class_url: 'douyu&huya&bilibili&cc',
+ class_name: '斗鱼&虎牙&哔哩&网易&抖音',
+ class_url: 'douyu&huya&bilibili&cc&douyin',
filterable: 1,
- filter_url: '{{fl.area or "影音馆"}}',
- filter_def:{
- douyu:{
- area:'一起看',
- },
- huya:{
- area:'一起看',
- },
- bilibili:{
- area:'影音馆',
- },
- cc:{
- area:'星秀',
- }
+ filter_url: '{{fl.area}}',
+ filter: {
+ "douyu":[{"key":"area","name":"分区","value":[{"n":"原创IP","v":"原创IP"},{"n":"一起看","v":"一起看"},{"n":"二次元","v":"二次元"},{"n":"音乐","v":"音乐"},{"n":"户外","v":"户外"},{"n":"美食","v":"美食"},{"n":"心动派对","v":"心动派对"},{"n":"音遇恋人","v":"音遇恋人"},{"n":"星秀","v":"星秀"},{"n":"心动FM","v":"心动FM"},{"n":"娱乐推荐","v":"娱乐推荐"},{"n":"中国地质大学(武汉)","v":"中国地质大学(武汉)"},{"n":"颜值","v":"颜值"},{"n":"企鹅直播","v":"企鹅直播"},{"n":"数码科技","v":"数码科技"},{"n":"纪录片","v":"纪录片"},{"n":"成年教育","v":"成年教育"},{"n":"人文社科","v":"人文社科"},{"n":"派对","v":"派对"},{"n":"心动FM.","v":"心动FM."},{"n":"一起玩","v":"一起玩"},{"n":"语音交友","v":"语音交友"},{"n":"音乐之声","v":"音乐之声"},{"n":"连麦互动","v":"连麦互动"},{"n":"娱乐开黑","v":"娱乐开黑"},{"n":"正能量","v":"正能量"},{"n":"英雄联盟","v":"英雄联盟"},{"n":"热门游戏","v":"热门游戏"},{"n":"穿越火线","v":"穿越火线"},{"n":"重生边缘","v":"重生边缘"},{"n":"无畏契约","v":"无畏契约"},{"n":"CFHD","v":"CFHD"},{"n":"命运方舟","v":"命运方舟"},{"n":"DNF","v":"DNF"},{"n":"DOTA2","v":"DOTA2"},{"n":"使命召唤","v":"使命召唤"},{"n":"炉石传说","v":"炉石传说"},{"n":"CS2","v":"CS2"},{"n":"lol云顶之弈","v":"lol云顶之弈"},{"n":"魔兽争霸","v":"魔兽争霸"},{"n":"魔兽怀旧服","v":"魔兽怀旧服"},{"n":"自走棋","v":"自走棋"},{"n":"传奇","v":"传奇"},{"n":"跑跑卡丁车","v":"跑跑卡丁车"},{"n":"网易游戏","v":"网易游戏"},{"n":"星际争霸","v":"星际争霸"},{"n":"守望先锋","v":"守望先锋"},{"n":"DOTA","v":"DOTA"},{"n":"魔兽世界","v":"魔兽世界"},{"n":"剑网3","v":"剑网3"},{"n":"我的世界","v":"我的世界"},{"n":"超激斗梦境","v":"超激斗梦境"},{"n":"冒险岛","v":"冒险岛"},{"n":"三国杀","v":"三国杀"},{"n":"梦幻西游","v":"梦幻西游"},{"n":"天涯明月刀","v":"天涯明月刀"},{"n":"街头篮球","v":"街头篮球"},{"n":"NBA2KOL2","v":"NBA2KOL2"},{"n":"QQ飞车端游","v":"QQ飞车端游"},{"n":"军事游戏","v":"军事游戏"},{"n":"棋牌娱乐","v":"棋牌娱乐"},{"n":"FC ONLINE","v":"FC ONLINE"},{"n":"热门网游","v":"热门网游"},{"n":"卡拉彼丘","v":"卡拉彼丘"},{"n":"诛仙世界","v":"诛仙世界"},{"n":"APEX","v":"APEX"},{"n":"流放之路POE","v":"流放之路POE"},{"n":"剑网3缘起","v":"剑网3缘起"},{"n":"逆水寒","v":"逆水寒"},{"n":"风暴英雄","v":"风暴英雄"},{"n":"逆战","v":"逆战"},{"n":"坦克世界","v":"坦克世界"},{"n":"战舰世界","v":"战舰世界"},{"n":"反恐精英Online","v":"反恐精英Online"},{"n":"暗黑破坏神","v":"暗黑破坏神"},{"n":"梦三国2","v":"梦三国2"},{"n":"传奇世界","v":"传奇世界"},{"n":"方舟:生存进化","v":"方舟:生存进化"},{"n":"神武4电脑版","v":"神武4电脑版"},{"n":"群雄逐鹿","v":"群雄逐鹿"},{"n":"堡垒之夜","v":"堡垒之夜"},{"n":"无限法则","v":"无限法则"},{"n":"问道电脑版","v":"问道电脑版"},{"n":"西山居游戏","v":"西山居游戏"},{"n":"最终幻想14","v":"最终幻想14"},{"n":"战意","v":"战意"},{"n":"剑灵","v":"剑灵"},{"n":"星际战甲","v":"星际战甲"},{"n":"龙之谷","v":"龙之谷"},{"n":"铁甲雄兵","v":"铁甲雄兵"},{"n":"古剑奇谭网络版","v":"古剑奇谭网络版"},{"n":"轩辕传奇","v":"轩辕传奇"},{"n":"神途","v":"神途"},{"n":"激战2","v":"激战2"},{"n":"高达文化区","v":"高达文化区"},{"n":"忍者村大战2","v":"忍者村大战2"},{"n":"RPG网游专区","v":"RPG网游专区"},{"n":"诛仙3","v":"诛仙3"},{"n":"笑傲江湖OL","v":"笑傲江湖OL"},{"n":"冒险岛2","v":"冒险岛2"},{"n":"超击突破","v":"超击突破"},{"n":"无尽战区","v":"无尽战区"},{"n":"永恒之塔","v":"永恒之塔"},{"n":"竞速游戏","v":"竞速游戏"},{"n":"FPS综合网游","v":"FPS综合网游"},{"n":"劲舞团","v":"劲舞团"},{"n":"天下","v":"天下"},{"n":"火箭联盟","v":"火箭联盟"},{"n":"泡泡堂","v":"泡泡堂"},{"n":"音乐游戏","v":"音乐游戏"},{"n":"新倩女幽魂","v":"新倩女幽魂"},{"n":"天谕","v":"天谕"},{"n":"QQ炫舞","v":"QQ炫舞"},{"n":"大唐无双","v":"大唐无双"},{"n":"怪物猎人ol","v":"怪物猎人ol"},{"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":"大话西游2","v":"大话西游2"},{"n":"猎人","v":"猎人"},{"n":"热血江湖online","v":"热血江湖online"},{"n":"千年3","v":"千年3"},{"n":"逍遥情缘","v":"逍遥情缘"},{"n":"快乐西游","v":"快乐西游"},{"n":"诺亚传说","v":"诺亚传说"},{"n":"鹿鼎记","v":"鹿鼎记"},{"n":"武魂2电脑版","v":"武魂2电脑版"},{"n":"奇迹世界sun","v":"奇迹世界sun"},{"n":"剑侠世界2电脑版","v":"剑侠世界2电脑版"},{"n":"斩魂","v":"斩魂"},{"n":"大唐2","v":"大唐2"},{"n":"幻想神域电脑版","v":"幻想神域电脑版"},{"n":"蜀山:初章","v":"蜀山:初章"},{"n":"狼人对决网游","v":"狼人对决网游"},{"n":"武林群侠传","v":"武林群侠传"},{"n":"飘流幻境","v":"飘流幻境"},{"n":"破天一剑","v":"破天一剑"},{"n":"四国军棋","v":"四国军棋"},{"n":"新大话西游3","v":"新大话西游3"},{"n":"装甲战争","v":"装甲战争"},{"n":"暴雪游戏综合","v":"暴雪游戏综合"},{"n":"HypeSquad","v":"HypeSquad"},{"n":"长尾4部虚拟分区","v":"长尾4部虚拟分区"},{"n":"燕云十六声","v":"燕云十六声"},{"n":"THE FINALS","v":"THE FINALS"},{"n":"NBA2K Online","v":"NBA2K Online"},{"n":"跑跑卡丁车:漂移","v":"跑跑卡丁车:漂移"},{"n":"传奇永恒","v":"传奇永恒"},{"n":"盛趣传奇","v":"盛趣传奇"},{"n":"火爆热游","v":"火爆热游"},{"n":"主机游戏","v":"主机游戏"},{"n":"刺客信条:英灵殿","v":"刺客信条:英灵殿"},{"n":"马里奥制造","v":"马里奥制造"},{"n":"逃离塔科夫","v":"逃离塔科夫"},{"n":"命运2","v":"命运2"},{"n":"恐怖游戏","v":"恐怖游戏"},{"n":"荒野大镖客","v":"荒野大镖客"},{"n":"灵魂筹码","v":"灵魂筹码"},{"n":"骑马与砍杀","v":"骑马与砍杀"},{"n":"只狼","v":"只狼"},{"n":"格斗游戏","v":"格斗游戏"},{"n":"饥荒","v":"饥荒"},{"n":"全境封锁","v":"全境封锁"},{"n":"怀旧游戏","v":"怀旧游戏"},{"n":"NBA2K","v":"NBA2K"},{"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":"SCUM","v":"SCUM"},{"n":"正当防卫","v":"正当防卫"},{"n":"以撒的结合","v":"以撒的结合"},{"n":"文明","v":"文明"},{"n":"仁王","v":"仁王"},{"n":"缺氧","v":"缺氧"},{"n":"皇牌空战","v":"皇牌空战"},{"n":"体育游戏","v":"体育游戏"},{"n":"海岛大亨","v":"海岛大亨"},{"n":"植物大战僵尸:花园战争系列","v":"植物大战僵尸:花园战争系列"},{"n":"蜘蛛侠","v":"蜘蛛侠"},{"n":"勇者斗恶龙:建造者2","v":"勇者斗恶龙:建造者2"},{"n":"遗迹:灰烬重生","v":"遗迹:灰烬重生"},{"n":"血源","v":"血源"},{"n":"旺达与巨像","v":"旺达与巨像"},{"n":"模拟人生","v":"模拟人生"},{"n":"空洞骑士","v":"空洞骑士"},{"n":"极品飞车","v":"极品飞车"},{"n":"胡闹厨房","v":"胡闹厨房"},{"n":"地铁:离去","v":"地铁:离去"},{"n":"生死狙击2","v":"生死狙击2"},{"n":"三国战纪","v":"三国战纪"},{"n":"怀旧FC","v":"怀旧FC"},{"n":"经典单机","v":"经典单机"},{"n":"英雄无敌","v":"英雄无敌"},{"n":"街机游戏","v":"街机游戏"},{"n":"合金装备","v":"合金装备"},{"n":"红色警戒","v":"红色警戒"},{"n":"镜之边缘","v":"镜之边缘"},{"n":"火焰纹章系列","v":"火焰纹章系列"},{"n":"星露谷物语","v":"星露谷物语"},{"n":"赛博朋克2077","v":"赛博朋克2077"},{"n":"中国式家长","v":"中国式家长"},{"n":"尼尔:机械纪元","v":"尼尔:机械纪元"},{"n":"无人深空","v":"无人深空"},{"n":"EVOTINCTION","v":"EVOTINCTION"},{"n":"GT赛车7","v":"GT赛车7"},{"n":"超级机器人大战","v":"超级机器人大战"},{"n":"信长之野望","v":"信长之野望"},{"n":"这是我的战争","v":"这是我的战争"},{"n":"杀戮尖塔","v":"杀戮尖塔"},{"n":"冰汽时代","v":"冰汽时代"},{"n":"帝国时代","v":"帝国时代"},{"n":"死亡空间","v":"死亡空间"},{"n":"凯瑟琳Full Body","v":"凯瑟琳Full Body"},{"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":"Dayz","v":"Dayz"},{"n":"60秒","v":"60秒"},{"n":"俄罗斯钓鱼","v":"俄罗斯钓鱼"},{"n":"猎人:荒野的召唤","v":"猎人:荒野的召唤"},{"n":"恐怖黎明","v":"恐怖黎明"},{"n":"看门狗","v":"看门狗"},{"n":"真三国无双","v":"真三国无双"},{"n":"泰拉瑞亚","v":"泰拉瑞亚"},{"n":"UFC","v":"UFC"},{"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":"temtem","v":"temtem"},{"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":"Solar Ash","v":"Solar Ash"},{"n":"BUGSNAX","v":"BUGSNAX"},{"n":"生化危机4重制版","v":"生化危机4重制版"},{"n":"Grounded","v":"Grounded"},{"n":"Superliminal","v":"Superliminal"},{"n":"Omno","v":"Omno"},{"n":"Röki","v":"Röki"},{"n":"Undungeon","v":"Undungeon"},{"n":"糖豆人","v":"糖豆人"},{"n":"渡神纪","v":"渡神纪"},{"n":"Aeolis Tournament","v":"Aeolis Tournament"},{"n":"猛兽派对","v":"猛兽派对"},{"n":"Olija","v":"Olija"},{"n":"Creaks","v":"Creaks"},{"n":"暗影火炬城","v":"暗影火炬城"},{"n":"阿尔比恩","v":"阿尔比恩"},{"n":"Uragun","v":"Uragun"},{"n":"鬼谷八荒","v":"鬼谷八荒"},{"n":"Muse Dash","v":"Muse Dash"},{"n":"恐惧之间","v":"恐惧之间"},{"n":"孤岛惊魂6","v":"孤岛惊魂6"},{"n":"怪物猎人","v":"怪物猎人"},{"n":"黑神话:悟空","v":"黑神话:悟空"},{"n":"仁王2","v":"仁王2"},{"n":"三国志14","v":"三国志14"},{"n":"杀手3","v":"杀手3"},{"n":"双人成行","v":"双人成行"},{"n":"Scrapnaut","v":"Scrapnaut"},{"n":"租房达人","v":"租房达人"},{"n":"狙击手:幽灵战士契约2","v":"狙击手:幽灵战士契约2"},{"n":"全面战争","v":"全面战争"},{"n":"复体","v":"复体"},{"n":"战争机器:战术小队","v":"战争机器:战术小队"},{"n":"侠之道","v":"侠之道"},{"n":"海绵宝宝:比奇堡的冒险","v":"海绵宝宝:比奇堡的冒险"},{"n":"奇妙探险队2","v":"奇妙探险队2"},{"n":"刺客信条:奥德赛","v":"刺客信条:奥德赛"},{"n":"星球大战:前线","v":"星球大战:前线"},{"n":"Moonray","v":"Moonray"},{"n":"灵魂旅人","v":"灵魂旅人"},{"n":"面容","v":"面容"},{"n":"破门而入2:北方特遣队","v":"破门而入2:北方特遣队"},{"n":"俄罗斯方块效应:连接","v":"俄罗斯方块效应:连接"},{"n":"SD高达G世纪:起源","v":"SD高达G世纪:起源"},{"n":"东方计划:不可思议的幻想乡","v":"东方计划:不可思议的幻想乡"},{"n":"Fate/EXTELLA","v":"Fate/EXTELLA"},{"n":"临终:重生试炼","v":"临终:重生试炼"},{"n":"虚拟现实乐园","v":"虚拟现实乐园"},{"n":"妖精剑士F","v":"妖精剑士F"},{"n":"苍翼默示录:神观之梦","v":"苍翼默示录:神观之梦"},{"n":"晚班","v":"晚班"},{"n":"子弹风暴","v":"子弹风暴"},{"n":"巡警","v":"巡警"},{"n":"耻辱之日","v":"耻辱之日"},{"n":"狙击精英4","v":"狙击精英4"},{"n":"三国志13:威力加强版","v":"三国志13:威力加强版"},{"n":"热血物语:地下世界","v":"热血物语:地下世界"},{"n":"史诗战争模拟器","v":"史诗战争模拟器"},{"n":"银河护卫队","v":"银河护卫队"},{"n":"闪乱神乐:少女们的选择","v":"闪乱神乐:少女们的选择"},{"n":"幽灵行动:荒野","v":"幽灵行动:荒野"},{"n":"白色情人节","v":"白色情人节"},{"n":"美国职业摔角联盟2K17","v":"美国职业摔角联盟2K17"},{"n":"誓死坚守","v":"誓死坚守"},{"n":"喷射侠","v":"喷射侠"},{"n":"双截龙4","v":"双截龙4"},{"n":"地下蚁国","v":"地下蚁国"},{"n":"九张羊皮纸","v":"九张羊皮纸"},{"n":"咒语力量3","v":"咒语力量3"},{"n":"小兵大战","v":"小兵大战"},{"n":"维京人 人中之狼","v":"维京人 人中之狼"},{"n":"你好邻居","v":"你好邻居"},{"n":"寻找天堂","v":"寻找天堂"},{"n":"画中世界","v":"画中世界"},{"n":"桥梁工程师传送门","v":"桥梁工程师传送门"},{"n":"现代战争","v":"现代战争"},{"n":"SCP:秘密实验室","v":"SCP:秘密实验室"},{"n":"绯红结系","v":"绯红结系"},{"n":"罪恶装备:STRIVE","v":"罪恶装备:STRIVE"},{"n":"骑士精神2","v":"骑士精神2"},{"n":"Rune Knights","v":"Rune Knights"},{"n":"最后的咒语","v":"最后的咒语"},{"n":"红至日2:幸存者","v":"红至日2:幸存者"},{"n":"真女神转生3","v":"真女神转生3"},{"n":"速降王者","v":"速降王者"},{"n":"工业崛起","v":"工业崛起"},{"n":"征服的荣耀:围城","v":"征服的荣耀:围城"},{"n":"前往中世纪","v":"前往中世纪"},{"n":"Arid","v":"Arid"},{"n":"伊始之地","v":"伊始之地"},{"n":"进击的巨人2","v":"进击的巨人2"},{"n":"航海日记2","v":"航海日记2"},{"n":"隐龙传:影踪","v":"隐龙传:影踪"},{"n":"魔域之书","v":"魔域之书"},{"n":"诸神灰烬:救赎","v":"诸神灰烬:救赎"},{"n":"自由人:游击战争","v":"自由人:游击战争"},{"n":"战国无双5","v":"战国无双5"},{"n":"死亡教堂","v":"死亡教堂"},{"n":"灵魂能力6","v":"灵魂能力6"},{"n":"不要喂食猴子","v":"不要喂食猴子"},{"n":"古剑奇谭3","v":"古剑奇谭3"},{"n":"迷城重生","v":"迷城重生"},{"n":"剑士","v":"剑士"},{"n":"GRIS","v":"GRIS"},{"n":"古剑奇谭:永夜","v":"古剑奇谭:永夜"},{"n":"核爆RPG","v":"核爆RPG"},{"n":"Below","v":"Below"},{"n":"嗜血印","v":"嗜血印"},{"n":"伊苏9","v":"伊苏9"},{"n":"兽人必须死3","v":"兽人必须死3"},{"n":"狙击精英VR","v":"狙击精英VR"},{"n":"遗忘之城","v":"遗忘之城"},{"n":"Last Stop","v":"Last Stop"},{"n":"从军","v":"从军"},{"n":"石炉","v":"石炉"},{"n":"狂热运输2","v":"狂热运输2"},{"n":"机甲战士5","v":"机甲战士5"},{"n":"分手装修","v":"分手装修"},{"n":"PICO PARK","v":"PICO PARK"},{"n":"光明记忆:无限","v":"光明记忆:无限"},{"n":"秘馆疑踪","v":"秘馆疑踪"},{"n":"英雄传说:创之轨迹","v":"英雄传说:创之轨迹"},{"n":"战地系列","v":"战地系列"},{"n":"塞尔达传说:天空之剑HD","v":"塞尔达传说:天空之剑HD"},{"n":"国王的恩赐2","v":"国王的恩赐2"},{"n":"脑航员2","v":"脑航员2"},{"n":"九十六号公路","v":"九十六号公路"},{"n":"FORECLOSED","v":"FORECLOSED"},{"n":"RiMS Racing","v":"RiMS Racing"},{"n":"漫威银河护卫队","v":"漫威银河护卫队"},{"n":"剑侠图","v":"剑侠图"},{"n":"审判之逝","v":"审判之逝"},{"n":"艾尔登法环","v":"艾尔登法环"},{"n":"互动派对","v":"互动派对"},{"n":"极限竞速:地平线5","v":"极限竞速:地平线5"},{"n":"使命召唤系列","v":"使命召唤系列"},{"n":"网吧模拟器","v":"网吧模拟器"},{"n":"The Anacrusis","v":"The Anacrusis"},{"n":"文字游戏","v":"文字游戏"},{"n":"消逝的光芒2","v":"消逝的光芒2"},{"n":"战神:诸神黄昏","v":"战神:诸神黄昏"},{"n":"师父","v":"师父"},{"n":"海上狼人杀","v":"海上狼人杀"},{"n":"最终幻想:起源","v":"最终幻想:起源"},{"n":"HordeCore","v":"HordeCore"},{"n":"Indies’ Lies","v":"Indies’ Lies"},{"n":"霍格沃茨之遗","v":"霍格沃茨之遗"},{"n":"太荒初境","v":"太荒初境"},{"n":"Deck of Ashes","v":"Deck of Ashes"},{"n":"星空","v":"星空"},{"n":"隐秘的角落","v":"隐秘的角落"},{"n":"江湖客栈","v":"江湖客栈"},{"n":"Ilysia","v":"Ilysia"},{"n":"Project Q","v":"Project Q"},{"n":"Pummel Party","v":"Pummel Party"},{"n":"Holomento","v":"Holomento"},{"n":"Overprime","v":"Overprime"},{"n":"森林之子","v":"森林之子"},{"n":"弈仙牌","v":"弈仙牌"},{"n":"夜族崛起","v":"夜族崛起"},{"n":"漫威SNAP","v":"漫威SNAP"},{"n":"魔力宝贝","v":"魔力宝贝"},{"n":"木卫四协议","v":"木卫四协议"},{"n":"罗马复兴","v":"罗马复兴"},{"n":"风暴之门","v":"风暴之门"},{"n":"暗邪西部","v":"暗邪西部"},{"n":"堕落之主","v":"堕落之主"},{"n":"High on Life","v":"High on Life"},{"n":"匹诺曹的谎言","v":"匹诺曹的谎言"},{"n":"逃生:试炼","v":"逃生:试炼"},{"n":"战锤40K:暗潮","v":"战锤40K:暗潮"},{"n":"Isonzo","v":"Isonzo"},{"n":"索尼克 未知边境","v":"索尼克 未知边境"},{"n":"漂泊牧歌","v":"漂泊牧歌"},{"n":"塞尔达传说:王国之泪","v":"塞尔达传说:王国之泪"},{"n":"破碎线","v":"破碎线"},{"n":"卧龙:苍天陨落","v":"卧龙:苍天陨落"},{"n":"卡库远古封印","v":"卡库远古封印"},{"n":"原子之心","v":"原子之心"},{"n":"霓虹入侵者","v":"霓虹入侵者"},{"n":"Warhaven","v":"Warhaven"},{"n":"宝可梦:朱/紫","v":"宝可梦:朱/紫"},{"n":"第一后裔","v":"第一后裔"},{"n":"铳墓G.O.R.E.","v":"铳墓G.O.R.E."},{"n":"Kingshunt","v":"Kingshunt"},{"n":"漫威暗夜之子","v":"漫威暗夜之子"},{"n":"奇怪的RPG","v":"奇怪的RPG"},{"n":"Evercore Heroes","v":"Evercore Heroes"},{"n":"东方:平野孤鸿","v":"东方:平野孤鸿"},{"n":"神之天平","v":"神之天平"},{"n":"伊克西翁","v":"伊克西翁"},{"n":"主机一起看","v":"主机一起看"},{"n":"社交互动游戏","v":"社交互动游戏"},{"n":"Divine Knockout","v":"Divine Knockout"},{"n":"巫师系列","v":"巫师系列"},{"n":"至暗时刻","v":"至暗时刻"},{"n":"江湖十一","v":"江湖十一"},{"n":"XDefiant","v":"XDefiant"},{"n":"刺客信条:幻景","v":"刺客信条:幻景"},{"n":"Warlander","v":"Warlander"},{"n":"狂野之心","v":"狂野之心"},{"n":"Scars Above","v":"Scars Above"},{"n":"Pacific Drive","v":"Pacific Drive"},{"n":"收获日3","v":"收获日3"},{"n":"浮生箓2:九九行歌","v":"浮生箓2:九九行歌"},{"n":"The Front","v":"The Front"},{"n":"最终幻想16","v":"最终幻想16"},{"n":"街头霸王","v":"街头霸王"},{"n":"Tchia","v":"Tchia"},{"n":"魔戒:咕噜","v":"魔戒:咕噜"},{"n":"Prison Life 2","v":"Prison Life 2"},{"n":"Innchanted","v":"Innchanted"},{"n":"Life by You","v":"Life by You"},{"n":"Eresys","v":"Eresys"},{"n":"Pax Dei","v":"Pax Dei"},{"n":"Teravit","v":"Teravit"},{"n":"Caliber","v":"Caliber"},{"n":"沙盒与副本:英勇之地","v":"沙盒与副本:英勇之地"},{"n":"Coridden","v":"Coridden"},{"n":"Unrecord","v":"Unrecord"},{"n":"Deducto 2","v":"Deducto 2"},{"n":"装甲核心6:境界天火","v":"装甲核心6:境界天火"},{"n":"Wayfinder","v":"Wayfinder"},{"n":"迷瘴纪事","v":"迷瘴纪事"},{"n":"Minigame Madness","v":"Minigame Madness"},{"n":"Only Up","v":"Only Up"},{"n":"天文世界","v":"天文世界"},{"n":"学园构想家","v":"学园构想家"},{"n":"Jusant","v":"Jusant"},{"n":"潜水员戴夫","v":"潜水员戴夫"},{"n":"GYLT","v":"GYLT"},{"n":"遗迹2","v":"遗迹2"},{"n":"索利斯堡","v":"索利斯堡"},{"n":"Towerborne","v":"Towerborne"},{"n":"33 Immortals","v":"33 Immortals"},{"n":"Wildmender","v":"Wildmender"},{"n":"How 2 Escape","v":"How 2 Escape"},{"n":"漫威蜘蛛侠2","v":"漫威蜘蛛侠2"},{"n":"博德之门3","v":"博德之门3"},{"n":"Eternights","v":"Eternights"},{"n":"Project F","v":"Project F"},{"n":"BaldMan Climbs Up","v":"BaldMan Climbs Up"},{"n":"FC24","v":"FC24"},{"n":"NBA 2K24","v":"NBA 2K24"},{"n":"超级马里奥兄弟:惊奇","v":"超级马里奥兄弟:惊奇"},{"n":"蛮荒志异","v":"蛮荒志异"},{"n":"王者荣耀","v":"王者荣耀"},{"n":"LOL手游","v":"LOL手游"},{"n":"崩坏:星穹铁道","v":"崩坏:星穹铁道"},{"n":"逆水寒手游","v":"逆水寒手游"},{"n":"和平精英","v":"和平精英"},{"n":"暗区突围","v":"暗区突围"},{"n":"蛋仔派对","v":"蛋仔派对"},{"n":"高能英雄","v":"高能英雄"},{"n":"幻塔","v":"幻塔"},{"n":"火影忍者","v":"火影忍者"},{"n":"COD手游","v":"COD手游"},{"n":"lol电竞经理","v":"lol电竞经理"},{"n":"DNF手游","v":"DNF手游"},{"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":"QQ飞车","v":"QQ飞车"},{"n":"第五人格","v":"第五人格"},{"n":"欢乐斗地主","v":"欢乐斗地主"},{"n":"荒野乱斗","v":"荒野乱斗"},{"n":"阴阳师","v":"阴阳师"},{"n":"狼人杀","v":"狼人杀"},{"n":"JJ斗地主","v":"JJ斗地主"},{"n":"梦幻新诛仙","v":"梦幻新诛仙"},{"n":"多多自走棋","v":"多多自走棋"},{"n":"崩坏3","v":"崩坏3"},{"n":"风云岛行动","v":"风云岛行动"},{"n":"云游戏","v":"云游戏"},{"n":"跑跑手游","v":"跑跑手游"},{"n":"率土之滨","v":"率土之滨"},{"n":"灌篮高手","v":"灌篮高手"},{"n":"皇室战争","v":"皇室战争"},{"n":"忍者必须死3","v":"忍者必须死3"},{"n":"神武4手游","v":"神武4手游"},{"n":"梦幻模拟战","v":"梦幻模拟战"},{"n":"实况足球","v":"实况足球"},{"n":"航海王:燃烧意志","v":"航海王:燃烧意志"},{"n":"球球大作战","v":"球球大作战"},{"n":"英雄杀","v":"英雄杀"},{"n":"魔域口袋版","v":"魔域口袋版"},{"n":"口袋新旅程","v":"口袋新旅程"},{"n":"剑网3:指尖江湖","v":"剑网3:指尖江湖"},{"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":"FC足球世界","v":"FC足球世界"},{"n":"街篮","v":"街篮"},{"n":"明日方舟","v":"明日方舟"},{"n":"一梦江湖","v":"一梦江湖"},{"n":"完美世界手游","v":"完美世界手游"},{"n":"拳皇98OL","v":"拳皇98OL"},{"n":"赛尔号","v":"赛尔号"},{"n":"仙境传说","v":"仙境传说"},{"n":"流星群侠传","v":"流星群侠传"},{"n":"逃跑吧少年","v":"逃跑吧少年"},{"n":"石器时代","v":"石器时代"},{"n":"RPG手游","v":"RPG手游"},{"n":"英魂之刃口袋版","v":"英魂之刃口袋版"},{"n":"倩女幽魂手游","v":"倩女幽魂手游"},{"n":"决斗之城2","v":"决斗之城2"},{"n":"传奇手游","v":"传奇手游"},{"n":"雀魂","v":"雀魂"},{"n":"二次元手游","v":"二次元手游"},{"n":"征途2手游","v":"征途2手游"},{"n":"万王之王3D","v":"万王之王3D"},{"n":"武林外传","v":"武林外传"},{"n":"潮人篮球","v":"潮人篮球"},{"n":"元气骑士","v":"元气骑士"},{"n":"红警OL手游","v":"红警OL手游"},{"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":"辐射:避难所Online","v":"辐射:避难所Online"},{"n":"街篮2","v":"街篮2"},{"n":"极光计划","v":"极光计划"},{"n":"不良人3","v":"不良人3"},{"n":"镇魔曲手游","v":"镇魔曲手游"},{"n":"乱世王者","v":"乱世王者"},{"n":"篮球手游","v":"篮球手游"},{"n":"鬼泣-巅峰之战","v":"鬼泣-巅峰之战"},{"n":"射击类手游","v":"射击类手游"},{"n":"命运歌姬","v":"命运歌姬"},{"n":"暗黑不朽","v":"暗黑不朽"},{"n":"新神魔大陆","v":"新神魔大陆"},{"n":"三国志战略版","v":"三国志战略版"},{"n":"天地劫:幽城再临","v":"天地劫:幽城再临"},{"n":"Disorder","v":"Disorder"},{"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":"钢铁力量2","v":"钢铁力量2"},{"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":"斗罗大陆2绝世唐门","v":"斗罗大陆2绝世唐门"},{"n":"战神觉醒","v":"战神觉醒"},{"n":"九州仙剑传H5","v":"九州仙剑传H5"},{"n":"荣耀大天使","v":"荣耀大天使"},{"n":"蓝月传奇","v":"蓝月传奇"},{"n":"凡人修仙传挂机版H5","v":"凡人修仙传挂机版H5"},{"n":"攻城掠地","v":"攻城掠地"},{"n":"盗墓笔记","v":"盗墓笔记"},{"n":"拳魂觉醒","v":"拳魂觉醒"},{"n":"大天使之剑","v":"大天使之剑"},{"n":"绝世仙王","v":"绝世仙王"},{"n":"一刀传世","v":"一刀传世"},{"n":"斗罗大陆","v":"斗罗大陆"},{"n":"破雪刃","v":"破雪刃"},{"n":"JJ象棋","v":"JJ象棋"},{"n":"天姬变","v":"天姬变"},{"n":"剑玲珑","v":"剑玲珑"},{"n":"火线精英","v":"火线精英"},{"n":"造梦西游OL","v":"造梦西游OL"},{"n":"奥奇传说手游","v":"奥奇传说手游"},{"n":"战斗吧龙魂","v":"战斗吧龙魂"},{"n":"剑开仙门","v":"剑开仙门"},{"n":"狼人对决","v":"狼人对决"},{"n":"最终幻想:勇气启示录 幻影战争","v":"最终幻想:勇气启示录 幻影战争"},{"n":"葫芦娃兄弟","v":"葫芦娃兄弟"},{"n":"造梦西游4","v":"造梦西游4"},{"n":"比特小队","v":"比特小队"},{"n":"流言侦探","v":"流言侦探"},{"n":"战舰联盟","v":"战舰联盟"},{"n":"另一个伊甸:超越时空的猫","v":"另一个伊甸:超越时空的猫"},{"n":"少女前线","v":"少女前线"},{"n":"遇见","v":"遇见"},{"n":"霓虹深渊:无限","v":"霓虹深渊:无限"},{"n":"胡莱三国3","v":"胡莱三国3"},{"n":"奥拉星","v":"奥拉星"},{"n":"先游云游戏","v":"先游云游戏"},{"n":"万象物语手游","v":"万象物语手游"},{"n":"绿茵信仰","v":"绿茵信仰"},{"n":"烟雨江湖","v":"烟雨江湖"},{"n":"球球联盟","v":"球球联盟"},{"n":"文明与征服","v":"文明与征服"},{"n":"碧蓝航线手游","v":"碧蓝航线手游"},{"n":"300大作战","v":"300大作战"},{"n":"2047","v":"2047"},{"n":"第七史诗","v":"第七史诗"},{"n":"汉末霸业","v":"汉末霸业"},{"n":"EVE星战前夜:无烬星河","v":"EVE星战前夜:无烬星河"},{"n":"少女前线2:追放","v":"少女前线2:追放"},{"n":"弹力果冻","v":"弹力果冻"},{"n":"火力苏打(T3)","v":"火力苏打(T3)"},{"n":"植物大战僵尸2","v":"植物大战僵尸2"},{"n":"球球英雄","v":"球球英雄"},{"n":"悠长假期","v":"悠长假期"},{"n":"无悔华夏","v":"无悔华夏"},{"n":"猫之城","v":"猫之城"},{"n":"未定事件簿","v":"未定事件簿"},{"n":"白夜极光","v":"白夜极光"},{"n":"ProjectGAIA","v":"ProjectGAIA"},{"n":"斗罗大陆:魂师对决","v":"斗罗大陆:魂师对决"},{"n":"古墓丽影传说:迷踪","v":"古墓丽影传说:迷踪"},{"n":"漫威对决","v":"漫威对决"},{"n":"放置与召唤","v":"放置与召唤"},{"n":"我是航海家","v":"我是航海家"},{"n":"军团战棋英雄时代","v":"军团战棋英雄时代"},{"n":"繁荣美食市场物语","v":"繁荣美食市场物语"},{"n":"老农种树","v":"老农种树"},{"n":"三国演义:吞噬无界","v":"三国演义:吞噬无界"},{"n":"偶像梦幻祭2","v":"偶像梦幻祭2"},{"n":"卡卡保皇","v":"卡卡保皇"},{"n":"灵猫传","v":"灵猫传"},{"n":"剑侠世界3","v":"剑侠世界3"},{"n":"召唤与合成2","v":"召唤与合成2"},{"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":"三国战纪2手游","v":"三国战纪2手游"},{"n":"幸存者危城","v":"幸存者危城"},{"n":"冒险公社手游","v":"冒险公社手游"},{"n":"欧陆战争5:帝国","v":"欧陆战争5:帝国"},{"n":"纪念碑谷2","v":"纪念碑谷2"},{"n":"大航海探险物语","v":"大航海探险物语"},{"n":"航海日记","v":"航海日记"},{"n":"一拳超人:最强之男","v":"一拳超人:最强之男"},{"n":"王国保卫战4","v":"王国保卫战4"},{"n":"半世界之旅","v":"半世界之旅"},{"n":"奥特曼宇宙英雄","v":"奥特曼宇宙英雄"},{"n":"新三国杀","v":"新三国杀"},{"n":"奶块","v":"奶块"},{"n":"策魂三国","v":"策魂三国"},{"n":"奥特曼系列OL","v":"奥特曼系列OL"},{"n":"欢喜斗地主","v":"欢喜斗地主"},{"n":"洪荒文明","v":"洪荒文明"},{"n":"街头足球","v":"街头足球"},{"n":"同人圣三国蜀汉传","v":"同人圣三国蜀汉传"},{"n":"塔防之光","v":"塔防之光"},{"n":"我做夫人那些年","v":"我做夫人那些年"},{"n":"小小五千年","v":"小小五千年"},{"n":"乖离性百万亚瑟王:环","v":"乖离性百万亚瑟王:环"},{"n":"时空猎人","v":"时空猎人"},{"n":"星际逆战","v":"星际逆战"},{"n":"羽毛球高高手","v":"羽毛球高高手"},{"n":"LoveLive! 学园偶像祭","v":"LoveLive! 学园偶像祭"},{"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":"CF手游","v":"CF手游"},{"n":"新天龙八部手游","v":"新天龙八部手游"},{"n":"尘白禁区","v":"尘白禁区"},{"n":"原始征途","v":"原始征途"},{"n":"全民大灌篮","v":"全民大灌篮"},{"n":"枪火重生手游","v":"枪火重生手游"},{"n":"火影三国志","v":"火影三国志"},{"n":"网易其它组","v":"网易其它组"},{"n":"三国战纪手游","v":"三国战纪手游"},{"n":"染·钟楼谜团","v":"染·钟楼谜团"},{"n":"绝区零","v":"绝区零"},{"n":"重返CODM","v":"重返CODM"},{"n":"综合手游","v":"综合手游"},{"n":"IP游戏","v":"IP游戏"},{"n":"鸣潮","v":"鸣潮"},{"n":"棋牌游戏","v":"棋牌游戏"},{"n":"奥比岛:梦想国度","v":"奥比岛:梦想国度"},{"n":"晶核","v":"晶核"},{"n":"星之破晓","v":"星之破晓"},{"n":"赛尔计划","v":"赛尔计划"},{"n":"SLG综合","v":"SLG综合"},{"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":"二次元游戏"}]}],
+ "huya":[{"key":"area","name":"分区","value":[{"n":"一起看","v":"一起看"},{"n":"放映厅","v":"放映厅"},{"n":"星秀","v":"星秀"},{"n":"户外","v":"户外"},{"n":"二次元","v":"二次元"},{"n":"虚拟偶像","v":"虚拟偶像"},{"n":"旅游","v":"旅游"},{"n":"娱乐天地","v":"娱乐天地"},{"n":"交友","v":"交友"},{"n":"组队","v":"组队"},{"n":"吃喝玩乐","v":"吃喝玩乐"},{"n":"原创","v":"原创"},{"n":"虎牙文化","v":"虎牙文化"},{"n":"体育","v":"体育"},{"n":"虎牙地方","v":"虎牙地方"},{"n":"颜值","v":"颜值"},{"n":"科技","v":"科技"},{"n":"音乐","v":"音乐"},{"n":"趣分享","v":"趣分享"},{"n":"一起买","v":"一起买"},{"n":"派对","v":"派对"},{"n":"英雄联盟","v":"英雄联盟"},{"n":"CS2","v":"CS2"},{"n":"穿越火线","v":"穿越火线"},{"n":"lol云顶之弈","v":"lol云顶之弈"},{"n":"无畏契约","v":"无畏契约"},{"n":"CFHD","v":"CFHD"},{"n":"逆战","v":"逆战"},{"n":"炉石传说","v":"炉石传说"},{"n":"DOTA2","v":"DOTA2"},{"n":"地下城与勇士","v":"地下城与勇士"},{"n":"魔兽世界","v":"魔兽世界"},{"n":"坦克世界","v":"坦克世界"},{"n":"DOTA1","v":"DOTA1"},{"n":"梦三国","v":"梦三国"},{"n":"魔兽争霸3","v":"魔兽争霸3"},{"n":"问道","v":"问道"},{"n":"命运方舟","v":"命运方舟"},{"n":"QQ飞车","v":"QQ飞车"},{"n":"星际争霸","v":"星际争霸"},{"n":"网游竞技","v":"网游竞技"},{"n":"射击综合游戏","v":"射击综合游戏"},{"n":"暴雪专区","v":"暴雪专区"},{"n":"彩虹岛Online","v":"彩虹岛Online"},{"n":"剑灵","v":"剑灵"},{"n":"军事游戏","v":"军事游戏"},{"n":"冒险岛","v":"冒险岛"},{"n":"暗黑破坏神","v":"暗黑破坏神"},{"n":"诛仙3","v":"诛仙3"},{"n":"热血江湖","v":"热血江湖"},{"n":"英魂之刃","v":"英魂之刃"},{"n":"武林外传一世琴缘","v":"武林外传一世琴缘"},{"n":"起凡:群雄逐鹿","v":"起凡:群雄逐鹿"},{"n":"神武4电脑版","v":"神武4电脑版"},{"n":"龙之谷","v":"龙之谷"},{"n":"炉石战棋","v":"炉石战棋"},{"n":"御龙在天","v":"御龙在天"},{"n":"逆水寒","v":"逆水寒"},{"n":"千年3","v":"千年3"},{"n":"永恒之塔","v":"永恒之塔"},{"n":"体育游戏","v":"体育游戏"},{"n":"寻仙","v":"寻仙"},{"n":"战舰世界","v":"战舰世界"},{"n":"QQ三国","v":"QQ三国"},{"n":"流放之路","v":"流放之路"},{"n":"反恐精英Online","v":"反恐精英Online"},{"n":"反恐行动online","v":"反恐行动online"},{"n":"征途","v":"征途"},{"n":"战争雷霆","v":"战争雷霆"},{"n":"丝路传说2","v":"丝路传说2"},{"n":"星际战甲","v":"星际战甲"},{"n":"NBA2KOL系列","v":"NBA2KOL系列"},{"n":"九阴真经","v":"九阴真经"},{"n":"跑跑卡丁车","v":"跑跑卡丁车"},{"n":"诛仙世界","v":"诛仙世界"},{"n":"QQ华夏","v":"QQ华夏"},{"n":"天涯明月刀","v":"天涯明月刀"},{"n":"大话西游:归来","v":"大话西游:归来"},{"n":"荒野行动PC版","v":"荒野行动PC版"},{"n":"新剑侠情缘","v":"新剑侠情缘"},{"n":"剑网3","v":"剑网3"},{"n":"生死狙击2","v":"生死狙击2"},{"n":"全球使命","v":"全球使命"},{"n":"梦想世界3","v":"梦想世界3"},{"n":"枪神纪","v":"枪神纪"},{"n":"新天龙八部","v":"新天龙八部"},{"n":"铁甲雄兵","v":"铁甲雄兵"},{"n":"神泣","v":"神泣"},{"n":"斗战神","v":"斗战神"},{"n":"造梦西游OL","v":"造梦西游OL"},{"n":"天堂","v":"天堂"},{"n":"大话西游2","v":"大话西游2"},{"n":"使命召唤:战区","v":"使命召唤:战区"},{"n":"希望OL","v":"希望OL"},{"n":"极光世界 弑神传","v":"极光世界 弑神传"},{"n":"守望先锋归来","v":"守望先锋归来"},{"n":"QQ自由幻想","v":"QQ自由幻想"},{"n":"命运2","v":"命运2"},{"n":"奇迹世界2","v":"奇迹世界2"},{"n":"坦克大战","v":"坦克大战"},{"n":"生死狙击","v":"生死狙击"},{"n":"天翼决","v":"天翼决"},{"n":"QQ幻想","v":"QQ幻想"},{"n":"新飞飞(FlyFF)","v":"新飞飞(FlyFF)"},{"n":"刀剑英雄","v":"刀剑英雄"},{"n":"FIFA Online系列","v":"FIFA Online系列"},{"n":"全球使命3","v":"全球使命3"},{"n":"完美端游系列","v":"完美端游系列"},{"n":"战意","v":"战意"},{"n":"泡泡堂","v":"泡泡堂"},{"n":"赛尔号","v":"赛尔号"},{"n":"大唐无双零","v":"大唐无双零"},{"n":"QQ炫舞","v":"QQ炫舞"},{"n":"007:传奇","v":"007:传奇"},{"n":"天下","v":"天下"},{"n":"天谕","v":"天谕"},{"n":"新倩女幽魂","v":"新倩女幽魂"},{"n":"传世无双","v":"传世无双"},{"n":"剑侠世界","v":"剑侠世界"},{"n":"Warhaven","v":"Warhaven"},{"n":"诺亚传说","v":"诺亚传说"},{"n":"新挑战","v":"新挑战"},{"n":"超激斗梦境","v":"超激斗梦境"},{"n":"QQ音速","v":"QQ音速"},{"n":"征途2","v":"征途2"},{"n":"征程","v":"征程"},{"n":"蜀门","v":"蜀门"},{"n":"完美世界:诸神之战","v":"完美世界:诸神之战"},{"n":"战之刃:幸存者","v":"战之刃:幸存者"},{"n":"黎明之光","v":"黎明之光"},{"n":"天命西游","v":"天命西游"},{"n":"炫舞时代","v":"炫舞时代"},{"n":"荣誉空间","v":"荣誉空间"},{"n":"卡拉彼丘","v":"卡拉彼丘"},{"n":"成吉思汗怀旧版","v":"成吉思汗怀旧版"},{"n":"英雄年代3","v":"英雄年代3"},{"n":"天书奇谈","v":"天书奇谈"},{"n":"劲舞团","v":"劲舞团"},{"n":"远征Online梦想版","v":"远征Online梦想版"},{"n":"奇迹:传奇","v":"奇迹:传奇"},{"n":"封印者","v":"封印者"},{"n":"上古世纪","v":"上古世纪"},{"n":"梦幻诛仙2","v":"梦幻诛仙2"},{"n":"TERA Online","v":"TERA Online"},{"n":"倚天Ⅱ","v":"倚天Ⅱ"},{"n":"街头篮球","v":"街头篮球"},{"n":"永恒轮回:无限","v":"永恒轮回:无限"},{"n":"火线精英","v":"火线精英"},{"n":"忍者村大战2","v":"忍者村大战2"},{"n":"领地人生","v":"领地人生"},{"n":"仙侠世界","v":"仙侠世界"},{"n":"洛奇英雄传","v":"洛奇英雄传"},{"n":"KARDS","v":"KARDS"},{"n":"无限法则","v":"无限法则"},{"n":"全面战争:竞技场","v":"全面战争:竞技场"},{"n":"自由篮球","v":"自由篮球"},{"n":"FC Online4","v":"FC Online4"},{"n":"战地之王","v":"战地之王"},{"n":"古剑奇谭OL","v":"古剑奇谭OL"},{"n":"QQ仙侠传","v":"QQ仙侠传"},{"n":"300英雄","v":"300英雄"},{"n":"天天吃鸡","v":"天天吃鸡"},{"n":"永劫无间","v":"永劫无间"},{"n":"主机游戏","v":"主机游戏"},{"n":"猛兽派对","v":"猛兽派对"},{"n":"互动点播","v":"互动点播"},{"n":"我的世界","v":"我的世界"},{"n":"方舟","v":"方舟"},{"n":"单机热游","v":"单机热游"},{"n":"怀旧游戏","v":"怀旧游戏"},{"n":"逃离塔科夫","v":"逃离塔科夫"},{"n":"俄罗斯钓鱼4","v":"俄罗斯钓鱼4"},{"n":"部落:上升","v":"部落:上升"},{"n":"Dark and Darker","v":"Dark and Darker"},{"n":"The Front","v":"The Front"},{"n":"Apex英雄","v":"Apex英雄"},{"n":"生化危机4重制版","v":"生化危机4重制版"},{"n":"DayZ独立版","v":"DayZ独立版"},{"n":"星空","v":"星空"},{"n":"互动剧游","v":"互动剧游"},{"n":"艾尔登法环","v":"艾尔登法环"},{"n":"恐惧之间","v":"恐惧之间"},{"n":"SCUM","v":"SCUM"},{"n":"Dread Hunger","v":"Dread Hunger"},{"n":"塞尔达传说:王国之泪","v":"塞尔达传说:王国之泪"},{"n":"欧洲卡车模拟","v":"欧洲卡车模拟"},{"n":"洛克王国","v":"洛克王国"},{"n":"卧龙:苍天陨落","v":"卧龙:苍天陨落"},{"n":"无人深空","v":"无人深空"},{"n":"帝国神话","v":"帝国神话"},{"n":"饥荒","v":"饥荒"},{"n":"森林之子","v":"森林之子"},{"n":"星球大战系列","v":"星球大战系列"},{"n":"极限竞速:地平线","v":"极限竞速:地平线"},{"n":"最终幻想16","v":"最终幻想16"},{"n":"Among Us","v":"Among Us"},{"n":"怪物猎人:崛起","v":"怪物猎人:崛起"},{"n":"怪物猎人物语","v":"怪物猎人物语"},{"n":"骑马与砍杀系列","v":"骑马与砍杀系列"},{"n":"荒野大镖客2","v":"荒野大镖客2"},{"n":"太荒初境","v":"太荒初境"},{"n":"罗布乐思","v":"罗布乐思"},{"n":"只狼:影逝二度","v":"只狼:影逝二度"},{"n":"双人成行","v":"双人成行"},{"n":"重生边缘","v":"重生边缘"},{"n":"海贼王 寻秘世界","v":"海贼王 寻秘世界"},{"n":"战神:诸神黄昏","v":"战神:诸神黄昏"},{"n":"恐鬼症","v":"恐鬼症"},{"n":"鬼谷八荒","v":"鬼谷八荒"},{"n":"霍格沃茨之遗","v":"霍格沃茨之遗"},{"n":"全面战争","v":"全面战争"},{"n":"仁王2","v":"仁王2"},{"n":"奥拉星","v":"奥拉星"},{"n":"甜蜜之家","v":"甜蜜之家"},{"n":"仙剑奇侠传七","v":"仙剑奇侠传七"},{"n":"消逝的光芒2","v":"消逝的光芒2"},{"n":"渡神记","v":"渡神记"},{"n":"归家异途","v":"归家异途"},{"n":"博德之门3","v":"博德之门3"},{"n":"看门狗:军团","v":"看门狗:军团"},{"n":"使命召唤系列","v":"使命召唤系列"},{"n":"育碧游戏","v":"育碧游戏"},{"n":"帝国时代4","v":"帝国时代4"},{"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":"龙与地下城:秘影历代记HD","v":"龙与地下城:秘影历代记HD"},{"n":"龙与地下城:匕首谷","v":"龙与地下城:匕首谷"},{"n":"沙石镇时光","v":"沙石镇时光"},{"n":"三国志曹操传","v":"三国志曹操传"},{"n":"FIFA足球","v":"FIFA足球"},{"n":"最终幻想7:重制版","v":"最终幻想7:重制版"},{"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":"精灵宝可梦Let's Go","v":"精灵宝可梦Let's Go"},{"n":"战锤40K:暗潮","v":"战锤40K:暗潮"},{"n":"石油骚动","v":"石油骚动"},{"n":"紫塞秋风","v":"紫塞秋风"},{"n":"阿尔比恩","v":"阿尔比恩"},{"n":"猎人:荒野的召唤","v":"猎人:荒野的召唤"},{"n":"FIFA 23","v":"FIFA 23"},{"n":"都市:天际线","v":"都市:天际线"},{"n":"乐高大电影:游戏版","v":"乐高大电影:游戏版"},{"n":"全面战争:阿提拉","v":"全面战争:阿提拉"},{"n":"斩妖行","v":"斩妖行"},{"n":"马里奥赛车8","v":"马里奥赛车8"},{"n":"复仇者联盟","v":"复仇者联盟"},{"n":"霓虹深渊","v":"霓虹深渊"},{"n":"王者荣耀","v":"王者荣耀"},{"n":"和平精英","v":"和平精英"},{"n":"英雄联盟手游","v":"英雄联盟手游"},{"n":"CF手游","v":"CF手游"},{"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":"QQ飞车手游","v":"QQ飞车手游"},{"n":"球球大作战","v":"球球大作战"},{"n":"明日之后","v":"明日之后"},{"n":"皇室战争","v":"皇室战争"},{"n":"COD手游","v":"COD手游"},{"n":"手游休闲","v":"手游休闲"},{"n":"二次元手游","v":"二次元手游"},{"n":"摸了个鱼","v":"摸了个鱼"},{"n":"MMORPG","v":"MMORPG"},{"n":"动作游戏","v":"动作游戏"},{"n":"战争冲突","v":"战争冲突"},{"n":"王者模拟战","v":"王者模拟战"},{"n":"逆水寒手游","v":"逆水寒手游"},{"n":"幻塔","v":"幻塔"},{"n":"欢乐斗地主","v":"欢乐斗地主"},{"n":"神武4手游","v":"神武4手游"},{"n":"阴阳师","v":"阴阳师"},{"n":"DNF手游","v":"DNF手游"},{"n":"欢乐麻将","v":"欢乐麻将"},{"n":"英雄联盟电竞经理","v":"英雄联盟电竞经理"},{"n":"狼人杀手游","v":"狼人杀手游"},{"n":"新天龙八部手游","v":"新天龙八部手游"},{"n":"中国象棋","v":"中国象棋"},{"n":"天天象棋","v":"天天象棋"},{"n":"传奇世界3D","v":"传奇世界3D"},{"n":"御龙在天手游","v":"御龙在天手游"},{"n":"高能英雄","v":"高能英雄"},{"n":"天龙八部手游","v":"天龙八部手游"},{"n":"三国志战略版","v":"三国志战略版"},{"n":"忍者必须死3","v":"忍者必须死3"},{"n":"SKY光遇","v":"SKY光遇"},{"n":"虎牙领主争霸","v":"虎牙领主争霸"},{"n":"云上城之歌","v":"云上城之歌"},{"n":"晶核","v":"晶核"},{"n":"仙境传说RO","v":"仙境传说RO"},{"n":"天天狼人","v":"天天狼人"},{"n":"JJ棋牌","v":"JJ棋牌"},{"n":"奇迹MU:觉醒","v":"奇迹MU:觉醒"},{"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":"三国战纪2","v":"三国战纪2"},{"n":"梦幻新诛仙","v":"梦幻新诛仙"},{"n":"黎明觉醒:生机","v":"黎明觉醒:生机"},{"n":"远征","v":"远征"},{"n":"航海王:燃烧意志","v":"航海王:燃烧意志"},{"n":"火炬之光:无限","v":"火炬之光:无限"},{"n":"巅峰极速","v":"巅峰极速"},{"n":"圣境之塔","v":"圣境之塔"},{"n":"魔力宝贝","v":"魔力宝贝"},{"n":"香肠派对","v":"香肠派对"},{"n":"创造与魔法","v":"创造与魔法"},{"n":"JJ斗地主","v":"JJ斗地主"},{"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":"征途2手游","v":"征途2手游"},{"n":"英魂之刃口袋版","v":"英魂之刃口袋版"},{"n":"精灵盛典:黎明","v":"精灵盛典:黎明"},{"n":"方舟手游","v":"方舟手游"},{"n":"掼蛋","v":"掼蛋"},{"n":"绝世仙王","v":"绝世仙王"},{"n":"流星群侠传","v":"流星群侠传"},{"n":"寻仙手游","v":"寻仙手游"},{"n":"一梦江湖","v":"一梦江湖"},{"n":"Lost Light(萤火突击国际服)","v":"Lost Light(萤火突击国际服)"},{"n":"弹幕云游戏","v":"弹幕云游戏"},{"n":"猎魂觉醒","v":"猎魂觉醒"},{"n":"冒险岛:枫之传说","v":"冒险岛:枫之传说"},{"n":"征途手游","v":"征途手游"},{"n":"海岛奇兵","v":"海岛奇兵"},{"n":"倩女幽魂手游","v":"倩女幽魂手游"},{"n":"超凡先锋","v":"超凡先锋"},{"n":"龙之谷2手游","v":"龙之谷2手游"},{"n":"崩坏3","v":"崩坏3"},{"n":"猫和老鼠","v":"猫和老鼠"},{"n":"七人传奇:光与暗之交战","v":"七人传奇:光与暗之交战"},{"n":"JJ麻将","v":"JJ麻将"},{"n":"拉轰西游","v":"拉轰西游"},{"n":"三国战纪","v":"三国战纪"},{"n":"自由幻想手游","v":"自由幻想手游"},{"n":"秦时明月世界","v":"秦时明月世界"},{"n":"新斗罗大陆","v":"新斗罗大陆"},{"n":"新神魔大陆","v":"新神魔大陆"},{"n":"逃跑吧!少年","v":"逃跑吧!少年"},{"n":"太古神王2","v":"太古神王2"},{"n":"剑侠世界3","v":"剑侠世界3"},{"n":"天天吃鸡手机版","v":"天天吃鸡手机版"},{"n":"时空猎人3","v":"时空猎人3"},{"n":"合金弹头:觉醒","v":"合金弹头:觉醒"},{"n":"明日方舟","v":"明日方舟"},{"n":"原始征途","v":"原始征途"},{"n":"奇迹:最强者","v":"奇迹:最强者"},{"n":"天天酷跑","v":"天天酷跑"},{"n":"FC 足球世界","v":"FC 足球世界"},{"n":"万国觉醒","v":"万国觉醒"},{"n":"机动都市阿尔法","v":"机动都市阿尔法"},{"n":"航海王热血航线","v":"航海王热血航线"},{"n":"幻世九歌","v":"幻世九歌"},{"n":"植物大战僵尸","v":"植物大战僵尸"},{"n":"无悔华夏","v":"无悔华夏"},{"n":"时空猎人","v":"时空猎人"},{"n":"荒野乱斗","v":"荒野乱斗"},{"n":"拳皇98终极之战OL","v":"拳皇98终极之战OL"},{"n":"蛇蛇争霸","v":"蛇蛇争霸"},{"n":"王牌竞速","v":"王牌竞速"},{"n":"重返帝国","v":"重返帝国"},{"n":"吞噬星空:黎明","v":"吞噬星空:黎明"},{"n":"口袋妖怪","v":"口袋妖怪"},{"n":"QQ炫舞手游","v":"QQ炫舞手游"},{"n":"一拳超人:最强之男","v":"一拳超人:最强之男"},{"n":"荣耀新三国","v":"荣耀新三国"},{"n":"少年三国志2","v":"少年三国志2"},{"n":"我的起源","v":"我的起源"},{"n":"决战平安京","v":"决战平安京"},{"n":"剑灵2","v":"剑灵2"},{"n":"开心消消乐","v":"开心消消乐"},{"n":"小小蚁国","v":"小小蚁国"},{"n":"最强NBA","v":"最强NBA"},{"n":"剑侠情缘手游","v":"剑侠情缘手游"},{"n":"长安幻想","v":"长安幻想"},{"n":"我叫MT4","v":"我叫MT4"},{"n":"全明星街球派对","v":"全明星街球派对"},{"n":"大话西游手游","v":"大话西游手游"},{"n":"荣耀大天使","v":"荣耀大天使"},{"n":"镇魂街:天生为王","v":"镇魂街:天生为王"},{"n":"摩尔庄园","v":"摩尔庄园"},{"n":"游戏王:决斗链接","v":"游戏王:决斗链接"},{"n":"剑侠世界2手游","v":"剑侠世界2手游"},{"n":"青云诀2","v":"青云诀2"},{"n":"战地无疆","v":"战地无疆"},{"n":"一念逍遥","v":"一念逍遥"},{"n":"永劫无间手游","v":"永劫无间手游"},{"n":"尘白禁区","v":"尘白禁区"},{"n":"元梦之星","v":"元梦之星"},{"n":"不良人3","v":"不良人3"},{"n":"剑灵:革命","v":"剑灵:革命"},{"n":"魔力宝贝:旅人","v":"魔力宝贝:旅人"},{"n":"米加小镇","v":"米加小镇"},{"n":"龙武手游","v":"龙武手游"},{"n":"斗罗大陆2:绝世唐门","v":"斗罗大陆2:绝世唐门"},{"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":"太极熊猫3:猎龙","v":"太极熊猫3:猎龙"},{"n":"哈利波特:魔法觉醒","v":"哈利波特:魔法觉醒"},{"n":"天地劫:幽城再临","v":"天地劫:幽城再临"},{"n":"热血街篮","v":"热血街篮"},{"n":"神雕侠侣手游","v":"神雕侠侣手游"},{"n":"山海镜花","v":"山海镜花"},{"n":"三国志战棋版","v":"三国志战棋版"},{"n":"神雕侠侣2","v":"神雕侠侣2"},{"n":"仙魔决","v":"仙魔决"},{"n":"王者荣耀星之破晓","v":"王者荣耀星之破晓"},{"n":"我在江湖之神魔道","v":"我在江湖之神魔道"},{"n":"梦幻模拟战","v":"梦幻模拟战"},{"n":"单机手游","v":"单机手游"},{"n":"斗罗大陆-斗神再临","v":"斗罗大陆-斗神再临"},{"n":"未来之役","v":"未来之役"},{"n":"风云岛行动","v":"风云岛行动"},{"n":"新游推荐","v":"新游推荐"},{"n":"火影忍者OL","v":"火影忍者OL"},{"n":"九灵神域","v":"九灵神域"},{"n":"武动乾坤","v":"武动乾坤"},{"n":"秦时明月2","v":"秦时明月2"},{"n":"文明与征服","v":"文明与征服"},{"n":"战双:帕弥什","v":"战双:帕弥什"},{"n":"大航海时代:海上霸主","v":"大航海时代:海上霸主"},{"n":"剑网1:归来","v":"剑网1:归来"},{"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":"极无双2","v":"极无双2"},{"n":"光明大陆","v":"光明大陆"},{"n":"荒野行动","v":"荒野行动"},{"n":"战斗法则","v":"战斗法则"},{"n":"疯狂原始人","v":"疯狂原始人"},{"n":"逆战手游","v":"逆战手游"},{"n":"石器时代:觉醒","v":"石器时代:觉醒"}]}],
+ "bilibili":[{"key":"area","name":"分区","value":[{"n":"生活分享","v":"生活分享"},{"n":"聊天交友","v":"聊天交友"},{"n":"手工绘画","v":"手工绘画"},{"n":"情感","v":"情感"},{"n":"户外","v":"户外"},{"n":"萌宠","v":"萌宠"},{"n":"运动","v":"运动"},{"n":"美食","v":"美食"},{"n":"时尚","v":"时尚"},{"n":"电子榨菜","v":"电子榨菜"},{"n":"沉浸体验","v":"沉浸体验"},{"n":"聊天室","v":"聊天室"},{"n":"视频唱见","v":"视频唱见"},{"n":"萌宅领域","v":"萌宅领域"},{"n":"视频聊天","v":"视频聊天"},{"n":"舞见","v":"舞见"},{"n":"唱见电台","v":"唱见电台"},{"n":"聊天电台","v":"聊天电台"},{"n":"甜宠电台","v":"甜宠电台"},{"n":"TopStar","v":"TopStar"},{"n":"虚拟Singer","v":"虚拟Singer"},{"n":"虚拟Gamer","v":"虚拟Gamer"},{"n":"虚拟声优","v":"虚拟声优"},{"n":"虚拟日常","v":"虚拟日常"},{"n":"虚拟APEX","v":"虚拟APEX"},{"n":"虚拟PK","v":"虚拟PK"},{"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":"CS:GO","v":"CS:GO"},{"n":"APEX英雄","v":"APEX英雄"},{"n":"永劫无间","v":"永劫无间"},{"n":"穿越火线","v":"穿越火线"},{"n":"命运方舟","v":"命运方舟"},{"n":"DOTA2","v":"DOTA2"},{"n":"吃鸡行动","v":"吃鸡行动"},{"n":"逃离塔科夫","v":"逃离塔科夫"},{"n":"传奇","v":"传奇"},{"n":"DNF","v":"DNF"},{"n":"卡拉彼丘","v":"卡拉彼丘"},{"n":"幕后高手","v":"幕后高手"},{"n":"生死狙击2","v":"生死狙击2"},{"n":"洛奇英雄传","v":"洛奇英雄传"},{"n":"最终幻想14","v":"最终幻想14"},{"n":"重生边缘","v":"重生边缘"},{"n":"星际战甲","v":"星际战甲"},{"n":"梦三国","v":"梦三国"},{"n":"英魂之刃","v":"英魂之刃"},{"n":"剑网3","v":"剑网3"},{"n":"从军","v":"从军"},{"n":"铁甲雄兵","v":"铁甲雄兵"},{"n":"封印者","v":"封印者"},{"n":"新天龙八部","v":"新天龙八部"},{"n":"赛尔号","v":"赛尔号"},{"n":"造梦西游","v":"造梦西游"},{"n":"洛克王国","v":"洛克王国"},{"n":"问道","v":"问道"},{"n":"诛仙世界","v":"诛仙世界"},{"n":"大话西游","v":"大话西游"},{"n":"奇迹MU","v":"奇迹MU"},{"n":"永恒之塔","v":"永恒之塔"},{"n":"QQ三国","v":"QQ三国"},{"n":"人间地狱","v":"人间地狱"},{"n":"彩虹岛","v":"彩虹岛"},{"n":"洛奇","v":"洛奇"},{"n":"跑跑卡丁车","v":"跑跑卡丁车"},{"n":"星际公民","v":"星际公民"},{"n":"Squad战术小队","v":"Squad战术小队"},{"n":"反恐精英Online","v":"反恐精英Online"},{"n":"风暴奇侠","v":"风暴奇侠"},{"n":"创世战车","v":"创世战车"},{"n":"装甲战争","v":"装甲战争"},{"n":"守望先锋","v":"守望先锋"},{"n":"阿尔比恩","v":"阿尔比恩"},{"n":"猎杀对决","v":"猎杀对决"},{"n":"CFHD","v":"CFHD"},{"n":"骑士精神2","v":"骑士精神2"},{"n":"超击突破","v":"超击突破"},{"n":"武装突袭","v":"武装突袭"},{"n":"Wayfinder寻路者","v":"Wayfinder寻路者"},{"n":"300英雄","v":"300英雄"},{"n":"炉石传说","v":"炉石传说"},{"n":"剑网3缘起","v":"剑网3缘起"},{"n":"街头篮球","v":"街头篮球"},{"n":"综合射击","v":"综合射击"},{"n":"剑灵","v":"剑灵"},{"n":"艾尔之光","v":"艾尔之光"},{"n":"黑色沙漠","v":"黑色沙漠"},{"n":"天涯明月刀","v":"天涯明月刀"},{"n":"超激斗梦境","v":"超激斗梦境"},{"n":"冒险岛","v":"冒险岛"},{"n":"逆战","v":"逆战"},{"n":"魔兽争霸3","v":"魔兽争霸3"},{"n":"QQ飞车","v":"QQ飞车"},{"n":"魔兽世界","v":"魔兽世界"},{"n":"FIFAONLINE4","v":"FIFAONLINE4"},{"n":"NBA2KOL2","v":"NBA2KOL2"},{"n":"使命召唤:战区","v":"使命召唤:战区"},{"n":"VRChat","v":"VRChat"},{"n":"坦克世界","v":"坦克世界"},{"n":"战舰世界","v":"战舰世界"},{"n":"战争与抉择","v":"战争与抉择"},{"n":"战争雷霆","v":"战争雷霆"},{"n":"战意","v":"战意"},{"n":"风暴英雄","v":"风暴英雄"},{"n":"星际争霸2","v":"星际争霸2"},{"n":"刀塔自走棋","v":"刀塔自走棋"},{"n":"堡垒之夜","v":"堡垒之夜"},{"n":"枪神纪","v":"枪神纪"},{"n":"三国杀","v":"三国杀"},{"n":"龙之谷","v":"龙之谷"},{"n":"古剑奇谭OL","v":"古剑奇谭OL"},{"n":"幻想全明星","v":"幻想全明星"},{"n":"怀旧网游","v":"怀旧网游"},{"n":"新游前瞻","v":"新游前瞻"},{"n":"星战前夜:晨曦","v":"星战前夜:晨曦"},{"n":"流放之路","v":"流放之路"},{"n":"FPS沙盒","v":"FPS沙盒"},{"n":"永恒轮回","v":"永恒轮回"},{"n":"激战2","v":"激战2"},{"n":"其他网游","v":"其他网游"},{"n":"蓝色协议","v":"蓝色协议"},{"n":"王者荣耀","v":"王者荣耀"},{"n":"和平精英","v":"和平精英"},{"n":"原神","v":"原神"},{"n":"崩坏:星穹铁道","v":"崩坏:星穹铁道"},{"n":"第五人格","v":"第五人格"},{"n":"LOL手游","v":"LOL手游"},{"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":"少女前线2:追放","v":"少女前线2:追放"},{"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":"崩坏3","v":"崩坏3"},{"n":"银河境界线","v":"银河境界线"},{"n":"蔚蓝档案","v":"蔚蓝档案"},{"n":"第七史诗","v":"第七史诗"},{"n":"游戏王:决斗链接","v":"游戏王:决斗链接"},{"n":"游戏王","v":"游戏王"},{"n":"JJ斗地主","v":"JJ斗地主"},{"n":"阴阳师","v":"阴阳师"},{"n":"欢乐斗地主","v":"欢乐斗地主"},{"n":"太空行动","v":"太空行动"},{"n":"空之要塞:启航","v":"空之要塞:启航"},{"n":"长安幻想","v":"长安幻想"},{"n":"火影忍者手游","v":"火影忍者手游"},{"n":"Fate/GO","v":"Fate/GO"},{"n":"综合棋牌","v":"综合棋牌"},{"n":"QQ飞车手游","v":"QQ飞车手游"},{"n":"决战!平安京","v":"决战!平安京"},{"n":"狼人杀","v":"狼人杀"},{"n":"三国杀移动版","v":"三国杀移动版"},{"n":"碧蓝航线","v":"碧蓝航线"},{"n":"影之诗","v":"影之诗"},{"n":"明日之后","v":"明日之后"},{"n":"重返未来:1999","v":"重返未来:1999"},{"n":"环行旅舍","v":"环行旅舍"},{"n":"幻世与冒险","v":"幻世与冒险"},{"n":"部落冲突:皇室战争","v":"部落冲突:皇室战争"},{"n":"奥比岛手游","v":"奥比岛手游"},{"n":"弹弹堂","v":"弹弹堂"},{"n":"雀姬","v":"雀姬"},{"n":"公主连结Re:Dive","v":"公主连结Re:Dive"},{"n":"DNF手游","v":"DNF手游"},{"n":"FIFA足球世界","v":"FIFA足球世界"},{"n":"BanGDream","v":"BanGDream"},{"n":"荒野乱斗","v":"荒野乱斗"},{"n":"CF手游","v":"CF手游"},{"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":"忍者必须死3","v":"忍者必须死3"},{"n":"梦幻西游手游","v":"梦幻西游手游"},{"n":"航海王热血航线","v":"航海王热血航线"},{"n":"少女前线","v":"少女前线"},{"n":"300大作战","v":"300大作战"},{"n":"少女前线:云图计划","v":"少女前线:云图计划"},{"n":"漫威超级战争","v":"漫威超级战争"},{"n":"摩尔庄园手游","v":"摩尔庄园手游"},{"n":"宝可梦大集结","v":"宝可梦大集结"},{"n":"小动物之星","v":"小动物之星"},{"n":"天地劫:幽城再临","v":"天地劫:幽城再临"},{"n":"漫威对决","v":"漫威对决"},{"n":"东方归言录","v":"东方归言录"},{"n":"梦幻模拟战","v":"梦幻模拟战"},{"n":"时空猎人3","v":"时空猎人3"},{"n":"重返帝国","v":"重返帝国"},{"n":"休闲小游戏","v":"休闲小游戏"},{"n":"其他手游","v":"其他手游"},{"n":"新游评测","v":"新游评测"},{"n":"山海镜花","v":"山海镜花"},{"n":"小冰冰传奇","v":"小冰冰传奇"},{"n":"主机游戏","v":"主机游戏"},{"n":"我的世界","v":"我的世界"},{"n":"独立游戏","v":"独立游戏"},{"n":"怀旧游戏","v":"怀旧游戏"},{"n":"猛兽派对","v":"猛兽派对"},{"n":"赛博朋克2077","v":"赛博朋克2077"},{"n":"星空","v":"星空"},{"n":"塞尔达传说","v":"塞尔达传说"},{"n":"苍翼:混沌效应","v":"苍翼:混沌效应"},{"n":"命运2","v":"命运2"},{"n":"收获日3","v":"收获日3"},{"n":"FC24","v":"FC24"},{"n":"机战佣兵VI境界天火","v":"机战佣兵VI境界天火"},{"n":"暗黑破坏神Ⅳ","v":"暗黑破坏神Ⅳ"},{"n":"匹诺曹的谎言","v":"匹诺曹的谎言"},{"n":"博德之门3","v":"博德之门3"},{"n":"绝世好武功","v":"绝世好武功"},{"n":"恐怖游戏","v":"恐怖游戏"},{"n":"DarkandDarker","v":"DarkandDarker"},{"n":"Warlander","v":"Warlander"},{"n":"FORZA极限竞速","v":"FORZA极限竞速"},{"n":"边境","v":"边境"},{"n":"生化危机","v":"生化危机"},{"n":"最终幻想","v":"最终幻想"},{"n":"暗黑破坏神","v":"暗黑破坏神"},{"n":"森林之子","v":"森林之子"},{"n":"卧龙:苍天陨落","v":"卧龙:苍天陨落"},{"n":"红色警戒2","v":"红色警戒2"},{"n":"策略游戏","v":"策略游戏"},{"n":"禁闭求生","v":"禁闭求生"},{"n":"战神","v":"战神"},{"n":"斯普拉遁3","v":"斯普拉遁3"},{"n":"使命召唤19","v":"使命召唤19"},{"n":"艾尔登法环","v":"艾尔登法环"},{"n":"聚会游戏","v":"聚会游戏"},{"n":"DreadHunger","v":"DreadHunger"},{"n":"战地风云","v":"战地风云"},{"n":"糖豆人","v":"糖豆人"},{"n":"消逝的光芒2","v":"消逝的光芒2"},{"n":"只狼","v":"只狼"},{"n":"怪物猎人","v":"怪物猎人"},{"n":"宝可梦集换式卡牌游戏","v":"宝可梦集换式卡牌游戏"},{"n":"饥荒","v":"饥荒"},{"n":"精灵宝可梦","v":"精灵宝可梦"},{"n":"FIFA23","v":"FIFA23"},{"n":"全面战争:战锤3","v":"全面战争:战锤3"},{"n":"NBA2K","v":"NBA2K"},{"n":"帝国时代4","v":"帝国时代4"},{"n":"植物大战僵尸","v":"植物大战僵尸"},{"n":"格斗游戏","v":"格斗游戏"},{"n":"荒野大镖客2","v":"荒野大镖客2"},{"n":"重生细胞","v":"重生细胞"},{"n":"刺客信条","v":"刺客信条"},{"n":"恐鬼症","v":"恐鬼症"},{"n":"以撒","v":"以撒"},{"n":"双人成行","v":"双人成行"},{"n":"方舟","v":"方舟"},{"n":"仁王2","v":"仁王2"},{"n":"鬼泣5","v":"鬼泣5"},{"n":"枪火重生","v":"枪火重生"},{"n":"盗贼之海","v":"盗贼之海"},{"n":"胡闹厨房","v":"胡闹厨房"},{"n":"体育游戏","v":"体育游戏"},{"n":"全境封锁2","v":"全境封锁2"},{"n":"骑马与砍杀","v":"骑马与砍杀"},{"n":"人类一败涂地","v":"人类一败涂地"},{"n":"无主之地3","v":"无主之地3"},{"n":"辐射76","v":"辐射76"},{"n":"全面战争","v":"全面战争"},{"n":"文字游戏","v":"文字游戏"},{"n":"恋爱模拟游戏","v":"恋爱模拟游戏"},{"n":"泰拉瑞亚","v":"泰拉瑞亚"},{"n":"游戏速通","v":"游戏速通"},{"n":"Roblox","v":"Roblox"},{"n":"雀魂麻将","v":"雀魂麻将"},{"n":"德州电锯","v":"德州电锯"},{"n":"其他单机","v":"其他单机"}]}],
+ "cc":[{"key":"area","name":"分区","value":[{"n":"星秀","v":"星秀"},{"n":"二次元","v":"二次元"},{"n":"风华正茂","v":"风华正茂"},{"n":"正能量","v":"正能量"},{"n":"古风国色","v":"古风国色"},{"n":"巨好看","v":"巨好看"},{"n":"语音","v":"语音"},{"n":"我的世界","v":"我的世界"},{"n":"实况足球","v":"实况足球"},{"n":"炉石传说","v":"炉石传说"},{"n":"风暴英雄","v":"风暴英雄"},{"n":"守望先锋","v":"守望先锋"},{"n":"暴雪经典","v":"暴雪经典"},{"n":"主机单机","v":"主机单机"},{"n":"影之诗","v":"影之诗"},{"n":"梦幻西游手游","v":"梦幻西游手游"},{"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":"乱斗西游2","v":"乱斗西游2"},{"n":"《天下》手游","v":"《天下》手游"},{"n":"劲舞团","v":"劲舞团"},{"n":"光明大陆","v":"光明大陆"},{"n":"镇魔曲手游","v":"镇魔曲手游"},{"n":"三少爷的剑","v":"三少爷的剑"},{"n":"迷雾世界","v":"迷雾世界"},{"n":"终结战场","v":"终结战场"},{"n":"永远的7日之都","v":"永远的7日之都"},{"n":"狼人杀","v":"狼人杀"},{"n":"魂之轨迹","v":"魂之轨迹"},{"n":"三国如龙传","v":"三国如龙传"},{"n":"量子特攻","v":"量子特攻"},{"n":"非人学园","v":"非人学园"},{"n":"堡垒前线:破坏与创造","v":"堡垒前线:破坏与创造"},{"n":"战争怒吼","v":"战争怒吼"},{"n":"猎魂觉醒","v":"猎魂觉醒"},{"n":"终结战场PC版","v":"终结战场PC版"},{"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":"有杀气童话2","v":"有杀气童话2"},{"n":"零号任务","v":"零号任务"},{"n":"绝对演绎","v":"绝对演绎"},{"n":"逆水寒手游","v":"逆水寒手游"},{"n":"巅峰极速","v":"巅峰极速"},{"n":"大航海之路","v":"大航海之路"},{"n":"大富翁9","v":"大富翁9"},{"n":"永恒文明","v":"永恒文明"},{"n":"新游中心","v":"新游中心"},{"n":"我的世界中国版","v":"我的世界中国版"},{"n":"梦幻西游电脑版","v":"梦幻西游电脑版"},{"n":"永劫无间","v":"永劫无间"},{"n":"大话西游2经典版","v":"大话西游2经典版"},{"n":"新倩女幽魂","v":"新倩女幽魂"},{"n":"大话西游2免费版","v":"大话西游2免费版"},{"n":"天下3","v":"天下3"},{"n":"一梦江湖","v":"一梦江湖"},{"n":"其他游戏","v":"其他游戏"},{"n":"逆水寒","v":"逆水寒"},{"n":"荒野行动PC模拟器","v":"荒野行动PC模拟器"},{"n":"大唐无双零","v":"大唐无双零"},{"n":"武魂2","v":"武魂2"},{"n":"天谕","v":"天谕"},{"n":"镇魔曲","v":"镇魔曲"},{"n":"无尽战区","v":"无尽战区"},{"n":"命运2","v":"命运2"},{"n":"魔兽世界","v":"魔兽世界"},{"n":"暗黑破坏神","v":"暗黑破坏神"},{"n":"泰亚史诗","v":"泰亚史诗"},{"n":"战意","v":"战意"},{"n":"易次元","v":"易次元"},{"n":"魔兽世界怀旧服","v":"魔兽世界怀旧服"},{"n":"无主之地3","v":"无主之地3"},{"n":"超激斗梦境","v":"超激斗梦境"},{"n":"EVE Online","v":"EVE Online"},{"n":"全面战争:竞技场","v":"全面战争:竞技场"},{"n":"暴雪游戏","v":"暴雪游戏"},{"n":"FPS综合游戏","v":"FPS综合游戏"},{"n":"魔兽争霸","v":"魔兽争霸"},{"n":"绿茵信仰","v":"绿茵信仰"},{"n":"大话女儿国","v":"大话女儿国"},{"n":"燕云十六声","v":"燕云十六声"},{"n":"射雕","v":"射雕"}]}],
+ "douyin":[{"key":"area","name":"分区","value":[{"n":"全部","v":"全部"},{"n":"魔兽世界","v":"魔兽世界"},{"n":"永劫无间","v":"永劫无间"},{"n":"横版格斗","v":"横版格斗"},{"n":"拳皇系列","v":"拳皇系列"},{"n":"我的世界","v":"我的世界"},{"n":"魔兽争霸3","v":"魔兽争霸3"},{"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":"崩坏3","v":"崩坏3"},{"n":"天使之战","v":"天使之战"},{"n":"蛋仔派对","v":"蛋仔派对"},{"n":"植物大战僵尸","v":"植物大战僵尸"},{"n":"识字大师","v":"识字大师"},{"n":"美食DIY","v":"美食DIY"},{"n":"球球大作战","v":"球球大作战"},{"n":"荒野乱斗","v":"荒野乱斗"},{"n":"元气骑士","v":"元气骑士"},{"n":"最强的大脑","v":"最强的大脑"},{"n":"5v5推塔手游","v":"5v5推塔手游"},{"n":"DOTA2","v":"DOTA2"},{"n":"格斗手游","v":"格斗手游"},{"n":"赛车游戏","v":"赛车游戏"},{"n":"跑跑卡丁车手游","v":"跑跑卡丁车手游"},{"n":"DOTA","v":"DOTA"},{"n":"第五人格","v":"第五人格"},{"n":"梦三国","v":"梦三国"},{"n":"坦克世界","v":"坦克世界"},{"n":"怀旧FC","v":"怀旧FC"},{"n":"帝国时代","v":"帝国时代"},{"n":"战舰世界","v":"战舰世界"},{"n":"怀旧掌机","v":"怀旧掌机"},{"n":"西游释厄传","v":"西游释厄传"},{"n":"合金弹头","v":"合金弹头"},{"n":"恐龙快打","v":"恐龙快打"},{"n":"无畏契约","v":"无畏契约"},{"n":"射击游戏","v":"射击游戏"},{"n":"CS:GO","v":"CS:GO"},{"n":"吃鸡手游","v":"吃鸡手游"},{"n":"香肠派对","v":"香肠派对"},{"n":"暗区突围","v":"暗区突围"},{"n":"Apex英雄","v":"Apex英雄"},{"n":"高能英雄","v":"高能英雄"},{"n":"阴阳师","v":"阴阳师"},{"n":"明日方舟","v":"明日方舟"},{"n":"崩坏:星穹铁道","v":"崩坏:星穹铁道"},{"n":"炉石传说","v":"炉石传说"},{"n":"少年三国志2","v":"少年三国志2"},{"n":"山海经异兽录","v":"山海经异兽录"},{"n":"铁杆三国","v":"铁杆三国"},{"n":"新不良人","v":"新不良人"},{"n":"JJ象棋","v":"JJ象棋"},{"n":"经典天龙八部","v":"经典天龙八部"},{"n":"光遇","v":"光遇"},{"n":"开心消消乐","v":"开心消消乐"},{"n":"魂斗罗","v":"魂斗罗"},{"n":"红狼(口袋狼人杀)","v":"红狼(口袋狼人杀)"},{"n":"怀旧天龙八部","v":"怀旧天龙八部"},{"n":"汤姆猫跑酷","v":"汤姆猫跑酷"},{"n":"决战平安京","v":"决战平安京"},{"n":"CS 1.6","v":"CS 1.6"},{"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":"人文艺术"}]}]
},
- filter: {
- 'douyu': [{ 'key': 'area', 'name': '分区', 'value': [{ 'n': '一起看', 'v': '一起看' }, { 'n': '二次元', 'v': '二次元' }, { 'n': '颜值', 'v': '颜值' }, { 'n': '颜值(横屏)', 'v': '颜值(横屏)' }, { 'n': '音乐', 'v': '音乐' }, { 'n': '户外', 'v': '户外' }, { 'n': '美食', 'v': '美食' }, { 'n': '原创IP', 'v': '原创IP' }, { 'n': '互动交友', 'v': '互动交友' }, { 'n': '音遇恋人', 'v': '音遇恋人' }, { 'n': '舞蹈', 'v': '舞蹈' }, { 'n': '趣生活', 'v': '趣生活' }, { 'n': '心动FM', 'v': '心动FM' }, { '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': '心动FM.', 'v': '心动FM.' }, { 'n': '一起玩', 'v': '一起玩' }, { 'n': '开黑车队', 'v': '开黑车队' }, { 'n': '点唱', 'v': '点唱' }, { 'n': 'CP聊天', 'v': 'CP聊天' }, { 'n': '语音交友', 'v': '语音交友' }, { 'n': '音乐之声', 'v': '音乐之声' }, { 'n': '连麦互动', 'v': '连麦互动' }, { 'n': '娱乐开黑', 'v': '娱乐开黑' }, { 'n': '星星点灯', 'v': '星星点灯' }, { 'n': '正能量', 'v': '正能量' }, { 'n': '赛车竞技', 'v': '赛车竞技' }, { 'n': '京斗云', 'v': '京斗云' }, { 'n': '英雄联盟', 'v': '英雄联盟' }, { 'n': '热门游戏', 'v': '热门游戏' }, { 'n': '穿越火线', 'v': '穿越火线' }, { 'n': 'CFHD', 'v': 'CFHD' }, { 'n': '使命召唤', 'v': '使命召唤' }, { 'n': 'DNF', 'v': 'DNF' }, { 'n': 'DOTA2', 'v': 'DOTA2' }, { 'n': '炉石传说', 'v': '炉石传说' }, { 'n': 'CS:GO', 'v': 'CS:GO' }, { 'n': 'VALORANT', 'v': 'VALORANT' }, { 'n': 'lol云顶之弈', 'v': 'lol云顶之弈' }, { 'n': '魔兽争霸', 'v': '魔兽争霸' }, { 'n': '魔兽怀旧服', 'v': '魔兽怀旧服' }, { 'n': '自走棋', 'v': '自走棋' }, { 'n': '传奇', 'v': '传奇' }, { 'n': '跑跑卡丁车', 'v': '跑跑卡丁车' }, { 'n': '网易游戏', 'v': '网易游戏' }, { 'n': '星际争霸', 'v': '星际争霸' }, { 'n': '格斗游戏', 'v': '格斗游戏' }, { 'n': '守望先锋归来', 'v': '守望先锋归来' }, { 'n': 'DOTA', 'v': 'DOTA' }, { 'n': '魔兽世界', 'v': '魔兽世界' }, { 'n': '剑网3', 'v': '剑网3' }, { 'n': '我的世界', 'v': '我的世界' }, { 'n': '超激斗梦境', 'v': '超激斗梦境' }, { 'n': '冒险岛', 'v': '冒险岛' }, { 'n': '三国杀', 'v': '三国杀' }, { 'n': '梦幻西游', 'v': '梦幻西游' }, { 'n': '天涯明月刀', 'v': '天涯明月刀' }, { 'n': '街头篮球', 'v': '街头篮球' }, { 'n': 'NBA2KOL2', 'v': 'NBA2KOL2' }, { 'n': 'QQ飞车端游', 'v': 'QQ飞车端游' }, { 'n': '战地之王', 'v': '战地之王' }, { 'n': '军事游戏', 'v': '军事游戏' }, { 'n': '棋牌娱乐', 'v': '棋牌娱乐' }, { 'n': 'FIFA ONLINE 4', 'v': 'FIFA ONLINE 4' }, { 'n': '热门网游', 'v': '热门网游' }, { 'n': '诛仙世界', 'v': '诛仙世界' }, { 'n': '千古风流', 'v': '千古风流' }, { 'n': 'APEX', 'v': 'APEX' }, { 'n': '流放之路POE', 'v': '流放之路POE' }, { 'n': '剑网3缘起', 'v': '剑网3缘起' }, { 'n': '逆水寒', 'v': '逆水寒' }, { 'n': '风暴英雄', 'v': '风暴英雄' }, { 'n': '逆战', 'v': '逆战' }, { 'n': '坦克世界', 'v': '坦克世界' }, { 'n': '战舰世界', 'v': '战舰世界' }, { 'n': '巫师之昆特牌', 'v': '巫师之昆特牌' }, { 'n': '反恐精英Online', 'v': '反恐精英Online' }, { 'n': '暗黑破坏神3', 'v': '暗黑破坏神3' }, { 'n': '梦三国2', 'v': '梦三国2' }, { 'n': '传奇世界', 'v': '传奇世界' }, { 'n': '方舟:生存进化', 'v': '方舟:生存进化' }, { 'n': '刀塔霸业', 'v': '刀塔霸业' }, { 'n': '神武4电脑版', 'v': '神武4电脑版' }, { 'n': '群雄逐鹿', 'v': '群雄逐鹿' }, { 'n': '堡垒之夜', 'v': '堡垒之夜' }, { 'n': '无限法则', 'v': '无限法则' }, { 'n': '问道电脑版', 'v': '问道电脑版' }, { 'n': '西山居游戏', 'v': '西山居游戏' }, { 'n': '最终幻想14', 'v': '最终幻想14' }, { 'n': '战意', 'v': '战意' }, { 'n': '剑灵', 'v': '剑灵' }, { 'n': '星际战甲', 'v': '星际战甲' }, { 'n': '龙之谷', 'v': '龙之谷' }, { 'n': '铁甲雄兵', 'v': '铁甲雄兵' }, { 'n': '古剑奇谭网络版', 'v': '古剑奇谭网络版' }, { 'n': '轩辕传奇', 'v': '轩辕传奇' }, { 'n': '神途', 'v': '神途' }, { 'n': '激战2', 'v': '激战2' }, { 'n': '高达文化区', 'v': '高达文化区' }] }],
- 'huya': [{ 'key': 'area', 'name': '分区', 'value': [{ 'n': '一起看', 'v': '一起看' }, { 'n': '放映厅', 'v': '放映厅' }, { 'n': '星秀', 'v': '星秀' }, { 'n': '户外', 'v': '户外' }, { 'n': '二次元', 'v': '二次元' }, { 'n': '美食', 'v': '美食' }, { 'n': '颜值', 'v': '颜值' }, { 'n': '交友', 'v': '交友' }, { 'n': '体育', 'v': '体育' }, { 'n': '娱乐天地', 'v': '娱乐天地' }, { 'n': '吃喝玩乐', 'v': '吃喝玩乐' }, { 'n': '组队', 'v': '组队' }, { 'n': '原创', 'v': '原创' }, { 'n': '虎牙地方', 'v': '虎牙地方' }, { 'n': '虚拟偶像', 'v': '虚拟偶像' }, { 'n': '虎牙文化', 'v': '虎牙文化' }, { 'n': '趣分享', 'v': '趣分享' }, { 'n': '音乐', 'v': '音乐' }, { 'n': '派对', 'v': '派对' }, { 'n': '科技', 'v': '科技' }, { 'n': '直播购', 'v': '直播购' }, { 'n': '旅游', 'v': '旅游' }, { 'n': '英雄联盟', 'v': '英雄联盟' }, { 'n': '超击突破', 'v': '超击突破' }, { 'n': '守望先锋归来', 'v': '守望先锋归来' }, { 'n': 'lol云顶之弈', 'v': 'lol云顶之弈' }, { 'n': '穿越火线', 'v': '穿越火线' }, { 'n': '暴雪专区', 'v': '暴雪专区' }, { 'n': '地下城与勇士', 'v': '地下城与勇士' }, { 'n': '炉石传说', 'v': '炉石传说' }, { 'n': '魔兽世界', 'v': '魔兽世界' }, { 'n': 'DOTA2', 'v': 'DOTA2' }, { 'n': 'CS:GO', 'v': 'CS:GO' }, { 'n': 'DOTA1', 'v': 'DOTA1' }, { 'n': 'QQ飞车', 'v': 'QQ飞车' }, { 'n': '问道', 'v': '问道' }, { 'n': '魔兽争霸3', 'v': '魔兽争霸3' }, { 'n': '逆战', 'v': '逆战' }, { 'n': '梦三国', 'v': '梦三国' }, { 'n': '网游竞技', 'v': '网游竞技' }, { 'n': '射击综合游戏', 'v': '射击综合游戏' }, { 'n': '军事游戏', 'v': '军事游戏' }, { 'n': '坦克世界', 'v': '坦克世界' }, { 'n': '永恒之塔', 'v': '永恒之塔' }, { 'n': '剑灵', 'v': '剑灵' }, { 'n': '御龙在天', 'v': '御龙在天' }, { 'n': '传奇', 'v': '传奇' }, { 'n': '神武4电脑版', 'v': '神武4电脑版' }, { 'n': '起凡:群雄逐鹿', 'v': '起凡:群雄逐鹿' }, { 'n': '体育游戏', 'v': '体育游戏' }, { 'n': '传奇类游戏', 'v': '传奇类游戏' }, { 'n': '彩虹岛Online', 'v': '彩虹岛Online' }, { 'n': '诛仙3', 'v': '诛仙3' }, { 'n': '逆水寒', 'v': '逆水寒' }, { 'n': '炉石战棋', 'v': '炉石战棋' }, { 'n': 'CFHD', 'v': 'CFHD' }, { 'n': '冒险岛', 'v': '冒险岛' }, { 'n': '生死狙击2', 'v': '生死狙击2' }, { 'n': 'QQ三国', 'v': 'QQ三国' }, { 'n': '反恐精英Online', 'v': '反恐精英Online' }, { 'n': '龙之谷', 'v': '龙之谷' }, { 'n': '战舰世界', 'v': '战舰世界' }, { 'n': '枪神纪', 'v': '枪神纪' }, { 'n': '热血江湖', 'v': '热血江湖' }, { 'n': '九阴真经', 'v': '九阴真经' }, { 'n': '星际战甲', 'v': '星际战甲' }, { 'n': 'NBA2KOL系列', 'v': 'NBA2KOL系列' }, { 'n': '寻仙', 'v': '寻仙' }, { 'n': '铁甲雄兵', 'v': '铁甲雄兵' }, { 'n': '刀剑英雄', 'v': '刀剑英雄' }, { 'n': '荒野行动PC版', 'v': '荒野行动PC版' }, { 'n': 'FIFA Online系列', 'v': 'FIFA Online系列' }, { 'n': '暗黑破坏神', 'v': '暗黑破坏神' }, { 'n': '征途', 'v': '征途' }, { 'n': '斗战神', 'v': '斗战神' }, { 'n': '星际争霸', 'v': '星际争霸' }, { 'n': 'VALORANT', 'v': 'VALORANT' }, { 'n': '跑跑卡丁车', 'v': '跑跑卡丁车' }, { 'n': '天涯明月刀', 'v': '天涯明月刀' }, { 'n': 'QQ华夏', 'v': 'QQ华夏' }, { 'n': '剑网3', 'v': '剑网3' }, { 'n': '武林外传一世琴缘', 'v': '武林外传一世琴缘' }, { 'n': '反恐行动online', 'v': '反恐行动online' }, { 'n': '完美端游系列', 'v': '完美端游系列' }] }],
- 'bilibili': [{ 'key': 'area', 'name': '分区', 'value': [{ 'n': '影音馆', 'v': '影音馆' }, { 'n': '视频唱见', 'v': '视频唱见' }, { 'n': '萌宅领域', 'v': '萌宅领域' }, { 'n': '视频聊天', 'v': '视频聊天' }, { 'n': '舞见', 'v': '舞见' }, { 'n': '情感', 'v': '情感' }, { 'n': '户外', 'v': '户外' }, { 'n': '日常', 'v': '日常' }, { 'n': '唱见电台', 'v': '唱见电台' }, { 'n': '聊天电台', 'v': '聊天电台' }, { 'n': '配音', 'v': '配音' }, { 'n': '虚拟主播', 'v': '虚拟主播' }, { 'n': '3D虚拟主播', 'v': '3D虚拟主播' }, { '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': 'DOTA2', 'v': 'DOTA2' }, { 'n': 'CS:GO', 'v': 'CS:GO' }, { 'n': 'APEX英雄', 'v': 'APEX英雄' }, { 'n': '永劫无间', 'v': '永劫无间' }, { 'n': '穿越火线', 'v': '穿越火线' }, { 'n': '守望先锋', 'v': '守望先锋' }, { 'n': '吃鸡行动', 'v': '吃鸡行动' }, { 'n': '逃离塔科夫', 'v': '逃离塔科夫' }, { 'n': '传奇', 'v': '传奇' }, { 'n': 'DNF', 'v': 'DNF' }, { 'n': '生死狙击2', 'v': '生死狙击2' }, { 'n': '洛奇英雄传', 'v': '洛奇英雄传' }, { 'n': '最终幻想14', 'v': '最终幻想14' }, { 'n': '星际战甲', 'v': '星际战甲' }, { 'n': '梦三国', 'v': '梦三国' }, { 'n': '英魂之刃', 'v': '英魂之刃' }, { 'n': '剑网3', 'v': '剑网3' }, { 'n': '铁甲雄兵', 'v': '铁甲雄兵' }, { 'n': '封印者', 'v': '封印者' }, { 'n': '新天龙八部', 'v': '新天龙八部' }, { 'n': '赛尔号', 'v': '赛尔号' }, { 'n': '造梦西游', 'v': '造梦西游' }, { 'n': '洛克王国', 'v': '洛克王国' }, { 'n': '问道', 'v': '问道' }, { 'n': '诛仙世界', 'v': '诛仙世界' }, { 'n': '大话西游', 'v': '大话西游' }, { 'n': '奇迹MU', 'v': '奇迹MU' }, { 'n': '永恒之塔', 'v': '永恒之塔' }, { 'n': 'QQ三国', 'v': 'QQ三国' }, { 'n': '人间地狱', 'v': '人间地狱' }, { 'n': 'VALORANT', 'v': 'VALORANT' }, { 'n': '彩虹岛', 'v': '彩虹岛' }, { 'n': '洛奇', 'v': '洛奇' }, { 'n': '跑跑卡丁车', 'v': '跑跑卡丁车' }, { 'n': '星际公民', 'v': '星际公民' }, { 'n': 'Squad战术小队', 'v': 'Squad战术小队' }, { 'n': '反恐精英Online', 'v': '反恐精英Online' }, { 'n': '风暴奇侠', 'v': '风暴奇侠' }, { 'n': '装甲战争', 'v': '装甲战争' }, { 'n': '失落的方舟', 'v': '失落的方舟' }, { 'n': '阿尔比恩', 'v': '阿尔比恩' }, { 'n': '猎杀对决', 'v': '猎杀对决' }, { 'n': 'CFHD', 'v': 'CFHD' }, { 'n': '骑士精神2', 'v': '骑士精神2' }, { 'n': '超击突破', 'v': '超击突破' }, { 'n': '武装突袭', 'v': '武装突袭' }, { 'n': '300英雄', 'v': '300英雄' }, { 'n': '炉石传说', 'v': '炉石传说' }, { 'n': '剑网3缘起', 'v': '剑网3缘起' }, { 'n': '街头篮球', 'v': '街头篮球' }, { 'n': '综合射击', 'v': '综合射击' }, { 'n': '剑灵', 'v': '剑灵' }, { 'n': '艾尔之光', 'v': '艾尔之光' }, { 'n': '黑色沙漠', 'v': '黑色沙漠' }, { 'n': '天涯明月刀', 'v': '天涯明月刀' }, { 'n': '超激斗梦境', 'v': '超激斗梦境' }, { 'n': '冒险岛', 'v': '冒险岛' }, { 'n': '逆战', 'v': '逆战' }, { 'n': '魔兽争霸3', 'v': '魔兽争霸3' }, { 'n': 'QQ飞车', 'v': 'QQ飞车' }, { 'n': '魔兽世界', 'v': '魔兽世界' }, { 'n': 'FIFA ONLINE 4', 'v': 'FIFA ONLINE 4' }, { 'n': 'NBA2KOL2', 'v': 'NBA2KOL2' }, { 'n': '使命召唤:战区', 'v': '使命召唤:战区' }, { 'n': 'VRChat', 'v': 'VRChat' }, { 'n': '坦克世界', 'v': '坦克世界' }, { 'n': '战舰世界', 'v': '战舰世界' }, { 'n': '战争雷霆', 'v': '战争雷霆' }, { 'n': '战意', 'v': '战意' }, { 'n': '风暴英雄', 'v': '风暴英雄' }, { 'n': '星际争霸2', 'v': '星际争霸2' }, { 'n': '刀塔自走棋', 'v': '刀塔自走棋' }, { 'n': '堡垒之夜', 'v': '堡垒之夜' }, { 'n': '枪神纪', 'v': '枪神纪' }, { 'n': '三国杀', 'v': '三国杀' }, { 'n': '龙之谷', 'v': '龙之谷' }, { 'n': '古剑奇谭OL', 'v': '古剑奇谭OL' }, { 'n': '幻想全明星', 'v': '幻想全明星' }, { 'n': '怀旧网游', 'v': '怀旧网游' }, { 'n': '新游前瞻', 'v': '新游前瞻' }, { 'n': '星战前夜:晨曦', 'v': '星战前夜:晨曦' }, { 'n': '梦幻西游端游', 'v': '梦幻西游端游' }, { 'n': '流放之路', 'v': '流放之路' }, { 'n': 'FPS沙盒', 'v': 'FPS沙盒' }, { 'n': '永恒轮回', 'v': '永恒轮回' }, { 'n': '激战2', 'v': '激战2' }, { 'n': '其他网游', 'v': '其他网游' }, { 'n': '王者荣耀', 'v': '王者荣耀' }, { 'n': '和平精英', 'v': '和平精英' }, { 'n': 'LOL手游', 'v': 'LOL手游' }, { 'n': '原神', 'v': '原神' }, { 'n': '第五人格', 'v': '第五人格' }, { 'n': '明日方舟', 'v': '明日方舟' }, { 'n': '哈利波特:魔法觉醒', 'v': '哈利波特:魔法觉醒' }, { 'n': '幻塔', 'v': '幻塔' }, { 'n': '金铲铲之战', 'v': '金铲铲之战' }, { 'n': 'APEX手游', 'v': 'APEX手游' }, { 'n': '深空之眼', 'v': '深空之眼' }, { 'n': '无期迷途', 'v': '无期迷途' }, { 'n': '光遇', 'v': '光遇' }, { 'n': '香肠派对', 'v': '香肠派对' }, { 'n': '猫之城', 'v': '猫之城' }, { 'n': '玛娜希斯回响', 'v': '玛娜希斯回响' }, { 'n': '使命召唤手游', 'v': '使命召唤手游' }, { 'n': '黑色沙漠手游', 'v': '黑色沙漠手游' }, { 'n': '崩坏3', 'v': '崩坏3' }, { 'n': '游戏王:决斗链接', 'v': '游戏王:决斗链接' }, { 'n': '游戏王', 'v': '游戏王' }, { 'n': '蛋仔派对', 'v': '蛋仔派对' }, { 'n': '阴阳师', 'v': '阴阳师' }, { 'n': '火影忍者手游', 'v': '火影忍者手游' }, { 'n': 'Fate/GO', 'v': 'Fate/GO' }, { 'n': '综合棋牌', 'v': '综合棋牌' }, { 'n': 'QQ飞车手游', 'v': 'QQ飞车手游' }, { 'n': '决战!平安京', 'v': '决战!平安京' }, { 'n': '狼人杀', 'v': '狼人杀' }, { 'n': '三国杀移动版', 'v': '三国杀移动版' }, { 'n': '碧蓝航线', 'v': '碧蓝航线' }, { 'n': '影之诗', 'v': '影之诗' }, { 'n': '明日之后', 'v': '明日之后' }, { 'n': '部落冲突:皇室战争', 'v': '部落冲突:皇室战争' }, { 'n': '奥比岛手游', 'v': '奥比岛手游' }, { 'n': '盾之勇者成名录:浪潮', 'v': '盾之勇者成名录:浪潮' }, { 'n': '雀姬', 'v': '雀姬' }, { 'n': '公主连结Re:Dive', 'v': '公主连结Re:Dive' }, { 'n': 'DNF手游', 'v': 'DNF手游' }, { 'n': 'FIFA足球世界', 'v': 'FIFA足球世界' }, { 'n': 'BanG Dream', 'v': 'BanG Dream' }, { 'n': '荒野乱斗', 'v': '荒野乱斗' }, { 'n': 'CF手游', 'v': 'CF手游' }, { 'n': '战双帕弥什', 'v': '战双帕弥什' }, { 'n': '天涯明月刀手游', 'v': '天涯明月刀手游' }, { 'n': '解密游戏', 'v': '解密游戏' }, { 'n': '恋爱养成游戏', 'v': '恋爱养成游戏' }, { 'n': '暗黑破坏神:不朽', 'v': '暗黑破坏神:不朽' }, { 'n': '暗区突围', 'v': '暗区突围' }, { 'n': '跑跑卡丁车手游', 'v': '跑跑卡丁车手游' }, { 'n': '非人学园', 'v': '非人学园' }, { 'n': '百闻牌', 'v': '百闻牌' }, { 'n': '猫和老鼠手游', 'v': '猫和老鼠手游' }, { 'n': '坎公骑冠剑', 'v': '坎公骑冠剑' }, { 'n': '忍者必须死3', 'v': '忍者必须死3' }, { 'n': '梦幻西游手游', 'v': '梦幻西游手游' }, { 'n': '航海王热血航线', 'v': '航海王热血航线' }, { 'n': '少女前线', 'v': '少女前线' }, { 'n': '300大作战', 'v': '300大作战' }, { 'n': '少女前线:云图计划', 'v': '少女前线:云图计划' }, { 'n': '漫威超级战争', 'v': '漫威超级战争' }, { 'n': '摩尔庄园手游', 'v': '摩尔庄园手游' }, { 'n': '宝可梦大集结', 'v': '宝可梦大集结' }, { 'n': '小动物之星', 'v': '小动物之星' }, { 'n': '天地劫:幽城再临', 'v': '天地劫:幽城再临' }, { 'n': '漫威对决', 'v': '漫威对决' }, { 'n': '东方归言录', 'v': '东方归言录' }, { 'n': '梦幻模拟战', 'v': '梦幻模拟战' }, { 'n': '时空猎人3', 'v': '时空猎人3' }, { 'n': '重返帝国', 'v': '重返帝国' }, { 'n': '其他手游', 'v': '其他手游' }, { 'n': '新游评测', 'v': '新游评测' }, { 'n': '主机游戏', 'v': '主机游戏' }, { 'n': '我的世界', 'v': '我的世界' }, { 'n': '独立游戏', 'v': '独立游戏' }, { 'n': '怀旧游戏', 'v': '怀旧游戏' }, { 'n': '弹幕互动玩法', 'v': '弹幕互动玩法' }, { 'n': '禁闭求生', 'v': '禁闭求生' }, { 'n': '斯普拉遁3', 'v': '斯普拉遁3' }, { 'n': '卧龙:苍天陨落', 'v': '卧龙:苍天陨落' }, { 'n': '恐怖游戏', 'v': '恐怖游戏' }, { 'n': '使命召唤19', 'v': '使命召唤19' }, { 'n': '异度神剑', 'v': '异度神剑' }, { 'n': '艾尔登法环', 'v': '艾尔登法环' }, { 'n': '聚会游戏', 'v': '聚会游戏' }, { 'n': '命运2', 'v': '命运2' }, { 'n': '沙石镇时光', 'v': '沙石镇时光' }, { 'n': 'Dread Hunger', 'v': 'Dread Hunger' }, { 'n': '红色警戒2', 'v': '红色警戒2' }, { 'n': '失落迷城:群星的诅咒', 'v': '失落迷城:群星的诅咒' }, { 'n': '策略游戏', 'v': '策略游戏' }, { 'n': '战地风云', 'v': '战地风云' }, { 'n': '幽灵线:东京', 'v': '幽灵线:东京' }, { 'n': '糖豆人', 'v': '糖豆人' }, { 'n': '消逝的光芒2', 'v': '消逝的光芒2' }, { 'n': '只狼', 'v': '只狼' }, { 'n': '怪物猎人', 'v': '怪物猎人' }, { 'n': '饥荒', 'v': '饥荒' }, { 'n': '精灵宝可梦', 'v': '精灵宝可梦' }, { 'n': 'FIFA23', 'v': 'FIFA23' }, { 'n': '暖雪', 'v': '暖雪' }, { 'n': '全面战争:战锤3', 'v': '全面战争:战锤3' }, { 'n': '彩虹六号:异种', 'v': '彩虹六号:异种' }, { 'n': '战神', 'v': '战神' }, { 'n': 'FORZA 极限竞速', 'v': 'FORZA 极限竞速' }, { 'n': 'NBA2K', 'v': 'NBA2K' }, { 'n': '帝国时代4', 'v': '帝国时代4' }, { 'n': '光环:无限', 'v': '光环:无限' }, { 'n': '孤岛惊魂6', 'v': '孤岛惊魂6' }, { 'n': '植物大战僵尸', 'v': '植物大战僵尸' }, { 'n': '仙剑奇侠传七', 'v': '仙剑奇侠传七' }, { 'n': '灵魂筹码', 'v': '灵魂筹码' }, { 'n': '格斗游戏', 'v': '格斗游戏' }, { 'n': '荒野大镖客2', 'v': '荒野大镖客2' }, { 'n': '重生细胞', 'v': '重生细胞' }, { 'n': '刺客信条', 'v': '刺客信条' }, { 'n': '恐鬼症', 'v': '恐鬼症' }, { 'n': '以撒', 'v': '以撒' }, { 'n': '双人成行', 'v': '双人成行' }, { 'n': '方舟', 'v': '方舟' }, { 'n': '仁王2', 'v': '仁王2' }, { 'n': '鬼泣5', 'v': '鬼泣5' }, { 'n': '枪火重生', 'v': '枪火重生' }, { 'n': '盗贼之海', 'v': '盗贼之海' }, { 'n': '胡闹厨房', 'v': '胡闹厨房' }, { 'n': '体育游戏', 'v': '体育游戏' }, { 'n': '恐惧之间', 'v': '恐惧之间' }, { 'n': '塞尔达', 'v': '塞尔达' }, { 'n': '马力欧制造2', 'v': '马力欧制造2' }, { 'n': '全境封锁2', 'v': '全境封锁2' }, { 'n': '骑马与砍杀', 'v': '骑马与砍杀' }, { 'n': '人类一败涂地', 'v': '人类一败涂地' }, { 'n': '鬼谷八荒', 'v': '鬼谷八荒' }, { 'n': '无主之地3', 'v': '无主之地3' }, { 'n': '辐射76', 'v': '辐射76' }, { 'n': '全面战争', 'v': '全面战争' }, { 'n': '亿万僵尸', 'v': '亿万僵尸' }, { 'n': '暗黑破坏神2', 'v': '暗黑破坏神2' }, { 'n': '文字游戏', 'v': '文字游戏' }, { 'n': '恋爱模拟游戏', 'v': '恋爱模拟游戏' }, { 'n': '泰拉瑞亚', 'v': '泰拉瑞亚' }, { 'n': '雨中冒险2', 'v': '雨中冒险2' }, { 'n': '游戏速通', 'v': '游戏速通' }, { 'n': '摔角城大乱斗', 'v': '摔角城大乱斗' }, { 'n': '勇敢的哈克', 'v': '勇敢的哈克' }, { 'n': ' 审判系列', 'v': ' 审判系列' }, { 'n': '太吾绘卷', 'v': '太吾绘卷' }, { 'n': '其他单机', 'v': '其他单机' }] }],
- 'cc': [{ 'key': 'area', 'name': '分区', 'value': [{ 'n': '星秀', 'v': '星秀' }, { 'n': '二次元', 'v': '二次元' }, { 'n': '风华正茂', 'v': '风华正茂' }, { 'n': '正能量', 'v': '正能量' }, { 'n': '古风国色', 'v': '古风国色' }, { 'n': '巨好看', 'v': '巨好看' }, { 'n': '语音', 'v': '语音' }, { 'n': '梦幻西游手游', 'v': '梦幻西游手游' }, { 'n': '倩女幽魂手游', 'v': '倩女幽魂手游' }, { 'n': '第五人格', 'v': '第五人格' }, { 'n': '荒野行动', 'v': '荒野行动' }, { 'n': '大话西游手游', 'v': '大话西游手游' }, { 'n': '明日之后', 'v': '明日之后' }, { 'n': '阴阳师', 'v': '阴阳师' }, { 'n': '率土之滨', 'v': '率土之滨' }, { 'n': '决战!平安京', 'v': '决战!平安京' }, { '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': '乱斗西游2', 'v': '乱斗西游2' }, { 'n': '《天下》手游', 'v': '《天下》手游' }, { 'n': '劲舞团', 'v': '劲舞团' }, { 'n': '三少爷的剑', 'v': '三少爷的剑' }, { 'n': '迷雾世界', 'v': '迷雾世界' }, { 'n': '终结战场', 'v': '终结战场' }, { 'n': '永远的7日之都', 'v': '永远的7日之都' }, { 'n': '狼人杀', 'v': '狼人杀' }, { 'n': '魂之轨迹', 'v': '魂之轨迹' }, { 'n': '三国如龙传', 'v': '三国如龙传' }, { 'n': '堡垒前线:破坏与创造', 'v': '堡垒前线:破坏与创造' }, { 'n': '战争怒吼', 'v': '战争怒吼' }, { 'n': '猎魂觉醒', 'v': '猎魂觉醒' }, { 'n': '终结战场PC版', 'v': '终结战场PC版' }, { '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': 'Badlanders', 'v': 'Badlanders' }, { 'n': '风云岛行动', 'v': '风云岛行动' }, { 'n': '一起优诺', 'v': '一起优诺' }, { 'n': '隐世录', 'v': '隐世录' }, { 'n': '洪荒文明', 'v': '洪荒文明' }, { 'n': '密特拉之星', 'v': '密特拉之星' }, { 'n': '阴阳师: 妖怪小班', 'v': '阴阳师: 妖怪小班' }, { 'n': '漫威对决', 'v': '漫威对决' }, { 'n': '月神的迷宫', 'v': '月神的迷宫' }, { 'n': '有杀气童话2', 'v': '有杀气童话2' }, { 'n': '零号任务', 'v': '零号任务' }, { 'n': '蛋仔派对', 'v': '蛋仔派对' }, { 'n': '绝对演绎', 'v': '绝对演绎' }, { 'n': '大航海之路', 'v': '大航海之路' }, { 'n': '大富翁9', 'v': '大富翁9' }, { 'n': '永恒文明', 'v': '永恒文明' }, { 'n': '新游中心', 'v': '新游中心' }, { 'n': '我的世界中国版', 'v': '我的世界中国版' }, { 'n': '梦幻西游电脑版', 'v': '梦幻西游电脑版' }, { 'n': '大话西游2经典版', 'v': '大话西游2经典版' }, { 'n': '永劫无间', 'v': '永劫无间' }, { 'n': '新倩女幽魂', 'v': '新倩女幽魂' }, { 'n': '荒野行动PC模拟器', 'v': '荒野行动PC模拟器' }, { 'n': '天下3', 'v': '天下3' }, { 'n': '一梦江湖', 'v': '一梦江湖' }, { 'n': '大话西游2免费版', 'v': '大话西游2免费版' }, { 'n': '逆水寒', 'v': '逆水寒' }, { 'n': '其他游戏', 'v': '其他游戏' }, { 'n': '超激斗梦境', 'v': '超激斗梦境' }, { 'n': '魔兽世界怀旧服', 'v': '魔兽世界怀旧服' }, { 'n': '镇魔曲', 'v': '镇魔曲' }, { 'n': 'FPS综合游戏', 'v': 'FPS综合游戏' }, { 'n': '绿茵信仰', 'v': '绿茵信仰' }, { 'n': '天谕', 'v': '天谕' }, { 'n': '魔兽世界', 'v': '魔兽世界' }, { 'n': '大唐无双零', 'v': '大唐无双零' }, { 'n': '武魂2', 'v': '武魂2' }, { 'n': '命运2', 'v': '命运2' }, { 'n': '暗黑破坏神', 'v': '暗黑破坏神' }, { 'n': '泰亚史诗', 'v': '泰亚史诗' }, { 'n': '泰亚史诗', 'v': '泰亚史诗' }, { 'n': '战意', 'v': '战意' }, { 'n': '易次元', 'v': '易次元' }, { 'n': '无主之地3', 'v': '无主之地3' }, { 'n': 'EVE Online', 'v': 'EVE Online' }, { 'n': '全面战争:竞技场', 'v': '全面战争:竞技场' }, { 'n': '暴雪游戏', 'v': '暴雪游戏' }, { 'n': '魔兽争霸', 'v': '魔兽争霸' }, { 'n': '大话女儿国', 'v': '大话女儿国' }] }] },
- detailUrl: '/index/liveRoom?platform=fyclass&roomId=fyid',//二级详情拼接链接(json格式用)
+ filter_def:{
+ douyu:{area:'原创IP'},
+ huya:{area:'一起看'},
+ bilibili:{area:'电子榨菜'},
+ cc:{area:'星秀'},
+ douyin:{area:'全部'}
+ },
+ // detailUrl: '/index/liveRoom?platform=fyclass&roomId=fyid',
+ // detailUrl: '/api/live/getRoomInfo?uid=&platform=fyclass&roomId=fyid',
+ detailUrl: 'fyid',
searchUrl: '/api/live/search?platform=all&keyWords=**&isLive=0',
- searchable: 2,
+ // searchable: 2,
+ searchable: 0,
quickSearch: 0,
headers: {
- 'User-Agent': 'PC_UA'
+ 'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
play_parse: true,
- lazy: '',
- double: false,
+ lazy:`js:
+ let purl = input.split("|")[0];
+ let pfrom = input.split("|")[1];
+ let cid = input.split("|")[2];
+ print("purl:" + purl);
+ print("pfrom:" + pfrom);
+ print("cid:" + cid);
+ let dan = 'https://api.bilibili.com/x/v1/dm/list.so?oid=' + cid;
+ if (/bilibili/.test(pfrom)){
+ let result = {};
+ result['parse'] = 0;
+ result['playUrl'] = '';
+ result['url'] = unescape(purl);
+ result['header'] = {
+ Referer: 'https://live.bilibili.com',
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
+ };
+ result['danmaku'] = dan;
+ if (/h5/.test(purl)) {
+ result['contentType'] = '';
+ input = result
+ } else {
+ result['contentType'] = 'video/x-flv';
+ input = result
+ }
+ } else {
+ input = purl
+ }
+ `,
limit: 6,
- 推荐: '*',
- 一级: 'json:data;roomName;roomPic;ownerName;roomId',
- 二级: '*',
- 搜索: '*',
-}
+ 推荐: `js:
+ var d = [];
+ var html = JSON.parse(request(input)).data;
+ html.forEach(it => {
+ d.push({
+ title: it.roomName,
+ desc: it.ownerName,
+ pic_url: it.roomPic,
+ url: it.platForm + '|' + it.roomId
+ });
+ })
+ setResult(d);
+ `,
+ 一级: `js:
+ var d = [];
+ if (MY_CATE === 'douyin') {
+ let area = MY_FL.area || '全部';
+ if (area === '全部') {
+ input = HOST + '/api/live/getRecommendByPlatform?platform=douyin&page='+MY_PAGE+'&size=20';
+ }
+ }
+ var html = JSON.parse(request(input)).data;
+ html.forEach(it => {
+ d.push({
+ title: it.roomName,
+ desc: it.ownerName,
+ pic_url: it.roomPic,
+ url: it.platForm + '|' + it.roomId
+ });
+ })
+ setResult(d);
+ `,
+ 二级: `js:
+ var d = [];
+ if (typeof play_url === "undefined") {
+ var play_url = ""
+ }
+ let platform = input.split("|")[0].replace(HOST+'/','');
+ let roomId = input.split("|")[1];
+ let link = HOST + '/api/live/getRoomInfo?uid=&platform=' + platform + '&roomId=' + roomId;
+ var jo = JSON.parse(request(link)).data;
+ VOD = {
+ vod_id: jo.roomId,
+ vod_name: jo.roomName,
+ vod_pic: jo.roomPic,
+ type_name: jo.platForm.replace("huya", "虎牙").replace("douyu", "斗鱼").replace("cc", "网易CC").replace("bilibili", "哔哩哔哩").replace("douyin", "抖音") + "." + jo.categoryName,
+ vod_content: "🏷分区:" + jo.platForm.replace("huya", "虎牙").replace("douyu", "斗鱼").replace("cc", "网易CC").replace("bilibili", "哔哩哔哩").replace("douyin", "抖音") + "·" + jo.categoryName + " 🏷UP主:" + jo.ownerName + " 🏷人气:" + jo.online + (jo.isLive === 1 ? " 🏷状态:正在直播" : "状态:未开播")
+ };
+ var playurl = JSON.parse(request("http://live.yj1211.work/api/live/getRealUrl?platform=" + jo.platForm + "&roomId=" + jo.roomId)).data;
+ var name = {
+ "OD": "原画",
+ "FD": "流畅",
+ "LD": "标清",
+ "SD": "高清",
+ "HD": "超清",
+ "2K": "2K",
+ "4K": "4K",
+ "FHD": "全高清",
+ "XLD": "极速",
+ "SQ": "普通音质",
+ "HQ": "高音质"
+ };
+ Object.keys(playurl).forEach(function(key) {
+ if (!/ayyuid|to/.test(key)) {
+ d.push({
+ title: name[key],
+ url: playurl[key]
+ })
+ }
+ });
+ VOD.vod_play_from = "选择画质";
+ VOD.vod_play_url = d.map(function(it) {
+ // return it.title + "$" + it.url
+ return it.title + "$" + play_url + urlencode(it.url + "|" + jo.platForm + "|" + jo.roomId)
+ }).join("#");
+ setResult(d)
+ `,
+ 搜索: `js:
+ var d = [];
+ var html = JSON.parse(request(input)).data;
+ html.forEach(it => {
+ d.push({
+ title: it.roomName,
+ desc: it.ownerName,
+ pic_url: it.roomPic,
+ url: it.platForm + '|' + it.roomId
+ });
+ })
+ setResult(d);
+ `,
+}
\ No newline at end of file
diff --git a/JS/js/哔哩影视.js b/JS/js/哔哩影视.js
index d979d70..75c8724 100644
--- a/JS/js/哔哩影视.js
+++ b/JS/js/哔哩影视.js
@@ -1,3 +1,21 @@
+/**
+ * 影视TV 弹幕支持
+ * https://t.me/fongmi_offical/
+ * https://github.com/FongMi/Release/tree/main/apk
+ * Cookie设置
+ * Cookie获取方法 https://ghproxy.net/https://raw.githubusercontent.com/UndCover/PyramidStore/main/list.md
+ * Cookie设置方法1: DR-PY 后台管理界面
+ * CMS后台管理 > 设置中心 > 环境变量 > {"bili_cookie":"XXXXXXX","vmid":"XXXXXX"} > 保存
+ * Cookie设置方法2: 手动替换Cookie
+ * 底下代码 headers的
+ * "Cookie":"$bili_cookie"
+ * 手动替换为
+ * "Cookie":"将获取的Cookie黏贴在这"
+ * 客户端长期Cookie设置教程:
+ * 抓包哔哩手机端搜索access_key,取任意链接里的access_key和appkey在drpy环境变量中增加同名的环境变量即可
+ * 此时哔哩.js这个解析可用于此源的解析线路用
+ */
+
var rule = {
title:'哔哩影视',
host:'https://api.bilibili.com',
@@ -5,7 +23,7 @@ var rule = {
detailUrl:'/pgc/view/web/season?season_id=fyid',
filter_url:'fl={{fl}}',
vmid获取教程:'登录后访问https://api.bilibili.com/x/web-interface/nav,搜索mid就是,cookie需要 bili_jct,DedeUserID,SESSDATA参数',
- searchUrl:'/x/web-interface/search/type?keyword=**&search_type=',
+ searchUrl:'/x/web-interface/search/type?keyword=**&page=fypage&search_type=',
searchable:1,
filterable:1,
quickSearch:0,
@@ -41,7 +59,57 @@ var rule = {
二级:'',
二级:'js:function zh(num){let p="";if(Number(num)>1e8){p=(num/1e8).toFixed(2)+"亿"}else if(Number(num)>1e4){p=(num/1e4).toFixed(2)+"万"}else{p=num}return p}let html=request(input);let jo=JSON.parse(html).result;let id=jo["season_id"];let title=jo["title"];let pic=jo["cover"];let areas=jo["areas"][0]["name"];let typeName=jo["share_sub_title"];let date=jo["publish"]["pub_time"].substr(0,4);let dec=jo["evaluate"];let remark=jo["new_ep"]["desc"];let stat=jo["stat"];let status="弹幕: "+zh(stat["danmakus"])+" 点赞: "+zh(stat["likes"])+" 投币: "+zh(stat["coins"])+" 追番追剧: "+zh(stat["favorites"]);let score=jo.hasOwnProperty("rating")?"评分: "+jo["rating"]["score"]+" "+jo["subtitle"]:"暂无评分"+" "+jo["subtitle"];let vod={vod_id:id,vod_name:title,vod_pic:pic,type_name:typeName,vod_year:date,vod_area:areas,vod_remarks:remark,vod_actor:status,vod_director:score,vod_content:dec};let ja=jo["episodes"];let playurls1=[];let playurls2=[];ja.forEach(function(tmpJo){let eid=tmpJo["id"];let cid=tmpJo["cid"];let link=tmpJo["link"];let part=tmpJo["title"].replace("#","-")+" "+tmpJo["long_title"];playurls1.push(part+"$"+eid+"_"+cid);playurls2.push(part+"$"+link)});let playUrl=playurls1.join("#")+"$$$"+playurls2.join("#");vod["vod_play_from"]="B站$$$bilibili";vod["vod_play_url"]=playUrl;VOD=vod;',
搜索:'',
- 搜索:'js:let url1=input+"media_bangumi";let url2=input+"media_ft";let html=request(url1);let msg=JSON.parse(html).message;if(msg!=="0"){VODS=[{vod_name:KEY+"➢"+msg,vod_id:"no_data",vod_remarks:"别点,缺少bili_cookie",vod_pic:"https://ghproxy.com/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}]}else{let jo1=JSON.parse(html).data;html=request(url2);let jo2=JSON.parse(html).data;let videos=[];let vodList=[];if(jo1["numResults"]===0){vodList=jo2["result"]}else if(jo2["numResults"]===0){vodList=jo1["result"]}else{vodList=jo1["result"].concat(jo2["result"])}vodList.forEach(function(vod){let aid=(vod["season_id"]+"").trim();let title=KEY+"➢"+vod["title"].trim().replace(\'\',"").replace("","");let img=vod["cover"].trim();let remark=vod["index_show"];videos.push({vod_id:aid,vod_name:title,vod_pic:img,vod_remarks:remark})});VODS=videos}',
+ 搜索:'js:let url1=input+"media_bangumi";let url2=input+"media_ft";let html=request(url1);let msg=JSON.parse(html).message;if(msg!=="0"){VODS=[{vod_name:KEY+"➢"+msg,vod_id:"no_data",vod_remarks:"别点,缺少bili_cookie",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}]}else{let jo1=JSON.parse(html).data;html=request(url2);let jo2=JSON.parse(html).data;let videos=[];let vodList=[];if(jo1["numResults"]===0){vodList=jo2["result"]}else if(jo2["numResults"]===0){vodList=jo1["result"]}else{vodList=jo1["result"].concat(jo2["result"])}vodList.forEach(function(vod){let aid=(vod["season_id"]+"").trim();let title=KEY+"➢"+vod["title"].trim().replace(\'\',"").replace("","");let img=vod["cover"].trim();let remark=vod["index_show"];videos.push({vod_id:aid,vod_name:title,vod_pic:img,vod_remarks:remark})});VODS=videos}',
lazy:'',
- lazy:'js:if(/^http/.test(input)){input={jx:1,url:input,parse:0,header:JSON.stringify({"user-agent":"Mozilla/5.0"})}}else{let ids=input.split("_");let result={};let url="https://api.bilibili.com/pgc/player/web/playurl?qn=116&ep_id="+ids[0]+"&cid="+ids[1];let html=request(url);let jRoot=JSON.parse(html);if(jRoot["message"]!=="success"){print("需要大会员权限才能观看");input=""}else{let jo=jRoot["result"];let ja=jo["durl"];let maxSize=-1;let position=-1;ja.forEach(function(tmpJo,i){if(maxSize0){if(position===-1){position=0}url=ja[position]["url"]}result["parse"]=0;result["playUrl"]="";result["url"]=url;result["header"]={Referer:"https://www.bilibili.com","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"};result["contentType"]="video/x-flv";input=result}}',
+ lazy:`js:
+ if (/^http/.test(input)) {
+ input = {
+ jx: 1,
+ url: input,
+ parse: 0,
+ header: JSON.stringify({
+ "user-agent": "Mozilla/5.0"
+ })
+ }
+ } else {
+ let ids = input.split("_");
+ let dan = 'https://api.bilibili.com/x/v1/dm/list.so?oid=' + ids[1];
+ let result = {};
+ let url = "https://api.bilibili.com/pgc/player/web/playurl?qn=116&ep_id=" + ids[0] + "&cid=" + ids[1];
+ let html = request(url);
+ let jRoot = JSON.parse(html);
+ if (jRoot["message"] !== "success") {
+ print("需要大会员权限才能观看");
+ input = ""
+ } else {
+ let jo = jRoot["result"];
+ let ja = jo["durl"];
+ let maxSize = -1;
+ let position = -1;
+ ja.forEach(function(tmpJo, i) {
+ if (maxSize < Number(tmpJo["size"])) {
+ maxSize = Number(tmpJo["size"]);
+ position = i
+ }
+ });
+ let url = "";
+ if (ja.length > 0) {
+ if (position === -1) {
+ position = 0
+ }
+ url = ja[position]["url"]
+ }
+ result["parse"] = 0;
+ result["playUrl"] = "";
+ result["url"] = url;
+ result["header"] = {
+ Referer: "https://www.bilibili.com",
+ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
+ };
+ result["contentType"] = "video/x-flv";
+ result["danmaku"] = dan;
+ input = result
+ }
+ }
+ `,
}
\ No newline at end of file
diff --git a/JS/js/哔哩直播.js b/JS/js/哔哩直播.js
index a801d7b..d29c70b 100644
--- a/JS/js/哔哩直播.js
+++ b/JS/js/哔哩直播.js
@@ -1,65 +1,70 @@
-/* 直播弹幕 -> vod_area:'bililivedanmu'
-目前只有皮皮虾大佬的DMBox, 支持弹幕
-DMBox下载:https://t.me/pipixiawerun
-设置 > 窗口预览 > 开启
-*/
-
-/* Cookie设置
-Cookie获取方法 https://github.com/UndCover/PyramidStore/blob/main/list.md#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9
-
-Cookie设置方法1: DR-PY 后台管理界面
-CMS后台管理 > 设置中心 > 环境变量 > {"bili_cookie":"XXXXXXX","vmid":"XXXXXX"} > 保存
-
-Cookie设置方法2: 手动替换Cookie
-底下代码 headers的
-"Cookie":"$bili_cookie"
-手动替换为
-"Cookie":"将获取的Cookie黏贴在这"
-*/
+/**
+ * 影视TV 弹幕支持
+ * https://t.me/fongmi_offical/
+ * https://github.com/FongMi/Release/tree/main/apk
+ * 皮皮虾DMBox 弹幕支持
+ * 设置 > 窗口预览 > 开启
+ * https://t.me/pipixiawerun
+ * vod_area:'bililivedanmu'
+ * Cookie设置
+ * Cookie获取方法 https://ghproxy.net/https://raw.githubusercontent.com/UndCover/PyramidStore/main/list.md
+ * Cookie设置方法1: DR-PY 后台管理界面
+ * CMS后台管理 > 设置中心 > 环境变量 > {"bili_cookie":"XXXXXXX","vmid":"XXXXXX"} > 保存
+ * Cookie设置方法2: 手动替换Cookie
+ * 底下代码 headers的
+ * "Cookie":"$bili_cookie"
+ * 手动替换为
+ * "Cookie":"将获取的Cookie黏贴在这"
+ */
var rule = {
title:'哔哩直播',
host:'https://api.live.bilibili.com',
homeUrl:'/xlive/web-interface/v1/second/getUserRecommend?page=1&page_size=30&platform=web',//用于"分类获取"和"推荐获取"
url:'/xlive/web-interface/v1/second/getList?platform=web&parent_area_id=fyclass&area_id=fyfilter&sort_type=online&page=fypage',
- class_name:'娱乐&网游&手游&单机游戏&电台&虚拟主播&生活&知识&赛事&购物',
- class_url:'10&2&3&6&1&5&9&11&13&300',
+ class_name:'生活&网游&手游&单机游戏&娱乐&电台&虚拟主播&聊天室&知识&赛事&帮我玩&互动玩法',
+ class_url:'10&2&3&6&1&5&9&14&11&13&301&15',
filterable: 1,
filter_url: '{{fl.area}}',
filter_def:{
- 10:{area:'33'},
+ 10:{area:'624'},
2:{area:'86'},
3:{area:'35'},
6:{area:'236'},
1:{area:'21'},
5:{area:'190'},
- 9:{area:'371'},
+ 9:{area:'744'},
+ 14:{area:'818'},
11:{area:'376'},
- 13:{area:'561'},
- 300:{area:'30000'}
+ 13:{area:'562'},
+ 301:{area:'301000'},
+ 15:{area:'814'}
},
filter: {
- "2":[{"key":"area","name":"分区","value":[{"n":"英雄联盟","v":"86"},{"n":"DOTA2","v":"92"},{"n":"CS:GO","v":"89"},{"n":"APEX英雄","v":"240"},{"n":"永劫无间","v":"666"},{"n":"穿越火线","v":"88"},{"n":"守望先锋","v":"87"},{"n":"吃鸡行动","v":"80"},{"n":"逃离塔科夫","v":"252"},{"n":"传奇","v":"695"},{"n":"DNF","v":"78"},{"n":"生死狙击2","v":"575"},{"n":"洛奇英雄传","v":"599"},{"n":"最终幻想14","v":"102"},{"n":"星际战甲","v":"249"},{"n":"梦三国","v":"710"},{"n":"英魂之刃","v":"690"},{"n":"剑网3","v":"82"},{"n":"铁甲雄兵","v":"691"},{"n":"封印者","v":"300"},{"n":"新天龙八部","v":"653"},{"n":"赛尔号","v":"667"},{"n":"造梦西游","v":"668"},{"n":"洛克王国","v":"669"},{"n":"问道","v":"670"},{"n":"诛仙世界","v":"654"},{"n":"大话西游","v":"652"},{"n":"奇迹MU","v":"683"},{"n":"永恒之塔","v":"684"},{"n":"QQ三国","v":"685"},{"n":"人间地狱","v":"677"},{"n":"VALORANT","v":"329"},{"n":"彩虹岛","v":"686"},{"n":"洛奇","v":"663"},{"n":"跑跑卡丁车","v":"664"},{"n":"星际公民","v":"658"},{"n":"Squad战术小队","v":"659"},{"n":"反恐精英Online","v":"629"},{"n":"风暴奇侠","v":"648"},{"n":"装甲战争","v":"642"},{"n":"失落的方舟","v":"590"},{"n":"阿尔比恩","v":"639"},{"n":"猎杀对决","v":"600"},{"n":"CFHD ","v":"472"},{"n":"骑士精神2","v":"650"},{"n":"超击突破","v":"680"},{"n":"武装突袭","v":"634"},{"n":"300英雄","v":"84"},{"n":"炉石传说","v":"91"},{"n":"剑网3缘起","v":"499"},{"n":"街头篮球","v":"649"},{"n":"综合射击","v":"601"},{"n":"剑灵","v":"505"},{"n":"艾尔之光","v":"651"},{"n":"黑色沙漠","v":"632"},{"n":"天涯明月刀","v":"596"},{"n":"超激斗梦境","v":"519"},{"n":"冒险岛","v":"574"},{"n":"逆战","v":"487"},{"n":"魔兽争霸3","v":"181"},{"n":"QQ飞车","v":"610"},{"n":"魔兽世界","v":"83"},{"n":"FIFA ONLINE 4","v":"388"},{"n":"NBA2KOL2","v":"581"},{"n":"使命召唤:战区","v":"318"},{"n":"VRChat","v":"656"},{"n":"坦克世界","v":"115"},{"n":"战舰世界","v":"248"},{"n":"战争雷霆","v":"316"},{"n":"战意","v":"383"},{"n":"风暴英雄","v":"114"},{"n":"星际争霸2","v":"93"},{"n":"刀塔自走棋","v":"239"},{"n":"堡垒之夜","v":"164"},{"n":"枪神纪","v":"251"},{"n":"三国杀","v":"81"},{"n":"龙之谷","v":"112"},{"n":"古剑奇谭OL","v":"173"},{"n":"幻想全明星","v":"176"},{"n":"怀旧网游","v":"288"},{"n":"新游前瞻","v":"298"},{"n":"星战前夜:晨曦","v":"331"},{"n":"梦幻西游端游","v":"350"},{"n":"流放之路","v":"551"},{"n":"FPS沙盒","v":"633"},{"n":"永恒轮回","v":"459"},{"n":"激战2","v":"607"},{"n":"其他网游","v":"107"}] }],
- "3":[{"key":"area","name":"分区","value":[{"n":"王者荣耀","v":"35"},{"n":"和平精英","v":"256"},{"n":"LOL手游","v":"395"},{"n":"原神","v":"321"},{"n":"第五人格","v":"163"},{"n":"明日方舟","v":"255"},{"n":"哈利波特:魔法觉醒 ","v":"474"},{"n":"幻塔","v":"550"},{"n":"金铲铲之战","v":"514"},{"n":"APEX手游","v":"506"},{"n":"深空之眼","v":"598"},{"n":"无期迷途","v":"675"},{"n":"光遇","v":"687"},{"n":"跃迁旅人","v":"717"},{"n":"香肠派对","v":"689"},{"n":"猫之城","v":"645"},{"n":"玛娜希斯回响","v":"644"},{"n":"使命召唤手游","v":"386"},{"n":"黑色沙漠手游","v":"615"},{"n":"崩坏3","v":"40"},{"n":"游戏王:决斗链接","v":"407"},{"n":"游戏王","v":"303"},{"n":"蛋仔派对","v":"571"},{"n":"阴阳师","v":"36"},{"n":"空之要塞:启航","v":"718"},{"n":"火影忍者手游","v":"292"},{"n":"Fate/GO","v":"37"},{"n":"综合棋牌","v":"354"},{"n":"QQ飞车手游","v":"154"},{"n":"决战!平安京","v":"140"},{"n":"狼人杀","v":"41"},{"n":"三国杀移动版","v":"352"},{"n":"碧蓝航线","v":"113"},{"n":"影之诗","v":"156"},{"n":"明日之后","v":"189"},{"n":"部落冲突:皇室战争","v":"50"},{"n":"奥比岛手游","v":"661"},{"n":"盾之勇者成名录:浪潮","v":"704"},{"n":"雀姬","v":"214"},{"n":"公主连结Re:Dive","v":"330"},{"n":"DNF手游","v":"343"},{"n":"FIFA足球世界","v":"641"},{"n":"BanG Dream","v":"258"},{"n":"荒野乱斗","v":"469"},{"n":"CF手游","v":"333"},{"n":"战双帕弥什","v":"293"},{"n":"天涯明月刀手游","v":"389"},{"n":"解密游戏","v":"42"},{"n":"恋爱养成游戏","v":"576"},{"n":"暗黑破坏神:不朽","v":"492"},{"n":"暗区突围","v":"502"},{"n":"跑跑卡丁车手游","v":"265"},{"n":"非人学园","v":"212"},{"n":"百闻牌","v":"286"},{"n":"猫和老鼠手游","v":"269"},{"n":"坎公骑冠剑","v":"442"},{"n":"忍者必须死3","v":"203"},{"n":"梦幻西游手游","v":"342"},{"n":"航海王热血航线","v":"504"},{"n":"少女前线","v":"39"},{"n":"300大作战","v":"688"},{"n":"少女前线:云图计划","v":"525"},{"n":"漫威超级战争","v":"478"},{"n":"摩尔庄园手游","v":"464"},{"n":"宝可梦大集结","v":"493"},{"n":"小动物之星","v":"473"},{"n":"天地劫:幽城再临","v":"448"},{"n":"漫威对决","v":"511"},{"n":" 东方归言录","v":"538"},{"n":"梦幻模拟战","v":"178"},{"n":"时空猎人3","v":"643"},{"n":"重返帝国","v":"613"},{"n":"休闲小游戏","v":"679"},{"n":"其他手游","v":"98"},{"n":"新游评测","v":"274"}] }],
- "6":[{"key":"area","name":"分区","value":[{"n":"主机游戏","v":"236"},{"n":"我的世界","v":"216"},{"n":"独立游戏","v":"283"},{"n":"怀旧游戏","v":"237"},{"n":"弹幕互动玩法","v":"460"},{"n":"恐怖游戏","v":"276"},{"n":"禁闭求生","v":"707"},{"n":"斯普拉遁3","v":"694"},{"n":"卧龙:苍天陨落","v":"700"},{"n":"使命召唤19","v":"282"},{"n":"异度神剑","v":"665"},{"n":"艾尔登法环","v":"555"},{"n":"聚会游戏","v":"636"},{"n":"哥谭骑士","v":"716"},{"n":"命运2","v":"277"},{"n":"沙石镇时光","v":"630"},{"n":"Dread Hunger","v":"591"},{"n":"红色警戒2","v":"693"},{"n":"失落迷城:群星的诅咒","v":"714"},{"n":"策略游戏","v":"570"},{"n":"战地风云","v":"597"},{"n":"幽灵线:东京","v":"612"},{"n":"糖豆人","v":"357"},{"n":"消逝的光芒2","v":"586"},{"n":"只狼","v":"245"},{"n":"怪物猎人","v":"578"},{"n":"饥荒","v":"218"},{"n":"精灵宝可梦","v":"228"},{"n":"FIFA23","v":"708"},{"n":"暖雪","v":"582"},{"n":"全面战争:战锤3","v":"594"},{"n":"彩虹六号:异种","v":"580"},{"n":"战神","v":"579"},{"n":"FORZA 极限竞速","v":"302"},{"n":"NBA2K","v":"362"},{"n":"帝国时代4","v":"548"},{"n":"光环:无限","v":"559"},{"n":"孤岛惊魂6","v":"537"},{"n":"植物大战僵尸","v":"309"},{"n":"仙剑奇侠传七","v":"540"},{"n":"灵魂筹码","v":"223"},{"n":"格斗游戏","v":"433"},{"n":"荒野大镖客2","v":"226"},{"n":"重生细胞","v":"426"},{"n":"刺客信条","v":"227"},{"n":"恐鬼症","v":"387"},{"n":"以撒","v":"219"},{"n":"双人成行","v":"446"},{"n":"方舟","v":"295"},{"n":"仁王2","v":"313"},{"n":"鬼泣5","v":"244"},{"n":"枪火重生","v":"364"},{"n":"盗贼之海","v":"341"},{"n":"胡闹厨房","v":"507"},{"n":"体育游戏","v":"500"},{"n":"恐惧之间","v":"439"},{"n":"塞尔达","v":"308"},{"n":"马力欧制造2","v":"261"},{"n":"全境封锁2","v":"243"},{"n":"骑马与砍杀","v":"326"},{"n":"人类一败涂地","v":"270"},{"n":"鬼谷八荒","v":"424"},{"n":"无主之地3","v":"273"},{"n":"辐射76","v":"220"},{"n":"全面战争","v":"257"},{"n":"亿万僵尸","v":"463"},{"n":"暗黑破坏神2","v":"535"},{"n":"文字游戏","v":"583"},{"n":"恋爱模拟游戏","v":"592"},{"n":"泰拉瑞亚","v":"593"},{"n":"雨中冒险2","v":"441"},{"n":"游戏速通","v":"678"},{"n":"摔角城大乱斗","v":"681"},{"n":"勇敢的哈克","v":"692"},{"n":" 审判系列","v":"698"},{"n":"其他单机","v":"235"}] }],
- "1":[{"key":"area","name":"分区","value":[{"n":"视频唱见","v":"21"},{"n":"萌宅领域","v":"530"},{"n":"视频聊天","v":"145"},{"n":"舞见","v":"207"},{"n":"情感","v":"706"},{"n":"户外","v":"123"},{"n":"日常","v":"399"}] }],
- "5":[{"key":"area","name":"分区","value":[{"n":"唱见电台","v":"190"},{"n":"聊天电台","v":"192"},{"n":"配音","v":"193"}] }],
- "9":[{"key":"area","name":"分区","value":[{"n":"虚拟主播","v":"371"},{"n":"3D虚拟主播","v":"697"}] }],
- "10":[{"key":"area","name":"分区","value":[{"n":"生活分享","v":"646"},{"n":"运动","v":"628"},{"n":"搞笑","v":"624"},{"n":"手工绘画","v":"627"},{"n":"萌宠","v":"369"},{"n":"美食","v":"367"},{"n":"时尚","v":"378"},{"n":"影音馆","v":"33"}] }],
- "11":[{"key":"area","name":"分区","value":[{"n":"社科法律心理","v":"376"},{"n":"人文历史","v":"702"},{"n":"校园学习","v":"372"},{"n":"职场·技能","v":"377"},{"n":" 科技","v":"375"},{"n":"科学科普","v":"701"},{"n":"时政","v":"715"}] }],
- "13":[{"key":"area","name":"分区","value":[{"n":"游戏赛事","v":"561"},{"n":"体育赛事","v":"562"},{"n":"赛事综合","v":"563"}] }],
- "300":[{"key":"area","name":"分区","value":[{"n":"购物","v":"300000"}] }]
+ "10":[{"key":"area","name":"分区","value":[{"n":"生活分享","v":"646"},{"n":"聊天交友","v":"825"},{"n":"手工绘画","v":"627"},{"n":"情感","v":"623"},{"n":"户外","v":"368"},{"n":"萌宠","v":"369"},{"n":"运动","v":"628"},{"n":"美食","v":"367"},{"n":"时尚","v":"378"},{"n":"电子榨菜","v":"624"},{"n":"沉浸体验","v":"827"}]}],
+ "2":[{"key":"area","name":"分区","value":[{"n":"英雄联盟","v":"86"},{"n":"无畏契约","v":"329"},{"n":"CS:GO","v":"89"},{"n":"APEX英雄","v":"240"},{"n":"永劫无间","v":"666"},{"n":"穿越火线","v":"88"},{"n":"命运方舟","v":"590"},{"n":"DOTA2","v":"92"},{"n":"吃鸡行动","v":"80"},{"n":"逃离塔科夫","v":"252"},{"n":"传奇","v":"695"},{"n":"DNF","v":"78"},{"n":"卡拉彼丘","v":"782"},{"n":"幕后高手","v":"774"},{"n":"生死狙击2","v":"575"},{"n":"洛奇英雄传","v":"599"},{"n":"最终幻想14","v":"102"},{"n":"重生边缘","v":"809"},{"n":"星际战甲","v":"249"},{"n":"梦三国","v":"710"},{"n":"英魂之刃","v":"690"},{"n":"剑网3","v":"82"},{"n":"从军","v":"829"},{"n":"铁甲雄兵","v":"691"},{"n":"封印者","v":"300"},{"n":"新天龙八部","v":"653"},{"n":"赛尔号","v":"667"},{"n":"造梦西游","v":"668"},{"n":"洛克王国","v":"669"},{"n":"问道","v":"670"},{"n":"诛仙世界","v":"654"},{"n":"大话西游","v":"652"},{"n":"奇迹MU","v":"683"},{"n":"永恒之塔","v":"684"},{"n":"QQ三国","v":"685"},{"n":"人间地狱","v":"677"},{"n":"彩虹岛","v":"686"},{"n":"洛奇","v":"663"},{"n":"跑跑卡丁车","v":"664"},{"n":"星际公民","v":"658"},{"n":"Squad战术小队","v":"659"},{"n":"反恐精英Online","v":"629"},{"n":"风暴奇侠","v":"648"},{"n":"创世战车","v":"705"},{"n":"装甲战争","v":"642"},{"n":"守望先锋","v":"87"},{"n":"阿尔比恩","v":"639"},{"n":"猎杀对决","v":"600"},{"n":"CFHD","v":"472"},{"n":"骑士精神2","v":"650"},{"n":"超击突破","v":"680"},{"n":"武装突袭","v":"634"},{"n":"Wayfinder寻路者","v":"773"},{"n":"300英雄","v":"84"},{"n":"炉石传说","v":"91"},{"n":"剑网3缘起","v":"499"},{"n":"街头篮球","v":"649"},{"n":"综合射击","v":"601"},{"n":"剑灵","v":"505"},{"n":"艾尔之光","v":"651"},{"n":"黑色沙漠","v":"632"},{"n":"天涯明月刀","v":"596"},{"n":"超激斗梦境","v":"519"},{"n":"冒险岛","v":"574"},{"n":"逆战","v":"487"},{"n":"魔兽争霸3","v":"181"},{"n":"QQ飞车","v":"610"},{"n":"魔兽世界","v":"83"},{"n":"FIFAONLINE4","v":"388"},{"n":"NBA2KOL2","v":"581"},{"n":"使命召唤:战区","v":"318"},{"n":"VRChat","v":"656"},{"n":"坦克世界","v":"115"},{"n":"战舰世界","v":"248"},{"n":"战争与抉择","v":"729"},{"n":"战争雷霆","v":"316"},{"n":"战意","v":"383"},{"n":"风暴英雄","v":"114"},{"n":"星际争霸2","v":"93"},{"n":"刀塔自走棋","v":"239"},{"n":"堡垒之夜","v":"164"},{"n":"枪神纪","v":"251"},{"n":"三国杀","v":"81"},{"n":"龙之谷","v":"112"},{"n":"古剑奇谭OL","v":"173"},{"n":"幻想全明星","v":"176"},{"n":"怀旧网游","v":"288"},{"n":"新游前瞻","v":"298"},{"n":"星战前夜:晨曦","v":"331"},{"n":"流放之路","v":"551"},{"n":"FPS沙盒","v":"633"},{"n":"永恒轮回","v":"459"},{"n":"激战2","v":"607"},{"n":"其他网游","v":"107"},{"n":"蓝色协议","v":"760"}]}],
+ "3":[{"key":"area","name":"分区","value":[{"n":"王者荣耀","v":"35"},{"n":"和平精英","v":"256"},{"n":"原神","v":"321"},{"n":"崩坏:星穹铁道","v":"549"},{"n":"第五人格","v":"163"},{"n":"LOL手游","v":"395"},{"n":"明日方舟","v":"255"},{"n":"黎明觉醒:生机","v":"479"},{"n":"蛋仔派对","v":"571"},{"n":"冒险岛手游","v":"796"},{"n":"元梦之星","v":"822"},{"n":"闪耀!优俊少女","v":"805"},{"n":"斯露德","v":"797"},{"n":"千年之旅","v":"806"},{"n":"白夜极光","v":"781"},{"n":"逆水寒手游","v":"771"},{"n":"率土之滨","v":"807"},{"n":"月圆之夜","v":"215"},{"n":"哈利波特:魔法觉醒","v":"474"},{"n":"七人传奇","v":"823"},{"n":"幻塔","v":"550"},{"n":"星之破晓","v":"799"},{"n":"金铲铲之战","v":"514"},{"n":"少女前线2:追放","v":"832"},{"n":"深空之眼","v":"598"},{"n":"无期迷途","v":"675"},{"n":"晶核","v":"777"},{"n":"星球重启","v":"828"},{"n":"宿命回响:弦上的叹息","v":"826"},{"n":"光遇","v":"687"},{"n":"桃源深处有人家","v":"792"},{"n":"三国志战棋版","v":"756"},{"n":"战火勋章","v":"765"},{"n":"以闪亮之名","v":"755"},{"n":"尘白禁区","v":"778"},{"n":"古魂","v":"759"},{"n":"鬼泣-巅峰之战","v":"470"},{"n":"奇点时代","v":"762"},{"n":"香肠派对","v":"689"},{"n":"猫之城","v":"645"},{"n":"高能英雄","v":"783"},{"n":"使命召唤手游","v":"386"},{"n":"崩坏3","v":"40"},{"n":"银河境界线","v":"793"},{"n":"蔚蓝档案","v":"787"},{"n":"第七史诗","v":"784"},{"n":"游戏王:决斗链接","v":"407"},{"n":"游戏王","v":"303"},{"n":"JJ斗地主","v":"724"},{"n":"阴阳师","v":"36"},{"n":"欢乐斗地主","v":"719"},{"n":"太空行动","v":"791"},{"n":"空之要塞:启航","v":"718"},{"n":"长安幻想","v":"738"},{"n":"火影忍者手游","v":"292"},{"n":"Fate/GO","v":"37"},{"n":"综合棋牌","v":"354"},{"n":"QQ飞车手游","v":"154"},{"n":"决战!平安京","v":"140"},{"n":"狼人杀","v":"41"},{"n":"三国杀移动版","v":"352"},{"n":"碧蓝航线","v":"113"},{"n":"影之诗","v":"156"},{"n":"明日之后","v":"189"},{"n":"重返未来:1999","v":"761"},{"n":"环行旅舍","v":"786"},{"n":"幻世与冒险","v":"813"},{"n":"部落冲突:皇室战争","v":"50"},{"n":"奥比岛手游","v":"661"},{"n":"弹弹堂","v":"734"},{"n":"雀姬","v":"214"},{"n":"公主连结Re:Dive","v":"330"},{"n":"DNF手游","v":"343"},{"n":"FIFA足球世界","v":"641"},{"n":"BanGDream","v":"258"},{"n":"荒野乱斗","v":"469"},{"n":"CF手游","v":"333"},{"n":"战双帕弥什","v":"293"},{"n":"天涯明月刀手游","v":"389"},{"n":"一拳超人:世界","v":"779"},{"n":"解密游戏","v":"42"},{"n":"恋爱养成游戏","v":"576"},{"n":"暗黑破坏神:不朽","v":"492"},{"n":"暗区突围","v":"502"},{"n":"跑跑卡丁车手游","v":"265"},{"n":"非人学园","v":"212"},{"n":"百闻牌","v":"286"},{"n":"猫和老鼠手游","v":"269"},{"n":"坎公骑冠剑","v":"442"},{"n":"忍者必须死3","v":"203"},{"n":"梦幻西游手游","v":"342"},{"n":"航海王热血航线","v":"504"},{"n":"少女前线","v":"39"},{"n":"300大作战","v":"688"},{"n":"少女前线:云图计划","v":"525"},{"n":"漫威超级战争","v":"478"},{"n":"摩尔庄园手游","v":"464"},{"n":"宝可梦大集结","v":"493"},{"n":"小动物之星","v":"473"},{"n":"天地劫:幽城再临","v":"448"},{"n":"漫威对决","v":"511"},{"n":"东方归言录","v":"538"},{"n":"梦幻模拟战","v":"178"},{"n":"时空猎人3","v":"643"},{"n":"重返帝国","v":"613"},{"n":"休闲小游戏","v":"679"},{"n":"其他手游","v":"98"},{"n":"新游评测","v":"274"},{"n":"山海镜花","v":"821"},{"n":"小冰冰传奇","v":"824"}]}],
+ "6":[{"key":"area","name":"分区","value":[{"n":"主机游戏","v":"236"},{"n":"我的世界","v":"216"},{"n":"独立游戏","v":"283"},{"n":"怀旧游戏","v":"237"},{"n":"猛兽派对","v":"384"},{"n":"赛博朋克2077","v":"402"},{"n":"星空","v":"808"},{"n":"塞尔达传说","v":"308"},{"n":"苍翼:混沌效应","v":"798"},{"n":"命运2","v":"277"},{"n":"收获日3","v":"811"},{"n":"FC24","v":"830"},{"n":"机战佣兵VI境界天火","v":"800"},{"n":"暗黑破坏神Ⅳ","v":"780"},{"n":"匹诺曹的谎言","v":"812"},{"n":"博德之门3","v":"385"},{"n":"绝世好武功","v":"801"},{"n":"恐怖游戏","v":"276"},{"n":"DarkandDarker","v":"795"},{"n":"Warlander","v":"785"},{"n":"FORZA极限竞速","v":"302"},{"n":"边境","v":"763"},{"n":"生化危机","v":"721"},{"n":"最终幻想","v":"328"},{"n":"暗黑破坏神","v":"535"},{"n":"森林之子","v":"751"},{"n":"卧龙:苍天陨落","v":"700"},{"n":"红色警戒2","v":"693"},{"n":"策略游戏","v":"570"},{"n":"禁闭求生","v":"707"},{"n":"战神","v":"579"},{"n":"斯普拉遁3","v":"694"},{"n":"使命召唤19","v":"282"},{"n":"艾尔登法环","v":"555"},{"n":"聚会游戏","v":"636"},{"n":"DreadHunger","v":"591"},{"n":"战地风云","v":"597"},{"n":"糖豆人","v":"357"},{"n":"消逝的光芒2","v":"586"},{"n":"只狼","v":"245"},{"n":"怪物猎人","v":"578"},{"n":"宝可梦集换式卡牌游戏","v":"720"},{"n":"饥荒","v":"218"},{"n":"精灵宝可梦","v":"228"},{"n":"FIFA23","v":"708"},{"n":"全面战争:战锤3","v":"594"},{"n":"NBA2K","v":"362"},{"n":"帝国时代4","v":"548"},{"n":"植物大战僵尸","v":"309"},{"n":"格斗游戏","v":"433"},{"n":"荒野大镖客2","v":"226"},{"n":"重生细胞","v":"426"},{"n":"刺客信条","v":"227"},{"n":"恐鬼症","v":"387"},{"n":"以撒","v":"219"},{"n":"双人成行","v":"446"},{"n":"方舟","v":"295"},{"n":"仁王2","v":"313"},{"n":"鬼泣5","v":"244"},{"n":"枪火重生","v":"364"},{"n":"盗贼之海","v":"341"},{"n":"胡闹厨房","v":"507"},{"n":"体育游戏","v":"500"},{"n":"全境封锁2","v":"243"},{"n":"骑马与砍杀","v":"326"},{"n":"人类一败涂地","v":"270"},{"n":"无主之地3","v":"273"},{"n":"辐射76","v":"220"},{"n":"全面战争","v":"257"},{"n":"文字游戏","v":"583"},{"n":"恋爱模拟游戏","v":"592"},{"n":"泰拉瑞亚","v":"593"},{"n":"游戏速通","v":"678"},{"n":"Roblox","v":"753"},{"n":"雀魂麻将","v":"803"},{"n":"德州电锯","v":"834"},{"n":"其他单机","v":"235"}]}],
+ "1":[{"key":"area","name":"分区","value":[{"n":"聊天室","v":"740"},{"n":"视频唱见","v":"21"},{"n":"萌宅领域","v":"530"},{"n":"视频聊天","v":"145"},{"n":"舞见","v":"207"}]}],
+ "5":[{"key":"area","name":"分区","value":[{"n":"唱见电台","v":"190"},{"n":"聊天电台","v":"192"},{"n":"甜宠电台","v":"817"}]}],
+ "9":[{"key":"area","name":"分区","value":[{"n":"TopStar","v":"743"},{"n":"虚拟Singer","v":"744"},{"n":"虚拟Gamer","v":"745"},{"n":"虚拟声优","v":"746"},{"n":"虚拟日常","v":"371"},{"n":"虚拟APEX","v":"789"},{"n":"虚拟PK","v":"775"}]}],
+ "14":[{"key":"area","name":"分区","value":[{"n":"交友","v":"818"},{"n":"点唱","v":"819"},{"n":"兴趣","v":"820"}]}],
+ "11":[{"key":"area","name":"分区","value":[{"n":"社科法律心理","v":"376"},{"n":"人文历史","v":"702"},{"n":"校园学习","v":"372"},{"n":"职场·技能","v":"377"},{"n":"科技","v":"375"},{"n":"科学科普","v":"701"}]}],
+ "13":[{"key":"area","name":"分区","value":[{"n":"游戏赛事","v":"561"},{"n":"体育赛事","v":"562"},{"n":"赛事综合","v":"563"}]}],
+ "301":[{"key":"area","name":"分区","value":[{"n":"热门帮玩","v":"301000"},{"n":"手游帮玩","v":"301002"},{"n":"网游帮玩","v":"301003"},{"n":"单机帮玩","v":"301004"}]}],
+ "15":[{"key":"area","name":"分区","value":[{"n":"兵临城下","v":"814"},{"n":"功夫狂飙","v":"833"},{"n":"竞技玩法","v":"815"},{"n":"休闲玩法","v":"816"}]}]
},
detailUrl:'https://live.bilibili.com/fyid',//二级详情拼接链接(json格式用)
// detailUrl:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid=fyid&platform=h5&otype=json&quality=0',//二级详情拼接链接(json格式用)
// searchUrl:'/x/web-interface/search/type?__refresh__=true&page=fypage&page_size=42&order=online&platform=pc&highlight=1&single_column=0&keyword=**&search_type=live&dynamic_offset=0&preload=true',
- searchUrl:'https://api.bilibili.com/x/web-interface/search/type?search_type=live&keyword=**&page=1',
+ searchUrl:'https://api.bilibili.com/x/web-interface/search/type?search_type=live&keyword=**&page=fypage',
searchable:2,
quickSearch:0,
headers:{
"User-Agent":"PC_UA",
"Referer": "https://www.bilibili.com",
- "Cookie":"$bili_cookie"
+ // "Cookie":"$bili_cookie"
+ "Cookie":"https://ghproxy.net/https://raw.githubusercontent.com/FongMi/CatVodSpider/main/txt/cookie.txt"
},
timeout:5000,
limit:8,
@@ -67,12 +72,41 @@ var rule = {
// play_json:[{re:'*', json:{jx:0, parse:1,header:JSON.stringify({"user-agent":"Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36"})}}],
// play_json:[{re:'*', json:{jx:0, parse:1,header:JSON.stringify({"user-agent":"uc_ua"})}}],
// play_json:0,
- lazy:"js:let ids=input.split('_');let result={};let iurl='https://api.live.bilibili.com/room/v1/Room/playUrl?cid='+ids[1]+'&'+ids[0];let html=request(iurl);let jRoot=JSON.parse(html);let jo=jRoot['data'];let ja=jo['durl'];let purl='';if(ja.length>0){purl=ja[0]['url']}result['parse']=0;result['playUrl']='';result['url']=unescape(purl);result['header']={Referer:'https://live.bilibili.com','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'};if(/h5/.test(ids[0])){result['contentType']='';input=result}else{result['contentType']='video/x-flv';input=result}",
+ lazy:`js:
+ let ids = input.split('_');
+ let dan = 'https://api.bilibili.com/x/v1/dm/list.so?oid=' + ids[1];
+ let result = {};
+ let iurl = 'https://api.live.bilibili.com/room/v1/Room/playUrl?cid=' + ids[1] + '&' + ids[0];
+ let html = request(iurl);
+ let jRoot = JSON.parse(html);
+ let jo = jRoot['data'];
+ let ja = jo['durl'];
+ let purl = '';
+ if (ja.length > 0) {
+ purl = ja[0]['url']
+ }
+ result['parse'] = 0;
+ result['playUrl'] = '';
+ result['url'] = unescape(purl);
+ result['header'] = {
+ Referer: 'https://live.bilibili.com',
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
+ };
+ result['danmaku'] = dan;
+ if (/h5/.test(ids[0])) {
+ result['contentType'] = '';
+ input = result
+ } else {
+ result['contentType'] = 'video/x-flv';
+ input = result
+ }
+ `,
double:false,
推荐:'*',
一级:'json:data.list;title;system_cover;uname;roomid',
// 二级:'*',
二级:"js:let aid=input.match(/\\/(\\d+)/)[1];log(aid);let html=request('https://api.live.bilibili.com/room/v1/Room/get_info?room_id='+aid);let jo=JSON.parse(html).data;let title=jo['title'];let pic=jo['keyframe'];let desc=jo['description'];let dire=jo['uid'];let typeName=jo['area_name'];let remark='在线人数:'+jo['online'];let vod={vod_id:aid,vod_name:title,vod_pic:pic,type_name:typeName,vod_area:'bililivedanmu',vod_remarks:remark,vod_actor:'直播间id-'+aid,vod_director:dire,vod_content:desc};vod['vod_play_from']='B站';vod['vod_play_url']='flv线路原画$platform=web&quality=4_'+aid+'#flv线路高清$platform=web&quality=3_'+aid+'#h5线路原画$platform=h5&quality=4_'+aid+'#h5线路高清$platform=h5&quality=3_'+aid;VOD=vod;",
// 搜索:'json:data.result.live_room;title;cover;uname;roomid',
- 搜索:'js:let html=request(input);let msg=JSON.parse(html).message;if(msg!=="0"){VODS=[{vod_name:KEY+"➢"+msg,vod_id:"no_data",vod_remarks:"别点,缺少bili_cookie",vod_pic:"https://ghproxy.com/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}]}else{let videos=[];let vodList=JSON.parse(html).data.result.live_room;vodList.forEach(function(vod){let aid=vod["roomid"];let title="直播间:"+vod["title"].replace(\'\',"").replace("","");let img="https:"+vod["user_cover"];let remark=vod["watched_show"]["text_small"]+" "+vod["uname"];videos.push({vod_id:aid,vod_name:title,vod_pic:img,vod_remarks:remark})});VODS=videos}',
+ 搜索:'js:let html=request(input);let msg=JSON.parse(html).message;if(msg!=="0"){VODS=[{vod_name:KEY+"➢"+msg,vod_id:"no_data",vod_remarks:"别点,缺少bili_cookie",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}]}else{let videos=[];let vodList=JSON.parse(html).data.result.live_room;vodList.forEach(function(vod){let aid=vod["roomid"];let title="直播间:"+vod["title"].replace(\'\',"").replace("","");let img="https:"+vod["user_cover"];let remark=vod["watched_show"]["text_small"]+" "+vod["uname"];videos.push({vod_id:aid,vod_name:title,vod_pic:img,vod_remarks:remark})});VODS=videos}',
+ // 预处理:'if(rule_fetch_params.headers.Cookie.startsWith("http")){rule_fetch_params.headers.Cookie=fetch(rule_fetch_params.headers.Cookie);setItem(RULE_CK,cookie)};log(rule_fetch_params.headers.Cookie)',
}
\ No newline at end of file
diff --git a/JS/lib/drpy2.js b/JS/lib/drpy2.js
index 29bb001..d1a99d6 100644
--- a/JS/lib/drpy2.js
+++ b/JS/lib/drpy2.js
@@ -1 +1,2542 @@
-import cheerio from"./cheerio.min.js";import"./crypto-js.js";import 模板 from"./模板.js";import{gbkTool}from"./gbk.js";function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log("预处理执行失败:"+e.message)}}}let rule={};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.48beta16 20231011";const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|下载|剧情|热播";const OCR_RETRY=3;const OCR_API="http://drpy.nokia.press:8028/ocr/drpy/text";if(typeof MY_URL==="undefined"){var MY_URL}var HOST;var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SPECIAL_URL=/^(ftp|magnet|thunder|ws):/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;if(typeof Object.assign!="function"){Object.assign=function(){var target=arguments[0];for(var i=1;ithis.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];globalThis.encodeUrl=urlencode;globalThis.urlencode=urlencode;function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1];result=result.replace(/^['|"](.*)['|"]$/,"$1")}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)&&!SPECIAL_URL.test(ret)){if(/http/.test(ret)){ret=ret.substr(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html=request(OCR_API,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true);code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cntit.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie,"User-Agent":MOBILE_UA},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function require(url){eval(request(url))}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}if(!fetch_params){fetch_params={}}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj.method="POST";return request(url,obj)}fetch=request;print=function(data){data=data||"";if(typeof data=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;print("宝塔验证访问链接:"+url);html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i=3){try{let html=getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p[0]);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){content=_pdfh(item2,p6)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表双层定位处理发生错误:"+e.message)}}}}else{let items=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){content=_pdfh(item,p5)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表单层定位处理发生错误:"+e.message)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print("合并不同分类对应的默认筛选出错:"+e.message)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl});url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;let vod_name=_pdfh(it,p[1]).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p[2],MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}d.push({vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");let url=searchObj.searchUrl.replaceAll("**",searchObj.wd);if(searchObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(searchObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",searchObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",searchObj.pg)}}MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{html=getHtml(MY_URL)}if(html){if(/系统安全验证|输入验证码/.test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}let list=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);list.forEach(it=>{let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){content=_pdfh(it,p5)}else{content=""}let vod_id=link;let vod_name=_pdfh(it,p1).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p2,MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}let ob={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print("搜索发生错误:"+e.message);return"{}"}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let orId=detailObj.orId;let vod_name="片名";let vod_pic="";let vod_id=orId;if(rule.二级==="*"){let extra=orId.split("@@");vod_name=extra.length>1?extra[1]:vod_name;vod_pic=extra.length>2?extra[2]:vod_pic}let vod={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,type_name:"类型",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}if(p==="*"){vod.vod_play_from="道长在线";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL.split("@@")[0]}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""))}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["道长在线"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print("格式化LISTS发生错误:"+e.message)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print("js执行lists: 发生错误:"+e.message)}}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL)}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);vod=vodDeal(vod);return JSON.stringify({list:[vod]})}function get_tab_index(vod){let obj={};vod.vod_play_from.split("$$$").forEach((it,index)=>{obj[it]=index});return obj}function vodDeal(vod){let vod_play_from=vod.vod_play_from.split("$$$");let vod_play_url=vod.vod_play_url.split("$$$");let tab_removed_list=vod_play_from;let tab_ordered_list=vod_play_from;let tab_renamed_list=vod_play_from;let tab_list=vod_play_from;let play_ordered_list=vod_play_url;if(rule.tab_remove&&rule.tab_remove.length>0||rule.tab_order&&rule.tab_order.length>0){let tab_index_dict=get_tab_index(vod);if(rule.tab_remove&&rule.tab_remove.length>0){tab_removed_list=vod_play_from.filter(it=>!rule.tab_remove.includes(it));tab_list=tab_removed_list}if(rule.tab_order&&rule.tab_order.length>0){let tab_order=rule.tab_order;tab_ordered_list=tab_removed_list.sort((a,b)=>{return(tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a))-(tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))});tab_list=tab_ordered_list}play_ordered_list=tab_list.map(it=>vod_play_url[tab_index_dict[it]])}if(rule.tab_rename&&typeof rule.tab_rename==="object"&Object.keys(rule.tab_rename).length>0){tab_renamed_list=tab_list.map(it=>rule.tab_rename[it]||it);tab_list=tab_renamed_list}vod.vod_play_from=tab_list.join("$$$");vod.vod_play_url=play_ordered_list.join("$$$");return vod}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;let common_play={parse:1,url:input,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.replace("js:","").trim();print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:1,jx:tellIsJx(input),url:input}}catch(e){print("js免嗅错误:"+e.message);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function proxyParse(proxyObj){var input=proxyObj.params;if(proxyObj.proxy_rule){log("准备执行本地代理规则:\n"+proxyObj.proxy_rule);try{eval(proxyObj.proxy_rule);if(input&&input!==proxyObj.params&&Array.isArray(input)&&input.length===3){return input}else{return[404,"text/plain","Not Found"]}}catch(e){return[500,"text/plain","代理规则错误:"+e.message]}}else{return[404,"text/plain","Not Found"]}}function isVideoParse(isVideoObj){var input=isVideoObj.url;if(!isVideoObj.t){let re_matcher=new RegExp(isVideoObj.isVideo,"i");return re_matcher.test(input)}else{try{eval(isVideoObj.isVideo);if(typeof input==="boolean"){return input}else{return false}}catch(e){log("执行嗅探规则发生错误:"+e.message);return false}}}function init(ext){console.log("init");try{let muban=模板.getMubans();if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){if(ext.startsWith("http")){let js=request(ext,{method:"GET"});if(js){eval(js.replace("var rule","rule"))}}else{eval(ext.replace("var rule","rule"))}}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.host=(rule.host||"").rstrip("/");HOST=rule.host;if(rule.hostJs){console.log(`检测到hostJs,准备执行...`);try{eval(rule.hostJs);rule.host=HOST.rstrip("/")}catch(e){console.log(`执行${rule.hostJs}获取host发生错误:`+e.message)}}rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}if(rule.searchUrl.includes("[")&&rule.searchUrl.includes("]")){let u1=rule.searchUrl.split("[")[0];let u2=rule.searchUrl.split("[")[1].split("]")[0];rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.searchUrl}else{rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl}rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};rule.proxy_rule=rule.hasOwnProperty("proxy_rule")?rule.proxy_rule:"";rule.sniffer=rule.hasOwnProperty("sniffer")?rule.sniffer:"";rule.sniffer=!!(rule.sniffer&&rule.sniffer!=="0"&&rule.sniffer!=="false");rule.isVideo=rule.hasOwnProperty("isVideo")?rule.isVideo:"";rule.tab_remove=rule.hasOwnProperty("tab_remove")?rule.tab_remove:[];rule.tab_order=rule.hasOwnProperty("tab_order")?rule.tab_order:[];rule.tab_rename=rule.hasOwnProperty("tab_rename")?rule.tab_rename:{};if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}else if(k.toLowerCase()==="cookie"){let v=rule.headers[k];if(v&&v.startsWith("http")){console.log(v);try{v=fetch(v);console.log(v);rule.headers[k]=v}catch(e){console.log(`从${v}获取cookie发生错误:`+e.message)}}}}}catch(e){console.log("处理headers发生错误:"+e.message)}}rule_fetch_params={headers:rule.headers||false,timeout:rule.timeout,encoding:rule.encoding};oheaders=rule.headers||{};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);pre();init_test()}catch(e){console.log("init_test发生错误:"+e.message)}}let homeHtmlCache=undefined;function home(filter){console.log("home");let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:rule.class_parse||"",cate_exclude:rule.cate_exclude};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";log("orId:"+orId);if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url.split("@@")[0];let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,"二级访问前":rule.二级访问前,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick,pg){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:pg||1,quick:quick};return searchParse(searchObj)}function proxy(params){if(rule.proxy_rule&&rule.proxy_rule.trim()){rule.proxy_rule=rule.proxy_rule.trim()}if(rule.proxy_rule.startsWith("js:")){rule.proxy_rule=rule.proxy_rule.replace("js:","")}let proxyObj={params:params,proxy_rule:rule.proxy_rule};return proxyParse(proxyObj)}function sniffer(){let enable_sniffer=rule.sniffer||false;if(enable_sniffer){log("开始执行辅助嗅探代理规则...")}return enable_sniffer}function isVideo(url){let t=0;let is_video;if(rule.isVideo&&rule.isVideo.trim()){is_video=rule.isVideo.trim()}if(is_video.startsWith("js:")){is_video=is_video.replace("js:","");t=1}let isVideoObj={url:url,isVideo:is_video,t:t};let result=isVideoParse(isVideoObj);if(result){log("成功执行辅助嗅探规则并检测到视频地址:\n"+rule.isVideo)}return result}function DRPY(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo}}export default{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,DRPY:DRPY};
\ No newline at end of file
+import cheerio from 'assets://js/lib/cheerio.min.js';
+import 'assets://js/lib/crypto-js.js';
+import 模板 from"../js/模板.js"
+import {gbkTool} from './gbk.js'
+// import './rsa.js'
+
+// import cheerio from "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/cheerio.min.js";
+// import "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/crypto-js.js";
+// import 模板 from"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/js/模板.js";
+// import {gbkTool} from 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/gbk.js'
+
+function init_test(){
+ // console.log(typeof(CryptoJS));
+ console.log("init_test_start");
+ // print(模板);
+ // print(typeof(模板.getMubans));
+ console.log("当前版本号:"+VERSION);
+ console.log(RKEY);
+ console.log(JSON.stringify(rule));
+ console.log("init_test_end");
+
+ // console.log(typeof (CryptoJS));
+ // console.log(typeof (JSEncrypt));
+ // var publicKey = "-----BEGIN PUBLIC KEY-----\n" +
+ // "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTTt5d1LYtIxiW9ekKFBVonFOT\n" +
+ // "XJHv4PY4xCDLPYbHWRKa/mRO7J11OJX+cR7bqzNq6uxH1W339wV\n" +
+ // "lLP/x3Rl1RBh4prj0eYOEIsDVTvLTJONKazRtQrZ7yzSZ69o/3CQv\n" +
+ // "ex6kb4js+9zho4U9fwIDAQAB\n" +
+ // "-----END PUBLIC KEY-----";
+ // var text = '你好';
+ // const encryptor = new JSEncrypt();
+ // console.log(typeof (encryptor.setPublicKey));
+ // console.log(typeof (encryptor.encrypt));
+ // encryptor.setPublicKey(publicKey) // 设置公钥
+ // var str = encryptor.encrypt(text) // 对数据进行加密
+ // console.log("加密数据:" + str);
+ // log('rsax:'+typeof(rsax));
+ // log('rsaX:'+typeof(rsaX));
+ // let data = base64Encode('你好');
+ // let publicKey = 'dzyyds';
+ // console.log(typeof (RSA.encode));
+ // let encryptBase64Data = RSA.encode(data,publicKey);
+ // log('encryptBase64Data:'+encryptBase64Data);
+ // let str = RSA.decode(data,publicKey);
+ // log('str:'+str);
+}
+
+/**
+ * 执行预处理代码
+ */
+function pre(){
+ if(typeof(rule.预处理) === 'string' && rule.预处理 && rule.预处理.trim()){
+ let code = rule.预处理.trim();
+ console.log("执行预处理代码:"+code);
+ if(code.startsWith('js:')){
+ code = code.replace('js:','');
+ }
+ try {
+ // code里可以进行get 或者 post请求cookie并改变rule.headers 里的cookie
+ // 直接操作 rule_fetch_params 这个变量 .headers.Cookie
+ eval(code);
+ }catch (e) {
+ console.log('预处理执行失败:'+e.message);
+ }
+ }
+}
+
+let rule = {};
+let vercode = typeof(pdfl) ==='function'?'drpy2.1':'drpy2';
+const VERSION = vercode+' 3.9.48beta16 20231011';
+/** 已知问题记录
+ * 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下,支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼,最新的文件发现这问题已经解决了]
+ * Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下)
+ * 2.import es6py.js但是里面的函数没有被装载进来.比如drpy规则报错setResult2 is undefiend(合并文件了可以不管了)
+ * 3.无法重复导入cheerio(怎么解决drpy和parseTag里都需要导入cheerio的问题) 无法在副文件导入cheerio (现在是全部放在drpy一个文件里了,凑合解决?)
+ * 4.有个错误不知道哪儿来的 executeScript: com.quickjs.JSObject$Undefined cannot be cast to java.lang.String 在 点击选集播放打印init_test_end后面打印(貌似不影响使用)
+ * 5.需要实现 stringify 函数,比起JSON.strifngify函数,它会原封不动保留中文不会编码unicode
+ * 6.base64Encode,base64Decode,md5函数还没有实现 (抄影魔代码实现了)
+ * 7.eval(getCryptoJS());还没有实现 (可以空实现了,以后遇到能忽略)
+ * done: jsp:{pdfa,pdfh,pd},json:{pdfa,pdfh,pd},jq:{pdfa,pdfh,pd}
+ * 8.req函数不支持传递字符串的data参数 {'content-type':'text/plain'} 类型数据,因此无法直接调用alist的ocr接口
+ * * 电脑看日志调试
+ adb tcpip 5555
+ adb connect 192.168.10.192
+ adb devices -l
+ adb logcat -c
+ adb logcat | grep -i QuickJS
+ adb logcat -c -b events
+ adb logcat -c -b main -b events -b radio -b system
+ adb logcat > 2.log DRPY:E | grep -i QuickJS
+ * **/
+
+
+/*** 以下是内置变量和解析方法 **/
+const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36';
+const PC_UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36';
+const UA = 'Mozilla/5.0';
+const UC_UA = 'Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36';
+const IOS_UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1';
+const RULE_CK = 'cookie'; // 源cookie的key值
+// const KEY = typeof(key)!=='undefined'&&key?key:'drpy_' + (rule.title || rule.host); // 源的唯一标识
+const CATE_EXCLUDE = '首页|留言|APP|下载|资讯|新闻|动态';
+const TAB_EXCLUDE = '猜你|喜欢|下载|剧情|热播';
+const OCR_RETRY = 3;//ocr验证重试次数
+// const OCR_API = 'http://dm.mudery.com:10000';//ocr在线识别接口
+// const OCR_API = 'http://192.168.3.239:5705/parse/ocr';//ocr在线识别接口
+// const OCR_API = 'http://cms.nokia.press/parse/ocr';//ocr在线识别接口
+// const OCR_API = 'http://cms.nokia.press:5707/parse/ocr';//ocr在线识别接口
+const OCR_API = 'http://drpy.nokia.press:8028/ocr/drpy/text';//ocr在线识别接口
+if(typeof(MY_URL)==='undefined'){
+ var MY_URL; // 全局注入变量,pd函数需要
+}
+var HOST;
+var RKEY; // 源的唯一标识
+var fetch;
+var print;
+var log;
+var rule_fetch_params;
+var fetch_params; // 每个位置单独的
+var oheaders;
+// var play_url; // 二级详情页注入变量,为了适配js模式0 (不在这里定义了,直接二级里定义了个空字符串)
+var _pdfh;
+var _pdfa;
+var _pd;
+// const DOM_CHECK_ATTR = ['url', 'src', 'href', 'data-original', 'data-src'];
+const DOM_CHECK_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/;
+// 过滤特殊链接,不走urlJoin
+const SPECIAL_URL = /^(ftp|magnet|thunder|ws):/;
+const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/; // 不自动加eq下标索引
+const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/; // 需要自动urljoin的属性
+const SELECT_REGEX = /:eq|:lt|:gt|#/g;
+const SELECT_REGEX_A = /:eq|:lt|:gt/g;
+
+/**
+ es6py扩展
+ */
+if (typeof Object.assign != 'function') {
+ Object.assign = function () {
+ var target = arguments[0];
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+ return target;
+ };
+}
+if (!String.prototype.includes) {
+ String.prototype.includes = function (search, start) {
+ if (typeof start !== 'number') {
+ start = 0;
+ }
+
+ if (start + search.length > this.length) {
+ return false;
+ } else {
+ return this.indexOf(search, start) !== -1;
+ }
+ };
+}
+
+if (!Array.prototype.includes) {
+ Object.defineProperty(Array.prototype, 'includes', {
+ value: function (searchElement, fromIndex) {
+
+ if (this == null) {//this是空或者未定义,抛出错误
+ throw new TypeError('"this" is null or not defined');
+ }
+
+ var o = Object(this);//将this转变成对象
+ var len = o.length >>> 0;//无符号右移0位,获取对象length属性,如果未定义就会变成0
+
+ if (len === 0) {//length为0直接返回false未找到目标值
+ return false;
+ }
+
+ var n = fromIndex | 0;//查找起始索引
+ var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);//计算正确起始索引,因为有可能是负值
+
+ while (k < len) {//从起始索引处开始循环
+ if (o[k] === searchElement) {//如果某一位置与寻找目标相等,返回true,找到了
+ return true;
+ }
+ k++;
+ }
+ return false;//未找到,返回false
+ }
+ });
+}
+if (typeof String.prototype.startsWith != 'function') {
+ String.prototype.startsWith = function (prefix){
+ return this.slice(0, prefix.length) === prefix;
+ };
+}
+if (typeof String.prototype.endsWith != 'function') {
+ String.prototype.endsWith = function(suffix) {
+ return this.indexOf(suffix, this.length - suffix.length) !== -1;
+ };
+}
+Object.prototype.myValues=function(obj){
+ if(obj ==null) {
+ throw new TypeError("Cannot convert undefined or null to object");
+ }
+ var res=[]
+ for(var k in obj){
+ if(obj.hasOwnProperty(k)){//需判断是否是本身的属性
+ res.push(obj[k]);
+ }
+ }
+ return res;
+}
+if (typeof Object.prototype.values != 'function') {
+ Object.prototype.values=function(obj){
+ if(obj ==null) {
+ throw new TypeError("Cannot convert undefined or null to object");
+ }
+ var res=[]
+ for(var k in obj){
+ if(obj.hasOwnProperty(k)){//需判断是否是本身的属性
+ res.push(obj[k]);
+ }
+ }
+ return res;
+ }
+}
+if (typeof Array.prototype.join != 'function') {
+ Array.prototype.join = function (emoji) {
+ // emoji = emoji||',';
+ emoji = emoji||'';
+ let self = this;
+ let str = "";
+ let i = 0;
+ if (!Array.isArray(self)) {throw String(self)+'is not Array'}
+ if(self.length===0){return ''}
+ if (self.length === 1){return String(self[0])}
+ i = 1;
+ str = this[0];
+ for (; i < self.length; i++) {
+ str += String(emoji)+String(self[i]);
+ }
+ return str;
+ };
+}
+
+String.prototype.rstrip = function (chars) {
+ let regex = new RegExp(chars + "$");
+ return this.replace(regex, "");
+};
+
+Array.prototype.append = Array.prototype.push;
+String.prototype.strip = String.prototype.trim;
+function 是否正版(vipUrl){
+ let flag = new RegExp('qq\.com|iqiyi\.com|youku\.com|mgtv\.com|bilibili\.com|sohu\.com|ixigua\.com|pptv\.com|miguvideo\.com|le\.com|1905\.com|fun\.tv');
+ return flag.test(vipUrl);
+}
+function urlDeal(vipUrl){
+ if(!vipUrl){
+ return ''
+ }
+ if(!是否正版(vipUrl)){
+ return vipUrl
+ }
+ if(!/miguvideo/.test(vipUrl)){
+ vipUrl=vipUrl.split('#')[0].split('?')[0];
+ }
+ return vipUrl
+}
+function setResult(d){
+ if(!Array.isArray(d)){
+ return []
+ }
+ VODS = [];
+ // print(d);
+ d.forEach(function (it){
+ let obj = {
+ vod_id:it.url||'',
+ vod_name: it.title||'',
+ vod_remarks: it.desc||'',
+ vod_content: it.content||'',
+ vod_pic: it.pic_url||it.img||'',
+ };
+ let keys = Object.keys(it);
+ if(keys.includes('tname')){
+ obj.type_name = it.tname||'';
+ }
+ if(keys.includes('tid')){
+ obj.type_id = it.tid||'';
+ }
+ if(keys.includes('year')){
+ obj.vod_year = it.year||'';
+ }
+ if(keys.includes('actor')){
+ obj.vod_actor = it.actor||'';
+ }
+ if(keys.includes('director')){
+ obj.vod_director = it.director||'';
+ }
+ if(keys.includes('area')){
+ obj.vod_area = it.area||'';
+ }
+ VODS.push(obj);
+ });
+ return VODS
+}
+function setResult2(res){
+ VODS = res.list||[];
+ return VODS
+}
+function setHomeResult(res){
+ if(!res||typeof(res)!=='object'){
+ return []
+ }
+ return setResult(res.list);
+}
+// 猫了个咪
+function rc(js) {
+ if (js === 'maomi_aes.js') {
+ var a = CryptoJS.enc.Utf8.parse("625222f9149e961d");
+ var t = CryptoJS.enc.Utf8.parse("5efdtf6060e2o330");
+ return {
+ De: function (word) {
+ word = CryptoJS.enc.Hex.parse(word)
+ return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, {
+ iv: t,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8)
+ },
+ En: function (word) {
+ // print(a);
+ // print(word);
+ var Encrypted = CryptoJS.AES.encrypt(word, a, {
+ iv: t,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ });
+ return Encrypted.ciphertext.toString();
+ }
+ };
+ }
+ return {};
+}
+
+// 千万不要用for in 推荐 forEach (for in 会打乱顺序)
+//猫函数
+function maoss(jxurl, ref, key) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ eval(getCryptoJS());
+ try {
+ var getVideoInfo = function (text) {
+ return CryptoJS.AES.decrypt(text, key, {iv: iv, padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);
+ };
+ var token_key = key == undefined ? 'dvyYRQlnPRCMdQSe' : key;
+ if (ref) {
+ var html = request(jxurl, {
+ headers: {
+ 'Referer': ref
+ }
+ });
+ } else {
+ var html = request(jxurl);
+ }
+ // print(html);
+ if (html.indexOf('&btwaf=') != -1) {
+ html = request(jxurl + '&btwaf' + html.match(/&btwaf(.*?)"/)[1], {
+ headers: {
+ 'Referer': ref
+ }
+ })
+ }
+ var token_iv = html.split('_token = "')[1].split('"')[0];
+ var key = CryptoJS.enc.Utf8.parse(token_key);
+ var iv = CryptoJS.enc.Utf8.parse(token_iv);
+ // log("iv:"+iv);
+ // log(html);
+ // print(key);
+ // print(iv);
+ eval(html.match(/var config = {[\s\S]*?}/)[0] + '');
+ // config.url = config.url.replace(/,/g,'');
+ // print(config.url);
+ if (!config.url.startsWith('http')) {
+ //config.url = decodeURIComponent(AES(config.url, key, iv));
+ config.url = CryptoJS.AES.decrypt(config.url, key, {
+ iv: iv,
+ padding: CryptoJS.pad.Pkcs7
+ }).toString(CryptoJS.enc.Utf8)
+ }
+ return config.url;
+ } catch (e) {
+ return '';
+ }
+}
+
+function urlencode (str) {
+ str = (str + '').toString();
+ return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
+ replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
+}
+
+function base64Encode(text){
+ return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text));
+ // return text
+}
+
+function base64Decode(text){
+ return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text));
+ // return text
+}
+
+function md5(text) {
+ return CryptoJS.MD5(text).toString();
+}
+
+/**
+ * 字符串按指定编码
+ * @param input
+ * @param encoding
+ * @returns {*}
+ */
+function encodeStr(input,encoding){
+ encoding = encoding||'gbk';
+ if(encoding.startsWith('gb')){
+ const strTool = gbkTool();
+ input = strTool.encode(input);
+ }
+ return input
+}
+
+/**
+ * 字符串指定解码
+ * @param input
+ * @param encoding
+ * @returns {*}
+ */
+function decodeStr(input,encoding){
+ encoding = encoding||'gbk';
+ if(encoding.startsWith('gb')){
+ const strTool = gbkTool();
+ input = strTool.decode(input);
+ }
+ return input
+}
+
+function getCryptoJS(){
+ // return request('https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/crypto-hiker.js');
+ return 'console.log("CryptoJS已装载");'
+}
+
+// 封装的RSA加解密类
+const RSA = {
+ encode:function (data,key,option){
+ // log('encode');
+ if(typeof(rsaEncrypt)==='function'){
+ if(!option||typeof(option)!=='object'){
+ return rsaEncrypt(data,key);
+ }else{
+ return rsaEncrypt(data,key,option);
+ }
+ }else{
+ return false
+ }
+ },
+ decode:function (data,key,option){
+ // log('decode');
+ if(typeof(rsaDecrypt)==='function'){
+ if(!option||typeof(option)!=='object'){
+ return rsaDecrypt(data,key);
+ }else{
+ return rsaDecrypt(data,key,option);
+ }
+ }else{
+ return false
+ }
+ }
+};
+
+/**
+ * 获取壳子返回的代理地址
+ * @returns {string|*}
+ */
+function getProxyUrl(){
+ if(typeof(getProxy)==='function'){//判断壳子里有getProxy函数就执行取返回结果。否则取默认的本地
+ return getProxy(true)
+ }else{
+ return 'http://127.0.0.1:9978/proxy?do=js'
+ }
+}
+
+/**
+ * 强制正序算法
+ * @param lists 待正序列表
+ * @param key 正序键
+ * @param option 单个元素处理函数
+ * @returns {*}
+ */
+function forceOrder(lists,key,option){
+ let start = Math.floor(lists.length/2);
+ let end = Math.min(lists.length-1,start+1);
+ if(start >= end){
+ return lists;
+ }
+ let first = lists[start];
+ let second = lists[end];
+ if(key){
+ try {
+ first = first[key];
+ second = second[key];
+ }catch (e) {}
+ }
+ if(option && typeof(option)==='function'){
+ try {
+ first = option(first);
+ second = option(second);
+ }catch (e) {}
+ }
+ first+='';
+ second+='';
+ // console.log(first,second);
+ if(first.match(/(\d+)/)&&second.match(/(\d+)/)){
+ let num1 = Number(first.match(/(\d+)/)[1]);
+ let num2 = Number(second.match(/(\d+)/)[1]);
+ if (num1 > num2){
+ lists.reverse();
+ }
+ }
+ return lists
+}
+
+let VODS = [];// 一级或者搜索需要的数据列表
+let VOD = {};// 二级的单个数据
+let TABS = [];// 二级的自定义线路列表 如: TABS=['道长在线','道长在线2']
+let LISTS = [];// 二级的自定义选集播放列表 如: LISTS=[['第1集$http://1.mp4','第2集$http://2.mp4'],['第3集$http://1.mp4','第4集$http://2.mp4']]
+globalThis.encodeUrl = urlencode;
+globalThis.urlencode = urlencode;
+
+
+
+/**
+ * url拼接
+ * @param fromPath 初始当前页面url
+ * @param nowPath 相对当前页面url
+ * @returns {*}
+ */
+function urljoin(fromPath, nowPath) {
+ fromPath = fromPath||'';
+ nowPath = nowPath||'';
+ return joinUrl(fromPath, nowPath);
+ // try {
+ // // import Uri from './uri.min.js';
+ // // var Uri = require('./uri.min.js');
+ // // eval(request('https://cdn.bootcdn.net/ajax/libs/URI.js/1.19.11/URI.min.js'));
+ // // let new_uri = URI(nowPath, fromPath);
+
+ // let new_uri = Uri(nowPath, fromPath);
+ // new_uri = new_uri.toString();
+ // // console.log(new_uri);
+ // // return fromPath + nowPath
+ // return new_uri
+ // }
+ // catch (e) {
+ // console.log('urljoin发生错误:'+e.message);
+ // if(nowPath.startsWith('http')){
+ // return nowPath
+ // }if(nowPath.startsWith('/')){
+ // return getHome(fromPath)+nowPath
+ // }
+ // return fromPath+nowPath
+ // }
+}
+var urljoin2 = urljoin;
+
+// 内置 pdfh,pdfa,pd
+const defaultParser = {
+ pdfh:pdfh,
+ pdfa:pdfa,
+ pd:pd,
+};
+
+
+/**
+ * pdfh原版优化,能取style属性里的图片链接
+ * @param html 源码
+ * @param parse 解析表达式
+ * @returns {string|*}
+ */
+function pdfh2(html,parse){
+ let html2 = html;
+ try {
+ if(typeof(html)!=='string'){
+ html2 = html.rr(html.ele).toString();
+ }
+ }catch (e) {
+ print('html对象转文本发生了错误:'+e.message);
+ }
+ let result = defaultParser.pdfh(html2,parse);
+ let option = parse.includes('&&')?parse.split('&&').slice(-1)[0]:parse.split(' ').slice(-1)[0];
+ if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){
+ try {
+ result = result.match(/url\((.*?)\)/)[1];
+ // 2023/07/28新增 style取内部链接自动去除首尾单双引号
+ result = result.replace(/^['|"](.*)['|"]$/, "$1");
+ }catch (e) {}
+ }
+ return result
+}
+
+/**
+ * pdfa原版优化,可以转换jq的html对象
+ * @param html
+ * @param parse
+ * @returns {*}
+ */
+function pdfa2(html,parse){
+ let html2 = html;
+ try {
+ if(typeof(html)!=='string'){
+ html2 = html.rr(html.ele).toString();
+ }
+ }catch (e) {
+ print('html对象转文本发生了错误:'+e.message);
+ }
+ return defaultParser.pdfa(html2,parse);
+}
+
+/**
+ * pd原版方法重写-增加自动urljoin
+ * @param html
+ * @param parse
+ * @param uri
+ * @returns {*}
+ */
+function pd2(html,parse,uri){
+ let ret = pdfh2(html,parse);
+ if(typeof(uri)==='undefined'||!uri){
+ uri = '';
+ }
+ if(DOM_CHECK_ATTR.test(parse) && !SPECIAL_URL.test(ret)){
+ if(/http/.test(ret)){
+ ret = ret.substr(ret.indexOf('http'));
+ }else{
+ ret = urljoin(MY_URL,ret)
+ }
+ }
+ // MY_URL = getItem('MY_URL',MY_URL);
+ // console.log(`规则${RKEY}打印MY_URL:${MY_URL},uri:${uri}`);
+ return ret
+}
+
+const parseTags = {
+ jsp:{
+ pdfh:pdfh2,
+ pdfa:pdfa2,
+ pd:pd2,
+ },
+ json:{
+ pdfh(html, parse) {
+ if (!parse || !parse.trim()){
+ return '';
+ }
+ if (typeof(html) === 'string'){
+ // print('jsonpath:pdfh字符串转dict');
+ html = JSON.parse(html);
+ }
+ parse = parse.trim();
+ if (!parse.startsWith('$.')){
+ parse = '$.' + parse;
+ }
+ parse = parse.split('||');
+ for (let ps of parse) {
+ let ret = cheerio.jp(ps, html);
+ if (Array.isArray(ret)){
+ ret = ret[0] || '';
+ } else{
+ ret = ret || ''
+ }
+ if (ret && typeof (ret) !== 'string'){
+ ret = ret.toString();
+ }
+ if(ret){
+ return ret
+ }
+ }
+ return '';
+ },
+ pdfa(html, parse) {
+ if (!parse || !parse.trim()){
+ return '';
+ }
+ if (typeof(html) === 'string'){
+ // print('jsonpath:pdfa字符串转dict');
+ html = JSON.parse(html);
+ }
+ parse = parse.trim()
+ if (!parse.startsWith('$.')){
+ parse = '$.' + parse;
+ }
+ let ret = cheerio.jp(parse, html);
+ if (Array.isArray(ret) && Array.isArray(ret[0]) && ret.length === 1){
+ return ret[0] || []
+ }
+ return ret || []
+ },
+ pd(html,parse){
+ let ret = parseTags.json.pdfh(html,parse);
+ if(ret){
+ return urljoin(MY_URL,ret);
+ }
+ return ret
+ },
+ },
+ jq:{
+ pdfh(html, parse) {
+ if (!html||!parse || !parse.trim()) {
+ return ''
+ }
+ parse = parse.trim();
+ let result = defaultParser.pdfh(html,parse);
+ // print(`pdfh解析${parse}=>${result}`);
+ return result;
+ },
+ pdfa(html, parse) {
+ if (!html||!parse || !parse.trim()) {
+ return [];
+ }
+ parse = parse.trim();
+ let result = defaultParser.pdfa(html,parse);
+ // print(result);
+ print(`pdfa解析${parse}=>${result.length}`);
+ return result;
+ },
+ pd(html,parse,base_url){
+ if (!html||!parse || !parse.trim()) {
+ return ''
+ }
+ parse = parse.trim();
+ base_url = base_url||MY_URL;
+ return defaultParser.pd(html, parse, base_url);
+ },
+ },
+ getParse(p0){//非js开头的情况自动获取解析标签
+ if(p0.startsWith('jsp:')){
+ return this.jsp
+ }else if(p0.startsWith('json:')){
+ return this.json
+ }else if(p0.startsWith('jq:')){
+ return this.jq
+ }else {
+ return this.jq
+ }
+ }
+};
+
+const stringify = JSON.stringify;
+const jsp = parseTags.jsp;
+const jq = parseTags.jq;
+
+/*** 后台需要实现的java方法并注入到js中 ***/
+
+/**
+ * 读取本地文件->应用程序目录
+ * @param filePath
+ * @returns {string}
+ */
+function readFile(filePath){
+ filePath = filePath||'./uri.min.js';
+ var fd = os.open(filePath);
+ var buffer = new ArrayBuffer(1024);
+ var len = os.read(fd, buffer, 0, 1024);
+ console.log(len);
+ let text = String.fromCharCode.apply(null, new Uint8Array(buffer));
+ console.log(text);
+ return text
+}
+
+/**
+ * 处理返回的json数据
+ * @param html
+ * @returns {*}
+ */
+function dealJson(html) {
+ try {
+ // html = html.match(/[\w|\W|\s|\S]*?(\{[\w|\W|\s|\S]*\})/).group[1];
+ html = html.trim();
+ if(!((html.startsWith('{') && html.endsWith('}'))||(html.startsWith('[') && html.endsWith(']')))){
+ html = '{'+html.match(/.*?\{(.*)\}/m)[1]+'}';
+ }
+ } catch (e) {
+ }
+ try {
+ html = JSON.parse(html);
+ }catch (e) {}
+ // console.log(typeof(html));
+ return html;
+}
+
+/**
+ * 验证码识别逻辑,需要java实现(js没有bytes类型,无法调用后端的传递图片二进制获取验证码文本的接口)
+ * @type {{api: string, classification: (function(*=): string)}}
+ */
+var OcrApi={
+ api:OCR_API,
+ classification:function (img){ // img是byte类型,这里不方便搞啊
+ let code = '';
+ try {
+ // let html = request(this.api,{data:{img:img},headers:{'User-Agent':PC_UA},'method':'POST'},true);
+ // html = JSON.parse(html);
+ // code = html.url||'';
+ log('通过drpy_ocr验证码接口过验证...');
+ let html = request(OCR_API,{data:{img:img},headers:{'User-Agent':PC_UA},'method':'POST'},true);
+ code = html||'';
+ }catch (e) {
+ log(`OCR识别验证码发生错误:${e.message}`)
+ }
+ return code
+ }
+};
+/**
+ * 验证码识别,暂未实现
+ * @param url 验证码图片链接
+ * @returns {string} 验证成功后的cookie
+ */
+function verifyCode(url){
+ let cnt = 0;
+ let host = getHome(url);
+ let cookie = '';
+ while (cnt < OCR_RETRY){
+ try{
+ // let obj = {headers:headers,timeout:timeout};
+ let yzm_url = `${host}/index.php/verify/index.html`;
+ console.log(`验证码链接:${yzm_url}`);
+ let hhtml = request(yzm_url,{withHeaders:true,toBase64:true},true);
+ let json = JSON.parse(hhtml);
+ if(!cookie){
+ // print(json);
+ let setCk = Object.keys(json).find(it=>it.toLowerCase()==='set-cookie');
+ // cookie = json['set-cookie']?json['set-cookie'].split(';')[0]:'';
+ cookie = setCk?json[setCk].split(';')[0]:'';
+ }
+ // console.log(hhtml);
+ console.log('cookie:'+cookie);
+ let img = json.body;
+ // console.log(img);
+ let code = OcrApi.classification(img);
+ console.log(`第${cnt+1}次验证码识别结果:${code}`);
+ let submit_url = `${host}/index.php/ajax/verify_check?type=search&verify=${code}`;
+ console.log(submit_url);
+ let html = request(submit_url,{headers:{Cookie:cookie,'User-Agent':MOBILE_UA},'method':'POST'});
+ // console.log(html);
+ html = JSON.parse(html);
+ if(html.msg === 'ok'){
+ console.log(`第${cnt+1}次验证码提交成功`);
+ return cookie // 需要返回cookie
+ }else if(html.msg!=='ok'&&cnt+1>=OCR_RETRY){
+ cookie = ''; // 需要清空返回cookie
+ }
+ }catch (e) {
+ console.log(`第${cnt+1}次验证码提交失败:${e.message}`);
+ if(cnt+1>=OCR_RETRY){
+ cookie = '';
+ }
+ }
+ cnt+=1
+ }
+ return cookie
+}
+
+/**
+ * 存在数据库配置表里, key字段对应值value,没有就新增,有就更新,调用此方法会清除key对应的内存缓存
+ * @param k 键
+ * @param v 值
+ */
+function setItem(k,v){
+ local.set(RKEY,k,v);
+ console.log(`规则${RKEY}设置${k} => ${v}`)
+}
+
+/**
+ * 获取数据库配置表对应的key字段的value,没有这个key就返回value默认传参.需要有缓存,第一次获取后会存在内存里
+ * @param k 键
+ * @param v 值
+ * @returns {*}
+ */
+function getItem(k,v){
+ return local.get(RKEY,k) || v;
+}
+
+/**
+ * 删除数据库key对应的一条数据,并清除此key对应的内存缓存
+ * @param k
+ */
+function clearItem(k){
+ local.delete(RKEY,k);
+}
+
+/*** js自封装的方法 ***/
+
+/**
+ * 获取链接的host(带http协议的完整链接)
+ * @param url 任意一个正常完整的Url,自动提取根
+ * @returns {string}
+ */
+function getHome(url){
+ if(!url){
+ return ''
+ }
+ let tmp = url.split('//');
+ url = tmp[0] + '//' + tmp[1].split('/')[0];
+ try {
+ url = decodeURIComponent(url);
+ }catch (e) {}
+ return url
+}
+
+/**
+ * get参数编译链接,类似python params字典自动拼接
+ * @param url 访问链接
+ * @param obj 参数字典
+ * @returns {*}
+ */
+function buildUrl(url,obj){
+ obj = obj||{};
+ if(url.indexOf('?')<0){
+ url += '?'
+ }
+ let param_list = [];
+ let keys = Object.keys(obj);
+ keys.forEach(it=>{
+ param_list.push(it+'='+obj[it])
+ });
+ let prs = param_list.join('&');
+ if(keys.length > 0 && !url.endsWith('?')){
+ url += '&'
+ }
+ url+=prs;
+ return url
+}
+
+/**
+ * 远程依赖执行函数
+ * @param url 远程js地址
+ */
+function require(url){
+ eval(request(url));
+}
+/**
+ * 海阔网页请求函数完整封装
+ * @param url 请求链接
+ * @param obj 请求对象 {headers:{},method:'',timeout:5000,body:'',withHeaders:false}
+ * @param ocr_flag 标识此flag是用于请求ocr识别的,自动过滤content-type指定编码
+ * @returns {string|string|DocumentFragment|*}
+ */
+function request(url,obj,ocr_flag){
+ ocr_flag = ocr_flag||false;
+ if(typeof(obj)==='undefined'||!obj||obj==={}){
+ if(!fetch_params||!fetch_params.headers){
+ let headers = {
+ 'User-Agent':MOBILE_UA,
+ };
+ if(rule.headers){
+ Object.assign(headers,rule.headers);
+ }
+ if(!fetch_params){
+ fetch_params = {};
+ }
+ fetch_params.headers = headers;
+ }
+ if(!fetch_params.headers.Referer){
+ fetch_params.headers.Referer = getHome(url)
+ }
+ obj = fetch_params;
+ }else{
+ let headers = obj.headers||{};
+ let keys = Object.keys(headers).map(it=>it.toLowerCase());
+ if(!keys.includes('user-agent')){
+ headers['User-Agent'] = MOBILE_UA;
+ }if(!keys.includes('referer')){
+ headers['Referer'] = getHome(url);
+ }
+ obj.headers = headers;
+ }
+ if(rule.encoding&&rule.encoding!=='utf-8'&&!ocr_flag){
+ if(!obj.headers.hasOwnProperty('Content-Type')&&!obj.headers.hasOwnProperty('content-type')){ // 手动指定了就不管
+ obj.headers["Content-Type"] = 'text/html; charset='+rule.encoding;
+ }
+ }
+ if(typeof(obj.body)!='undefined'&&obj.body&&typeof (obj.body)==='string'){
+ // let data = {};
+ // obj.body.split('&').forEach(it=>{
+ // data[it.split('=')[0]] = it.split('=')[1]
+ // });
+ // obj.data = data;
+ // delete obj.body
+
+ // 传body加 "Content-Type":"application/x-www-form-urlencoded;" 即可post form
+ if(!obj.headers.hasOwnProperty('Content-Type')&&!obj.headers.hasOwnProperty('content-type')){ // 手动指定了就不管
+ obj.headers["Content-Type"] = 'application/x-www-form-urlencoded; charset='+rule.encoding;
+ }
+ }else if(typeof(obj.body)!='undefined'&&obj.body&&typeof (obj.body)==='object'){
+ obj.data = obj.body;
+ delete obj.body
+ }
+ if(!url){
+ return obj.withHeaders?'{}':''
+ }
+ if(obj.toBase64){ // 返回base64,用于请求图片
+ obj.buffer = 2;
+ delete obj.toBase64
+ }
+ console.log(JSON.stringify(obj.headers));
+ // console.log('request:'+url+' obj:'+JSON.stringify(obj));
+ console.log('request:'+url+`|method:${obj.method||'GET'}|body:${obj.body||''}`);
+ let res = req(url, obj);
+ let html = res.content||'';
+ // console.log(html);
+ if(obj.withHeaders){
+ let htmlWithHeaders = res.headers;
+ htmlWithHeaders.body = html;
+ return JSON.stringify(htmlWithHeaders);
+ }else{
+ return html
+ }
+}
+
+/**
+ * 快捷post请求
+ * @param url 地址
+ * @param obj 对象
+ * @returns {string|DocumentFragment|*}
+ */
+function post(url,obj){
+ obj.method = 'POST';
+ return request(url,obj);
+}
+
+fetch = request;
+print = function (data){
+ data = data||'';
+ if(typeof(data)=='object'&&Object.keys(data).length>0){
+ try {
+ data = JSON.stringify(data);
+ console.log(data);
+ }catch (e) {
+ // console.log('print:'+e.message);
+ console.log(typeof(data)+':'+data.length);
+ return
+ }
+ }else if(typeof(data)=='object'&&Object.keys(data).length<1){
+ console.log('null object');
+ }else{
+ console.log(data);
+ }
+}
+log = print;
+/**
+ * 检查宝塔验证并自动跳过获取正确源码
+ * @param html 之前获取的html
+ * @param url 之前的来源url
+ * @param obj 来源obj
+ * @returns {string|DocumentFragment|*}
+ */
+function checkHtml(html,url,obj){
+ if(/\?btwaf=/.test(html)){
+ let btwaf = html.match(/btwaf(.*?)"/)[1];
+ url = url.split('#')[0]+'?btwaf'+btwaf;
+ print('宝塔验证访问链接:'+url);
+ html = request(url,obj);
+ }
+ return html
+}
+
+/**
+ * 带一次宝塔验证的源码获取
+ * @param url 请求链接
+ * @param obj 请求参数
+ * @returns {string|DocumentFragment}
+ */
+function getCode(url,obj){
+ let html = request(url,obj);
+ html = checkHtml(html,url,obj);
+ return html
+}
+
+/**
+ * 源rule专用的请求方法,自动注入cookie
+ * @param url 请求链接
+ * @returns {string|DocumentFragment}
+ */
+function getHtml(url){
+ let obj = {};
+ if(rule.headers){
+ obj.headers = rule.headers;
+ }
+ let cookie = getItem(RULE_CK,'');
+ if(cookie){
+ // log('有cookie:'+cookie);
+ if(obj.headers && ! Object.keys(obj.headers).map(it=>it.toLowerCase()).includes('cookie')){
+ log('历史无cookie,新增过验证后的cookie');
+ obj.headers['Cookie'] = cookie;
+ }else if(obj.headers && obj.headers.cookie && obj.headers.cookie!==cookie){
+ obj.headers['Cookie'] = cookie;
+ log('历史有小写过期的cookie,更新过验证后的cookie');
+ }else if(obj.headers && obj.headers.Cookie && obj.headers.Cookie!==cookie){
+ obj.headers['Cookie'] = cookie;
+ log('历史有大写过期的cookie,更新过验证后的cookie');
+ }else if(!obj.headers){
+ obj.headers = {Cookie:cookie};
+ log('历史无headers,更新过验证后的含cookie的headers');
+ }
+ }
+ let html = getCode(url,obj);
+ return html
+}
+
+/**
+ * 首页分类解析,筛选暂未实现
+ * @param homeObj 首页传参对象
+ * @returns {string}
+ */
+function homeParse(homeObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let classes = [];
+ if (homeObj.class_name && homeObj.class_url) {
+ let names = homeObj.class_name.split('&');
+ let urls = homeObj.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]
+ });
+ }
+ }
+
+ if (homeObj.class_parse) {
+ let p = homeObj.class_parse.split(';');
+ let _ps = parseTags.getParse(p[0]);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ MY_URL = rule.url;
+ if (p.length >= 3) { // 可以不写正则
+ try {
+ let html = getHtml(homeObj.MY_URL);
+ if (html) {
+ homeHtmlCache = html;
+ let list = _pdfa(html, p[0]);
+ if (list && list.length > 0) {
+ list.forEach((it,idex) => {
+ try {
+ let name = _pdfh(it, p[1]);
+ if (homeObj.cate_exclude && (new RegExp(homeObj.cate_exclude).test(name))) {
+ return;
+ }
+ // let url = pdfh(it, p[2]);
+ let url = _pd(it, p[2]);
+ if (p.length > 3 && p[3]) {
+ let exp = new RegExp(p[3]);
+ url = url.match(exp)[1];
+ }
+
+ classes.push({
+ 'type_id': url.trim(),
+ 'type_name': name.trim()
+ });
+ } catch (e) {
+ console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`);
+ }
+ });
+ }
+ }
+ } catch (e) {
+ console.log(e.message);
+ }
+
+ }
+ }
+ // 排除分类
+ classes = classes.filter(it=>!homeObj.cate_exclude || !(new RegExp(homeObj.cate_exclude).test(it.type_name)));
+ let resp = {
+ 'class': classes
+ };
+ if(homeObj.filter){
+ resp.filters = homeObj.filter;
+ }
+ console.log(JSON.stringify(resp));
+ return JSON.stringify(resp);
+
+}
+
+/**
+ * 推荐和搜索单字段继承一级
+ * @param p 推荐或搜索的解析分割;列表
+ * @param pn 自身列表序号
+ * @param pp 一级解析分割;列表
+ * @param ppn 继承一级序号
+ * @returns {*}
+ */
+function getPP(p, pn, pp, ppn){
+ try {
+ let ps = p[pn] === '*' && pp.length > ppn ?pp[ppn]:p[pn]
+ return ps
+ }catch (e) {
+ return ''
+ }
+}
+
+/**
+ * 首页推荐列表解析
+ * @param homeVodObj
+ * @returns {string}
+ */
+function homeVodParse(homeVodObj){
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let d = [];
+ MY_URL = homeVodObj.homeUrl;
+ // setItem('MY_URL',MY_URL);
+ console.log(MY_URL);
+ let t1 = (new Date()).getTime();
+ let p = homeVodObj.推荐;
+ print('p:'+p);
+ if(p==='*' && rule.一级){
+ p = rule.一级;
+ homeVodObj.double = false;
+ }
+ if(!p||typeof(p)!=='string'){
+ return '{}'
+ }
+ p = p.trim();
+ let pp = rule.一级.split(';');
+ if(p.startsWith('js:')){
+ const TYPE = 'home';
+ var input = MY_URL;
+ HOST = rule.host;
+ eval(p.replace('js:',''));
+ d = VODS;
+ }else {
+ p = p.split(';');
+ if (!homeVodObj.double && p.length < 5) {
+ return '{}'
+ } else if (homeVodObj.double && p.length < 6) {
+ return '{}'
+ }
+ let p0 = getPP(p,0,pp,0)
+ let _ps = parseTags.getParse(p0);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ let is_json = p0.startsWith('json:');
+ p0 = p0.replace(/^(jsp:|json:|jq:)/,'');
+ // print(p[0]);
+ let html = homeHtmlCache || getHtml(MY_URL);
+ homeHtmlCache = undefined;
+ if(is_json){
+ // print('是json,开始处理');
+ html = dealJson(html);
+ }
+ try {
+ console.log('double:' + homeVodObj.double);
+ if (homeVodObj.double) {
+ let items = _pdfa(html, p0);
+ // console.log(items.length);
+ let p1 = getPP(p,1,pp,0);
+ let p2 = getPP(p,2,pp,1);
+ let p3 = getPP(p,3,pp,2);
+ let p4 = getPP(p,4,pp,3);
+ let p5 = getPP(p,5,pp,4);
+ let p6 = getPP(p,6,pp,5);
+ for (let item of items) {
+ // console.log(p[1]);
+ let items2 = _pdfa(item, p1);
+ // console.log(items2.length);
+ for (let item2 of items2) {
+ try {
+ let title = _pdfh(item2, p2);
+ let img = '';
+ try {
+ img = _pd(item2, p3);
+ } catch (e) {}
+ let desc = '';
+ try {
+ desc = _pdfh(item2, p4);
+ }catch (e) {}
+ let links = [];
+ for (let _p5 of p5.split('+')) {
+ let link = !homeVodObj.detailUrl ? _pd(item2, _p5, MY_URL) : _pdfh(item2, _p5);
+ links.push(link);
+ }
+ let content;
+ if(p.length > 6 && p[6]){
+ content = _pdfh(item2, p6);
+ } else{
+ content = '';
+ }
+ let vid = links.join('$');
+ if(rule.二级==='*'){
+ vid = vid+'@@'+title+'@@'+img;
+ }
+ let vod = {
+ vod_name: title,
+ vod_pic: img,
+ vod_remarks: desc,
+ vod_content: content,
+ vod_id: vid
+ };
+ // print(vod);
+ d.push(vod);
+ } catch (e) {
+ console.log('首页列表双层定位处理发生错误:'+e.message);
+ }
+
+ }
+
+
+ }
+
+
+ } else {
+ let items = _pdfa(html, p0);
+ let p1 = getPP(p,1,pp,1);
+ let p2 = getPP(p,2,pp,2);
+ let p3 = getPP(p,3,pp,3);
+ let p4 = getPP(p,4,pp,4);
+ let p5 = getPP(p,5,pp,5);
+
+ for (let item of items) {
+ try {
+ let title = _pdfh(item, p1);
+ let img = '';
+ try {
+ img = _pd(item, p2, MY_URL);
+ } catch (e) {}
+ let desc = '';
+ try {
+ desc = _pdfh(item, p3);
+ }catch (e) {}
+ let links = [];
+ for (let _p5 of p4.split('+')) {
+ let link = !homeVodObj.detailUrl ? _pd(item, _p5, MY_URL) : _pdfh(item, _p5);
+ links.push(link);
+ }
+ let content;
+ if(p.length > 5 && p[5]){
+ content = _pdfh(item, p5);
+ }else{
+ content = ''
+ }
+ let vid = links.join('$');
+ if(rule.二级==='*'){
+ vid = vid+'@@'+title+'@@'+img;
+ }
+ let vod = {
+ vod_name: title,
+ vod_pic: img,
+ vod_remarks: desc,
+ vod_content: content,
+ vod_id: vid
+ };
+ d.push(vod);
+
+ } catch (e) {
+ console.log('首页列表单层定位处理发生错误:'+e.message);
+ }
+
+ }
+
+ }
+
+ } catch (e) {
+
+ }
+ }
+ let t2 = (new Date()).getTime();
+ console.log('加载首页推荐耗时:'+(t2-t1)+'毫秒');
+ // console.log(JSON.stringify(d));
+ if(rule.图片来源){
+ d.forEach(it=>{
+ if(it.vod_pic&&it.vod_pic.startsWith('http')){
+ it.vod_pic = it.vod_pic + rule.图片来源;
+ }
+ });
+ }
+ if(d.length>0){
+ print(d.slice(0,2));
+ }
+ return JSON.stringify({
+ list:d
+ })
+}
+
+/**
+ * 一级分类页数据解析
+ * @param cateObj
+ * @returns {string}
+ */
+function categoryParse(cateObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let p = cateObj.一级;
+ if(!p||typeof(p)!=='string'){
+ return '{}'
+ }
+ let d = [];
+ // let url = cateObj.url.replaceAll('fyclass', cateObj.tid).replaceAll('fypage', cateObj.pg);
+ let url = cateObj.url.replaceAll('fyclass', cateObj.tid);
+ if(cateObj.pg === 1 && url.includes('[')&&url.includes(']')){
+ url = url.split('[')[1].split(']')[0];
+ }else if(cateObj.pg > 1 && url.includes('[')&&url.includes(']')){
+ url = url.split('[')[0];
+ }
+ if(rule.filter_url){
+ if(!/fyfilter/.test(url)){
+ if(!url.endsWith('&')&&!rule.filter_url.startsWith('&')){
+ url+='&'
+ }
+ url+=rule.filter_url;
+ }else{
+ url = url.replace('fyfilter', rule.filter_url);
+ }
+ // console.log('filter:'+cateObj.filter);
+ let fl = cateObj.filter?cateObj.extend:{};
+ // 自动合并 不同分类对应的默认筛选
+ if(rule.filter_def && typeof(rule.filter_def)==='object'){
+ try {
+ if(Object.keys(rule.filter_def).length>0 && rule.filter_def.hasOwnProperty(cateObj.tid)){
+ let self_fl_def = rule.filter_def[cateObj.tid];
+ if(self_fl_def && typeof(self_fl_def)==='object'){
+ // 引用传递转值传递,避免污染self变量
+ let fl_def = JSON.parse(JSON.stringify(self_fl_def));
+ fl = Object.assign(fl_def,fl);
+ }
+ }
+ }catch (e) {
+ print('合并不同分类对应的默认筛选出错:'+e.message);
+ }
+ }
+ let new_url;
+ new_url = cheerio.jinja2(url,{fl:fl});
+ // console.log('jinjia2执行后的new_url类型为:'+typeof(new_url));
+ url = new_url;
+ }
+ if(/fypage/.test(url)){
+ if(url.includes('(')&&url.includes(')')){
+ let url_rep = url.match(/.*?\((.*)\)/)[1];
+ // console.log(url_rep);
+ let cnt_page = url_rep.replaceAll('fypage', cateObj.pg);
+ // console.log(cnt_page);
+ let cnt_pg = eval(cnt_page);
+ // console.log(cnt_pg);
+ url = url.replaceAll(url_rep,cnt_pg).replaceAll('(','').replaceAll(')','');
+ }else{
+ url = url.replaceAll('fypage',cateObj.pg);
+ }
+ }
+
+ MY_URL = url;
+ // setItem('MY_URL',MY_URL);
+ console.log(MY_URL);
+ p = p.trim();
+ const MY_CATE = cateObj.tid;
+ if(p.startsWith('js:')){
+ var MY_FL = cateObj.extend;
+ const TYPE = 'cate';
+ var input = MY_URL;
+ const MY_PAGE = cateObj.pg;
+ var desc = '';
+ eval(p.trim().replace('js:',''));
+ d = VODS;
+ }else {
+ p = p.split(';');
+ if (p.length < 5) {
+ return '{}'
+ }
+ let _ps = parseTags.getParse(p[0]);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ let is_json = p[0].startsWith('json:');
+ p[0] = p[0].replace(/^(jsp:|json:|jq:)/,'');
+ try {
+ let html = getHtml(MY_URL);
+ if (html) {
+ if(is_json){
+ html = dealJson(html);
+ }
+ let list = _pdfa(html, p[0]);
+ list.forEach(it => {
+ let links = p[4].split('+').map(p4=>{
+ return !rule.detailUrl?_pd(it, p4,MY_URL):_pdfh(it, p4);
+ });
+ let link = links.join('$');
+ let vod_id = rule.detailUrl?MY_CATE+'$'+link:link;
+
+ let vod_name = _pdfh(it, p[1]).replace(/\n|\t/g,'').trim();
+ let vod_pic = _pd(it, p[2],MY_URL);
+
+ if(rule.二级==='*'){
+ vod_id = vod_id+'@@'+vod_name+'@@'+vod_pic;
+ }
+ d.push({
+ 'vod_id': vod_id,
+ 'vod_name': vod_name,
+ 'vod_pic': vod_pic,
+ 'vod_remarks': _pdfh(it, p[3]).replace(/\n|\t/g,'').trim(),
+ });
+ });
+ }
+ } catch (e) {
+ console.log(e.message);
+ }
+ }
+ if(rule.图片来源){
+ d.forEach(it=>{
+ if(it.vod_pic&&it.vod_pic.startsWith('http')){
+ it.vod_pic = it.vod_pic + rule.图片来源;
+ }
+ });
+ }
+ // print(d);
+ if(d.length>0){
+ print(d.slice(0,2));
+ }
+ let pagecount = 0;
+ if(rule.pagecount && typeof(rule.pagecount) === 'object' && rule.pagecount.hasOwnProperty(MY_CATE)){
+ print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);
+ pagecount = parseInt(rule.pagecount[MY_CATE]);
+ }
+ let nodata = {
+ list:[{vod_name:'无数据,防无限请求',vod_id:'no_data',vod_remarks:'不要点,会崩的',vod_pic:'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg'}],
+ total:1,pagecount:1,page:1,limit:1
+ };
+ let vod = d.length<1?JSON.stringify(nodata):JSON.stringify({
+ 'page': parseInt(cateObj.pg),
+ 'pagecount': pagecount||999,
+ 'limit': 20,
+ 'total': 999,
+ 'list': d,
+ });
+ // print(vod);
+ return vod
+}
+
+/**
+ * 搜索列表数据解析
+ * @param searchObj
+ * @returns {string}
+ */
+function searchParse(searchObj) {
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let d = [];
+ if(!searchObj.searchUrl){
+ return '{}'
+ }
+ let p = searchObj.搜索==='*'&&rule.一级 ? rule.一级 : searchObj.搜索;
+ if(!p||typeof(p)!=='string'){
+ return '{}'
+ }
+ p = p.trim();
+ let pp = rule.一级.split(';');
+ let url = searchObj.searchUrl.replaceAll('**', searchObj.wd);
+ if(searchObj.pg === 1 && url.includes('[')&&url.includes(']')){
+ url = url.split('[')[1].split(']')[0];
+ }else if(searchObj.pg > 1 && url.includes('[')&&url.includes(']')){
+ url = url.split('[')[0];
+ }
+
+ if(/fypage/.test(url)){
+ if(url.includes('(')&&url.includes(')')){
+ let url_rep = url.match(/.*?\((.*)\)/)[1];
+ // console.log(url_rep);
+ let cnt_page = url_rep.replaceAll('fypage', searchObj.pg);
+ // console.log(cnt_page);
+ let cnt_pg = eval(cnt_page);
+ // console.log(cnt_pg);
+ url = url.replaceAll(url_rep,cnt_pg).replaceAll('(','').replaceAll(')','');
+ }else{
+ url = url.replaceAll('fypage',searchObj.pg);
+ }
+ }
+
+ MY_URL = url;
+ console.log(MY_URL);
+ // log(searchObj.搜索);
+ // setItem('MY_URL',MY_URL);
+ if(p.startsWith('js:')){
+ const TYPE = 'search';
+ const MY_PAGE = searchObj.pg;
+ const KEY = searchObj.wd;
+ var input = MY_URL;
+ var detailUrl = rule.detailUrl||'';
+ eval(p.trim().replace('js:',''));
+ d = VODS;
+ }else{
+ p = p.split(';');
+ if (p.length < 5) {
+ return '{}'
+ }
+ let p0 = getPP(p,0,pp,0);
+ let _ps = parseTags.getParse(p0);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ let is_json = p0.startsWith('json:');
+ p0 = p0.replace(/^(jsp:|json:|jq:)/,'');
+ // print('1381 p0:'+p0);
+ try {
+ let req_method = MY_URL.split(';').length>1?MY_URL.split(';')[1].toLowerCase():'get';
+ let html;
+ if(req_method==='post'){
+ let rurls = MY_URL.split(';')[0].split('#')
+ let rurl = rurls[0]
+ let params = rurls.length > 1 ?rurls[1]:'';
+ print(`post=》rurl:${rurl},params:${params}`);
+ // let new_dict = {};
+ // let new_tmp = params.split('&');
+ // new_tmp.forEach(i=>{
+ // new_dict[i.split('=')[0]] = i.split('=')[1];
+ // });
+ // html = post(rurl,{body:new_dict});
+ let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let postData = {body:params};
+ Object.assign(_fetch_params,postData);
+ html = post(rurl,_fetch_params);
+ }else if(req_method==='postjson'){
+ let rurls = MY_URL.split(';')[0].split('#')
+ let rurl = rurls[0]
+ let params = rurls.length > 1 ?rurls[1]:'';
+ print(`postjson-》rurl:${rurl},params:${params}`);
+ try{
+ params = JSON.parse(params);
+ }catch (e) {
+ params = '{}'
+ }
+ let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let postData = {body:params};
+ Object.assign(_fetch_params,postData);
+ html = post(rurl,_fetch_params);
+ }else{
+ html = getHtml(MY_URL);
+ }
+ if (html) {
+ if(/系统安全验证|输入验证码/.test(html)){
+ let cookie = verifyCode(MY_URL);
+ if(cookie){
+ console.log(`本次成功过验证,cookie:${cookie}`);
+ setItem(RULE_CK,cookie);
+ }else{
+ console.log(`本次自动过搜索验证失败,cookie:${cookie}`);
+ }
+ // obj.headers['Cookie'] = cookie;
+ html = getHtml(MY_URL);
+ }
+ if(!html.includes(searchObj.wd)){
+ console.log('搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码');
+ console.log(html);
+ }
+ if(is_json){
+ // console.log(html);
+ html = dealJson(html);
+ // console.log(JSON.stringify(html));
+ }
+ // console.log(html);
+ let list = _pdfa(html, p0);
+ // print(list.length);
+ // print(list);
+ let p1 = getPP(p, 1, pp, 1);
+ let p2 = getPP(p, 2, pp, 2);
+ let p3 = getPP(p, 3, pp, 3);
+ let p4 = getPP(p, 4, pp, 4);
+ let p5 = getPP(p,5,pp,5);
+ list.forEach(it => {
+ let links = p4.split('+').map(_p4=>{
+ return !rule.detailUrl?_pd(it, _p4,MY_URL):_pdfh(it, _p4)
+ });
+ let link = links.join('$');
+ let content;
+ if(p.length > 5 && p[5]){
+ content = _pdfh(it, p5);
+ }else{
+ content = '';
+ }
+ let vod_id = link;
+ let vod_name = _pdfh(it, p1).replace(/\n|\t/g,'').trim();
+ let vod_pic = _pd(it, p2,MY_URL);
+ if(rule.二级==='*'){
+ vod_id = vod_id+'@@'+vod_name+'@@'+vod_pic;
+ }
+ let ob = {
+ 'vod_id': vod_id,
+ 'vod_name': vod_name,
+ 'vod_pic': vod_pic,
+ 'vod_remarks': _pdfh(it, p3).replace(/\n|\t/g,'').trim(),
+ 'vod_content': content.replace(/\n|\t/g,'').trim(),
+ };
+ d.push(ob);
+ });
+
+ }
+ } catch (e) {
+ print('搜索发生错误:'+e.message);
+ return '{}'
+ }
+ }
+ if(rule.图片来源){
+ d.forEach(it=>{
+ if(it.vod_pic&&it.vod_pic.startsWith('http')){
+ it.vod_pic = it.vod_pic + rule.图片来源;
+ }
+ });
+ }
+ // print(d);
+ return JSON.stringify({
+ 'page': parseInt(searchObj.pg),
+ 'pagecount': 10,
+ 'limit': 20,
+ 'total': 100,
+ 'list': d,
+ });
+}
+
+/**
+ * 二级详情页数据解析
+ * @param detailObj
+ * @returns {string}
+ */
+function detailParse(detailObj){
+ let t1 = (new Date()).getTime();
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ let orId = detailObj.orId;
+ let vod_name = '片名';
+ let vod_pic = '';
+ let vod_id = orId;
+ if(rule.二级==='*'){
+ // vod_id = orId.split('@@')[0]; // 千万不能分割
+ let extra = orId.split('@@');
+ vod_name = extra.length>1?extra[1]:vod_name;
+ vod_pic = extra.length>2?extra[2]:vod_pic;
+ }
+ // print(vod_pic);
+ let vod = {
+ vod_id: vod_id, //"id",
+ vod_name: vod_name,
+ vod_pic: vod_pic,
+ type_name: "类型",
+ vod_year: "年份",
+ vod_area: "地区",
+ vod_remarks: "更新信息",
+ vod_actor: "主演",
+ vod_director: "导演",
+ vod_content: "简介"
+ };
+ let p = detailObj.二级;
+ let url = detailObj.url;
+ let detailUrl = detailObj.detailUrl;
+ let fyclass = detailObj.fyclass;
+ let tab_exclude = detailObj.tab_exclude;
+ let html = detailObj.html||'';
+ MY_URL = url;
+ if(detailObj.二级访问前){
+ try {
+ print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);
+ eval(detailObj.二级访问前.trim().replace('js:',''));
+ }catch (e) {
+ print(`二级访问前执行代码出现错误:${e.message}`)
+ }
+ }
+ // console.log(MY_URL);
+ // setItem('MY_URL',MY_URL);
+ if(p==='*'){
+ vod.vod_play_from = '道长在线';
+ vod.vod_remarks = detailUrl;
+ vod.vod_actor = '没有二级,只有一级链接直接嗅探播放';
+ vod.vod_content = MY_URL;
+ vod.vod_play_url = '嗅探播放$' + MY_URL.split('@@')[0];
+ }else if(typeof(p)==='string'&&p.trim().startsWith('js:')){
+ const TYPE = 'detail';
+ var input = MY_URL;
+ var play_url = '';
+ eval(p.trim().replace('js:',''));
+ vod = VOD;
+ console.log(JSON.stringify(vod));
+ }else if(p&&typeof(p)==='object'){
+ let tt1 = (new Date()).getTime();
+ if(!html){
+ html = getHtml(MY_URL);
+ }
+ print(`二级${MY_URL}仅获取源码耗时:${(new Date()).getTime()-tt1}毫秒`);
+ let _ps;
+ if(p.is_json){
+ print('二级是json');
+ _ps = parseTags.json;
+ html = dealJson(html);
+ }else if(p.is_jsp){
+ print('二级是jsp');
+ _ps = parseTags.jsp;
+ }else if(p.is_jq){
+ print('二级是jq');
+ _ps = parseTags.jq;
+ }else{
+ print('二级默认jq');
+ _ps = parseTags.jq;
+ // print('二级默认jsp');
+ // _ps = parseTags.jsp;
+ }
+ let tt2 = (new Date()).getTime();
+ print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);
+ _pdfa = _ps.pdfa;
+ _pdfh = _ps.pdfh;
+ _pd = _ps.pd;
+ if(p.title){
+ let p1 = p.title.split(';');
+ vod.vod_name = _pdfh(html, p1[0]).replace(/\n|\t/g,'').trim();
+ let type_name = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g,'').replace(/ /g,'').trim():'';
+ vod.type_name = type_name||vod.type_name;
+ }
+ if(p.desc){
+ try{
+ let p1 = p.desc.split(';');
+ vod.vod_remarks = _pdfh(html, p1[0]).replace(/\n|\t/g,'').trim();
+ vod.vod_year = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g,'').trim():'';
+ vod.vod_area = p1.length > 2 ? _pdfh(html, p1[2]).replace(/\n|\t/g,'').trim():'';
+ // vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replaceAll('\n', ' ').trim():'';
+ vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replace(/\n|\t/g,'').trim():'';
+ vod.vod_director = p1.length > 4 ? _pdfh(html, p1[4]).replace(/\n|\t/g,'').trim():'';
+ }
+ catch (e) {
+
+ }
+ }
+ if(p.content){
+ try{
+ let p1 = p.content.split(';');
+ vod.vod_content = _pdfh(html, p1[0]).replace(/\n|\t/g,'').trim();
+ }
+ catch (e) {}
+ }
+ if(p.img){
+ try{
+ let p1 = p.img.split(';');
+ vod.vod_pic = _pd(html, p1[0],MY_URL);
+ }
+ catch (e) {}
+ }
+
+ let vod_play_from = '$$$';
+ let playFrom = [];
+ if(p.重定向&&p.重定向.startsWith('js:')){
+ print('开始执行重定向代码:'+p.重定向);
+ html = eval(p.重定向.replace('js:',''));
+ }
+
+// console.log(2);
+ if(p.tabs){
+ if(p.tabs.startsWith('js:')){
+ print('开始执行tabs代码:'+p.tabs);
+ var input = MY_URL;
+ eval(p.tabs.replace('js:',''));
+ playFrom = TABS;
+ }else{
+ let p_tab = p.tabs.split(';')[0];
+ // console.log(p_tab);
+ let vHeader = _pdfa(html, p_tab);
+ console.log(vHeader.length);
+ let tab_text = p.tab_text||'body&&Text';
+ // print('tab_text:'+tab_text);
+ let new_map = {};
+ for(let v of vHeader){
+ let v_title = _pdfh(v,tab_text).trim();
+ console.log(v_title);
+ if(tab_exclude&& (new RegExp(tab_exclude)).test(v_title)){
+ continue;
+ }
+ if(!new_map.hasOwnProperty(v_title)){
+ new_map[v_title] = 1;
+ }else{
+ new_map[v_title] += 1;
+ }
+ if(new_map[v_title]>1){
+ v_title+=Number(new_map[v_title]-1);
+ }
+ playFrom.push(v_title);
+ }
+ }
+ console.log(JSON.stringify(playFrom));
+ }else{
+ playFrom = ['道长在线']
+ }
+ vod.vod_play_from = playFrom.join(vod_play_from);
+
+// console.log(3);
+ let vod_play_url = '$$$';
+ let vod_tab_list = [];
+ if(p.lists){
+ if(p.lists.startsWith('js:')){
+ print('开始执行lists代码:'+p.lists);
+ try {
+ var input = MY_URL;
+ var play_url = '';
+ eval(p.lists.replace('js:',''));
+ for(let i in LISTS){
+ if(LISTS.hasOwnProperty(i)){
+ // print(i);
+ try {
+ LISTS[i] = LISTS[i].map(it=>it.split('$').slice(0,2).join('$'));
+ }catch (e) {
+ print('格式化LISTS发生错误:'+e.message);
+ }
+ }
+ }
+ vod_play_url = LISTS.map(it=>it.join('#')).join(vod_play_url);
+ }catch (e) {
+ print('js执行lists: 发生错误:'+e.message);
+ }
+
+ }else{
+ let list_text = p.list_text||'body&&Text';
+ let list_url = p.list_url||'a&&href';
+ // print('list_text:'+list_text);
+ // print('list_url:'+list_url);
+ // print('list_parse:'+p.lists);
+ let is_tab_js = p.tabs.trim().startsWith('js:');
+ for(let i=0;i 1 && !is_tab_js ? p.tabs.split(';')[1] : '';
+ let p1 = p.lists.replaceAll('#idv', tab_name).replaceAll('#id', i);
+ tab_ext = tab_ext.replaceAll('#idv', tab_name).replaceAll('#id', i);
+ let tabName = tab_ext?_pdfh(html, tab_ext):tab_name;
+ console.log(tabName);
+ // print('tab_ext:'+tab_ext);
+ let new_vod_list = [];
+ let tt1 = (new Date()).getTime();
+ // print('pdfl:'+typeof (pdfl));
+ if(typeof (pdfl) ==='function'){
+ new_vod_list = pdfl(html, p1, list_text, list_url, MY_URL);
+ }else {
+ let vodList = [];
+ try {
+ vodList = _pdfa(html, p1);
+ console.log('len(vodList):'+vodList.length);
+ }catch (e) {
+ // console.log(e.message);
+ }
+ for (let i = 0; i < vodList.length; i++) {
+ let it = vodList[i];
+ new_vod_list.push(_pdfh(it, list_text).trim() + '$' + _pd(it, list_url, MY_URL));
+ }
+ }
+ if(new_vod_list.length>0){
+ new_vod_list = forceOrder(new_vod_list,'',x=>x.split('$')[0]);
+ console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date()).getTime()-tt1}毫秒`);
+ }
+ // print(new_vod_list);
+ let vlist = new_vod_list.join('#');
+ vod_tab_list.push(vlist);
+ }
+ vod_play_url = vod_tab_list.join(vod_play_url);
+ }
+ }
+ vod.vod_play_url = vod_play_url;
+ }
+ if(rule.图片来源 && vod.vod_pic && vod.vod_pic.startsWith('http')){
+ vod.vod_pic = vod.vod_pic + rule.图片来源;
+ }
+ if(!vod.vod_id||(vod_id.includes('$')&&vod.vod_id!==vod_id)){
+ vod.vod_id = vod_id;
+ }
+ let t2 = (new Date()).getTime();
+ console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);
+ // print(vod);
+ vod = vodDeal(vod);
+ // print(vod);
+ return JSON.stringify({
+ list: [vod]
+ })
+}
+
+/**
+ * 获取二级待返回的播放线路没处理时的索引关系
+ * @param vod
+ * @returns {{}}
+ */
+function get_tab_index(vod){
+ let obj = {};
+ vod.vod_play_from.split('$$$').forEach((it,index)=>{
+ obj[it] = index;
+ });
+ return obj
+}
+
+/**
+ * 处理待返回的vod数据|线路去除,排序,重命名
+ * @param vod
+ * @returns {*}
+ */
+function vodDeal(vod){
+ let vod_play_from = vod.vod_play_from.split('$$$');
+ let vod_play_url = vod.vod_play_url.split('$$$');
+
+ // 移除指定线路后的列表
+ let tab_removed_list = vod_play_from;
+ // 排序后的线路列表
+ let tab_ordered_list = vod_play_from;
+ // 线路重命名后的列表
+ let tab_renamed_list = vod_play_from;
+ // 定义实际要返回线路
+ let tab_list = vod_play_from;
+ // 选集列表根据线路排序
+ let play_ordered_list = vod_play_url;
+
+ // 判断有移除线路或者线路排序
+ if((rule.tab_remove&&rule.tab_remove.length>0)||(rule.tab_order&&rule.tab_order.length>0)){
+ // 获取原来线路的索引下标
+ let tab_index_dict = get_tab_index(vod);
+
+ if(rule.tab_remove&&rule.tab_remove.length>0){
+ tab_removed_list = vod_play_from.filter(it=>!rule.tab_remove.includes(it));
+ tab_list = tab_removed_list;
+ }
+
+ if(rule.tab_order&&rule.tab_order.length>0){
+ let tab_order = rule.tab_order;
+ tab_ordered_list = tab_removed_list.sort((a, b) => {
+ return (tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a)) - (tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))
+ });
+ tab_list = tab_ordered_list;
+ }
+ play_ordered_list = tab_list.map(it=>vod_play_url[tab_index_dict[it]]);
+ }
+
+ if(rule.tab_rename&&typeof(rule.tab_rename)==='object'&Object.keys(rule.tab_rename).length>0){
+ tab_renamed_list = tab_list.map(it=>rule.tab_rename[it]||it);
+ tab_list = tab_renamed_list;
+ }
+ vod.vod_play_from = tab_list.join('$$$');
+ vod.vod_play_url = play_ordered_list.join('$$$');
+ return vod
+}
+
+/**
+ * 判断是否需要解析
+ * @param url
+ * @returns {number|number}
+ */
+function tellIsJx(url){
+ try {
+ let is_vip = !/\.(m3u8|mp4|m4a)$/.test(url.split('?')[0]) && 是否正版(url);
+ return is_vip?1:0
+ }catch (e) {
+ return 1
+ }
+}
+/**
+ * 选集播放点击事件解析
+ * @param playObj
+ * @returns {string}
+ */
+function playParse(playObj){
+ fetch_params = JSON.parse(JSON.stringify(rule_fetch_params));
+ MY_URL = playObj.url;
+ if(!/http/.test(MY_URL)){
+ try {
+ MY_URL = base64Decode(MY_URL);
+ }catch (e) {}
+ }
+ MY_URL = decodeURIComponent(MY_URL);
+ var input = MY_URL;//注入给免嗅js
+ let common_play = {
+ parse:1,
+ url:input,
+ // url:urlencode(input),
+ jx:tellIsJx(input)
+ };
+ let lazy_play;
+ if(!rule.play_parse||!rule.lazy){
+ lazy_play = common_play;
+ }else if(rule.play_parse&&rule.lazy&&typeof(rule.lazy)==='string'){
+ try {
+ let lazy_code = rule.lazy.replace('js:','').trim();
+ print('开始执行js免嗅=>'+lazy_code);
+ eval(lazy_code);
+ lazy_play = typeof(input) === 'object'?input:{
+ parse:1,
+ jx:tellIsJx(input),
+ url:input
+ };
+ }catch (e) {
+ print('js免嗅错误:'+e.message);
+ lazy_play = common_play;
+ }
+ }else{
+ lazy_play = common_play;
+ }
+ // print('play_json:'+typeof(rule.play_json));
+ // console.log(Array.isArray(rule.play_json));
+ if(Array.isArray(rule.play_json) && rule.play_json.length >0){ // 数组情况判断长度大于0
+ let web_url = lazy_play.url;
+ for(let pjson of rule.play_json){
+ if(pjson.re && (pjson.re==='*'||web_url.match(new RegExp(pjson.re)))){
+ if(pjson.json && typeof(pjson.json)==='object'){
+ let base_json = pjson.json;
+ // print('开始合并:');
+ // print(base_json);
+ lazy_play = Object.assign(lazy_play,base_json);
+ break;
+ }
+ }
+ }
+ }else if(rule.play_json && !Array.isArray(rule.play_json)){ // 其他情况 非[] 判断true/false
+ let base_json = {
+ jx:1,
+ parse:1,
+ };
+ lazy_play = Object.assign(lazy_play,base_json);
+ }else if(!rule.play_json){ // 不解析传0
+ let base_json = {
+ jx:0,
+ parse:1,
+ };
+ lazy_play = Object.assign(lazy_play,base_json);
+ }
+ console.log(JSON.stringify(lazy_play));
+ return JSON.stringify(lazy_play);
+}
+
+/**
+ * 本地代理解析规则
+ * @param params
+ */
+function proxyParse(proxyObj){
+ var input = proxyObj.params;
+ if(proxyObj.proxy_rule){
+ log('准备执行本地代理规则:\n'+proxyObj.proxy_rule);
+ try {
+ eval(proxyObj.proxy_rule);
+ if(input && input!== proxyObj.params && Array.isArray(input) &&input.length===3){
+ return input
+ }else{
+ return [404,'text/plain','Not Found']
+ }
+ }catch (e) {
+ return [500,'text/plain','代理规则错误:'+e.message]
+ }
+
+ }else{
+ return [404,'text/plain','Not Found']
+ }
+}
+
+/**
+ * 辅助嗅探解析规则
+ * @param isVideoObj
+ * @returns {boolean}
+ */
+function isVideoParse(isVideoObj){
+ var input = isVideoObj.url;
+ if(!isVideoObj.t){ // t为假代表默认传的正则字符串
+ let re_matcher = new RegExp(isVideoObj.isVideo,'i'); // /g匹配多个,/i不区分大小写,/m匹配多行
+ return re_matcher.test(input);
+ }else{
+ // 执行js
+ try {
+ eval(isVideoObj.isVideo);
+ if(typeof(input)==='boolean'){
+ return input
+ }else{
+ return false
+ }
+ }catch (e) {
+ log('执行嗅探规则发生错误:'+e.message);
+ return false
+ }
+ }
+}
+
+/**
+ * js源预处理特定返回对象中的函数
+ * @param ext
+ */
+function init(ext) {
+ console.log('init');
+ try {
+ // make shared jsContext happy muban不能import,不然会造成换源继承后变量被篡改
+ // if (typeof (globalThis.mubanJs) === 'undefined') {
+ // let mubanJs = request('https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/js/模板.js', { 'User-Agent': MOBILE_UA });
+ // mubanJs = mubanJs.replace('export default', '(function() {return muban;}()) // export default');
+ // // console.log(mubanJs);
+ // globalThis.mubanJs = mubanJs;
+ // }
+ // let muban = eval(globalThis.mubanJs);
+
+ let muban = 模板.getMubans();
+ // print(typeof (muban));
+ // print(muban);
+ if (typeof ext == 'object'){
+ rule = ext;
+ } else if (typeof ext == 'string') {
+ if (ext.startsWith('http')) {
+ let js = request(ext,{'method':'GET'});
+ if (js){
+ eval(js.replace('var rule', 'rule'));
+ }
+ } else {
+ eval(ext.replace('var rule', 'rule'));
+ }
+ }
+ if (rule.模板 && muban.hasOwnProperty(rule.模板)) {
+ print('继承模板:'+rule.模板);
+ rule = Object.assign(muban[rule.模板], rule);
+ }
+ /** 处理一下 rule规则关键字段没传递的情况 **/
+ let rule_cate_excludes = (rule.cate_exclude||'').split('|').filter(it=>it.trim());
+ let rule_tab_excludes = (rule.tab_exclude||'').split('|').filter(it=>it.trim());
+ rule_cate_excludes = rule_cate_excludes.concat(CATE_EXCLUDE.split('|').filter(it=>it.trim()));
+ rule_tab_excludes = rule_tab_excludes.concat(TAB_EXCLUDE.split('|').filter(it=>it.trim()));
+
+ rule.cate_exclude = rule_cate_excludes.join('|');
+ rule.tab_exclude = rule_tab_excludes.join('|');
+ rule.host = (rule.host||'').rstrip('/');
+ HOST = rule.host;
+ if(rule.hostJs){
+ console.log(`检测到hostJs,准备执行...`);
+ try {
+ eval(rule.hostJs);
+ rule.host = HOST.rstrip('/');
+ }catch (e) {
+ console.log(`执行${rule.hostJs}获取host发生错误:`+e.message);
+ }
+ }
+ rule.url = rule.url||'';
+ rule.double = rule.double||false;
+ rule.homeUrl = rule.homeUrl||'';
+ rule.detailUrl = rule.detailUrl||'';
+ rule.searchUrl = rule.searchUrl||'';
+ rule.homeUrl = rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):(rule.homeUrl||rule.host);
+ rule.detailUrl = rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;
+ rule.二级访问前 = rule.二级访问前||'';
+ if(rule.url.includes('[')&&rule.url.includes(']')){
+ let u1 = rule.url.split('[')[0]
+ let u2 = rule.url.split('[')[1].split(']')[0]
+ rule.url = rule.host && rule.url?urljoin(rule.host,u1)+'['+urljoin(rule.host,u2)+']':rule.url;
+ }else{
+ rule.url = rule.host && rule.url ? urljoin(rule.host,rule.url) : rule.url;
+ }
+ if(rule.searchUrl.includes('[')&&rule.searchUrl.includes(']')){
+ let u1 = rule.searchUrl.split('[')[0]
+ let u2 = rule.searchUrl.split('[')[1].split(']')[0]
+ rule.searchUrl = rule.host && rule.searchUrl?urljoin(rule.host,u1)+'['+urljoin(rule.host,u2)+']':rule.searchUrl;
+ }else{
+ rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host,rule.searchUrl) : rule.searchUrl;
+ }
+
+ rule.timeout = rule.timeout||5000;
+ rule.encoding = rule.编码||rule.encoding||'utf-8';
+ rule.search_encoding = rule.搜索编码||rule.search_encoding||'';
+ rule.图片来源 = rule.图片来源||'';
+ rule.play_json = rule.hasOwnProperty('play_json')?rule.play_json:[];
+ rule.pagecount = rule.hasOwnProperty('pagecount')?rule.pagecount:{};
+ rule.proxy_rule = rule.hasOwnProperty('proxy_rule')?rule.proxy_rule:'';
+ rule.sniffer = rule.hasOwnProperty('sniffer')?rule.sniffer:'';
+ rule.sniffer = !!(rule.sniffer && rule.sniffer!=='0' && rule.sniffer!=='false');
+
+ rule.isVideo = rule.hasOwnProperty('isVideo')?rule.isVideo:'';
+
+ rule.tab_remove = rule.hasOwnProperty('tab_remove')?rule.tab_remove:[];
+ rule.tab_order = rule.hasOwnProperty('tab_order')?rule.tab_order:[];
+ rule.tab_rename = rule.hasOwnProperty('tab_rename')?rule.tab_rename:{};
+
+ if(rule.headers && typeof(rule.headers) === 'object'){
+ try {
+ let header_keys = Object.keys(rule.headers);
+ for(let k of header_keys){
+ if(k.toLowerCase() === 'user-agent'){
+ let v = rule.headers[k];
+ console.log(v);
+ if(['MOBILE_UA','PC_UA','UC_UA','IOS_UA','UA'].includes(v)){
+ rule.headers[k] = eval(v);
+ }
+ }else if(k.toLowerCase() === 'cookie'){
+ let v = rule.headers[k];
+ if(v && v.startsWith('http')){
+ console.log(v);
+ try {
+ v = fetch(v);
+ console.log(v);
+ rule.headers[k] = v;
+ }catch (e) {
+ console.log(`从${v}获取cookie发生错误:`+e.message);
+ }
+ }
+ }
+ }
+ }catch (e) {
+ console.log('处理headers发生错误:'+e.message);
+ }
+ }
+ // print(rule.headers);
+ rule_fetch_params = {'headers': rule.headers||false, 'timeout': rule.timeout, 'encoding': rule.encoding};
+ oheaders = rule.headers||{};
+ RKEY = typeof(key)!=='undefined'&&key?key:'drpy_' + (rule.title || rule.host);
+ pre(); // 预处理
+ init_test();
+ }catch (e) {
+ console.log('init_test发生错误:'+e.message);
+ }
+}
+
+let homeHtmlCache = undefined;
+
+/**
+ * js源获取首页分类和筛选特定返回对象中的函数
+ * @param filter 筛选条件字典对象
+ * @returns {string}
+ */
+function home(filter) {
+ console.log("home");
+ let homeObj = {
+ filter:rule.filter||false,
+ MY_URL: rule.homeUrl,
+ class_name: rule.class_name || '',
+ class_url: rule.class_url || '',
+ class_parse: rule.class_parse || '',
+ cate_exclude: rule.cate_exclude,
+ };
+ return homeParse(homeObj);
+}
+
+/**
+ * js源获取首页推荐数据列表特定返回对象中的函数
+ * @param params
+ * @returns {string}
+ */
+function homeVod(params) {
+ console.log("homeVod");
+ let homeVodObj = {
+ 推荐:rule.推荐,
+ double:rule.double,
+ homeUrl:rule.homeUrl,
+ detailUrl:rule.detailUrl
+ };
+ return homeVodParse(homeVodObj)
+ // return "{}";
+}
+
+/**
+ * js源获取分类页一级数据列表特定返回对象中的函数
+ * @param tid 分类id
+ * @param pg 页数
+ * @param filter 当前选中的筛选条件
+ * @param extend 扩展
+ * @returns {string}
+ */
+function category(tid, pg, filter, extend) {
+ let cateObj = {
+ url: rule.url,
+ 一级: rule.一级,
+ tid: tid,
+ pg: parseInt(pg),
+ filter: filter,
+ extend: extend
+ };
+ // console.log(JSON.stringify(extend));
+ return categoryParse(cateObj)
+}
+
+/**
+ * js源获取二级详情页数据特定返回对象中的函数
+ * @param vod_url 一级列表中的vod_id或者是带分类的自拼接 vod_id 如 fyclass$vod_id
+ * @returns {string}
+ */
+function detail(vod_url) {
+ let orId = vod_url;
+ let fyclass = '';
+ log('orId:'+orId);
+ if(vod_url.indexOf('$')>-1){
+ let tmp = vod_url.split('$');
+ fyclass = tmp[0];
+ vod_url = tmp[1];
+ }
+ let detailUrl = vod_url.split('@@')[0];
+ let url;
+ if(!detailUrl.startsWith('http')&&!detailUrl.includes('/')){
+ url = rule.detailUrl.replaceAll('fyid', detailUrl).replaceAll('fyclass',fyclass);
+ }else if(detailUrl.includes('/')){
+ url = urljoin(rule.homeUrl,detailUrl);
+ }else{
+ url = detailUrl
+ }
+ let detailObj = {
+ orId: orId,
+ url:url,
+ 二级:rule.二级,
+ 二级访问前:rule.二级访问前,
+ detailUrl:detailUrl,
+ fyclass:fyclass,
+ tab_exclude:rule.tab_exclude,
+ }
+ return detailParse(detailObj)
+}
+
+/**
+ * js源选集按钮播放点击事件特定返回对象中的函数
+ * @param flag 线路名
+ * @param id 播放按钮的链接
+ * @param flags 全局配置的flags是否需要解析的标识列表
+ * @returns {string}
+ */
+function play(flag, id, flags) {
+ let playObj = {
+ url:id,
+ flag:flag,
+ flags:flags
+ }
+ return playParse(playObj);
+}
+
+/**
+ * js源搜索返回的数据列表特定返回对象中的函数
+ * @param wd 搜索关键字
+ * @param quick 是否来自快速搜索
+ * @returns {string}
+ */
+function search(wd, quick, pg) {
+ if(rule.search_encoding){
+ if(rule.search_encoding.toLowerCase()!=='utf-8'){
+ // 按搜索编码进行编码
+ wd = encodeStr(wd,rule.search_encoding);
+ }
+ }else if(rule.encoding && rule.encoding.toLowerCase()!=='utf-8'){
+ // 按全局编码进行编码
+ wd = encodeStr(wd,rule.encoding);
+ }
+ let searchObj = {
+ searchUrl: rule.searchUrl,
+ 搜索: rule.搜索,
+ wd: wd,
+ //pg: pg,
+ pg: pg||1,
+ quick: quick,
+ };
+ // console.log(JSON.stringify(searchObj));
+ return searchParse(searchObj)
+}
+
+/**
+ * js源本地代理返回的数据列表特定返回对象中的函数
+ * @param params 代理链接参数比如 /proxy?do=js&url=https://wwww.baidu.com => params就是 {do:'js','url':'https://wwww.baidu.com'}
+ * @returns {*}
+ */
+function proxy(params){
+ if(rule.proxy_rule&&rule.proxy_rule.trim()){
+ rule.proxy_rule = rule.proxy_rule.trim();
+ }
+ if(rule.proxy_rule.startsWith('js:')){
+ rule.proxy_rule = rule.proxy_rule.replace('js:','');
+ }
+ let proxyObj = {
+ params:params,
+ proxy_rule:rule.proxy_rule
+ };
+ return proxyParse(proxyObj)
+}
+
+
+/**
+ * 是否启用辅助嗅探功能,启用后可以根据isVideo函数进行手动识别为视频的链接地址。默认为false
+ * @returns {*|boolean|boolean}
+ */
+function sniffer(){
+ let enable_sniffer = rule.sniffer || false;
+ if(enable_sniffer){
+ // log('准备执行辅助嗅探代理规则:\n'+rule.isVideo);
+ log('开始执行辅助嗅探代理规则...');
+ }
+ return enable_sniffer
+}
+
+/**
+ * 启用辅助嗅探功能后根据次函数返回的值识别地址是否为视频,返回true/false
+ * @param url
+ */
+function isVideo(url){
+ let t = 0;
+ let is_video;
+ if(rule.isVideo &&rule.isVideo.trim()){
+ is_video = rule.isVideo.trim();
+ }
+ if(is_video.startsWith('js:')){
+ is_video = is_video.replace('js:','');
+ t = 1;
+ }
+ let isVideoObj = {
+ url:url,
+ isVideo:is_video,
+ t:t,
+ };
+ let result = isVideoParse(isVideoObj);
+ if(result){
+ log('成功执行辅助嗅探规则并检测到视频地址:\n'+rule.isVideo);
+ }
+ return result
+}
+
+function DRPY(){//导出函数
+ return {
+ init: init,
+ home: home,
+ homeVod: homeVod,
+ category: category,
+ detail: detail,
+ play: play,
+ search: search,
+ proxy:proxy,
+ sniffer:sniffer,
+ isVideo:isVideo
+ }
+}
+
+/**
+ * 导出函数无法简写成下面的形式:
+
+ export default {
+ ...DRPY,
+ DRPY
+ }
+
+ */
+
+// 导出函数对象
+export default {
+ init,
+ home,
+ homeVod,
+ category,
+ detail,
+ play,
+ search,
+ proxy,
+ sniffer,
+ isVideo,
+ DRPY,
+}
\ No newline at end of file
diff --git a/JS/lib/drpy2.min.js b/JS/lib/drpy2.min.js
new file mode 100644
index 0000000..1f3beca
--- /dev/null
+++ b/JS/lib/drpy2.min.js
@@ -0,0 +1 @@
+import cheerio from"assets://js/lib/cheerio.min.js";import"assets://js/lib/crypto-js.js";import 模板 from"../js/模板.js";import{gbkTool}from"./gbk.js";function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log("预处理执行失败:"+e.message)}}}let rule={};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.48beta16 20231011";const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|下载|剧情|热播";const OCR_RETRY=3;const OCR_API="http://drpy.nokia.press:8028/ocr/drpy/text";if(typeof MY_URL==="undefined"){var MY_URL}var HOST;var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SPECIAL_URL=/^(ftp|magnet|thunder|ws):/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;if(typeof Object.assign!="function"){Object.assign=function(){var target=arguments[0];for(var i=1;ithis.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];globalThis.encodeUrl=urlencode;globalThis.urlencode=urlencode;function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1];result=result.replace(/^['|"](.*)['|"]$/,"$1")}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print("html对象转文本发生了错误:"+e.message)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)&&!SPECIAL_URL.test(ret)){if(/http/.test(ret)){ret=ret.substr(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html=request(OCR_API,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true);code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cntit.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie,"User-Agent":MOBILE_UA},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function require(url){eval(request(url))}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}if(!fetch_params){fetch_params={}}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj.method="POST";return request(url,obj)}fetch=request;print=function(data){data=data||"";if(typeof data=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;print("宝塔验证访问链接:"+url);html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i=3){try{let html=getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p[0]);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){content=_pdfh(item2,p6)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表双层定位处理发生错误:"+e.message)}}}}else{let items=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){content=_pdfh(item,p5)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log("首页列表单层定位处理发生错误:"+e.message)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print("合并不同分类对应的默认筛选出错:"+e.message)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl});url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;let vod_name=_pdfh(it,p[1]).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p[2],MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}d.push({vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级.split(";");let url=searchObj.searchUrl.replaceAll("**",searchObj.wd);if(searchObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(searchObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",searchObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",searchObj.pg)}}MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{html=getHtml(MY_URL)}if(html){if(/系统安全验证|输入验证码/.test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}let list=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);list.forEach(it=>{let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){content=_pdfh(it,p5)}else{content=""}let vod_id=link;let vod_name=_pdfh(it,p1).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p2,MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}let ob={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print("搜索发生错误:"+e.message);return"{}"}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let orId=detailObj.orId;let vod_name="片名";let vod_pic="";let vod_id=orId;if(rule.二级==="*"){let extra=orId.split("@@");vod_name=extra.length>1?extra[1]:vod_name;vod_pic=extra.length>2?extra[2]:vod_pic}let vod={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,type_name:"类型",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}if(p==="*"){vod.vod_play_from="道长在线";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL.split("@@")[0]}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""))}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["道长在线"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print("格式化LISTS发生错误:"+e.message)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print("js执行lists: 发生错误:"+e.message)}}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL)}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);vod=vodDeal(vod);return JSON.stringify({list:[vod]})}function get_tab_index(vod){let obj={};vod.vod_play_from.split("$$$").forEach((it,index)=>{obj[it]=index});return obj}function vodDeal(vod){let vod_play_from=vod.vod_play_from.split("$$$");let vod_play_url=vod.vod_play_url.split("$$$");let tab_removed_list=vod_play_from;let tab_ordered_list=vod_play_from;let tab_renamed_list=vod_play_from;let tab_list=vod_play_from;let play_ordered_list=vod_play_url;if(rule.tab_remove&&rule.tab_remove.length>0||rule.tab_order&&rule.tab_order.length>0){let tab_index_dict=get_tab_index(vod);if(rule.tab_remove&&rule.tab_remove.length>0){tab_removed_list=vod_play_from.filter(it=>!rule.tab_remove.includes(it));tab_list=tab_removed_list}if(rule.tab_order&&rule.tab_order.length>0){let tab_order=rule.tab_order;tab_ordered_list=tab_removed_list.sort((a,b)=>{return(tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a))-(tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))});tab_list=tab_ordered_list}play_ordered_list=tab_list.map(it=>vod_play_url[tab_index_dict[it]])}if(rule.tab_rename&&typeof rule.tab_rename==="object"&Object.keys(rule.tab_rename).length>0){tab_renamed_list=tab_list.map(it=>rule.tab_rename[it]||it);tab_list=tab_renamed_list}vod.vod_play_from=tab_list.join("$$$");vod.vod_play_url=play_ordered_list.join("$$$");return vod}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;let common_play={parse:1,url:input,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.replace("js:","").trim();print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:1,jx:tellIsJx(input),url:input}}catch(e){print("js免嗅错误:"+e.message);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function proxyParse(proxyObj){var input=proxyObj.params;if(proxyObj.proxy_rule){log("准备执行本地代理规则:\n"+proxyObj.proxy_rule);try{eval(proxyObj.proxy_rule);if(input&&input!==proxyObj.params&&Array.isArray(input)&&input.length===3){return input}else{return[404,"text/plain","Not Found"]}}catch(e){return[500,"text/plain","代理规则错误:"+e.message]}}else{return[404,"text/plain","Not Found"]}}function isVideoParse(isVideoObj){var input=isVideoObj.url;if(!isVideoObj.t){let re_matcher=new RegExp(isVideoObj.isVideo,"i");return re_matcher.test(input)}else{try{eval(isVideoObj.isVideo);if(typeof input==="boolean"){return input}else{return false}}catch(e){log("执行嗅探规则发生错误:"+e.message);return false}}}function init(ext){console.log("init");try{let muban=模板.getMubans();if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){if(ext.startsWith("http")){let js=request(ext,{method:"GET"});if(js){eval(js.replace("var rule","rule"))}}else{eval(ext.replace("var rule","rule"))}}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.host=(rule.host||"").rstrip("/");HOST=rule.host;if(rule.hostJs){console.log(`检测到hostJs,准备执行...`);try{eval(rule.hostJs);rule.host=HOST.rstrip("/")}catch(e){console.log(`执行${rule.hostJs}获取host发生错误:`+e.message)}}rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}if(rule.searchUrl.includes("[")&&rule.searchUrl.includes("]")){let u1=rule.searchUrl.split("[")[0];let u2=rule.searchUrl.split("[")[1].split("]")[0];rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.searchUrl}else{rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl}rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};rule.proxy_rule=rule.hasOwnProperty("proxy_rule")?rule.proxy_rule:"";rule.sniffer=rule.hasOwnProperty("sniffer")?rule.sniffer:"";rule.sniffer=!!(rule.sniffer&&rule.sniffer!=="0"&&rule.sniffer!=="false");rule.isVideo=rule.hasOwnProperty("isVideo")?rule.isVideo:"";rule.tab_remove=rule.hasOwnProperty("tab_remove")?rule.tab_remove:[];rule.tab_order=rule.hasOwnProperty("tab_order")?rule.tab_order:[];rule.tab_rename=rule.hasOwnProperty("tab_rename")?rule.tab_rename:{};if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}else if(k.toLowerCase()==="cookie"){let v=rule.headers[k];if(v&&v.startsWith("http")){console.log(v);try{v=fetch(v);console.log(v);rule.headers[k]=v}catch(e){console.log(`从${v}获取cookie发生错误:`+e.message)}}}}}catch(e){console.log("处理headers发生错误:"+e.message)}}rule_fetch_params={headers:rule.headers||false,timeout:rule.timeout,encoding:rule.encoding};oheaders=rule.headers||{};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);pre();init_test()}catch(e){console.log("init_test发生错误:"+e.message)}}let homeHtmlCache=undefined;function home(filter){console.log("home");let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:rule.class_parse||"",cate_exclude:rule.cate_exclude};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";log("orId:"+orId);if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url.split("@@")[0];let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,"二级访问前":rule.二级访问前,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick,pg){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:pg||1,quick:quick};return searchParse(searchObj)}function proxy(params){if(rule.proxy_rule&&rule.proxy_rule.trim()){rule.proxy_rule=rule.proxy_rule.trim()}if(rule.proxy_rule.startsWith("js:")){rule.proxy_rule=rule.proxy_rule.replace("js:","")}let proxyObj={params:params,proxy_rule:rule.proxy_rule};return proxyParse(proxyObj)}function sniffer(){let enable_sniffer=rule.sniffer||false;if(enable_sniffer){log("开始执行辅助嗅探代理规则...")}return enable_sniffer}function isVideo(url){let t=0;let is_video;if(rule.isVideo&&rule.isVideo.trim()){is_video=rule.isVideo.trim()}if(is_video.startsWith("js:")){is_video=is_video.replace("js:","");t=1}let isVideoObj={url:url,isVideo:is_video,t:t};let result=isVideoParse(isVideoObj);if(result){log("成功执行辅助嗅探规则并检测到视频地址:\n"+rule.isVideo)}return result}function DRPY(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo}}export default{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,DRPY:DRPY};
\ No newline at end of file
diff --git a/tvbox2.json b/tvbox2.json
index f45f78d..f618ad2 100644
--- a/tvbox2.json
+++ b/tvbox2.json
@@ -1,21 +1,18 @@
{
-"spider":"https://files.zohopublic.com.cn/public/workdrive-public/download/uyv0t678c488189af47bb91dc108484d17431",
+"spider":"https://files.zohopublic.com.cn/public/workdrive-public/download/uyv0t678c488189af47bb91dc108484d17431;md5;488cfa45fed992feb2a2344586970d90",
"lives":[
-{"name":"综合一","type":0,"url":"./TV/tv.txt","epg":"http://epg.112114.xyz/?ch={name}&date={date}", "logo": "https://epg.112114.xyz/logo/{name}.png"},
-//{"name":"综合二","type":0,"url":"./TV/live2.txt","epg":"http://epg.112114.xyz/?ch={name}&date={date}"},
-//{"name":"综合三","type":0,"url":"http://home.jundie.top:81/ray/tvlive.txt","epg":"http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"},
-//{"name":"综合四","type":0,"url":"./TV/live4.txt","epg":"http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}"}
+{"name":"综合一","type":0,"url":"https://fanmingming.com/txt?url=https://live.fanmingming.com/tv/m3u/ipv6.m3u","epg":"http://epg.112114.xyz/?ch={name}&date={date}", "logo": "https://epg.112114.xyz/logo/{name}.png"},
],
"sites":[
-{"key":"drpy_js_豆瓣","name":" 豆瓣┃JS","type":3,"api":"./JS/lib/drpy.min.js","ext":"./JS/js/drpy.js"},
+{"key":"drpy_js_豆瓣","name":" 豆瓣┃JS","type":3,"api":"./JS/lib/drpy2.min.js","ext":"./JS/js/drpy.js"},
//{"key": "豆瓣","name": "豆瓣┃SP","type": 3,"api": "csp_DouDou","searchable": 0,"quickSearch": 0,"filterable": 0},
-{"key": "磁力","name": "荐片┃备用","type": 3,"playerType": "1","api": "https://ghproxy.net/https://raw.githubusercontent.com/Dong-learn9/TVBox-zyjk/main/JS/lib/drpy2.js","ext": "https://ghproxy.net/https://raw.githubusercontent.com/Dong-learn9/TVBox-zyjk/main/JS/js/荐片.js"},
+{"key": "磁力","name": "荐片┃备用","type": 3,"playerType": "1","api": "https://ghproxy.net/https://raw.githubusercontent.com/Dong-learn9/TVBox-zyjk/main/JS/lib/drpy2.min.js","ext": "https://ghproxy.net/https://raw.githubusercontent.com/Dong-learn9/TVBox-zyjk/main/JS/js/荐片.js"},
{"key": "js_荐片","name": "荐片┃JS","type": 3,"api": "https://xhdwc.tk/lib/drpy2.min.js","ext": "https://ghproxy.net/https://raw.githubusercontent.com/Dong-learn9/TVBox-zyjk/main/JS/js/荐片.js","playerType": 1,"searchable": 1,"quickSearch": 1,"filterable": 1},
@@ -36,17 +33,7 @@
{"key": "Xinsj","name": "视觉┃直连","type": 3, "api": "csp_Xinsj","searchable": 1,"quickSearch": 1,"changeable": 1,"ext": "https://www.6080yy3.com/"},
{"key": "csp_Czsapp", "name": "厂长┃直连","type": 3,"api": "csp_Czsapp","playerType": 2,"searchable": 1,"quickSearch": 1,"changeable": 1,"ext": "https://www.czzy88.com/","filterable": 1},
- {
- "key": "达人",
- "name": "达人┃聚合",
- "type": 3,
- "api": "csp_AppYsV2",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "jar": "http://xhww.fun:63/小米/暴脾气.jar;md5;bb155c3f0133bbce4756ad52003f5968",
- "ext": "http://4k.953365.cn:8090/xgapp.php/v2/"
- },
+{"key": "达人", "name": "达人┃聚合", "type": 3, "api": "csp_AppYsV2", "searchable": 1, "quickSearch": 1, "filterable": 1, "jar": "http://xhww.fun:63/小米/暴脾气.jar;md5;bb155c3f0133bbce4756ad52003f5968", "ext": "http://4k.953365.cn:8090/xgapp.php/v2/"},
{"key": "drpy_js_短剧网","name": "短剧┃JS","type": 3,"api": "https://xhdwc.tk/lib/drpy2.min.js", "searchable": 1,"quickSearch": 1,"changeable": 0,"ext": "./JS/js/短剧网.js"},
@@ -329,43 +316,23 @@
{"key":"南瓜","name":"南瓜┃App","type":3,"api":"csp_NanGua","playerType":2,"searchable":1,"quickSearch":1,"changeable":1},
- {
- "key": "琪琪资源",
- "name": "官源┃切片",
- "type": 1,
- "api": "https://playersll.gaoxin155.com.cn/api.php/provide/vod/",
- "playerType": 2,
- "searchable": 1,
- "changeable": 1,
- "quickSearch": 1,
- "categories": [
- "连续剧",
- "电影",
- "综艺",
- "动漫"
- ]
- },
+{"key":"drpy_js_360影视","name":"360┃弹幕[js]","type":3,"api":"./JS/lib/drpy2.min.js","ext":"./JS/js/360影视.js"},
- {
- "key": "csp_SP33",
- "name": "三三┃解析",
- "type": 3,
- "api": "csp_SP33",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "changeable": 0
- },
+{"key":"drpy_js_百忙无果","name":"芒果┃弹幕[js]","type":3,"api":"./JS/lib/drpy2.min.js","ext":"./JS/js/百忙无果.js"},
- {
- "key": "77",
- "name": "七七┃App",
- "type": 3,
- "api": "csp_Kunyu77",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1
- },
+{"key":"drpy_js_腾云驾雾","name":"腾讯┃弹幕[js]","type":3,"api":"./JS/lib/drpy2.min.js","ext":"./JS/js/腾云驾雾.js"},
+
+{"key":"drpy_js_奇珍异兽","name":"爱奇┃弹幕[js]","type":3,"api":"./JS/lib/drpy2.min.js","ext":"./JS/js/奇珍异兽.js"},
+
+{"key":"drpy_js_哔哩直播","name":"弹幕 | 哔哩直播[js]","type":3,"api":"./JS/lib/drpy2.min.js","style":{"type":"rect","ratio":1.597},"changeable":0,"ext":"./JS/js/哔哩直播.js"},
+
+{"key":"drpy_js_哔哩影视","name":"弹幕 | 哔哩影视[js]","type":3,"api":"./JS/lib/drpy2.min.js","style":{"type":"rect","ratio":1.597},"changeable":0,"ext":"./JS/js/哔哩影视.js"},
+
+{"key":"drpy_js_JustLive","name":"弹幕 | JustLive[js]","type":3,"api":"./JS/lib/drpy2.min.js","style":{"type":"rect","ratio":1.597},"changeable":0,"ext":"./JS/js/JustLive.js"},
+
+{ "key": "csp_SP33", "name": "三三┃解析", "type": 3, "api": "csp_SP33", "searchable": 1, "quickSearch": 1, "filterable": 1, "changeable": 0},
+
+{ "key": "77", "name": "七七┃App", "type": 3, "api": "csp_Kunyu77", "searchable": 1, "quickSearch": 1, "changeable": 1},
{"key":"csp_Dm84","name":"动漫┃巴士","type":3,"api":"csp_Dm84","searchable":1,"quickSearch":1,"changeable":1},
@@ -377,10 +344,8 @@
{"key":"Aid","name":"急救┃教学","type":3,"api":"csp_FirstAid","searchable":0,"quickSearch":0,"changeable":0,"style": { "type": "rect", "ratio":3.8}},
-
//{"key":"Dy555","name":"555┃TS","type":"3","api":"csp_Dora","searchable":"1","quickSearch":"1","filterable":"1","ext":"f41992bd740145ed58cb212dc0876582","jar":"./JAR/cs.jar"},
-
//{"key": "演唱会","name": "演唱会 (XB)","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": "./XB/演唱会.json"},
//{"key": "戏曲","name": "戏 曲(XB)","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": "./XB/戏曲.json"},
//{"key": "MV","name": "歌 曲MV(XB)","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": "./XB/歌曲MV.json"},