Add files via upload

This commit is contained in:
newrecha
2024-08-25 20:20:01 +08:00
committed by GitHub
parent 152263345e
commit defb1c4742
62 changed files with 14907 additions and 0 deletions
+647
View File
@@ -0,0 +1,647 @@
self 我的115网盘 1
swz93883nhj?password=sa53 豆瓣|TOP250电影_1.67TB 1
swz8h1h33xj?password=0000 豆瓣|TOP250电影_12.65Tb 1
sw60fyp33eb?password=lcd6 排行|豆瓣2022影视排行榜_1.51T
sw6tco83hbe?password=v517 排行|2021豆瓣年度影视榜单_832.64G
sw6tcot3hbe?password=e9d7 排行|2022必看最热门影视剧十部_620.84G
sw6e6ij3flt?password=t055 REMUX|4K_REMUX_774部_41.16T 1
swz6gd93fwo?password=8888 REMUX|4K_REMUX电影2257部 1
swzzmu33hi8?password=i5e0 REMUX|无损REMUX电影_101.32TB 1
swz9yva3hi8?password=m332 REMUX|2267部2160p_remux_FGT_101.32TB
swzn5913wzq?password=nbc5 REMUX|969部部欧美4K原盘电影_45.03T
swz1t3b3hdc?password=p5c9 原盘|电影原盘已刮削(194T)
sw62svu3nbg?password=z718 原盘|sGNB特效字幕原盘_19T
sw620dv3wzn?password=e536 原盘|sGNB特效字幕原盘_313部_21.18T
sw6u87633jp?password=u527 原盘|sGNB特效字幕原盘_315部_21.52T
sw6e6i13flt?password=f794 原盘|4K原盘_16.94T
sw3uax136w4?password=eea6 原盘|CMCT迷你蓝光原盘_2.81T
sw69nao3h3b?password=a548 原盘|港片蓝光原盘669部_16.3T
swnmisp3wxf?password=i1c6 原盘|剧集原盘_23.3T
swznmd03nc7?password=p897 原盘|动漫原盘_40.49T
swz6gp53fwo?password=8888 原盘|蓝光原盘_646T_合集
sw313rp3zx1?password=w146 原盘|SGNB特效字幕蓝光原盘563部_26.52TB
sw68b0u3hhq?password=gd41 原盘|蓝光原盘_666.3Pb
swzg3ja33xj?password=f3h5 原盘|FRDS站396部_8.87TB
swz18wn3zh9?password=yf61 原盘|演唱会原盘_820T
sw6udf93wcx?password=na63 原盘|演唱会_蓝光原盘22TB
sw6ug2k3nom?password=t7d0 原盘|香港电影_香港蓝光高清粤语电影合集1242部_(16T)
sw62cfo3z23?password=ze90 原盘|3D电影_68.26T
swz3ys93wzv?password=rc12 电影|电影频道3300部_16.33T
swnrb3b3nat?password=pd76 电影|亚洲1080P_9.33T 1
swz8hp033xj?password=0000 电影|多部曲电影系列_21TB 1
swzj12t3znw?password=tff8 电影|未分类电影_4.65TB 1
sw6uh9x3z2b?password=6666 电影|未分类电影_1620TB 1
swzgep23wye?password=c106 电影|大陆电影_6TB 1
swzg8dd3wye?password=m5b3 电影|日韩电影_6TB 1
swzplko3wye?password=k596 欧美电影|合集_22TB
swzj2cx3h4y?password=g180 欧美电影|漫威宇宙系列_1.87TB
swz936a3znw?password=a0d3 欧美电影|指环王系列_300GB
swz93n63z57?password=dda3 欧美电影|变形金刚_500GB
sw629ie3nli?password=d5c7 NetFlix_6.17T
sw6tco93hbe?password=ka54 剧集|TVB电视剧合集650部_74.3T
swznm373w1p?password=pe35 剧集|欧美剧_60.9T 1
swnsdrk3h2m?password=p783 剧集|海贼王_553.61G
swntmxc3wp6?password=a3f5 剧集|皇家师姐系列
swnsdrm3h2m?password=fea2 剧集|火影忍者全集_455.42G
swzn9y13zwh?password=crow 剧集|老友记全十季_594.26G
sw6q9w833o2?password=a956 剧集|柯南_766.64G
sw6p2t63h2m?password=oea1 剧集|迷失1-6季_203.3G
swz826g3nc0?password=ff47 剧集|甜蜜家园_Season_3
swztlnh33xj?password=f3h5 剧集|行尸走肉全季杜比
swz6fb3369v?password=9999 香港|GOTV_10.46TB
swzsehq3ncb?password=5566 香港|合集8.23TB
swz9lr83w8f?password=oc53 香港|杜琪峰(银河映像系列)
swzdtjc3nb4?password=ef97 香港|成龙
sw30v4b3zu2?password=a429 香港|林正英电影合集46部_209.13G
swz8cd233xj?password=0000 香港|满清十大酷刑第一部
sw6gqo43flt?password=qc62 香港|周星驰系列_854.96G
swzdtj93nb4?password=d6c3 香港|周星驰
swzv6533697?password=2618 日韩剧|合集18.12TB
swzah0d3wvk?password=c142 国产剧|合集_51.41TB
swz8t9x3h5k?password=n3f4 国产剧|【繁花_翡翠台源_100GB】
swz93y53zp0?password=ef25 国产剧|【唐朝诡事录_全2季】
sw6u7zc3fwo?password=8888 国产剧|【陈情令】_(2019)_50集全_4K中字【86G】
sw6u7ep3fwo?password=8888 国产剧|【隐秘的角落】(2020)_12集全_4K中字【69G】
sw6u78w3fwo?password=8888 国产剧|【庆余年】(2019)_46集全_4K中字【62G】
sw6u79l3fwo?password=8888 国产剧|【沉默的真相】(2020)_12集全_4K中字【17G】
sw6u79p3fwo?password=8888 国产剧|【斗罗大陆】(2021)_40集全_1080P中字【46G】
sw6u72q3fwo?password=8888 国产剧|【开端】(2022)_15集全_4K中字【58G】
sw6u72m3fwo?password=8888 国产剧|【狂飙】(2023)_39集全_4K中字【77G】
sw6u7u33fwo?password=8888 国产剧|【漫长的季节】(2023)_12集全_4K中字【36G】
sw6ukxa3fwo?password=8888 国产剧|【梦华录】(2022)_40集全_4K中字【148G】
sw6uil53fwo?password=8888 国产剧|【琅琊榜】(2015)_54集全_4K中字【80G】
sw6u42s3fwo?password=8888 国产剧|【苍兰诀】(2022)_36集全_4K中字【42G】
sw6u42b3fwo?password=8888 国产剧|【后宫·甄嬛传】(2011)_76集全_4K中字【490G】
sw6ugfa3fwo?password=8888 国产剧|【山河令】36集全_4K中字【87G】
sw6ugfj3fwo?password=8888 国产剧|【沉香如屑·沉香重华】_(2022)_59集全_4K中字【125G】
sw6ugl73fwo?password=8888 国产剧|【星汉灿烂·月升沧海】56集全_4K画质【71G】
sw6ugoj3fwo?password=8888 国产剧|【武林外传】(2006)_81集全_4K中字【104GB】
sw6ugkc3fwo?password=8888 国产剧|【白夜追凶】(2017)_32集全_4K中字【257G】
sw6utz93fwo?password=8888 国产剧|【知否知否应是绿肥红瘦】(2018)_73集全_4K中字【119G】
sw6utfi3fwo?password=8888 国产剧|【莲花楼】(2023)_40集全_4K中字【52G】
sw6utft3fwo?password=8888 国产剧|【香蜜沉沉烬如霜】(2018)_60集全_4K中字【119G】
sw6utts3fwo?password=8888 国产剧|【觉醒年代】(2021)_43集全_4K中字【86G】
sw6ut8p3fwo?password=8888 国产剧|【长安十二时辰】(2019)_48集全_4K中字【46G】
sw6ut8j3fwo?password=8888 国产剧|【你是我的荣耀】(2021)_32集全_4K中字【41G】
sw6ujon3fwo?password=8888 国产剧|【亲爱的,热爱的】(2019)_41集全_4K中字【59G】
sw6u0rm3fwo?password=8888 国产剧|【人民的名义】(2017)_55集全_4K中字【118G】
sw6u0px3fwo?password=8888 国产剧|【三体】(2023)_4K中字【21G】
sw6u0tb3fwo?password=8888 国产剧|【我的人间烟火】(2023)_40集全_1080P中字【45G】
sw6u01o3fwo?password=8888 国产剧|【山海情】(2021)_4K中字【33G】
sw6u01x3fwo?password=8888 国产剧|【你微笑时很美】(2021)_31集全_4K中字【54G】
sw6uupp3fwo?password=8888 国产剧|【延禧攻略】(2018)_70集全_4K中字【123G】
sw6uujx3fwo?password=8888 国产剧|【有翡】_(2020)_51集全_1080P中字【72G】
sw6uu063fwo?password=8888 国产剧|【最好的我们】(2016)_24集全_4K中字【24G】
swz36yf3fwo?password=8888 国产剧|【风吹半夏】(2022)_36集全_4K中字【77G】
swz36ye3fwo?password=8888 国产剧|【余生,请多指教】(2022)_29集全_1080P种子【15G】
swz36yt3fwo?password=8888 国产剧|【传闻中的陈芊芊】(2020)_24集全_4K中字【29G】
swz36ka3fwo?password=8888 国产剧|【扫黑风暴】(2021)_28集全_1080P中字【31G】
swz36dx3fwo?password=8888 国产剧|【狼殿下】(2020)_49集全_4K中字【88G】
swz36m63fwo?password=8888 国产剧|【仙剑奇侠传三】(2009)_37集全_4K中字【137G】
swz36me3fwo?password=8888 国产剧|【长相思】(2023)_39集全_4K中字【38G】
swz36m03fwo?password=8888 国产剧|【锦衣之下】(2019)_55集全_4K中字【80G】
swz365l3fwo?password=8888 国产剧|【琉璃】(2020)_59集全_4K中字【194G】
swz36543fwo?password=8888 国产剧|【长月烬明】(2023)_40集全_4K中字【95G】
swz365x3fwo?password=8888 国产剧|【都挺好】(2019)_46集全_4K中字【84G】
swz36v63fwo?password=8888 国产剧|【龙岭迷窟】(2020)_18集全_4K中字【21G】
swz3hop3fwo?password=8888 国产剧|【父母爱情】(2014)_44集全_4K中字【61G】
swz3hks3fwo?password=8888 国产剧|【御赐小仵作】(2021)_20集36集双版本_1080P【101G】
swz3hk73fwo?password=8888 国产剧|【仙剑奇侠传】34集全_1080P中字【24G】
swz3hkj3fwo?password=8888 国产剧|【三生三世枕上书】(2020)_56集全_4K中字【82G】
swz3h5j3fwo?password=8888 国产剧|【三生三世十里桃花】(2017)_58集全_4K中字【146G】
swz3sf73fwo?password=8888 国产剧|【伪装者】(2015)_41集全_4K中字【43G】
swz3sf43fwo?password=8888 国产剧|【4K修复】【西游记+续集】【218G】
swz3sfv3fwo?password=8888 国产剧|【猎罪图鉴】(2022)全20集_4K中字
swz3slh3fwo?password=8888 国产剧|【长歌行】(2021)_49集全_1080P中字【66G】
swz3s4x3fwo?password=8888 国产剧|【爱情公寓】1-5季_全集+番外篇+大电影_4K中字【203G】
swz3s403fwo?password=8888 国产剧|【小欢喜】(2019)_49集全_4K中字【75G】
swz3skd3fwo?password=8888 国产剧|【重启之极海听雷】第一季_(2020)_4K中字【172G】
swz3skm3fwo?password=8888 国产剧|【重启之极海听雷】第二季_(2020)_4K中字【42G】
swz3sdn3fwo?password=8888 国产剧|【摩天大楼】(2020)_16集全_4K中字【62G】
swz3sde3fwo?password=8888 国产剧|【无证之罪】(2017)_12集全_4K中字【17G】
swz3smy3fwo?password=8888 国产剧|【如懿传】(2018)_87集全_1080P中字【194G】
swz3sai3fwo?password=8888 国产剧|【步步惊心】(2011)_35集全_4K中字【101G】
swz3sag3fwo?password=8888 国产剧|【我是余欢水】(2020)_12集全_4K中字【77G】
swz3spn3fwo?password=8888 国产剧|【去有风的地方】(2023)_40集全_4K中字【101G】
swz3lbp3fwo?password=8888 国产剧|【梦中的那片海】(2023)_38集全_4K中字【24G】
swz3lob3fwo?password=8888 国产剧|【欢乐颂】1-4季_1080P中字【156G】
swz3lok3fwo?password=8888 国产剧|【棋魂】(2020)_36集全_4K中字【210G】
swz3qos3fwo?password=8888 国产剧|【叛逆者】(2021)_43集全_4K中字【49G】
swz3qas3fwo?password=8888 国产剧|【以家人之名】(2020)_40集全_1080P中字【47G】
swz3bge3fwo?password=8888 国产剧|【唐人街探案】(2020)_12集全_4K中字【18G】
swz6syq3fwo?password=8888 国产剧|【警察荣誉】38集全_4K中字【57G】
swz6sk93fwo?password=8888 国产剧|【三十而已】(2020)_43集全_1080P中字【41G】
swz6sdq3fwo?password=8888 国产剧|【玉骨遥】40集全_4K中字【60G】
swz6sd73fwo?password=8888 国产剧|【爱很美味】(2021)_20集全_4K中字【8.6G】
swz6smb3fwo?password=8888 国产剧|【司藤】30集全_4K中字【74G】
swz6smv3fwo?password=8888 国产剧|【赘婿】36集全_4K中字【54G】
swz6s5n3fwo?password=8888 国产剧|【终极笔记】(2020)_36集全_4K中字【178G】
swz6s5l3fwo?password=8888 国产剧|【人世间】(2022)_58集全_4K中字【63G】
swz6s5e3fwo?password=8888 国产剧|【周生如故】(2021)_24集全_1080P中字【15G】
swz6s2r3fwo?password=8888 国产剧|【战长沙】(2014)_32集全_1080P中字【111G】
swz6lz23fwo?password=8888 国产剧|【你好,旧时光】(2017)_30集全_4K中字【80G】
swz6lhb3fwo?password=8888 国产剧|【风起洛阳】(2021)_39集全_4K中字【43G】
swz6lfp3fwo?password=8888 国产剧|【潜伏】(2008)_30集全_4K中字【41G】
swz6ls73fwo?password=8888 国产剧|【东宫】(2019)_52集全_4K中字【119G】
swz6lsc3fwo?password=8888 国产剧|【幸福到万家】(2022)_40集全_4K中字【64G】
swz6lql3fwo?password=8888 国产剧|【红楼梦】(1987)_36集全_4K中字【42G】
swz6lqe3fwo?password=8888 国产剧|【还珠格格】1-3季全_1080P中字【141G】
swz6l753fwo?password=8888 国产剧|【鬼吹灯之精绝古城】(2016)_21集全_1080P中字【16G】
swz6liq3fwo?password=8888 国产剧|【亮剑】(2005)_30集全_4K中字【35G】
swz6lic3fwo?password=8888 国产剧|【大宋少年志】1-2季全_4K中字【139G】
swz6l453fwo?password=8888 国产剧|【唐朝诡事录】(2022)_36集全_4K中字【51G】
swz6l483fwo?password=8888 国产剧|【卿卿日常】(2022)_40集全_4K中字【79G】
swz6lkf3fwo?password=8888 国产剧|【微微一笑很倾城】(2016)_30集全_1080P中字【22G】
swz6lmu3fwo?password=8888 国产剧|【爱情公寓】1-5季+番外1-3季_4K中字【200G】
swz6l5a3fwo?password=8888 国产剧|【宸汐缘】(2019)_60集全_4K中字【96G】
swz6lve3fwo?password=8888 国产剧|【大明王朝1566】(2007)_46集全_1080P中字【30G】
swz6lew3fwo?password=8888 国产剧|【河神】1-2季全_4K中字【51G】
swz6lar3fwo?password=8888 国产剧|【大江大河】(2018)_47集全_4K中字【52G】
swz6lpo3fwo?password=8888 国产剧|【女心理师】(2021)_40集全_4K中字【68G】
swz6lus3fwo?password=8888 国产剧|【大明王朝1566】(2007)_46集全_4K中字【250G】
swz6b2y3fwo?password=8888 国产剧|【我在他乡挺好的】(2021)_12集全_1080P中字【30G】
swz6o6q3fwo?password=8888 国产剧|【余罪】1-2季全_1080P中字【19.5G】
swz6ooq3fwo?password=8888 国产剧|【士兵突击】(2006)_30集全_4K中字【45G】
swz6oyp3fwo?password=8888 国产剧|【天盛长歌】(2018)_70集全_4K中字【132G】
swz6k9q3fwo?password=8888 国产剧|【与君初相识·恰似故人归】(2022)_42集全_4K中字【101G】
swz6doo3fwo?password=8888 国产剧|【谁是凶手】(2021)_16集全_4K中字【18G】
swz3qvq3fwo?password=8888 美剧|_冰与火之歌:权力的游戏【1-8季全1.31TB】
sw6uoem3fwo?password=8888 美剧|【冰与火之歌:权力的游戏】1-8季全_4K中字杜比视界【1.85T】
sw6u7iy3fwo?password=8888 美剧|【神探夏洛克】1-4季全_1080P中字【78G】
sw6uotq3fwo?password=8888 美剧|【绝命毒师】1-5季全_4K中字【209G】
sw6u7n93fwo?password=8888 美剧|【怪奇物语】1-4季_4K中字【255G】
sw6u7y83fwo?password=8888 美剧|【老友记】1-10季全_1080P中字【209G】
sw6u75u3fwo?password=8888 美剧|【生活大爆炸】1-12季全_1080P中字【258G】
sw6u7es3fwo?password=8888 美剧|【行尸走肉】1-11季全_1080P中字【585G】
swztlnh33xj?password=f3h5 美剧|【行尸走肉】1-11季全_REMUX【1.27TB】
sw6u7tp3fwo?password=8888 美剧|【切尔诺贝利】5集全_1080P中字【13G】
sw6u78c3fwo?password=8888 美剧|【黑镜】1-6季全_4K中字【144G】
sw6u79h3fwo?password=8888 美剧|【后翼弃兵】(2020)_7集全_4K中字【57G】
sw6uify3fwo?password=8888 美剧|【越狱】1-5季全+特别篇_1080P中字【182G】
sw6u4vy3fwo?password=8888 美剧|【真探】1-3季全_1080P中字【29G】
sw6u4j73fwo?password=8888 美剧|【嗜血法医】1-9季全_1080P中字【246G】
sw6u4963fwo?password=8888 美剧|【黑袍纠察队】1-3季_4K中字【182G】
sw6u41k3fwo?password=8888 美剧|【风骚律师】1-6季全_4K中字【275G】
sw6u4c93fwo?password=8888 美剧|【纸牌屋】1-6季全_4K中字【284G】
sw6u42n3fwo?password=8888 美剧|【浴血黑帮】1-6季全_4K中字【162G】
sw6u42v3fwo?password=8888 美剧|【曼达洛人】1-3集全_4K中字【136G】
swzjpfq3wrb?password=s8f0 美剧|【迷失】1-6季全_1080P中字【108G】
sw6uakw3fwo?password=8888 美剧|【猎魔人】1-3季_4K中字【139G】
sw6uakm3fwo?password=8888 美剧|【性爱自修室】1-4季_4K中字【193G】
sw6uadf3fwo?password=8888 美剧|【最后生还者】第一季_4K中字【67G】
sw6uadk3fwo?password=8888 美剧|_【致命女人】1-2季_1080P中字【29G】
sw6uaji3fwo?password=8888 美剧|【西部世界】1-4季_4K中字【445G】
sw6ua2t3fwo?password=8888 美剧|【办公室】1-9季全_1080P中字【200G】
sw6ug3k3fwo?password=8888 美剧|【老爸老妈的浪漫史】1-9季全_1080P中字【273G】
swzj8g33wrb?password=z6d8 美剧|【兄弟连】10集全_1080P中字【177.6G】
swzj8au3wrb?password=i050 美剧|【太平洋战争】10集全_1080P中字【122G】
sw6ugsb3fwo?password=8888 美剧|【维京传奇】1-6季全_1080P中字【137G】
sw6ugln3fwo?password=8888 美剧|【旺达幻视】9集全_4K中字【46G】
sw6ug5r3fwo?password=8888 美剧|【摩登家庭】1-11季_1080P中字【298G】
sw6up8u3fwo?password=8888 美剧|【纸钞屋】1-5季全_1080P中字【46G】
sw6upun3fwo?password=8888 美剧|【毒枭】1-3季全_4K中字【180G】
sw6utzo3fwo?password=8888 美剧|【去他的世界】1-2季_4K中字【35G】
sw6uty43fwo?password=8888 美剧|【暗黑】1-3季全_4K中字【69G】
sw6uttz3fwo?password=8888 美剧|【夜魔侠】1-3季全_4K中字【204G】
sw6ujls3fwo?password=8888 美剧|【洛基】第一季_4K中字【22G】
sw6ujoa3fwo?password=8888 美剧|【星期三】第一季_4K中字【33G】
sw6uxg53fwo?password=8888 美剧|【豪斯医生】1-8季全_1080P中字【222G】
sw6u0df3fwo?password=8888 美剧|【迷离时空(原版)】1-5季全_1080P中字【308G】
sw6u0m73fwo?password=8888 美剧|【邪恶力量】1-15季全_1080P中字【1006G】
sw6u0mu3fwo?password=8888 美剧|【冰血暴】1-4季全_1080P中字【65G】
sw6u0v73fwo?password=8888 美剧|【龙之家族】第一季_4K中字【25G】
sw6u0gx3fwo?password=8888 美剧|【美国恐怖故事】1-11季_1080P中字【306G】
sw6u0tv3fwo?password=8888 美剧|【黑客军团】1-4季全_1080P中字【32G】
sw6u0xb3fwo?password=8888 美剧|【国土安全】1-8季全_1080P中字【132G】
sw6uup63fwo?password=8888 美剧|【唐顿庄园】1-6季全_1080P中字【82G】
sw6uup03fwo?password=8888 美剧|【指环王:力量之戒】第一季[全8集]4K中字【74G】
sw6uu1g3fwo?password=8888 美剧|【心灵猎人】1-2季_4K中字【119G】
sw6uuc23fwo?password=8888 美剧|【伦敦生活】1-2季全_4K中字【28G】
swz36ki3fwo?password=8888 美剧|【破产姐妹】1-6季全_1080P中字【87G】
swz36mo3fwo?password=8888 美剧|【月光骑士】6集全_4K中字【32G】
swz36vd3fwo?password=8888 美剧|【路西法】1-6季全_1080P中字【112G】
swz36e73fwo?password=8888 美剧|【使女的故事】1-5季全_1080P中字【62G】
swz36ah3fwo?password=8888 美剧|【黑钱胜地】1-4季_4K中字【200G】
swz3h4i3fwo?password=8888 美剧|【十三个原因】1-4季全_4K中字【523G】
swz3hyk3fwo?password=8888 美剧|【大小谎言】1-2季全_1080P中字【21G】
swz3hmf3fwo?password=8888 美剧|【汉尼拔】1-3季全_1080P中字【59G】
swz3h543fwo?password=8888 美剧|【宋飞正传】1-9季全_4K中字【488G】
swz3hed3fwo?password=8888 美剧|【亢奋】1-2季_4K中字【205G】
swz3hak3fwo?password=8888 美剧|【无耻之徒】1-11季全_1080P中字【201G】
swz3hg43fwo?password=8888 美剧|【东城梦魇】(2021)_7集全_1080P中字【11G】
swz3swd3fwo?password=8888 美剧|【鬼庄园】(2020)_9集全_4K中字【23G】
swz3sw73fwo?password=8888 美剧|【鬼入侵】(2018)_10集全_4K中字【20G】
swz3sfn3fwo?password=8888 美剧|【足球教练】1-3季_1080P中字【34G】
swz3sbi3fwo?password=8888 美剧|【你】1-4季_1080P中字【118G】
swz3s4m3fwo?password=8888 美剧|【我们这一天】1-6季_1080P中字【101G】
swz3sv73fwo?password=8888 美剧|【混乱之子】1-7季_1080P中字【172G】
swz3svt3fwo?password=8888 美剧|【猎鹰与冬兵】(2021)_6集全_4K中字【21G】
swz3se13fwo?password=8888 美剧|【废柴联盟】1-6季_4K中字【260G】
swz3lbz3fwo?password=8888 美剧|【绯闻女孩】1-6季_1080P中字【109G】
swz3lo83fwo?password=8888 美剧|【疑犯追踪】1-5季_1080P中字【145G】
swz3lia3fwo?password=8888 美剧|【超能英雄】1-4季_1080P中字【115G】
swz3qb83fwo?password=8888 美剧|【犯罪心理】1-16季全_1080P中字【395G】
swz3q5s3fwo?password=8888 美剧|【广告狂人】1-7季全_1080P中字【373G】
swz3qek3fwo?password=8888 美剧|【伞学院】1-3季_4K中字【201G】
swz3qe03fwo?password=8888 美剧|【人生切割术】第一季_(2022)_4K中字【75G】
swz3qgz3fwo?password=8888 美剧|【危机边缘】1-5季_1080P中字【90G】
swz3qgq3fwo?password=8888 美剧|【萤火虫】(2002)_14集全_1080P中字【37G】
swz3ba63fwo?password=8888 美剧|【斯巴达克斯】1-4季_1080P中字【491G】
swz3bxo3fwo?password=8888 美剧|【哥谭】1-5季_1080P蓝光原盘中字【720G】
swz6zsv3fwo?password=8888 美剧|【黑道家族】1-6季全_1080P中字【169G】
swz6zlm3fwo?password=8888 美剧|【闪电侠】1-9季全_1080P中字【180G】
swz6wjj3fwo?password=8888 美剧|【实习医生格蕾】1-19季全_1080P中字【1.03T】
swz6fff3fwo?password=8888 美剧|【女子监狱】1-7季全_1080P中字【188G】
swz6ff83fwo?password=8888 美剧|【杀死伊芙】1-4季_1080P中字【23G】
swz6fs73fwo?password=8888 美剧|【神盾局特工】1-7季_1080P中字【124G】
swz6fld3fwo?password=8888 美剧|【火线】1-5季全_1080P中字【61G】
swz6s4a3fwo?password=8888 美剧|【继承之战】1-4季_4K外挂中字【368G】
swz6sy63fwo?password=8888 美剧|【公园与游憩】1-7季全_1080P中字【255G】
swz6skk3fwo?password=8888 美剧|【真爱如血】1-7季全_1080P中字【142G】
swz6sd63fwo?password=8888 美剧|【超感猎杀】1-2季_4K中字【126G】
swz6sdr3fwo?password=8888 美剧|【白莲花度假村】1-2季_1080P中字【48G】
swz6s553fwo?password=8888 美剧|【千谎百计】1-3季全_1080P中字【125G】
swz6lny3fwo?password=8888 美剧|【神秘博士】1-13季全_1080P中字【324G】
swz6lww3fwo?password=8888 美剧|【X档案】1-11季+电影版两部_1080P中字【143G】
swz6lff3fwo?password=8888 美剧|【鹰眼】(2021)_6集全_4K中字【43G】
swz6lbk3fwo?password=8888 美剧|【IT狂人】1-4季全_标清中字【20G】
swz6lb03fwo?password=8888 美剧|【无人生还】(2015)_3集全_1080P中字【14G】
swz6l7f3fwo?password=8888 美剧|【童话镇】1-7季_720P中字【72G】
swz6lyi3fwo?password=8888 美剧|【欧比旺】(2022)_6集全_4K中字【36G】
swz6lmm3fwo?password=8888 美剧|【黄石】1-5季_4K中字【更新中】
swz6lee3fwo?password=8888 美剧|【双峰】1-3季_1080P中字【106G】
swz6lgx3fwo?password=8888 美剧|【杰西卡·琼斯】1-3季_1080P中字【139G】
swz6lpz3fwo?password=8888 美剧|【怒呛人生】(2023)_10集全_4K中字【30G】
swz6lp23fwo?password=8888 美剧|【绝望主妇】1-8季_720P中字【71G】
swz6ltu3fwo?password=8888 美剧|【绝望主妇】1-8季_1080P中字【300G】
swz6l033fwo?password=8888 美剧|【地球百子】1-7季全_1080P中字【206G】
swz6b1z3fwo?password=8888 美剧|【杰茜驾到】1-7季全_1080P中字【194G】
swz6b1r3fwo?password=8888 美剧|【正常人】(2020)_12集全_1080P中字【9.23G】
swz6bcn3fwo?password=8888 美剧|【大西洋帝国】1-5季_1080P中字【122G】
swz6onx3fwo?password=8888 美剧|【小谢尔顿】1-6季_1080P中字【85G】
swz6o643fwo?password=8888 美剧|【女浩克】(2022)_9集全_4K中字【40G】
swz6oo83fwo?password=8888 美剧|【傲慢与偏见】(1995)_6集全_1080P外挂字幕【78G】
swz6o7w3fwo?password=8888 美剧|【贴身保镖】第一季_1080P中字【7G】
swz6o453fwo?password=8888 美剧|【反恐24小时】1-9季全_1080P中字【399G】
swz6oyi3fwo?password=8888 美剧|【良医】1-6季_1080P中字【64G】
swz6k1k3fwo?password=8888 美剧|【硅谷】1-6季_1080P中字【39G】
swz6kcq3fwo?password=8888 美剧|【副本】1-2季_4K中字【127G】
swz6k0s3fwo?password=8888 美剧|【罪夜之奔】(2016)_8集全_1080P中字【5G】
swz6kuu3fwo?password=8888 美剧|【艾米丽在巴黎】1-3季_1080P中字【105G】
swz6dl23fwo?password=8888 美剧|【罗马】1-2季_1080P中字【60G】
swz6d773fwo?password=8888 美剧|【好兆头】1-2季_4K中字【67G】
swz6ew93fwo?password=8888 美剧|【黑色孤儿】1-5季_1080P中字【95G】
swz6ebs3fwo?password=8888 美剧|【叶卡捷琳娜大帝】1-3季_1080P中字
sw6u7mw3fwo?password=8888 韩剧|【阿拉姆恩之剑:阿斯达年代记】(2023)_1080P韩语中字_李准基_/_张东健_/_申世景
sw62qsa3fwo?password=8888 韩剧|【鱿鱼游戏】第一季(2021)_4K韩语中字_李政宰_/_朴海秀_/_魏嘏隽
sw62qq83fwo?password=8888 韩剧|【请回答1988】(2015)_20集全_4K韩语中字_成东日_/_李一花_/_罗美兰
sw62qbl3fwo?password=8888 韩剧|【黑暗荣耀】第一季_(2022)_4K韩语中字_宋慧乔_/_李到晛_/_林智妍
sw62q7z3fwo?password=8888 韩剧|【黑暗荣耀】第二季_(2023)_1080P韩语中字_宋慧乔_/_李到晛_/_林智妍
sw62q773fwo?password=8888 韩剧|【孤单又灿烂的神:鬼怪】(2016)_16集全_4K韩语中字_孔刘_/_金高银_/_李栋旭
sw62q723fwo?password=8888 韩剧|【来自星星的你】(2013)_21集全_1080P韩语中字_金秀贤_/_全智贤_/_朴海镇
sw62qiy3fwo?password=8888 韩剧|【信号】(2016)_16集全_1080P韩语中字_李帝勋_/_赵震雄_/_金惠秀
sw62qie3fwo?password=8888 韩剧|【太阳的后裔】(2016)_16集全_1080P韩语中字_宋慧乔_/_宋仲基_/_金智媛
sw62qi23fwo?password=8888 韩剧|【爱的迫降】(2019)_16集全_4K韩语中字_玄彬_/_孙艺珍_/_徐智慧
sw62q4j3fwo?password=8888 韩剧|【机智医生生活】第一季_(2020)_1080P韩语中字_曹政奭_/_柳演锡_/_郑敬淏
sw62q4c3fwo?password=8888 韩剧|【机智医生生活】第二季_(2021)_1080P韩语中字_曹政奭_/_柳演锡_/_郑敬淏
sw62qyq3fwo?password=8888 韩剧|【W-两个世界】(2016)_16集全_1080P韩语中字_李钟硕_/_韩孝周_/_郑幼贞
sw62qyg3fwo?password=8888 韩剧|【机智牢房生活】(2017)_16集全_1080P韩剧|中字_朴海秀_/_郑敬淏_/_郑秀晶
sw62qkz3fwo?password=8888 韩剧|【继承者们】(2013)_20集全_1080P韩语中字_李敏镐_/_朴信惠_/_金宇彬
sw62qkg3fwo?password=8888 韩剧|【当你沉睡时】(2017)_32集全_1080P韩语中字_李钟硕_/_裴秀智_/_李相烨
sw62qk93fwo?password=8888 韩剧|【窥探】(2021)_20集全_1080P韩语中字_李昇基_/_李熙俊_/_朴柱炫
sw62qk13fwo?password=8888 韩剧|【举重妖精金福珠】(2016)_16集全_1080P韩语中字_李圣经_/_南柱赫_/_景收真
sw62qdh3fwo?password=8888 韩剧|【甜蜜家园】(2020)_10集全_4K韩语中字_宋江_/_李施吟_/_李到晛
sw62qdv3fwo?password=8888 韩剧|【非常律师禹英禑】(2022)_16集全_1080P韩语中字_朴恩斌_/_姜泰伍_/_姜其永
sw62qmf3fwo?password=8888 韩剧|【那年,我们的夏天】(2021)_16集全_1080P韩语中字_崔宇植_/_金多美_/_金圣喆
sw62qma3fwo?password=8888 韩剧|【欢迎来到王之国】(2023)_16集全_1080P韩语中字_李俊昊_/_林允儿_/_高媛熙
sw62q5z3fwo?password=8888 韩剧|【治愈者】(2014)_20集全_1080P韩语中字_池昌旭_/_朴敏英_/_刘智泰
sw62q5g3fwo?password=8888 韩剧|【今生是第一次】(2017)_16集全_1080P韩语中字_李民基_/_郑素敏_/_朴炳垠
sw62qvl3fwo?password=8888 韩剧|【没关系,是爱情啊】(2014)_16集全_1080P韩语中字_赵寅成_/_孔晓振_/_成东日
sw62qvg3fwo?password=8888 韩剧|【请回答1997】(2012)_16集全_1080P韩语中字_郑恩地_/_徐仁国_/_申素率
sw62qan3fwo?password=8888 韩剧|【蓝色大海的传说】(2016)_20集全_720P韩语中字_全智贤_/_李敏镐_/_文素丽
sw62qa43fwo?password=8888 韩剧|【僵尸校园】(2022)_12集全_4K韩语中字_尹灿荣_/_朴持厚_/_曹怡贤
sw62qax3fwo?password=8888 韩剧|【社内相亲】(2022)_12集全_1080P韩语中字_安孝燮_/_金世正_/_金旻奎
sw62qg93fwo?password=8888 韩剧|【我的解放日志】(2022)_16集全_4K韩语中字_李民基_/_金智媛_/_孙锡久
sw62qpn3fwo?password=8888 韩剧|【365:逆转命运的1年】(2020)_24集全_1080P韩语中字_李浚赫_/_南志铉_/_金智秀
sw62qpd3fwo?password=8888 韩剧|【财阀家的小儿子】(2022)_16集全_1080P韩语中字_宋仲基_/_李星民_/_申铉彬
sw62q8x3fwo?password=8888 韩剧|【大力女子都奉顺】(2017)_16集全_1080P韩语中字_朴宝英_/_朴炯植_/_金志洙
sw62bog3fwo?password=8888 韩剧|【城市猎人】(2011)_20集全_720P韩语中字_李敏镐_/_朴敏英_/_李浚赫
sw62big3fwo?password=8888 韩剧|【哦我的鬼神大人】(2015)_16集全_1080P韩语中字_朴宝英_/_曹政奭_/_金瑟祺
sw62bi23fwo?password=8888 韩剧|【二十五,二十一】(2022)_16集全_1080P韩语中字_金泰梨_/_南柱赫_/_金知妍
sw62b4d3fwo?password=8888 韩剧|【超异能族】(2023)_20集全_4K韩语中字_柳承龙_/_韩孝周_/_赵寅成
sw62b4j3fwo?password=8888 韩剧|【海岸村恰恰恰】(2021)_16集全_1080P韩语中字_申敏儿_/_金宣虎_/_李相二
sw62byh3fwo?password=8888 韩剧|【D.P:逃兵追缉令】_第一季_(2021)_4K韩语中字_丁海寅_/_具教焕_/_金成畇_
sw62bmt3fwo?password=8888 韩剧|【D.P:逃兵追缉令】_第二季_(2023)_4K韩语中字_丁海寅_/_具教焕_/_金成畇
sw62b533fwo?password=8888 韩剧|【仁显王后的男人】(2012)_16集全_1080P韩语中字_刘寅娜_/_池贤宇_/_金镇宇
sw62b5h3fwo?password=8888 韩剧|【少年法庭】(2022)_10集全_4K韩语中字_金惠秀_/_金武烈_/_李星民
sw62bvt3fwo?password=8888 韩剧|【杀了我治愈我】(2015)_20集全_1080P韩语中字_池晟_/_黄正音_/_朴叙俊
sw62beq3fwo?password=8888 韩剧|【未生】(2014)_20集全_1080P韩语中字_任时完_/_李星民_/_姜素拉
sw62bep3fwo?password=8888 韩剧|【内在美】(2018)_16集全_1080P韩语中字_徐玄振_/_李民基_/_李多熙
sw62bai3fwo?password=8888 韩剧|【语义错误】(2022)_8集全_1080P韩语中字_朴栖含_/_朴宰灿_/_宋智午
sw62bgh3fwo?password=8888 韩剧|【我的ID是江南美人】(2018)_16集全_1080P韩语中字_林秀香_/_车银优_/_赵宇丽
sw62bgf3fwo?password=8888 韩剧|【偶然发现的一天】(2019)_32集全_1080P韩语中字_金惠奫_/_金路云_/_李宰旭
sw62bga3fwo?password=8888 韩剧|【国王:永远的君主】(2020)_16集全_1080P韩语中字_李敏镐_/_金高银_/_禹棹焕
sw62bg03fwo?password=8888 韩剧|【请回答1994】(2013)_21集全_1080P韩语中字_高雅拉_/_柳演锡_/_正宇
sw62bpy3fwo?password=8888 韩剧|【Move_to_Heaven:我是遗物整理师】(2021)_10集全_4K韩语中字_李帝勋_/_汤峻相_/_洪承熙
sw62owv3fwo?password=8888 韩剧|【夫妻的世界】(2020)_16集全_1080P韩语中字_金喜爱_/_朴解浚_/_韩韶禧
sw62ofn3fwo?password=8888 韩剧|【安娜】(2022)_6集全_1080P韩语中字_裴秀智_/_郑恩彩_/_金俊翰
sw62ofi3fwo?password=8888 韩剧|【火星生活】(2018)_16集全_1080P韩语中字_郑敬淏_/_朴成雄_/_高我星
sw62ofe3fwo?password=8888 韩剧|【春夜】(2019)_16集全_4K韩语中字_韩志旼_/_丁海寅_/_金俊翰
sw62osq3fwo?password=8888 韩剧|【酒鬼都市女人们】(2021)_12集全_1080P韩语中字_李先彬_/_韩善花_/_郑恩地
sw62osg3fwo?password=8888 韩剧|【棒球大联盟】(2019)_16集全_1080P韩语中字_南宫珉_/_朴恩斌_/_吴正世
sw62oq13fwo?password=8888 韩剧|【囚犯医生】(2019)_16集全_1080P韩语中字_南宫珉_/_权娜拉_/_金炳哲
sw62ob33fwo?password=8888 韩剧|【迷雾】(2018)_16集全_1080P韩语中字_金南珠_/_池珍熙_/_高俊
sw62obv3fwo?password=8888 韩剧|【我的名字】(2021)_8集全_4K韩语中字_韩韶禧_/_朴熹洵_/_安普贤
sw62oo33fwo?password=8888 韩剧|【咖啡王子1号店】(2007)_17集全_1080P韩语中字_尹恩惠_/_孔刘_/_李善均
sw62ook3fwo?password=8888 韩剧|【黑话律师】(2022)_16集全_1080P韩语中字_李钟硕_/_林允儿_/_金周宪
sw62oor3fwo?password=8888 韩剧|【耀眼】(2019)_12集全_1080P韩语中字_金惠子_/_韩志旼_/_南柱赫
sw62o7s3fwo?password=8888 韩剧|【地狱公使】(2021)_6集全_4K韩语中字_刘亚仁_/_金贤珠_/_朴正民
sw62o7r3fwo?password=8888 韩剧|【请输入搜索词:WWW】(2019)_16集全_1080P韩语中字_林秀晶_/_张基龙_/_李多熙
sw62oid3fwo?password=8888 韩剧|【阿尔罕布拉宫的回忆】(2018)_16集全_1080P韩语中字_玄彬_/_朴信惠_/_朴勋_
sw62oyx3fwo?password=8888 韩剧|【她很漂亮】(2015)_16集全_1080P韩语中字_黄正音_/_朴叙俊_/_高俊熙
sw62oks3fwo?password=8888 韩剧|【我亲爱的朋友们】(2016)_16集全_1080P韩语中字_高贤贞_/_赵寅成_/_金惠子
sw62okn3fwo?password=8888 韩剧|【Live】(2018)_18集全_720P韩语中字_郑有美_/_李光洙_/_裴晟祐
sw62ok43fwo?password=8888 韩剧|【制作人】(2015)_12集全_1080P韩语中字_金秀贤_/_车太贤_/_孔晓振
sw62odw3fwo?password=8888 韩剧|【她的私生活】(2019)_16集全_1080P韩语中字_朴敏英_/_金材昱_/_安普贤
sw62odl3fwo?password=8888 韩剧|【大长今】(2003)_54集全_1080P国语韩语多音轨中字_李英爱_/_池珍熙_/_任豪
sw62odr3fwo?password=8888 韩剧|【无法抗拒的他】(2021)_10集全_1080P韩语中字_宋江_/_韩韶禧_/_蔡钟协
sw62omq3fwo?password=8888 韩剧|【加油吧威基基】(2018)_20集全_1080P韩语中字_金正贤_/_李伊庚_/_孙承源
sw62omv3fwo?password=8888 韩剧|【绅士的品格】(2012)_20集全_1080P韩语中字_张东健_/_金荷娜_/_金民钟
sw62om93fwo?password=8888 韩剧|【九回时间旅行】(2013)_20集全_1080P韩语中字_李阵郁_/_赵胤熙_/_全卢民
sw6uayo3fwo?password=8888 日剧|【非自然死亡】全10集_1080P中字【13G】
swz3hvx3fwo?password=8888 日剧|【胜者即是正义】(2012)_11集全_1080P中字【13G】
swz3hv03fwo?password=8888 日剧|【胜者即是正义2】(2013)_10集全_1080P中字【13G】
swz3l4f3fwo?password=8888 日剧|【弥留之国的爱丽丝】1-2季_4K中字【100G】
swz6syr3fwo?password=8888 日剧|【半泽直树】1-2季全_1080P中字【38G】
swz6sdf3fwo?password=8888 日剧|【我是大哥大】10集全_1080P中字【38G】
swz6s5p3fwo?password=8888 日剧|【重启人生】10集全_1080P中字【11G】
swz6s513fwo?password=8888 日剧|【轮到你了】20集全_1080P中字【20G】
swz6o4e3fwo?password=8888 日剧|【四重奏】(2017)_10集全_1080P中字【16G】
swz6kjm3fwo?password=8888 日剧|【我的恐怖妻子】(2016)_9集全_1080P中字【13G】
swz6dk13fwo?password=8888 日剧|【凪的新生活】(2019)_10集全_1080P中字【9G】
sw6uis63fwo?password=8888 台剧|【想见你】(2019)_13集全_4K中字【36G】
sw6uj4h3fwo?password=8888 台剧|【我们与恶的距离】(2019)_10集全_4K中字【88G】
swz6lk43fwo?password=8888 台剧|【我可能不会爱你】(2011)_23集全_1080P中字【17G】
swz6kcg3fwo?password=8888 台剧|【俗女养成记】1-2季_4K中字【74G】
swnvgvv3z29?password=h6b2 纪录片|中国通史全100集_64.07G
sw682pw3nyo?password=s8c8 纪录片|国外纪录片_1.86T
sw6xm3j3w7v?password=1111 纪录片|百家讲坛全集_2.21T
swz6smc3fwo?password=8888 纪录片|【地球脉动】1-3季_1080P中字【436G】
sw68md23w8m?password=q353 纪录片|盗火纪录片_9.32T
swz6fb03fwo?password=8888 纪录片|一级方程式:疾速争胜_(2019)
swz6fbu3fwo?password=8888 纪录片|七个世界,一个星球_(2019)
swz6fo33fwo?password=8888 纪录片|72种危险动物:拉丁美洲_(2017)
swz6fo43fwo?password=8888 纪录片|72种危险动物:亚洲篇_(2018)
swz6foy3fwo?password=8888 纪录片|2022_(2022)
swz6fok3fwo?password=8888 纪录片|阿波罗11号_(2019)
swz6fod3fwo?password=8888 纪录片|阿莱克斯·施瓦泽:为真相而跑_(2023)
swz6fov3fwo?password=8888 纪录片|埃及艳后_(2023)
swz6foe3fwo?password=8888 纪录片|艾德·希兰:成名之路_(2023)
swz6foa3fwo?password=8888 纪录片|爱犬情深_(2018)
swz6fog3fwo?password=8888 纪录片|摆脱贫困_(2021)
swz6fo83fwo?password=8888 纪录片|北回归线_(2010)
swz6foj3fwo?password=8888 纪录片|北极奇观_(2014)
swz6fo93fwo?password=8888 纪录片|北极熊_(2022)
swz6fo13fwo?password=8888 纪录片|贝尔蒂·格雷戈里:与动物零距离_(2023)
swz6fo03fwo?password=8888 纪录片|奔向月球_(2015)
swz6f733fwo?password=8888 纪录片|变态者意识形态指南_(2012)
swz6f7n3fwo?password=8888 纪录片|冰冻星球2_(2022)
swz6f7z3fwo?password=8888 纪录片|冰河时代的巨人_(2013)
swz6f7w3fwo?password=8888 纪录片|冰雪之巅_(2018)
swz6f7s3fwo?password=8888 纪录片|博茨瓦纳惊人的野生动物_(2020)
swz6f7q3fwo?password=8888 纪录片|不破不立_(2021)
swz6f7o3fwo?password=8888 纪录片|不止考古·我与三星堆_(2022)
swz6f7i3fwo?password=8888 纪录片|坂本龙一:终曲_(2017)
swz6f743fwo?password=8888 纪录片|BBC_野性都市_(2018)
swz6f7k3fwo?password=8888 纪录片|彩排_(2022)
swz6f7d3fwo?password=8888 纪录片|茶,一片树叶的故事_(2013)
swz6f753fwo?password=8888 纪录片|超凡动物奇观_(2022)
swz6f7v3fwo?password=8888 纪录片|超级工程_(2012)
swz6f7r3fwo?password=8888 纪录片|沉船搜索者澳大利亚_(2022)
swz6f7t3fwo?password=8888 纪录片|穿越落基山脉_(2011)
swz6f783fwo?password=8888 纪录片|从太空看地球_(2019)
swz6f7j3fwo?password=8888 纪录片|大白鲨_(2013)
swz6f7x3fwo?password=8888 纪录片|大堡礁探险_(2018)
swz6f7c3fwo?password=8888 纪录片|大陆的崛起_(2013)
swz6f703fwo?password=8888 纪录片|大秦岭_(2010)
swz6f7u3fwo?password=8888 纪录片|大太平洋_(2017)
swz6fi33fwo?password=8888 纪录片|大峡谷探险之河流告急_(2008)
swz6fi63fwo?password=8888 纪录片|大象的秘密_(2023)
swz6fih3fwo?password=8888 纪录片|大象女王_(2019)
swz6fiw3fwo?password=8888 纪录片|大熊猫_(2018)
swz6fif3fwo?password=8888 纪录片|登陆日:诺曼底1944_(2014)
swz6fis3fwo?password=8888 纪录片|地球的夜晚_(2020)
swz6fil3fwo?password=8888 纪录片|地球风暴_(2022)
swz6fiq3fwo?password=8888 纪录片|地球脉动_(2006)
swz6fib3fwo?password=8888 纪录片|地球脉动2_(2016)
swz6fi73fwo?password=8888 纪录片|地球:神奇的一天_(2017)
swz6fii3fwo?password=8888 纪录片|第四阶段_(2016)
swz6fiy3fwo?password=8888 纪录片|帝国的崛起:奥斯曼_(2020)
swz6fik3fwo?password=8888 纪录片|帝企鹅日记2:召唤_(2017)
swz6fim3fwo?password=8888 纪录片|帝王蝶的迁徙_(2012)
swz6fiv3fwo?password=8888 纪录片|东瀛大宝荐
swz6fie3fwo?password=8888 纪录片|动物本色_(2021)
swz6fig3fwo?password=8888 纪录片|敦煌:生而传奇_(2021)
swz6fi83fwo?password=8888 纪录片|恶海捕蟹记:血脉篇_(2020)
swz6fij3fwo?password=8888 纪录片|非洲_(2013)
swz6fic3fwo?password=8888 纪录片|非洲:动物乐园_(2017)
swz6fi23fwo?password=8888 纪录片|风味原产地_(2019)
swz6f433fwo?password=8888 纪录片|佛罗伦萨和乌菲兹美术馆_(2015)
swz6f4n3fwo?password=8888 纪录片|功勋_(2021)
swz6f4s3fwo?password=8888 纪录片|孤注一掷:阿森纳_(2022)
swz6f4q3fwo?password=8888 纪录片|孤注一掷:巴西国家队_(2020)
swz6f4o3fwo?password=8888 纪录片|孤注一掷:曼彻斯特城_(2018)
swz6f473fwo?password=8888 纪录片|孤注一掷:托特纳姆热刺_(2020)
swz6f4i3fwo?password=8888 纪录片|龟女士的奥德赛_(2018)
swz6f4y3fwo?password=8888 纪录片|国际空间站_(2002)
swz6f4k3fwo?password=8888 纪录片|国家地理:大迁徙_(2010)
swz6f4m3fwo?password=8888 纪录片|国家地理:远征南极_(2009)
swz6f4r3fwo?password=8888 纪录片|海狼之岛_(2022)
swz6f4a3fwo?password=8888 纪录片|海洋_(2010)
swz6f4p3fwo?password=8888 纪录片|海洋:我们的蓝色星球_(2018)
swz6f4t3fwo?password=8888 纪录片|航空母舰:七海卫士_(2016)
swz6fyz3fwo?password=8888 纪录片|航拍中国_(2017)
swz6fyw3fwo?password=8888 纪录片|河西走廊_(2015)
swz6fyf3fwo?password=8888 纪录片|黑猩猩帝国_(2023)
swz6fyb3fwo?password=8888 纪录片|黑夜跟踪狂:追捕连环杀手_(2021)
swz6fy73fwo?password=8888 纪录片|欢迎来地球_(2021)
swz6fyi3fwo?password=8888 纪录片|环法自行车赛:逆风飞驰_(2023)
swz6fyy3fwo?password=8888 纪录片|回到太空_(2022)
swz6fyk3fwo?password=8888 纪录片|急诊先锋:纽约_(2023)
swz6fym3fwo?password=8888 纪录片|记忆的力量·抗美援朝_(2020)
swz6fyv3fwo?password=8888 纪录片|家园_(2020)
swz6fye3fwo?password=8888 纪录片|揭秘海军陆战队_(2017)
swz6fyg3fwo?password=8888 纪录片|巨兽_(2023)
swz6fyt3fwo?password=8888 纪录片|觉醒_(2018)
swz6fyj3fwo?password=8888 纪录片|康纳·麦格雷戈:拳王万岁_(2023)
swz6fy13fwo?password=8888 纪录片|克里斯·海姆斯沃斯:挑战极限_(2022)
swz6fy23fwo?password=8888 纪录片|狂野日本_(2015)
swz6fk33fwo?password=8888 纪录片|狂野之美:国家公园探险_(2016)
swz6fkn3fwo?password=8888 纪录片|蓝色星球_(2001)
swz6fks3fwo?password=8888 纪录片|蓝色星球2_(2017)
swz6fkb3fwo?password=8888 纪录片|雷吉_(2023)
swz6fki3fwo?password=8888 纪录片|李小龙传奇_(2008)
swz6fky3fwo?password=8888 纪录片|了解宇宙如何运行_(2010)
swz6fkk3fwo?password=8888 纪录片|绿色星球_(2022)
swz6fkm3fwo?password=8888 纪录片|罗马四大圣殿_(2016)
swz6fk53fwo?password=8888 纪录片|麦道夫:华尔街吸金恶霸_(2023)
swz6fkr3fwo?password=8888 纪录片|没有极限_(2015)
swz6fka3fwo?password=8888 纪录片|美国内战_(1990)
swz6fkp3fwo?password=8888 纪录片|美国西海岸之旅_(2014)
swz6fk83fwo?password=8888 纪录片|美丽星球_(2016)
swz6fk93fwo?password=8888 纪录片|美丽中国_(2008)
swz6fk13fwo?password=8888 纪录片|梦想之大:构建我们的世界_(2017)
swz6fkc3fwo?password=8888 纪录片|木偶奇遇记_(2022)
swz6fdn3fwo?password=8888 纪录片|喵星人的奇思妙想_(2022)
swz6fdz3fwo?password=8888 纪录片|MH370:消失的马航客机_(2023)
swz6fdh3fwo?password=8888 纪录片|纳米比亚-旷野的精神_(2016)
swz6fdw3fwo?password=8888 纪录片|南极3D:在边缘_(2014)
swz6fdq3fwo?password=8888 纪录片|南太平洋之旅_(2013)
swz6fd73fwo?password=8888 纪录片|欧洲_(2016)
swz6fdy3fwo?password=8888 纪录片|披头士乐队:回归_(2021)
swz6fdm3fwo?password=8888 纪录片|僻壤凶案_(2022)
swz6fd53fwo?password=8888 纪录片|婆罗洲:亚洲的魅力_(2017)
swz6fdv3fwo?password=8888 纪录片|破发点:大满贯之路_(2023)
swz6fda3fwo?password=8888 纪录片|破浪_(2016)
swz6fdg3fwo?password=8888 纪录片|奇妙酒店:大堂之外的生活_(2017)
swz6fdp3fwo?password=8888 纪录片|企鹅群里有特务_(2013)
swz6fd83fwo?password=8888 纪录片|企鹅小镇_(2021)
swz6fdj3fwo?password=8888 纪录片|切尔诺贝利_(2019)
swz6fdx3fwo?password=8888 纪录片|情系斯波克_(2016)
swz6fm33fwo?password=8888 纪录片|求偶游戏_(2021)
swz6fmh3fwo?password=8888 纪录片|全力挥杆:高尔夫大满贯之路_(2023)
swz6fmf3fwo?password=8888 纪录片|全美缉凶:波士顿马拉松爆炸案_(2023)
swz6fml3fwo?password=8888 纪录片|全球绝美国家公园_(2022)
swz6fmb3fwo?password=8888 纪录片|人间游乐场_(2022)
swz6fmi3fwo?password=8888 纪录片|人生七年1_(1964)
swz6fmy3fwo?password=8888 纪录片|人生七年2_(1970)
swz6fmd3fwo?password=8888 纪录片|人生七年3_(1977)
swz6fm53fwo?password=8888 纪录片|人生七年4_(1984)
swz6fme3fwo?password=8888 纪录片|人生七年5_(1991)
swz6fma3fwo?password=8888 纪录片|人生七年6_(1999)
swz6fmp3fwo?password=8888 纪录片|人生七年7_(2006)
swz6fmt3fwo?password=8888 纪录片|人生七年8_(2012)
swz6fm93fwo?password=8888 纪录片|人生七年9_(2019)
swz6fm13fwo?password=8888 纪录片|人生第一次_(2020)
swz6fmc3fwo?password=8888 纪录片|塞伦盖蒂_(2019)
swz6fm23fwo?password=8888 纪录片|塞伦盖蒂国家公园_(2011)
swz6fmu3fwo?password=8888 纪录片|舌尖上的中国_(2012)
swz6f5n3fwo?password=8888 纪录片|生门_(2017)
swz6f563fwo?password=8888 纪录片|生命_(2009)
swz6f5h3fwo?password=8888 纪录片|盛会_(2022)
swz6f5w3fwo?password=8888 纪录片|时间的风景_(2012)
swz6f5f3fwo?password=8888 纪录片|史前星球_(2022)
swz6f5s3fwo?password=8888 纪录片|水下中国_(2019)
swz6f5q3fwo?password=8888 纪录片|他乡的童年_(2019)
swz6f5b3fwo?password=8888 纪录片|泰勒·斯威夫特:美利坚女士_(2020)
swz6f5i3fwo?password=8888 纪录片|太空之旅_(2015)
swz6f543fwo?password=8888 纪录片|徒手攀岩_(2018)
swz6f5k3fwo?password=8888 纪录片|外星世界_(2020)
swz6f5v3fwo?password=8888 纪录片|完美星球_(2021)
swz6f5e3fwo?password=8888 纪录片|万物之生_(2022)
swz6f5g3fwo?password=8888 纪录片|王朝_(2018)
swz6f5p3fwo?password=8888 纪录片|王阳明_(2021)
swz6f5t3fwo?password=8888 纪录片|韦科惨案:末日烈火_(2023)
swz6f5j3fwo?password=8888 纪录片|为了全人类_(1989)
swz6f593fwo?password=8888 纪录片|维多利亚的秘密:天使与恶魔_(2022)
swz6f5u3fwo?password=8888 纪录片|未来漫游指南_(2022)
swz6fvs3fwo?password=8888 纪录片|我工作故我在_(2023)
swz6fvi3fwo?password=8888 纪录片|我们的父亲_(2022)
swz6fvm3fwo?password=8888 纪录片|我们的浩瀚宇宙_(2022)
swz6fv53fwo?password=8888 纪录片|我们的星球_(2019)
swz6fvr3fwo?password=8888 纪录片|我们的自然_(2018)
swz6fve3fwo?password=8888 纪录片|我们星球上的生命_(2023)
swz6fva3fwo?password=8888 纪录片|我是一名杀手_(2018)
swz6fvp3fwo?password=8888 纪录片|无穷之路_(2021)
swz6fvj3fwo?password=8888 纪录片|武林外传_(2018)
swz6fvx3fwo?password=8888 纪录片|小小世界_(2020)
swz6fv03fwo?password=8888 纪录片|行星_(2019)
swz6fvu3fwo?password=8888 纪录片|血与性:400年王室风云_(2022)
swz6fr63fwo?password=8888 纪录片|药剂师_(2020)
swz6frh3fwo?password=8888 纪录片|野性太平洋_(2016)
swz6frf3fwo?password=8888 纪录片|野性英伦_(2023)
swz6frq3fwo?password=8888 纪录片|夜色中的地球_(2020)
swz6fr73fwo?password=8888 纪录片|移民国度_(2020)
swz6frm3fwo?password=8888 纪录片|影响世界的中国植物_(2019)
swz6frp3fwo?password=8888 纪录片|与浪争锋_(2022)
swz6frx3fwo?password=8888 纪录片|宇宙时空之旅_(2014)
swz6fe33fwo?password=8888 纪录片|遇见最极致的中国_(2022)
swz6few3fwo?password=8888 纪录片|原味澳洲_(2013)
swz6fel3fwo?password=8888 纪录片|约翰·威尔逊的十万个怎么做_(2020)
swz6feb3fwo?password=8888 纪录片|找寻_(2021)
swz6fe73fwo?password=8888 纪录片|这货哪来的_(2023)
swz6fek3fwo?password=8888 纪录片|致富攻略_(2023)
swz6fem3fwo?password=8888 纪录片|中国_(2020)
swz6fev3fwo?password=8888 纪录片|中国救护_(2023)
swz6fee3fwo?password=8888 纪录片|中国通史_(2013)
swz6feg3fwo?password=8888 纪录片|中国之谜_(2016)
swz6fep3fwo?password=8888 纪录片|中国最美公路_(2022)
swz6fet3fwo?password=8888 纪录片|众神之地_(2022)
swz6fej3fwo?password=8888 纪录片|追缉汽车大亨:卡洛斯·戈恩_(2023)
swz6fe93fwo?password=8888 纪录片|追逐珊瑚_(2017)
swz6fec3fwo?password=8888 纪录片|最后的珊瑚礁:海底世界_(2012)
swz6fe23fwo?password=8888 纪录片|最后的舞动_(2020)
swz6feu3fwo?password=8888 纪录片|最美公路_(2018)
swz6fan3fwo?password=8888 纪录片|座头鲸_(2015)
sw6vuxp366e?password=kd83 音乐MV|港台MV_1.14T
sw658uq36x2?password=md98 音乐MV|音乐22万首_8.76T
swzg9pt3wye?password=c899 音乐MV|演唱会_重编码6TB
swzmqcr3fs6?password=xd67 音乐MV|音乐22万首_3.83TB
swzmqca3fs6?password=j9d3 音乐MV|音乐22万首_8.76TB
swzva8w3fs6?password=l381 音乐MV|音乐22万首_1.80TB
swz6ft53fwo?password=8888 精选|各类无损音乐合集9万首(8.8T)
swz6sow3fwo?password=8888 精选|1080P港台演唱会【2.55T】
swz6soa3fwo?password=8888 精选|成龙电影合集【447G】
swz6sot3fwo?password=8888 精选|《_成龙65部作品合集@Ourdisc_蓝光原盘_》【1.48T】
swz6so13fwo?password=8888 精选|林正英电影合集46部【209G】
swz6so23fwo?password=8888 精选|李连杰电影合集【210G】
swz6s763fwo?password=8888 精选|邵氏4K【777G】
swz6s7w3fwo?password=8888 精选|周星馳电影合集【183G】
swz6s743fwo?password=8888 精选|动漫_已经刮削整理_394部【13.97T】
swz6s7y3fwo?password=8888 精选|freembook全站15.72万书(kindle格式为主)_1.6t
swz6s7d3fwo?password=8888 精选|港片蓝光原盘1--669部【16T】
swz6s783fwo?password=8888 精选|纪录片合集_蓝光原盘
swz6sin3fwo?password=8888 精选|泰剧【3.15T】
swz6si63fwo?password=8888 精选|演唱会【13T】
swz6sih3fwo?password=8888 精选|音乐22万首14.39T音乐包2
swz6siw3fwo?password=8888 精选|印度電子圖書館部分書籍(29萬12T左右)
swz6sil3fwo?password=8888 精选|中美百万66万书籍的超大zip压缩版.ca66萬zip【8.7T】
swz6sib3fwo?password=8888 精选|最强爽文短剧合集373部
swz6gd93fwo?password=8888 精选|2267部2160p_remux_FGT【120T】
swz6gml3fwo?password=8888 精选|动画电影1000部【9.7T】
swz6gmc3fwo?password=8888 精选|综艺【4.75T】
swz6ges3fwo?password=8888 精选|动漫原盘【40T】
swz6gp53fwo?password=8888 精选|蓝光原盘_646T_合集
swz692e3fwo?password=8888 精选|高清翡翠台_合集_18.7tb)
swz692x3fwo?password=8888 精选|TVB【7T】
swz69un3fwo?password=8888 精选|TVB_ATV最强电视剧合集【650部73T】
swzfv793fwo?password=8888 精选|【_BD-ISO_】】【2224TB】
swzt3w43hc6?password=s922 精选|希腊神话改编影视
swzt3w23hc6?password=z631 精选|尼古拉斯凯奇
swzt3wi3hc6?password=gf96 精选|恐怖片
swzt3fh3hc6?password=ia38 精选|全球丧尸电影百佳合集
swnnsis3zx1?password=g0d1 精选|600t合集
swzlcya3wsp?password=bab4 精选|1600t合集
swz82uz33a3?password=x1e1 精选|踢馆秘籍
swzkpip3ncb?password=5566 精选|【电影系列合集】4K
swzkpij3ncb?password=5566 精选|【电影系列合集】AE制作全特效字幕
swzkpix3ncb?password=5566 精选|【电影系列合集】最佳影片合集
swzkpi23ncb?password=5566 精选|漫威电影合集
swzkpiu3ncb?password=5566 精选|电影系列合集2
swzm4z63697?password=6688 大包|FRDS电视剧大包
swzew4m3nc6?password=i0d7 大包|2.24pb大包
swzawra3zx1?password=scf1 大包|1.6pb大合集
swz939j3hz7?password=bcd5 日本动漫|奥特曼系列
swzjuqj33dn?password=7777 日本动漫|火影忍者
sw62c3o3z9p?password=s137 动漫|动画片_3.99T
sw6upku3hqj?password=hc61 动漫|动漫394部_13.97T
swznmd03nc7?password=p897 动漫|动漫原盘_40.49T
sw6x8sj3zzo?password=v321 动漫|皮克斯动画合集4K_REMUX_975.83G
sw3x2pd33zy?password=xzpq 动漫|小猪佩奇_21.95G
swnd82q3zx1?password=ua89 动漫|奥特曼_1.1T
sw3c8o83hgl?password=b5e6 魔戒六部曲_1.18T
swzdt0w3nb4?password=f0a7 诺兰系列原盘访问码:d843
swzdt933nb4?password=la51 姜文
swny8y43z12?password=o932 NBA总决赛1991-2020_698.21G
swzg31833xj?password=f3h5 2024欧洲杯
sw6rt783hgh?password=ifd6 PPT素材模板_84.82G
BIN
View File
Binary file not shown.
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
cda0aee24a4c743529629adf7241f9c9
BIN
View File
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
506bb770242856a288488acb4c659298
+77
View File
@@ -0,0 +1,77 @@
zAajGfX1cxE 中信出版图书 1
kgCYrLpLgiZ 机械工业出版社6000册 1
EmhjMiwBrNj 清华大学出版社2237册 1
3XEmnpcKYwd 新知文库 1
XpsFL9BcCbN 北京国家图书馆 1
BPkNEszAXjr 一万本图书馆PDF 1
STfm58hKPBu 湖湘文库 1
LZvTLPW8fbF 亲子教育
gfsRY67BRcb 历史传记
vbULbViB6jg 婚恋两性
nk24tt7C2nt 婚恋家庭
nk24tt7C2nt 婚恋家庭
LYHR2C7oGrN 官场商战
h3qDZvSNJaH 影视时尚
1Wq86hBek8P 心理励志
erF8fL1E9SR 思想文化
qzBiRPyuKCU 恐怖悬疑
5b6xedKYxDB 推理侦探
5Do3YzWGsdT 文学名著
h8nj4ZxEhTV 旅游休闲
W8uEmn2UEm4 武侠仙侠
C6FdSeriQAg 武侠小说
Q2Uyg5yXCTp 漫画绘本
4CP6kP21RE1 玄幻奇幻
AbmTF4S9R2u 玄幻小说
S2r9Q7dofdw 社科经典
Tkz17pPJ54n 科幻小说
ZCma3m8tkqu 综合书籍
PJc6BcfuRwn 美容养生
1vp4gtVqHVV 职场理财
TMXRKiUGzMe 青春校园
vEdkxEJocnb 科教类
AM8mtK1botT 平台类
NkKQg1a7qM9 小说类
1th3c74q1cu 漫画类
auNq9mXGJ8N 新书类
xPX311pWQP8 杂志类
43sAoXEduDZ 我的小书屋01
Rj2xnX7GLUW 我的小书屋02
XMbjpWzN4Jj 我的小书屋03
V69EqCbMHST 我的小书屋04
zpRyQG5Sykg 我的小书屋05
6TZTQve3haL 我的小书屋06
FsWBsXLDyMn 全球推理小说大集合 1
D9fe45j1eHa ePUBee整站电子书库01
ct8cPiYpscj ePUBee整站电子书库02
a9rZPQKHfDu ePUBee整站电子书库03
h45mCPUZc3E ePUBee整站电子书库04
bhDAK42pnSU ePUBee整站电子书库05
jdPrqXLaXBU ePUBee整站电子书库06
3exRgUFUPrv ePUBee整站电子书库07
AMY3umXHQrH ePUBee整站电子书库08
16ryTfdGrAP ePUBee整站电子书库09
5W8EsnTsCRN ePUBee整站电子书库10
D72AZeTnTVL ePUBee整站电子书库11
Z4SyuRZZj8Z ePUBee整站电子书库12
xMCNaJvx7tk ePUBee整站电子书库13
MK7LwGqokKF ePUBee整站电子书库14
p9Lnskk2e2L ePUBee整站电子书库15
pKEdszFRn2v ePUBee整站电子书库16
7fKJ3VC7yWg ePUBee整站电子书库17
QXMJVQzPJzG ePUBee整站电子书库18
eTbXLxV5HZ3 ePUBee整站电子书库19
wvdQyRer63P ePUBee整站电子书库20
LrLMDHopskR ePUBee整站电子书库21
jr4xL8NvHW9 ePUBee整站电子书库22
5tPVRsXdBk4 ePUBee整站电子书库23
iMBCRc32UNM ePUBee整站电子书库24
S8NodisNHcU ePUBee整站电子书库25
4TRTbyZrKki ePUBee整站电子书库26
iYZMj7CFPks 广东省立中山图书馆「A-G」
unEV8t3QfTc 广东省立中山图书馆「H-K」
uT7hzi7CnvP 广东省立中山图书馆「L-N」
U2fcieUVKuY 广东省立中山图书馆「O-Q」
h3s9tXNJxQK 广东省立中山图书馆「R-T」
SXZ17uS7oju 广东省立中山图书馆「U-X」
GwnQxogFss3 广东省立中山图书馆「Y-Z」
+16
View File
@@ -0,0 +1,16 @@
self 我的阿里云盘
cdqCsAWD9wC?pwd=6666 Tacit0924-总合集 1 updated_at DESC
mxAfB6eRgY4 阿里1T 1
4ydLxf7VgH7 平凡中的 1
dieULBdYP3D YYDSVIP 1
uWa9gbM3RJ7 优源阁-资源总合集 1
UuHi9PeYSVz YYDSVip-综艺
v9To3HC6vhs YYDSVip-综合
fSNHaYST47s 纪录片合集2
ftMhRaKUfYp 掌灯者-港剧
MLWPRHRt9W3 掌灯者-台剧
8Fg4TNsd2A2 掌灯者-大陆剧1
ar8Kg9azw1S 掌灯者-大陆剧2
GMYSz3AHFaA 掌灯者-大陆剧3
cmy3KCTRpFA 李连杰电影合集
hMsDJ6dsGxQ 成龙电影合集
+1
View File
@@ -0,0 +1 @@
import{distance}from"./mod.js";import{sortListByCN}from"./sortName.js";String.prototype.rstrip=function(chars){let regex=new RegExp(chars+"$");return this.replace(regex,"")};var showMode="single";var searchDriver="";var limit_search_show=200;var search_type="";var detail_order="name";var playRaw=1;const request_timeout=5e3;const VERSION="alist v2/v3 20221223";const UA="Mozilla/5.0";function print(any){any=any||"";if(typeof any=="object"&&Object.keys(any).length>0){try{any=JSON.stringify(any);console.log(any)}catch(e){console.log(typeof any+":"+any.length)}}else if(typeof any=="object"&&Object.keys(any).length<1){console.log("null object")}else{console.log(any)}}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}const http=function(url,options={}){if(options.method==="POST"&&options.data){options.body=JSON.stringify(options.data);options.headers=Object.assign({"content-type":"application/json"},options.headers)}options.timeout=request_timeout;if(!options.headers){options.headers={}}let keys=Object.keys(options.headers).map(it=>it.toLowerCase());if(!keys.includes("referer")){options.headers["Referer"]=getHome(url)}if(!keys.includes("user-agent")){options.headers["User-Agent"]=UA}try{const res=req(url,options);res.json=()=>res&&res.content?JSON.parse(res.content):null;res.text=()=>res&&res.content?res.content:"";return res}catch(e){return{json(){return null},text(){return""}}}};["get","post"].forEach(method=>{http[method]=function(url,options={}){return http(url,Object.assign(options,{method:method.toUpperCase()}))}});const __drives={};function isMedia(file){return/\.(dff|dsf|mp3|aac|wav|wma|cda|flac|m4a|mid|mka|mp2|mpa|mpc|ape|ofr|ogg|ra|wv|tta|ac3|dts|tak|webm|wmv|mpeg|mov|ram|swf|mp4|avi|rm|rmvb|flv|mpg|mkv|m3u8|ts|3gp|asf)$/.test(file.toLowerCase())}function get_drives_path(tid){const index=tid.indexOf("$");const name=tid.substring(0,index);const path=tid.substring(index+1);return{drives:get_drives(name),path:path}}function get_drives(name){const{settings,api,server}=__drives[name];if(settings.v3==null){settings.v3=false;const data=http.get(server+"/api/public/settings").json().data;if(Array.isArray(data)){settings.title=data.find(x=>x.key==="title")?.value;settings.v3=false;settings.version=data.find(x=>x.key==="version")?.value;settings.enableSearch=data.find(x=>x.key==="enable search")?.value==="true"}else{settings.title=data.title;settings.v3=true;settings.version=data.version;settings.enableSearch=false}api.path=settings.v3?"/api/fs/list":"/api/public/path";api.file=settings.v3?"/api/fs/get":"/api/public/path";api.search=settings.v3?"/api/public/search":"/api/public/search"}return __drives[name]}function init(ext){console.log("当前版本号:"+VERSION);let data;if(typeof ext=="object"){data=ext;print("alist ext:object")}else if(typeof ext=="string"){if(ext.startsWith("http")){let alist_data=ext.split(";");let alist_data_url=alist_data[0];limit_search_show=alist_data.length>1?Number(alist_data[1])||limit_search_show:limit_search_show;search_type=alist_data.length>2?alist_data[2]:search_type;print(alist_data_url);data=http.get(alist_data_url).json()}else{print("alist ext:json string");data=JSON.parse(ext)}}let drives=[];if(Array.isArray(data)&&data.length>0&&data[0].hasOwnProperty("server")&&data[0].hasOwnProperty("name")){drives=data}else if(!Array.isArray(data)&&data.hasOwnProperty("drives")&&Array.isArray(data.drives)){drives=data.drives.filter(it=>it.type&&it.type==="alist"||!it.type)}print(drives);searchDriver=(drives.find(x=>x.search)||{}).name||"";if(!searchDriver&&drives.length>0){searchDriver=drives[0].name}print(searchDriver);drives.forEach(item=>{let _path_param=[];if(item.params){_path_param=Object.keys(item.params);_path_param.sort((a,b)=>a.length-b.length)}if(item.password){let pwdObj={password:item.password};if(!item.params){item.params={"/":pwdObj}}else{item.params["/"]=pwdObj}_path_param.unshift("/")}__drives[item.name]={name:item.name,server:item.server.endsWith("/")?item.server.rstrip("/"):item.server,startPage:item.startPage||"/",showAll:item.showAll===true,search:!!item.search,params:item.params||{},_path_param:_path_param,settings:{},api:{},getParams(path){const key=this._path_param.find(x=>path.startsWith(x));return Object.assign({},this.params[key],{path:path})},getPath(path){const res=http.post(this.server+this.api.path,{data:this.getParams(path)}).json();return this.settings.v3?res.data.content:res.data.files},getFile(path){let raw_url=this.server+"/d"+path;raw_url=encodeURI(raw_url);let data={raw_url:raw_url,raw_url1:raw_url};if(playRaw===1){try{const res=http.post(this.server+this.api.file,{data:this.getParams(path)}).json();data=this.settings.v3?res.data:res.data.files[0];if(!this.settings.v3){data.raw_url=data.url}data.raw_url1=raw_url;return data}catch(e){return data}}else{return data}},isFolder(data){return data.type===1},isVideo(data){return this.settings.v3?data.type===2||data.type===0||data.type===3:data.type===3||data.type===0||data.type===4},is_subt(data){if(data.type===1){return false}const ext=/\.(srt|ass|scc|stl|ttml)$/;return ext.test(data.name)},getPic(data){let pic=this.settings.v3?data.thumb:data.thumbnail;return pic||(this.isFolder(data)?"http://img1.3png.com/281e284a670865a71d91515866552b5f172b.png":"")},getTime(data,isStandard){isStandard=isStandard||false;try{let tTime=data.updated_at||data.time_str||data.modified||"";let date="";if(tTime){tTime=tTime.split("T");date=tTime[0];if(isStandard){date=date.replace(/-/g,"/")}tTime=tTime[1].split(/Z|\./);date+=" "+tTime[0]}return date}catch(e){return""}}}});print("init执行完毕")}function home(filter){let classes=Object.keys(__drives).map(key=>({type_id:`${key}$${__drives[key].startPage}`,type_name:key,type_flag:"1"}));let filter_dict={};let filters=[{key:"order",name:"排序",value:[{n:"名称⬆️",v:"vod_name_asc"},{n:"名称⬇️",v:"vod_name_desc"},{n:"中英⬆️",v:"vod_cn_asc"},{n:"中英⬇️",v:"vod_cn_desc"},{n:"时间⬆️",v:"vod_time_asc"},{n:"时间⬇️",v:"vod_time_desc"},{n:"大小⬆️",v:"vod_size_asc"},{n:"大小⬇️",v:"vod_size_desc"},{n:"无",v:"none"}]},{key:"show",name:"播放展示",value:[{n:"单集",v:"single"},{n:"全集",v:"all"}]}];classes.forEach(it=>{filter_dict[it.type_id]=filters});print("----home----");print(classes);return JSON.stringify({class:classes,filters:filter_dict})}function homeVod(params){let _post_data={pageNum:0,pageSize:100};let _post_url="https://pbaccess.video.qq.com/trpc.videosearch.hot_rank.HotRankServantHttp/HotRankHttp";let data=http.post(_post_url,{data:_post_data}).json();let _list=[];try{data=data["data"]["navItemList"][0]["hotRankResult"]["rankItemList"];data.forEach(it=>{_list.push({vod_name:it.title,vod_id:"msearch:"+it.title,vod_pic:"https://avatars.githubusercontent.com/u/97389433?s=120&v=4",vod_remarks:it.changeOrder})})}catch(e){print("Alist获取首页推荐发送错误:"+e.message)}return JSON.stringify({list:_list})}function category(tid,pg,filter,extend){let orid=tid.replace(/#all#|#search#/g,"");let{drives,path}=get_drives_path(orid);const id=orid.endsWith("/")?orid:orid+"/";const list=drives.getPath(path);let subList=[];let vodFiles=[];let allList=[];let fl=filter?extend:{};if(fl.show){showMode=fl.show}list.forEach(item=>{if(drives.is_subt(item)){subList.push(item.name)}if(!drives.showAll&&!drives.isFolder(item)&&!drives.isVideo(item)){return}let vod_time=drives.getTime(item);let vod_size=get_size(item.size);let remark=vod_time.split(" ")[0].substr(3)+"\t"+vod_size;let vod_id=id+item.name+(drives.isFolder(item)?"/":"");if(showMode==="all"){vod_id+="#all#"}print(vod_id);const vod={vod_id:vod_id,vod_name:item.name.replaceAll("$","").replaceAll("#",""),vod_pic:drives.getPic(item),vod_time:vod_time,vod_size:item.size,vod_tag:drives.isFolder(item)?"folder":"file",vod_remarks:drives.isFolder(item)?remark+" 文件夹":remark};if(drives.isVideo(item)){vodFiles.push(vod)}allList.push(vod)});if(vodFiles.length===1&&subList.length>0){let sub;if(subList.length===1){sub=subList[0]}else{let subs=JSON.parse(JSON.stringify(subList));subs.sort((a,b)=>{let a_similar=(a.includes("chs")?100:0)+levenshteinDistance(a,vodFiles[0].vod_name);let b_similar=(b.includes("chs")?100:0)+levenshteinDistance(b,vodFiles[0].vod_name);if(a_similar>b_similar){return 1}else{return-1}});sub=subs.slice(-1)[0]}vodFiles[0].vod_id+="@@@"+sub;vodFiles[0].vod_remarks+="🏷️"}else{vodFiles.forEach(item=>{const lh=0;let sub;subList.forEach(s=>{const l=levenshteinDistance(s,item.vod_name);if(l>60&&l>lh){sub=s}});if(sub){item.vod_id+="@@@"+sub;item.vod_remarks+="🏷️"}})}if(fl.order){let key=fl.order.split("_").slice(0,-1).join("_");let order=fl.order.split("_").slice(-1)[0];print(`排序key:${key},排序order:${order}`);if(key.includes("name")){detail_order="name";allList=sortListByName(allList,key,order)}else if(key.includes("cn")){detail_order="cn";allList=sortListByCN(allList,"vod_name",order)}else if(key.includes("time")){detail_order="time";allList=sortListByTime(allList,key,order)}else if(key.includes("size")){detail_order="size";allList=sortListBySize(allList,key,order)}else if(fl.order.includes("none")){detail_order="none";print("不排序")}}else{if(detail_order!=="none"){allList=sortListByName(allList,"vod_name","asc")}}print("----category----"+`tid:${tid},detail_order:${detail_order},showMode:${showMode}`);return JSON.stringify({page:1,pagecount:1,limit:allList.length,total:allList.length,list:allList})}function getAll(otid,tid,drives,path){try{const content=category(tid,null,false,null);const isFile=isMedia(otid.replace(/#all#|#search#/g,"").split("@@@")[0]);const{list}=JSON.parse(content);let vod_play_url=[];list.forEach(x=>{if(x.vod_tag==="file"){let vid=x.vod_id.replace(/#all#|#search#/g,"");vod_play_url.push(`${x.vod_name}$${vid.substring(vid.indexOf("$")+1)}`)}});const pl=path.split("/").filter(it=>it);let vod_name=pl[pl.length-1]||drives.name;if(vod_name===drives.name){print(pl)}if(otid.includes("#search#")){vod_name+="[搜]"}let vod={vod_id:otid,vod_name:vod_name,type_name:"文件夹",vod_pic:"https://avatars.githubusercontent.com/u/97389433?s=120&v=4",vod_content:tid,vod_tag:"folder",vod_play_from:drives.name,vod_play_url:vod_play_url.join("#"),vod_remarks:drives.settings.title};print("----detail1----");print(vod);return JSON.stringify({list:[vod]})}catch(e){print(e.message);let list=[{vod_name:"无数据,防无限请求",type_name:"文件夹",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.com/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg",vod_actor:e.message,vod_director:tid,vod_content:otid}];return JSON.stringify({list:list})}}function detail(tid){let isSearch=tid.includes("#search#");let isAll=tid.includes("#all#");let otid=tid;tid=tid.replace(/#all#|#search#/g,"");let isFile=isMedia(tid.split("@@@")[0]);print(`isFile:${tid}?${isFile}`);let{drives,path}=get_drives_path(tid);print(`drives:${drives},path:${path},`);if(path.endsWith("/")){return getAll(otid,tid,drives,path)}else{if(isSearch&&!isFile){return getAll(otid,tid,drives,path)}else if(isAll){let new_tid;if(isFile){new_tid=tid.split("/").slice(0,-1).join("/")+"/"}else{new_tid=tid}print(`全集模式 tid:${tid}=>tid:${new_tid}`);let{drives,path}=get_drives_path(new_tid);return getAll(otid,new_tid,drives,path)}else if(isFile){let paths=path.split("@@@");let vod_name=paths[0].substring(paths[0].lastIndexOf("/")+1);let vod_title=vod_name;if(otid.includes("#search#")){vod_title+="[搜]"}let vod={vod_id:otid,vod_name:vod_title,type_name:"文件",vod_pic:"https://avatars.githubusercontent.com/u/97389433?s=120&v=4",vod_content:tid,vod_play_from:drives.name,vod_play_url:vod_name+"$"+path,vod_remarks:drives.settings.title};print("----detail2----");print(vod);return JSON.stringify({list:[vod]})}else{return JSON.stringify({list:[]})}}}function play(flag,id,flags){const drives=get_drives(flag);const urls=id.split("@@@");let vod={parse:0,playUrl:"",url:drives.getFile(urls[0]).raw_url};if(urls.length>=2){const path=urls[0].substring(0,urls[0].lastIndexOf("/")+1);vod.subt=drives.getFile(path+urls[1]).raw_url1}print("----play----");print(vod);return JSON.stringify(vod)}function search(wd,quick){print(__drives);print("可搜索的alist驱动:"+searchDriver);if(!searchDriver||!wd){return JSON.stringify({list:[]})}else{let driver=__drives[searchDriver];wd=wd.split(" ").filter(it=>it.trim()).join("+");print(driver);let surl=driver.server+"/search?box="+wd+"&url=";if(search_type){surl+="&type="+search_type}print("搜索链接:"+surl);let html=http.get(surl).text();let lists=[];try{lists=pdfa(html,"div&&ul&&a")}catch(e){}print(`搜索结果数:${lists.length},搜索结果显示数量限制:${limit_search_show}`);let vods=[];let excludeReg=/\.(pdf|epub|mobi|txt|doc|lrc)$/;let cnt=0;lists.forEach(it=>{let vhref=pdfh(it,"a&&href");if(vhref){vhref=unescape(vhref)}if(excludeReg.test(vhref)){return}if(cnt<limit_search_show){print(vhref)}cnt++;let vid=searchDriver+"$"+vhref+"#search#";if(showMode==="all"){vid+="#all#"}vods.push({vod_name:pdfh(it,"a&&Text"),vod_id:vid,vod_tag:isMedia(vhref)?"file":"folder",vod_pic:"http://img1.3png.com/281e284a670865a71d91515866552b5f172b.png",vod_remarks:searchDriver})});vods=vods.slice(0,limit_search_show);print(vods);return JSON.stringify({list:vods})}}function get_size(sz){if(sz<=0){return""}let filesize="";if(sz>1024*1024*1024*1024){sz/=1024*1024*1024*1024;filesize="TB"}else if(sz>1024*1024*1024){sz/=1024*1024*1024;filesize="GB"}else if(sz>1024*1024){sz/=1024*1024;filesize="MB"}else if(sz>1024){sz/=1024;filesize="KB"}else{filesize="B"}let sizeStr=sz.toFixed(2)+filesize,index=sizeStr.indexOf("."),dou=sizeStr.substr(index+1,2);if(dou==="00"){return sizeStr.substring(0,index)+sizeStr.substr(index+3,2)}else{return sizeStr}}function levenshteinDistance(str1,str2){return 100-100*distance(str1,str2)/Math.max(str1.length,str2.length)}function naturalSort(options){if(!options){options={}}return function(a,b){if(options.key){a=a[options.key];b=b[options.key]}var EQUAL=0;var GREATER=options.order==="desc"?-1:1;var SMALLER=-GREATER;var re=/(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi;var sre=/(^[ ]*|[ ]*$)/g;var dre=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/;var hre=/^0x[0-9a-f]+$/i;var ore=/^0/;var normalize=function normalize(value){var string=""+value;return options.caseSensitive?string:string.toLowerCase()};var x=normalize(a).replace(sre,"")||"";var y=normalize(b).replace(sre,"")||"";var xN=x.replace(re,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0");var yN=y.replace(re,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0");if(!x&&!y)return EQUAL;if(!x&&y)return GREATER;if(x&&!y)return SMALLER;var xD=parseInt(x.match(hre))||xN.length!=1&&x.match(dre)&&Date.parse(x);var yD=parseInt(y.match(hre))||xD&&y.match(dre)&&Date.parse(y)||null;var oFxNcL,oFyNcL;if(yD){if(xD<yD)return SMALLER;else if(xD>yD)return GREATER}for(var cLoc=0,numS=Math.max(xN.length,yN.length);cLoc<numS;cLoc++){oFxNcL=!(xN[cLoc]||"").match(ore)&&parseFloat(xN[cLoc])||xN[cLoc]||0;oFyNcL=!(yN[cLoc]||"").match(ore)&&parseFloat(yN[cLoc])||yN[cLoc]||0;if(isNaN(oFxNcL)!==isNaN(oFyNcL))return isNaN(oFxNcL)?GREATER:SMALLER;else if(typeof oFxNcL!==typeof oFyNcL){oFxNcL+="";oFyNcL+=""}if(oFxNcL<oFyNcL)return SMALLER;if(oFxNcL>oFyNcL)return GREATER}return EQUAL}}const sortListByName=(vodList,key,order)=>{if(!key){return vodList}order=order||"asc";return vodList.sort(naturalSort({key:key,order:order,caseSensitive:true}))};const getTimeInt=timeStr=>{return new Date(timeStr).getTime()};const sortListByTime=(vodList,key,order)=>{if(!key){return vodList}let ASCarr=vodList.sort((a,b)=>{a=a[key];b=b[key];return getTimeInt(a)-getTimeInt(b)});if(order==="desc"){ASCarr.reverse()}return ASCarr};const sortListBySize=(vodList,key,order)=>{if(!key){return vodList}let ASCarr=vodList.sort((a,b)=>{a=a[key];b=b[key];return(Number(a)||0)-(Number(b)||0)});if(order==="desc"){ASCarr.reverse()}return ASCarr};export default{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search};
+71
View File
@@ -0,0 +1,71 @@
{
"规则名": "BT天堂",
"规则作者": "",
"请求头参数": "PC_UA",
"网页编码格式": "UTF-8",
"图片是否需要代理": "0",
"是否开启获取首页数据": "1",
"首页推荐链接": "https://www.bttt11.com",
"首页列表数组规则": "body&&.ul-imgtxt1",
"首页片单列表数组规则": "li",
"首页片单是否Jsoup写法": "1",
"首页片单标题": "h3&&Text",
"首页片单链接": "a&&href",
"首页片单图片": "img&&src",
"首页片单副标题": "span,-1&&Text",
"首页片单链接加前缀": "https://www.bt-tt.com",
"首页片单链接加后缀": "",
"分类起始页码": "0",
"分类链接": "https://www.bttt11.com/www.bt-tt.com/html/page-{cateId}-{catePg}.html",
//"分类链接": "https://www.clgod.xyz/list/{catePg}-{cateId}-0-0.html",
"分类名称": "畅影大陆电影&畅影港台电影&畅影欧美电影&畅影欧美剧&畅影日韩剧&畅影日韩电影&畅影动漫&畅影亚太剧&畅影亚太电影&畅影综艺&畅影纪录片",
"分类名称替换词": "4&3&1&6&7&2&11&10&5&12&13",
//"分类名称": "电影&动作&灵异&奇幻&宗教&励志&犯罪&功夫&喜剧&黑色&幽默&爱情&香港&纪录片&灾难&亲情&暴力&僵尸&丧尸&悬疑&人性&惊悚&血腥&武侠&剧情&历史&战争&经典&漫画&改编&恐怖&穿越&青春&黑帮&文艺&浪漫&同志&冒险&动画&演唱会",
//"分类名称替换词": "0&1&2&3&4&5&6&7&8&10&11&12&1315&16&17&18&19&20&21&22&23&24&25&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42",
"筛选数据": {},
"分类截取模式": "1",
"分类列表数组规则": ".ul-imgtxt2&&li",
"分类片单是否Jsoup写法": "1",
"分类片单标题": "h3&&Text",
"分类片单链接": "a&&href",
"分类片单图片": "img&&src",
"分类片单副标题": "span,-1--a&&Text!更新时间:",
"分类片单链接加前缀": "https://www.bt-tt.com",
"分类片单链接加后缀": "",
"搜索请求头参数": "User-Agent$PC_UA",
"搜索链接": "https://www.bt-tt.com/e/search/;post",
"POST请求数据": "show=title,newstext&keyboard={wd}&searchtype=影视搜索",
"搜索截取模式": "1",
"搜索列表数组规则": ".ul-imgtxt2&&li",
"搜索片单是否Jsoup写法": "1",
"搜索片单图片": "img&&src",
"搜索片单标题": "h3&&Text",
"搜索片单链接": "a&&href",
"搜索片单副标题": "span,-1--a&&Text!更新时间:",
"搜索片单链接加前缀": "https://www.bt-tt.com",
"搜索片单链接加后缀": "",
"链接是否直接播放": "0",
"直接播放链接加前缀": "",
"直接播放链接加后缀": "",
"直接播放直链视频请求头": "",
"详情是否Jsoup写法": "0",
"类型详情": "<p>◎类  别&&</p>",
"年代详情": "<p>◎年  代&&</p>",
"地区详情": "<p>◎产  地&&</p>",
"演员详情": "",
"简介详情": "",
"线路列表数组规则": "",
"线路标题": "",
"播放列表数组规则": "body&&.container",
"选集列表数组规则": "a[href^=magnet]||a[href^=ed2K]",
"选集标题链接是否Jsoup写法": "1",
"选集标题": "Text",
"选集链接": "a&&href",
"是否反转选集序列": "0",
"选集链接加前缀": "",
"选集链接加后缀": "",
"分析MacPlayer": "0",
"是否开启手动嗅探": "0",
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv",
"手动嗅探视频链接过滤词": ".html"
}
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
37d3cc41a50b82ea371733aeba5afa7f
+1168
View File
@@ -0,0 +1,1168 @@
{
"hot_gaia": [
{
"key": "sort",
"name": "排序",
"value": [
{
"n": "热度",
"v": "recommend"
},
{
"n": "最新",
"v": "time"
},
{
"n": "评分",
"v": "rank"
}
]
},
{
"key": "area",
"name": "地区",
"value": [
{
"n": "全部",
"v": "全部"
},
{
"n": "华语",
"v": "华语"
},
{
"n": "欧美",
"v": "欧美"
},
{
"n": "韩国",
"v": "韩国"
},
{
"n": "日本",
"v": "日本"
}
]
}
],
"tv_hot": [
{
"key": "type",
"name": "分类",
"value": [
{
"n": "综合",
"v": "tv_hot"
},
{
"n": "国产剧",
"v": "tv_domestic"
},
{
"n": "欧美剧",
"v": "tv_american"
},
{
"n": "日剧",
"v": "tv_japanese"
},
{
"n": "韩剧",
"v": "tv_korean"
},
{
"n": "动画",
"v": "tv_animation"
}
]
}
],
"show_hot": [
{
"key": "type",
"name": "分类",
"value": [
{
"n": "综合",
"v": "show_hot"
},
{
"n": "国内",
"v": "show_domestic"
},
{
"n": "国外",
"v": "show_foreign"
}
]
}
],
"movie": [
{
"key": "类型",
"name": "类型",
"value": [
{
"n": "全部类型",
"v": ""
},
{
"n": "喜剧",
"v": "喜剧"
},
{
"n": "爱情",
"v": "爱情"
},
{
"n": "动作",
"v": "动作"
},
{
"n": "科幻",
"v": "科幻"
},
{
"n": "动画",
"v": "动画"
},
{
"n": "悬疑",
"v": "悬疑"
},
{
"n": "犯罪",
"v": "犯罪"
},
{
"n": "惊悚",
"v": "惊悚"
},
{
"n": "冒险",
"v": "冒险"
},
{
"n": "音乐",
"v": "音乐"
},
{
"n": "历史",
"v": "历史"
},
{
"n": "奇幻",
"v": "奇幻"
},
{
"n": "恐怖",
"v": "恐怖"
},
{
"n": "战争",
"v": "战争"
},
{
"n": "传记",
"v": "传记"
},
{
"n": "歌舞",
"v": "歌舞"
},
{
"n": "武侠",
"v": "武侠"
},
{
"n": "情色",
"v": "情色"
},
{
"n": "灾难",
"v": "灾难"
},
{
"n": "西部",
"v": "西部"
},
{
"n": "纪录片",
"v": "纪录片"
},
{
"n": "短片",
"v": "短片"
}
]
},
{
"key": "地区",
"name": "地区",
"value": [
{
"n": "全部地区",
"v": ""
},
{
"n": "华语",
"v": "华语"
},
{
"n": "欧美",
"v": "欧美"
},
{
"n": "韩国",
"v": "韩国"
},
{
"n": "日本",
"v": "日本"
},
{
"n": "中国大陆",
"v": "中国大陆"
},
{
"n": "美国",
"v": "美国"
},
{
"n": "中国香港",
"v": "中国香港"
},
{
"n": "中国台湾",
"v": "中国台湾"
},
{
"n": "英国",
"v": "英国"
},
{
"n": "法国",
"v": "法国"
},
{
"n": "德国",
"v": "德国"
},
{
"n": "意大利",
"v": "意大利"
},
{
"n": "西班牙",
"v": "西班牙"
},
{
"n": "印度",
"v": "印度"
},
{
"n": "泰国",
"v": "泰国"
},
{
"n": "俄罗斯",
"v": "俄罗斯"
},
{
"n": "加拿大",
"v": "加拿大"
},
{
"n": "澳大利亚",
"v": "澳大利亚"
},
{
"n": "爱尔兰",
"v": "爱尔兰"
},
{
"n": "瑞典",
"v": "瑞典"
},
{
"n": "巴西",
"v": "巴西"
},
{
"n": "丹麦",
"v": "丹麦"
}
]
},
{
"key": "sort",
"name": "排序",
"value": [
{
"n": "近期热度",
"v": "T"
},
{
"n": "首映时间",
"v": "R"
},
{
"n": "高分优先",
"v": "S"
}
]
},
{
"key": "年代",
"name": "年代",
"value": [
{
"n": "全部年代",
"v": ""
},
{
"n": "2024",
"v": "2024"
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2010年代",
"v": "2010年代"
},
{
"n": "2000年代",
"v": "2000年代"
},
{
"n": "90年代",
"v": "90年代"
},
{
"n": "80年代",
"v": "80年代"
},
{
"n": "70年代",
"v": "70年代"
},
{
"n": "60年代",
"v": "60年代"
},
{
"n": "更早",
"v": "更早"
}
]
}
],
"tv": [
{
"key": "类型",
"name": "类型",
"value": [
{
"n": "不限",
"v": ""
},
{
"n": "电视剧",
"v": "电视剧"
},
{
"n": "综艺",
"v": "综艺"
}
]
},
{
"key": "电视剧形式",
"name": "电视剧形式",
"value": [
{
"n": "不限",
"v": ""
},
{
"n": "喜剧",
"v": "喜剧"
},
{
"n": "爱情",
"v": "爱情"
},
{
"n": "悬疑",
"v": "悬疑"
},
{
"n": "动画",
"v": "动画"
},
{
"n": "武侠",
"v": "武侠"
},
{
"n": "古装",
"v": "古装"
},
{
"n": "家庭",
"v": "家庭"
},
{
"n": "犯罪",
"v": "犯罪"
},
{
"n": "科幻",
"v": "科幻"
},
{
"n": "恐怖",
"v": "恐怖"
},
{
"n": "历史",
"v": "历史"
},
{
"n": "战争",
"v": "战争"
},
{
"n": "动作",
"v": "动作"
},
{
"n": "冒险",
"v": "冒险"
},
{
"n": "传记",
"v": "传记"
},
{
"n": "剧情",
"v": "剧情"
},
{
"n": "奇幻",
"v": "奇幻"
},
{
"n": "惊悚",
"v": "惊悚"
},
{
"n": "灾难",
"v": "灾难"
},
{
"n": "歌舞",
"v": "歌舞"
},
{
"n": "音乐",
"v": "音乐"
}
]
},
{
"key": "综艺形式",
"name": "综艺形式",
"value": [
{
"n": "不限",
"v": ""
},
{
"n": "真人秀",
"v": "真人秀"
},
{
"n": "脱口秀",
"v": "脱口秀"
},
{
"n": "音乐",
"v": "音乐"
},
{
"n": "歌舞",
"v": "歌舞"
}
]
},
{
"key": "地区",
"name": "地区",
"value": [
{
"n": "全部地区",
"v": ""
},
{
"n": "华语",
"v": "华语"
},
{
"n": "欧美",
"v": "欧美"
},
{
"n": "国外",
"v": "国外"
},
{
"n": "韩国",
"v": "韩国"
},
{
"n": "日本",
"v": "日本"
},
{
"n": "中国大陆",
"v": "中国大陆"
},
{
"n": "中国香港",
"v": "中国香港"
},
{
"n": "美国",
"v": "美国"
},
{
"n": "英国",
"v": "英国"
},
{
"n": "泰国",
"v": "泰国"
},
{
"n": "中国台湾",
"v": "中国台湾"
},
{
"n": "意大利",
"v": "意大利"
},
{
"n": "法国",
"v": "法国"
},
{
"n": "德国",
"v": "德国"
},
{
"n": "西班牙",
"v": "西班牙"
},
{
"n": "俄罗斯",
"v": "俄罗斯"
},
{
"n": "瑞典",
"v": "瑞典"
},
{
"n": "巴西",
"v": "巴西"
},
{
"n": "丹麦",
"v": "丹麦"
},
{
"n": "印度",
"v": "印度"
},
{
"n": "加拿大",
"v": "加拿大"
},
{
"n": "爱尔兰",
"v": "爱尔兰"
},
{
"n": "澳大利亚",
"v": "澳大利亚"
}
]
},
{
"key": "sort",
"name": "排序",
"value": [
{
"n": "近期热度",
"v": "T"
},
{
"n": "首播时间",
"v": "R"
},
{
"n": "高分优先",
"v": "S"
}
]
},
{
"key": "年代",
"name": "年代",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2024",
"v": "2024"
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2010年代",
"v": "2010年代"
},
{
"n": "2000年代",
"v": "2000年代"
},
{
"n": "90年代",
"v": "90年代"
},
{
"n": "80年代",
"v": "80年代"
},
{
"n": "70年代",
"v": "70年代"
},
{
"n": "60年代",
"v": "60年代"
},
{
"n": "更早",
"v": "更早"
}
]
},
{
"key": "平台",
"name": "平台",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "腾讯视频",
"v": "腾讯视频"
},
{
"n": "爱奇艺",
"v": "爱奇艺"
},
{
"n": "优酷",
"v": "优酷"
},
{
"n": "湖南卫视",
"v": "湖南卫视"
},
{
"n": "Netflix",
"v": "Netflix"
},
{
"n": "HBO",
"v": "HBO"
},
{
"n": "BBC",
"v": "BBC"
},
{
"n": "NHK",
"v": "NHK"
},
{
"n": "CBS",
"v": "CBS"
},
{
"n": "NBC",
"v": "NBC"
},
{
"n": "tvN",
"v": "tvN"
}
]
}
],
"rank_list_movie": [
{
"key": "榜单",
"name": "榜单",
"value": [
{
"n": "实时热门电影",
"v": "movie_real_time_hotest"
},
{
"n": "一周口碑电影榜",
"v": "movie_weekly_best"
},
{
"n": "豆瓣电影Top250",
"v": "movie_top250"
}
]
}
],
"rank_list_tv": [
{
"key": "榜单",
"name": "榜单",
"value": [
{
"n": "实时热门电视",
"v": "tv_real_time_hotest"
},
{
"n": "华语口碑剧集榜",
"v": "tv_chinese_best_weekly"
},
{
"n": "全球口碑剧集榜",
"v": "tv_global_best_weekly"
},
{
"n": "国内口碑综艺榜",
"v": "show_chinese_best_weekly"
},
{
"n": "国外口碑综艺榜",
"v": "show_global_best_weekly"
}
]
}
],
"book_hot": [
{
"key": "type",
"name": "分类",
"value": [
{
"n": "综合",
"v": "book_hot"
},
{
"n": "豆瓣阅读TOP250",
"v": "book_top250"
},
{
"n": "一周热门图书榜",
"v": "EC645NBAI"
},
{
"n": "悬疑推理小说一周热门榜",
"v": "ECHU5PTUY"
},
{
"n": "科幻奇幻小说一周热门榜",
"v": "ECEA5SP5A"
},
{
"n": "绘本绘画一周热门榜",
"v": "EC5U5NVYQ"
},
{
"n": "商业经管图书一周热门榜",
"v": "ECE45ORCA"
},
{
"n": "影视戏剧图书一周热门榜",
"v": "ECWU5QFUI"
},
{
"n": "艺术设计图书一周热门榜",
"v": "ECI45ZBNY"
},
{
"n": "科学新知图书一周热门榜",
"v": "ECIM5L2YI"
},
{
"n": "社会纪实图书一周热门榜",
"v": "ECQU5U7HQ"
},
{
"n": "历史文化图书一周热门榜",
"v": "ECIE5S2IQ"
},
{
"n": "文学图书一周热门榜",
"v": "ECRM5OCGI"
},
{
"n": "小说一周热门榜",
"v": "ECF45REBQ"
}
]
}
],
"book": [
{
"key": "类型",
"name": "类型",
"value": [
{
"n": "类型",
"v": ""
},
{
"n": "文学",
"v": "文学"
},
{
"n": "流行",
"v": "流行"
},
{
"n": "文化",
"v": "文化"
},
{
"n": "生活",
"v": "生活"
},
{
"n": "经营",
"v": "经营"
},
{
"n": "科技",
"v": "科技"
}
]
},
{
"key": "文学",
"name": "文学",
"value": [
{
"n": "文学",
"v": "文学"
},
{
"n": "小说",
"v": "小说"
},
{
"n": "随笔",
"v": "随笔"
},
{
"n": "日本文学",
"v": "日本文学"
},
{
"n": "散文",
"v": "散文"
},
{
"n": "诗歌",
"v": "诗歌"
},
{
"n": "童话",
"v": "童话"
},
{
"n": "名著",
"v": "名著"
},
{
"n": "港台",
"v": "港台"
}
]
},
{
"key": "流行",
"name": "流行",
"value": [
{
"n": "流行",
"v": "流行"
},
{
"n": "漫画",
"v": "漫画"
},
{
"n": "推理",
"v": "推理"
},
{
"n": "绘本",
"v": "绘本"
},
{
"n": "科幻",
"v": "科幻"
},
{
"n": "青春",
"v": "青春"
},
{
"n": "言情",
"v": "言情"
},
{
"n": "奇幻",
"v": "奇幻"
},
{
"n": "武侠",
"v": "武侠"
}
]
},
{
"key": "文化",
"name": "文化",
"value": [
{
"n": "文化",
"v": "文化"
},
{
"n": "历史",
"v": "历史"
},
{
"n": "哲学",
"v": "哲学"
},
{
"n": "传记",
"v": "传记"
},
{
"n": "设计",
"v": "设计"
},
{
"n": "电影",
"v": "电影"
},
{
"n": "建筑",
"v": "建筑"
},
{
"n": "回忆录",
"v": "回忆录"
},
{
"n": "音乐",
"v": "音乐"
}
]
},
{
"key": "生活",
"name": "生活",
"value": [
{
"n": "生活",
"v": "生活"
},
{
"n": "旅行",
"v": "旅行"
},
{
"n": "励志",
"v": "励志"
},
{
"n": "教育",
"v": "教育"
},
{
"n": "职场",
"v": "职场"
},
{
"n": "美食",
"v": "美食"
},
{
"n": "灵修",
"v": "灵修"
},
{
"n": "健康",
"v": "健康"
},
{
"n": "家居",
"v": "家居"
}
]
},
{
"key": "经营",
"name": "经营",
"value": [
{
"n": "经营",
"v": "经营"
},
{
"n": "经济学",
"v": "经济学"
},
{
"n": "管理",
"v": "管理"
},
{
"n": "商业",
"v": "商业"
},
{
"n": "金融",
"v": "金融"
},
{
"n": "营销",
"v": "营销"
},
{
"n": "理财",
"v": "理财"
},
{
"n": "股票",
"v": "股票"
},
{
"n": "企业史",
"v": "企业史"
}
]
},
{
"key": "科技",
"name": "科技",
"value": [
{
"n": "科技",
"v": "科技"
},
{
"n": "科普",
"v": "科普"
},
{
"n": "互联网",
"v": "互联网"
},
{
"n": "编程",
"v": "编程"
},
{
"n": "交互设计",
"v": "交互设计"
},
{
"n": "算法",
"v": "算法"
},
{
"n": "通信",
"v": "通信"
},
{
"n": "神经网络",
"v": "神经网络"
}
]
},
{
"key": "sort",
"name": "排序",
"value": [
{
"n": "近期热度",
"v": "T"
},
{
"n": "首播时间",
"v": "R"
},
{
"n": "高分优先",
"v": "S"
}
]
}
]
}
+2676
View File
@@ -0,0 +1,2676 @@
// import 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/es6py.js';
// import {是否正版,urlDeal,setResult,setResult2,setHomeResult,maoss,urlencode} from 'http://192.168.10.103:5705/libs/es6py.js';
// import 'http://192.168.1.124:5705/libs/es6py.js';
import cheerio from 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/cheerio.min.js';
// import cheerio from 'http://192.168.10.103:5705/libs/cheerio.min.js';
import 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/crypto-js.js';
import 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/drT.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'
// import 'http://192.168.10.103:5705/libs/drT.js';
// import muban from 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/js/模板.js';
// import muban from 'http://192.168.10.103:5705/admin/view/模板.js';
// const key = 'drpy_zbk';
// eval(req('http://192.168.1.124:5705/libs/es6py.js').content);
function init_test(){
// console.log(typeof(CryptoJS));
console.log("init_test_start");
console.log("当前版本号:"+VERSION);
console.log(RKEY);
console.log(JSON.stringify(rule));
// console.log('123456的md5值是:'+md5('123456'));
// let aa = base64Encode('编码测试一下')
// log(aa);
// let bb = base64Decode(aa);
// log('bb:'+bb);
// clearItem(RULE_CK);
// console.log(JSON.stringify(rule));
// console.log(request('https://www.baidu.com',{withHeaders:true}));
// console.log(request('https://www.baidu.com/favicon.ico',{toBase64:true}));
// require('http://192.168.10.99:5705/txt/pluto/drT.js');
// console.log(typeof(drT));
// console.log(drT.renderText('{{fl.cate}},hi, {{fl}}哈哈.{{fl}}',{sort: 1,cate:'movie'},'fl'));
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 {
// code里可以进行get 或者 post请求cookie并改变rule.headers 里的cookie
// 直接操作 rule_fetch_params 这个变量 .headers.Cookie
eval(code);
}catch (e) {
console.log('预处理执行失败:'+e.message);
}
}
}
let rule = {};
const VERSION = 'drpy1 3.9.49beta36 202400414';
/** 已知问题记录
* 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.stringify函数,它会原封不动保留中文不会编码unicode
* 6.base64Encode,base64Decode,md5函数还没有实现 (抄影魔代码实现了)
* 7.eval(getCryptoJS());还没有实现 (可以空实现了,以后遇到能忽略)
* done: jsp:{pdfa,pdfh,pd},json:{pdfa,pdfh,pd},jq:{pdfa,pdfh,pd}
* * 电脑看日志调试
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 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(html,parse,uri){
let ret = this.pdfh(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
},
};
/**
* 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, base_url) {
if (!parse || !parse.trim()) {
return ''
}
let eleFind = typeof html === 'object';
let option = undefined;
if (eleFind && parse.startsWith('body&&')) {
parse = parse.substr(6);
if (parse.indexOf('&&') < 0) {
option = parse.trim();
parse = '*=*';
}
}
if (parse.indexOf('&&') > -1) {
let sp = parse.split('&&');
option = sp[sp.length - 1];
sp.splice(sp.length - 1);
if (sp.length > 1) {
for (let i in sp) {
//Javascript自定义Array.prototype干扰for-in循环
if(sp.hasOwnProperty(i)){
if (!SELECT_REGEX.test(sp[i])) {
sp[i] = sp[i] + ':eq(0)';
}
}
}
} else {
if (!SELECT_REGEX.test(sp[0])) {
sp[0] = sp[0] + ':eq(0)';
}
}
parse = sp.join(' ');
}
let result = '';
const $ = eleFind ? html.rr : cheerio.load(html);
let ret = eleFind ? ((parse === '*=*' || $(html.ele).is(parse)) ? html.ele : $(html.ele).find(parse)) : $(parse);
if (option) {
if (option === 'Text') {
result = $(ret).text();
}
else if (option === 'Html') {
result = $(ret).html();
}
else {
result = $(ret).attr(option);
if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){
try {
result = result.match(/url\((.*?)\)/)[1];
// 2023/07/28新增 style取内部链接自动去除首尾单双引号
result = result.replace(/^['|"](.*)['|"]$/, "$1");
}catch (e) {}
}
}
if (result && base_url && DOM_CHECK_ATTR.test(option) && !SPECIAL_URL.test(result)) {
if (/http/.test(result)) {
result = result.substr(result.indexOf('http'));
} else {
result = urljoin(base_url, result)
}
}
} else {
result = $(ret).toString();
}
return result;
},
pdfa(html, parse) {
if (!parse || !parse.trim()) {
print('!parse');
return [];
}
let eleFind = typeof html === 'object';
// print('parse前:'+parse);
if (parse.indexOf('&&') > -1) {
let sp = parse.split('&&');
for (let i in sp) {
if(sp.hasOwnProperty(i)){
if (!SELECT_REGEX_A.test(sp[i]) && i < sp.length - 1) {
if(sp[i]!=='body'){
// sp[i] = sp[i] + ':eq(0)';
sp[i] = sp[i] + ':first';
}
}
}
}
parse = sp.join(' ');
}
// print('parse后:'+parse);
const $ = eleFind ? html.rr : cheerio.load(html);
let ret = eleFind ? ($(html.ele).is(parse) ? html.ele : $(html.ele).find(parse)) : $(parse);
let result = [];
// print('outerHTML:');
// print($(ret[0]).prop("outerHTML"));
if (ret) {
ret.each(function (idx, ele) {
result.push({ rr: $, ele: ele });
// result.push({ rr: $, ele: $(ele).prop("outerHTML")}); // 性能贼差
});
}
return result;
},
pd(html,parse,uri){
return parseTags.jq.pdfh(html, parse, MY_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) {}
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
}
if(obj.redirect===false){
obj.redirect = 0;
}
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) {
}
}
}
} catch (e) {
}
}
let t2 = (new Date()).getTime();
console.log('加载首页推荐耗时:'+(t2-t1)+'毫秒');
// console.log(JSON.stringify(d));
if(rule.图片替换 && rule.图片替换.includes('=>')){
let replace_from = rule.图片替换.split('=>')[0];
let replace_to = rule.图片替换.split('=>')[1];
d.forEach(it=>{
if(it.vod_pic&&it.vod_pic.startsWith('http')){
it.vod_pic = it.vod_pic.replace(replace_from,replace_to);
}
});
}
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));
if(/object Object/.test(new_url)){
new_url = drT.renderText(url,fl);
}
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.图片替换 && rule.图片替换.includes('=>')){
let replace_from = rule.图片替换.split('=>')[0];
let replace_to = rule.图片替换.split('=>')[1];
d.forEach(it=>{
if(it.vod_pic&&it.vod_pic.startsWith('http')){
it.vod_pic = it.vod_pic.replace(replace_from,replace_to);
}
});
}
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.includes('#')){
url = url.split('[')[1].split(']')[0];
}else if(searchObj.pg > 1 && url.includes('[')&&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.图片替换 && rule.图片替换.includes('=>')){
let replace_from = rule.图片替换.split('=>')[0];
let replace_to = rule.图片替换.split('=>')[1];
d.forEach(it=>{
if(it.vod_pic&&it.vod_pic.startsWith('http')){
it.vod_pic = it.vod_pic.replace(replace_from,replace_to);
}
});
}
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 _impJQP = false;
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;
}
if(_ps === parseTags.jq){ // jquery解析提前load(html)
_impJQP = true;
}
if (_impJQP) {
let ttt1 = (new Date()).getTime();
let c$ = cheerio.load(html);
// print(`二级${MY_URL}仅c$源码耗时:${(new Date()).getTime()-ttt1}毫秒`);
html = { rr: c$, ele: c$('html')[0] };
print(`二级${MY_URL}仅cheerio.load源码耗时:${(new Date()).getTime()-ttt1}毫秒`);
}
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:',''));
if (_impJQP) {
let c$ = cheerio.load(html);
html = { rr: c$, ele: c$('html')[0] }
}
}
// console.log(2);
if(p.tabs){
if(p.tabs.startsWith('js:')){
print('开始执行tabs代码:'+p.tabs);
if(html&&_impJQP&&typeof (html)!=='string'){
try { // 假装是jq的对象拿来转换一下字符串,try为了防止json的情况报错
html = html.rr(html.ele).toString();
}catch (e) {}
}
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 {
if(html&&_impJQP&&typeof (html)!=='string'){
// 假装是jq的对象拿来转换一下字符串,try为了防止json的情况报错
try {
html = html.rr(html.ele).toString();
}catch (e) {}
}
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<playFrom.length;i++){
let tab_name = playFrom[i];
let tab_ext = p.tabs.split(';').length > 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);
// 测试jsp提速
// console.log(p1);
// p1 = p1.replace(':eq(0)',',0').replace(' ','&&');
// console.log(p1);
// console.log(html);
let vodList = [];
try {
vodList = _pdfa(html, p1);
console.log('len(vodList):'+vodList.length);
}catch (e) {
// console.log(e.message);
}
let new_vod_list = [];
// print('tab_ext:'+tab_ext);
let tabName = tab_ext?_pdfh(html, tab_ext):tab_name;
console.log(tabName);
// console.log('cheerio解析Text');
// 此处存在性能问题: pt版2000集需要650毫秒,俊版1300毫秒 特么的优化不动 主要后面定位url的我拿他没法
// 主要性能问题在于 _pd(it, list_url, MY_URL)
let tt1 = (new Date()).getTime();
// vodList.forEach((it,idex)=>{
// // 请注意,这里要固定pdfh解析body&&Text,不需要下划线,没写错
// // new_vod_list.push(pdfh(it,'body&&Text')+'$'+_pd(it,'a&&href',MY_URL));
// // new_vod_list.push(cheerio.load(it).text()+'$'+_pd(it,'a&&href',MY_URL));
// // new_vod_list.push(_pdfh(it, list_text).trim() + '$' + _pd(it, list_url, MY_URL));
// // new_vod_list.push(_pdfh(it, list_text).trim() + '$' +idex);
// // new_vod_list.push(idex + '$' +_pdfh(it, list_url));
// new_vod_list.push(_pdfh(it, list_text).trim() + '$' +_pd(it, list_url,MY_URL));
// });
if(vodList.length>0){
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));
}
new_vod_list = forceOrder(new_vod_list,'',x=>x.split('$')[0]);
console.log(`drpy影响性能代码共计列表数循环次数:${vodList.length},耗时:${(new Date()).getTime()-tt1}毫秒`);
}
let vlist = new_vod_list.join('#');
vod_tab_list.push(vlist);
}
vod_play_url = vod_tab_list.join(vod_play_url);
}
}
vod.vod_play_url = vod_play_url;
}
if(rule.图片替换 && rule.图片替换.includes('=>')){
let replace_from = rule.图片替换.split('=>')[0];
let replace_to = rule.图片替换.split('=>')[1];
vod.vod_pic = vod.vod_pic.replace(replace_from,replace_to);
}
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;
var MY_FLAG = playObj.flag;
if(!/http/.test(MY_URL)){
try {
MY_URL = base64Decode(MY_URL);
}catch (e) {}
}
MY_URL = decodeURIComponent(MY_URL);
var input = MY_URL;//注入给免嗅js
var flag = MY_FLAG;//注入播放线路名称给免嗅js
let common_play = {
parse:1,
url:input,
flag:flag,
// 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();
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(']')&&!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.图片替换 = 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);
}
}
}
}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 = '';
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,
}
+1
View File
@@ -0,0 +1 @@
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"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/drT.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("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={};const VERSION="drpy1 3.9.49beta36 202400414";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 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;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){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<len){if(o[k]===searchElement){return true}k++}return 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||"";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=[];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){var Encrypted=CryptoJS.AES.encrypt(word,a,{iv:t,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7});return Encrypted.ciphertext.toString()}}}return{}}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)}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);eval(html.match(/var config = {[\s\S]*?}/)[0]+"");if(!config.url.startsWith("http")){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))}function base64Decode(text){return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text))}function md5(text){return CryptoJS.MD5(text).toString()}function encodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.encode(input)}return input}function decodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.decode(input)}return input}function getCryptoJS(){return'console.log("CryptoJS已装载");'}const RSA={encode:function(data,key,option){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){if(typeof rsaDecrypt==="function"){if(!option||typeof option!=="object"){return rsaDecrypt(data,key)}else{return rsaDecrypt(data,key,option)}}else{return false}}};function getProxyUrl(){if(typeof getProxy==="function"){return getProxy(true)}else{return"http://127.0.0.1:9978/proxy?do=js"}}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+="";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(html,parse,uri){let ret=this.pdfh(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}};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,base_url){if(!parse||!parse.trim()){return""}let eleFind=typeof html==="object";let option=undefined;if(eleFind&&parse.startsWith("body&&")){parse=parse.substr(6);if(parse.indexOf("&&")<0){option=parse.trim();parse="*=*"}}if(parse.indexOf("&&")>-1){let sp=parse.split("&&");option=sp[sp.length-1];sp.splice(sp.length-1);if(sp.length>1){for(let i in sp){if(sp.hasOwnProperty(i)){if(!SELECT_REGEX.test(sp[i])){sp[i]=sp[i]+":eq(0)"}}}}else{if(!SELECT_REGEX.test(sp[0])){sp[0]=sp[0]+":eq(0)"}}parse=sp.join(" ")}let result="";const $=eleFind?html.rr:cheerio.load(html);let ret=eleFind?parse==="*=*"||$(html.ele).is(parse)?html.ele:$(html.ele).find(parse):$(parse);if(option){if(option==="Text"){result=$(ret).text()}else if(option==="Html"){result=$(ret).html()}else{result=$(ret).attr(option);if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1];result=result.replace(/^['|"](.*)['|"]$/,"$1")}catch(e){}}}if(result&&base_url&&DOM_CHECK_ATTR.test(option)&&!SPECIAL_URL.test(result)){if(/http/.test(result)){result=result.substr(result.indexOf("http"))}else{result=urljoin(base_url,result)}}}else{result=$(ret).toString()}return result},pdfa(html,parse){if(!parse||!parse.trim()){print("!parse");return[]}let eleFind=typeof html==="object";if(parse.indexOf("&&")>-1){let sp=parse.split("&&");for(let i in sp){if(sp.hasOwnProperty(i)){if(!SELECT_REGEX_A.test(sp[i])&&i<sp.length-1){if(sp[i]!=="body"){sp[i]=sp[i]+":first"}}}}parse=sp.join(" ")}const $=eleFind?html.rr:cheerio.load(html);let ret=eleFind?$(html.ele).is(parse)?html.ele:$(html.ele).find(parse):$(parse);let result=[];if(ret){ret.each(function(idx,ele){result.push({rr:$,ele:ele})})}return result},pd(html,parse,uri){return parseTags.jq.pdfh(html,parse,MY_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){}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cnt<OCR_RETRY){try{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){let setCk=Object.keys(json).find(it=>it.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}if(obj.redirect===false){obj.redirect=0}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<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=_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){}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}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});if(/object Object/.test(new_url)){new_url=drT.renderText(url,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.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}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.includes("#")){url=url.split("[")[1].split("]")[0]}else if(searchObj.pg>1&&url.includes("[")&&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.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}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 _impJQP=false;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}if(_ps===parseTags.jq){_impJQP=true}if(_impJQP){let ttt1=(new Date).getTime();let c$=cheerio.load(html);html={rr:c$,ele:c$("html")[0]};print(`二级${MY_URL}仅cheerio.load源码耗时:${(new Date).getTime()-ttt1}毫秒`)}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(_impJQP){let c$=cheerio.load(html);html={rr:c$,ele:c$("html")[0]}}}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);if(html&&_impJQP&&typeof html!=="string"){try{html=html.rr(html.ele).toString()}catch(e){}}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{if(html&&_impJQP&&typeof html!=="string"){try{html=html.rr(html.ele).toString()}catch(e){}}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;i<playFrom.length;i++){let tab_name=playFrom[i];let tab_ext=p.tabs.split(";").length>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 vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}let new_vod_list=[];let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let tt1=(new Date).getTime();if(vodList.length>0){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))}new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${vodList.length},耗时:${(new Date).getTime()-tt1}毫秒`)}let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];vod.vod_pic=vod.vod_pic.replace(replace_from,replace_to)}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;var MY_FLAG=playObj.flag;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;var flag=MY_FLAG;let common_play={parse:1,url:input,flag:flag,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("]")&&!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.图片替换=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)}}}}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="";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};
+2808
View File
@@ -0,0 +1,2808 @@
import cheerio from 'assets://js/lib/cheerio.min.js';
import 'assets://js/lib/crypto-js.js';
import './jsencrypt.js';
import 模板 from "../js/模板.js"
import {gbkTool} from './gbk.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");
// log('typeof (JSEncrypt):'+typeof (JSEncrypt));
// let publicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwEc7wBMtYKkxvrQNI3+ITBZwAkPkGvsv4TsAHFskKGZWz9eYl3scivhmlEfWHlEkdyb0m82CmB1qAgef+pD4cZu+Cdmm2e9lnExhLwm8cBgpkAen9QRNdjojZgxM0W+JcReH4W6pw+uFXiLRn4AIQkDftWGNLg6wlNS+39Z/RvP9zyATJLZ9AKDdHp62XMxEK1KZvWBuIg+Oa5UzgA9jy+2XyIqwhBtO8tPbUl21t2pvTzHoLUjSkPNm2LurcUk6+jQ2r6aiS2CN1NXIucPJU6mkuIQ821SjvkYPtIdRMntW4y2u4cyiqVEEQwlzWVMHh+/vfrWAQr9fgjDuYYtvPQIDAQAB';
// let privateKey = 'MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDARzvAEy1gqTG+tA0jf4hMFnACQ+Qa+y/hOwAcWyQoZlbP15iXexyK+GaUR9YeUSR3JvSbzYKYHWoCB5/6kPhxm74J2abZ72WcTGEvCbxwGCmQB6f1BE12OiNmDEzRb4lxF4fhbqnD64VeItGfgAhCQN+1YY0uDrCU1L7f1n9G8/3PIBMktn0AoN0enrZczEQrUpm9YG4iD45rlTOAD2PL7ZfIirCEG07y09tSXbW3am9PMegtSNKQ82bYu6txSTr6NDavpqJLYI3U1ci5w8lTqaS4hDzbVKO+Rg+0h1Eye1bjLa7hzKKpUQRDCXNZUweH7+9+tYBCv1+CMO5hi289AgMBAAECggEBAIRbRJUWXmEwdq64kGbELlV6CIZ2p3mvOSlIjO34Cy7IK7AMz9xOgbpj/XDK9miOIJTouu7ZC7GcZdGZ4BUCYBMMS0fKjGFuurpZlXhkslNTPqEHtCUkXhIpOR7RDrwIlErGEOIsZC4aXQcM3tF1t7mroJLh4OY4dHMu82lv5NM4hhFMNvHzXVvrPXeTzw26gddHVG/ke0WUYOcB5j3cPp8xaVp7JV8bdxtGtkqIfBLY/dIczzJu/3F3cBpU2nNwt8uVUF/w/HKlr7j8FqqFHXWh182beU0n5AIdRyRJBrRUAEhdtsUnvJOVBDqzZa+9DJ5395F7V8KRlQptxETdhCECgYEA4x/2HM9fnVIhG6wTbEt1LhGTKYb/igMAHLqquEMfRsB44tobI8gVNwR3qJQY/nKXxcQemQV29PcdqpENCKyXUXGD8SI1UPg15rHFBI8CIqlCXfzJybdHjmzlhaA9I5lofIVh+5MW7WkvHZoRy7NeDMhHUuaiveuqC4OJ8n+dD2kCgYEA2LkmUVef3WkBBwUBRdkyoog3DMwR+/ubb0ncJVYy3ItYVJltQ4HqmrRiJc8xBAoFnG8rbiqDnmTnDR3WbuxU1G2hml09fqId+rQds2UfESswCXHU43A4f77m1XyA6PprBxpozVIcmK69N4rR9jOXflLWo3O+p2ipUbmNpId7+rUCgYBSpcbBJRT+AmzZzPwkZDD32p1ady114zGfQq3s7z/qVw+mPQezNZPCuXVxerK9pKVl6b/Ynwxyh5nb/3xms6c8k7oXfQM5u5ihof63cfKs+jqUSPCE3pTDVw0OWwjkc2Z6KW9GRHgLXEMw2mevYE3RCPArUpHV2nO+TNddzuIwQQKBgQDOZwdnUNygMfEYjlu3+jOPN8u2FGTMZ8SRKPbRWFb4VH27lKPLN2AIFuOivsEf56uQYRAry7GumMq0Y0ZmPg5Mglz2dvaqNBv5OLFQuW3tHAST+iWWtroYb+fISts7B8QG79AAO8OgZksvKrbslBYj6SEiaomZRsR7YQzVNXOOQQKBgQCovElZ50c8ZJ6m9D9fw3Nes7u9vshpyyac5tt4tZ7yfU4l5pWGrIUqCE703qZp4NAqEvlZUCJbj9kkysaj/2MfFb2b9jSvdNB+V/YW9Cwg+5TziYoOcQzN1z2u4p4goTAv0S+pTNSr3qWaTUI4TXUXQajif45Fexv+MrP5AAXQyw=='
// // let text = '你好';
// let text = '[{"vod_name":"兔小贝原创儿歌","vod_pic":"https://resource-cdn.tuxiaobei.com/video-album/FnQ8ieJHgsbgCKWXNBg4uoOmKgG5.jpg","vod_remarks":"共229首","vod_content":"","vod_id":"/subject/17@@兔小贝原创儿歌@@https://resource-cdn.tuxiaobei.com/video-album/FnQ8ieJHgsbgCKWXNBg4uoOmKgG5.jpg"},{"vod_name":"英文儿歌","vod_pic":"https://resource-cdn.tuxiaobei.com/video-album/Fqjpx2H_-QaYNAYn2MekRuDpeyUv.jpg","vod_remarks":"共10首","vod_content":"","vod_id":"/subject/23@@英文儿歌@@https://resource-cdn.tuxiaobei.com/video-album/Fqjpx2H_-QaYNAYn2MekRuDpeyUv.jpg"}]';
// let str = RSA.encode(text, publicKey);
// console.log("加密数据:" + str);
// let str1 = 'Wa2c/868VOm0PgpGG2s2aMrDbGOlJRdZXlSGswjFgywd3nZNB7ND8kVMdNB/OsNFoQXJXSJMvPaE73BH7rs8fz54JGdYQK+qTgfQRqQZvomCjbzseSR4bm4NOrtIOOslL3WqxlzOuU0M1P1eERmkLEVU2WSyc3RGtJro3b3MOWYCNdKMoZdncfOHJndkl4wm9V3GGc3uH98hs6OxLvBWgXoW9jZQ3n0vR2FtS2KYrPGuSuKGkxlt9Kw5TD6nri142NOimz05WK55Xe04YUQ1VZd51t0wzJGXolWgfzIQaK2zzhk5Zjlm+IQJxXqEWiJ2+O6TJ+lIttvsDSaUflcDXQ==';
// let str2 = 'R86mW9DzBw05pxBSh9ECh1stXxINmnudgZBbzU/cz1EcFgrEgdk0Zk4ruAiJZB2fP5c7d3gMmN8+Dv19IfARWSzw85xCEjUhpdcMJ0jn6ZE5H+muadND9LzjeVisojqwYxot3YVdKof7HMhPFN8QR0jfzqhjmnGFTlY1jMXzJK0MSOLNRLDar480CdKNb/cxALC8+xKIlhM9E4B31t8J4rNMUWSCAr49lbZ3jx3PxieBpTQUdDJz96AttR93Pc+c51wrxh0Ch/Mt4Rs09HGMXwIpNV+CxsGwSGRQUlyJo2k3d0WqsVzpz6S8A4VGEMTRLGI3IjEt+eWt7wM3nAXarg==';
// let str3 = 'D4eOsRqua+jYA5+ZOR9PLI2PExKjKfArQfv9/wGeG50bQSjWypShJPY6RQfO+rghyf0juzHIUSxqH91OxinhCFkONaF2Vod2QVyphyn9eh73dAcEFKIFFKGXoPCjbMWrr3p4d+hgVrHzrFeGqkRq8JFOvG2L5XDxVfWbV8KmUA0DKuz6QwWg7P4kesy+C7BbLALy5W/wfZchD3gnsBvx/pjFoe11VfAify9isLxg9a15jj52xr6lzQ9kge9C2JcV8yq85bFKaUpJWgobzz+BSIv3lVMU6vgcldmOrhkyiETpFGFGGF00DphGCEoK6uAyyNDh7+Jn8P17zf/DW1wV3A==';
// let uncrypted = RSA.decode(str, privateKey);
// log('解密数据:'+uncrypted);
// uncrypted = RSA.decode(str1, privateKey);
// log('解密数据1:'+uncrypted);
// uncrypted = RSA.decode(str2, privateKey);
// log('解密数据2:'+uncrypted);
// uncrypted = RSA.decode(str3, privateKey);
// log('解密数据3:'+uncrypted);
// 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.49beta40 202400426';
/** 已知问题记录
* 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 () {
let target = arguments[0];
for (let i = 1; i < arguments.length; i++) {
let source = arguments[i];
for (let 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;
};
}
if (typeof Array.prototype.toReversed != 'function') {
Array.prototype.toReversed = function () {
const clonedList = this.slice();
// 倒序新数组
const reversedList = clonedList.reverse();
return reversedList;
};
}
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 = {
decode: function (data, key, option) {
option = option || {};
if (typeof (JSEncrypt) === 'function') {
let chunkSize = option.chunkSize || 117; // 默认分段长度为117
let privateKey = this.getPrivateKey(key); // 获取私钥
const decryptor = new JSEncrypt(); //创建解密对象实例
decryptor.setPrivateKey(privateKey); //设置秘钥
let uncrypted = '';
// uncrypted = decryptor.decrypt(data);
uncrypted = decryptor.decryptUnicodeLong(data);
return uncrypted;
} else {
return false
}
},
encode: function (data, key, option) {
option = option || {};
if (typeof (JSEncrypt) === 'function') {
let chunkSize = option.chunkSize || 117; // 默认分段长度为117
let publicKey = this.getPublicKey(key); // 获取公钥
const encryptor = new JSEncrypt();
encryptor.setPublicKey(publicKey); // 设置公钥
let encrypted = ''; // 加密结果
// const textLen = data.length; // 待加密文本长度
// let offset = 0; // 分段偏移量
// // 分段加密
// while (offset < textLen) {
// let chunk = data.slice(offset, chunkSize); // 提取分段数据
// let enc = encryptor.encrypt(chunk); // 加密分段数据
// encrypted += enc; // 连接加密结果
// offset += chunkSize; // 更新偏移量
// }
encrypted = encryptor.encryptUnicodeLong(data);
return encrypted
} else {
return false
}
},
fixKey(key, prefix, endfix) {
if (!key.includes(prefix)) {
key = prefix + key;
}
if (!key.includes(endfix)) {
key += endfix
}
return key
},
getPrivateKey(key) {
let prefix = '-----BEGIN RSA PRIVATE KEY-----';
let endfix = '-----END RSA PRIVATE KEY-----';
return this.fixKey(key, prefix, endfix);
},
getPublicKey(key) {
let prefix = '-----BEGIN PUBLIC KEY-----';
let endfix = '-----END PUBLIC KEY-----';
return this.fixKey(key, prefix, endfix);
}
};
/**
* 获取壳子返回的代理地址
* @returns {string|*}
*/
function getProxyUrl(){
if(typeof(getProxy)==='function'){//判断壳子里有getProxy函数就执行取返回结果。否则取默认的本地
return getProxy(true)
}else{
return 'http://127.0.0.1:9978/proxy?do=js'
}
}
/**
* 根据正则处理原始m3u8里的广告ts片段,自动修复相对链接
* @param m3u8_text m3u8原始文本,里面是最末级的只含ts片段的。不支持嵌套m3u8链接
* @param m3u8_url m3u8原始地址
* @param ad_remove 正则表达式如: reg:/video/adjump(.*?)ts
* @returns {string|DocumentFragment|*|string}
*/
function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) {
if ((!m3u8_text && !m3u8_url) || (!m3u8_text && m3u8_url && !m3u8_url.startsWith('http'))) {
return ''
}
if (!m3u8_text) {
log('m3u8_url:' + m3u8_url);
m3u8_text = request(m3u8_url);
}
log('len(m3u8_text):' + m3u8_text.length);
if (!ad_remove) {
return m3u8_text
}
if (ad_remove.startsWith('reg:')) {
ad_remove = ad_remove.slice(4)
} else if (ad_remove.startsWith('js:')) {
ad_remove = ad_remove.slice(3)
}
let m3u8_start = m3u8_text.slice(0, m3u8_text.indexOf('#EXTINF')).trim();
let m3u8_body = m3u8_text.slice(m3u8_text.indexOf('#EXTINF'), m3u8_text.indexOf('#EXT-X-ENDLIST')).trim();
let m3u8_end = m3u8_text.slice(m3u8_text.indexOf('#EXT-X-ENDLIST')).trim();
let murls = [];
let m3_body_list = m3u8_body.split('\n');
let m3_len = m3_body_list.length;
let i = 0;
while (i < m3_len) {
let mi = m3_body_list[i];
let mi_1 = m3_body_list[i + 1];
if (mi.startsWith('#EXTINF')) {
murls.push([mi, mi_1].join('&'));
i += 2
} else if (mi.startsWith('#EXT-X-DISCONTINUITY')) {
let mi_2 = m3_body_list[i + 2];
murls.push([mi, mi_1, mi_2].join('&'));
i += 3
} else {
break;
}
}
let new_m3u8_body = [];
for (let murl of murls) {
if (ad_remove && new RegExp(ad_remove).test(murl)) {
} else {
let murl_list = murl.split('&');
if (!murl_list[murl_list.length - 1].startsWith('http') && m3u8_url.startsWith('http')) {
murl_list[murl_list.length - 1] = urljoin(m3u8_url, murl_list[murl_list.length - 1]);
}
murl_list.forEach((it) => {
new_m3u8_body.push(it);
});
}
}
new_m3u8_body = new_m3u8_body.join('\n').trim();
m3u8_text = [m3u8_start, new_m3u8_body, m3u8_end].join('\n').trim();
return m3u8_text
}
/**
* 智能对比去除广告。支持嵌套m3u8。只需要传入播放地址
* @param m3u8_url m3u8播放地址
* @returns {string}
*/
function fixAdM3u8Ai(m3u8_url) {
let ts = new Date().getTime();
function b(s1, s2) {
let i = 0;
while (i < s1.length) {
if (s1[i] !== s2[i]) {
break
}
i++
}
return i;
}
function reverseString(str) {
return str.split('').reverse().join('');
}
//log('播放的地址:' + m3u8_url);
let m3u8 = request(m3u8_url);
//log('m3u8处理前:' + m3u8);
m3u8 = m3u8.trim().split('\n').map(it => it.startsWith('#') ? it : urljoin(m3u8_url, it)).join('\n');
//log('m3u8处理后:============:' + m3u8);
// 获取嵌套m3u8地址
let last_url = m3u8.split('\n').slice(-1)[0];
if (last_url.includes('.m3u8') && last_url !== m3u8_url) {
m3u8_url = last_url;
//log('嵌套的m3u8_url:' + m3u8_url);
m3u8 = request(m3u8_url);
}
//log('----处理有广告的地址----');
let s = m3u8.trim().split('\n').filter(it => it.trim()).join('\n');
let ss = s.split('\n')
//找出第一条播放地址
let firststr = ss.find(x => !x.startsWith('#'));
let maxl = 0;//最大相同字符
let firststrlen = firststr.length;
//log('字符串长度:' + firststrlen);
let ml = Math.round(ss.length / 2).toString().length;//取数据的长度的位数
//log('数据条数的长度:' + ml);
//找出最后一条播放地址
let laststr = ss.toReversed().find((x) => {
if (!x.startsWith('#')) {
let k = b(reverseString(firststr), reverseString(x));
maxl = b(firststr, x);
if (firststrlen - maxl <= ml + k) {
return true
}
}
return false
});
log('最后一条切片:' + laststr);
//log('最小相同字符长度:' + maxl);
let ad_urls = [];
for (let i = 0; i < ss.length; i++) {
let s = ss[i];
if (!s.startsWith('#')) {
if (b(firststr, s) < maxl) {
ad_urls.push(s); // 广告地址加入列表
ss.splice(i - 1, 2);
i = i - 2;
} else {
ss[i] = urljoin(m3u8_url, s);
}
} else {
ss[i] = s.replace(/URI=\"(.*)\"/, 'URI=\"' + urljoin(m3u8_url, '$1') + '\"');
}
}
log('处理的m3u8地址:' + m3u8_url);
log('----广告地址----');
log(ad_urls);
m3u8 = ss.join('\n');
//log('处理完成');
log('处理耗时:' + (new Date().getTime() - ts).toString());
return m3u8
}
/**
* 强制正序算法
* @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.slice(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
}
if(obj.redirect===false){
obj.redirect = 0;
}
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) {
if(homeObj.class_parse.startsWith('js:')) {
var input = homeObj.MY_URL;
try {
eval(homeObj.class_parse.replace('js:', ''));
if (Array.isArray(input)) {
classes = input;
}
}catch(e){
log('通过js动态获取分类发生了错误:'+e.message);
}
}else {
let p = homeObj.class_parse.split(';');
let p0 = p[0];
let _ps = parseTags.getParse(p0);
let is_json = p0.startsWith('json:');
_pdfa = _ps.pdfa;
_pdfh = _ps.pdfh;
_pd = _ps.pd;
MY_URL = rule.url;
if(is_json){
try {
let cms_cate_url = homeObj.MY_URL.replace('ac=detail','ac=list');
let html = getHtml(cms_cate_url);
if (html) {
if(cms_cate_url === homeObj.MY_URL){
homeHtmlCache = html;
}
let list = _pdfa(html, p0.replace('json:',''));
if (list && list.length > 0) {
classes = list;
}
}
} catch (e) {
console.log(e.message);
}
} else if(p.length >= 3 && !is_json) { // 可以不写正则
try {
let html = getHtml(homeObj.MY_URL);
if (html) {
homeHtmlCache = html;
let list = _pdfa(html, p0);
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.图片替换 && rule.图片替换.includes('=>')){
let replace_from = rule.图片替换.split('=>')[0];
let replace_to = rule.图片替换.split('=>')[1];
d.forEach(it=>{
if(it.vod_pic&&it.vod_pic.startsWith('http')){
it.vod_pic = it.vod_pic.replace(replace_from,replace_to);
}
});
}
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.图片替换 && rule.图片替换.includes('=>')){
let replace_from = rule.图片替换.split('=>')[0];
let replace_to = rule.图片替换.split('=>')[1];
d.forEach(it=>{
if(it.vod_pic&&it.vod_pic.startsWith('http')){
it.vod_pic = it.vod_pic.replace(replace_from,replace_to);
}
});
}
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.includes('#')){
url = url.split('[')[1].split(']')[0];
}else if(searchObj.pg > 1 && url.includes('[')&&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.图片替换 && rule.图片替换.includes('=>')){
let replace_from = rule.图片替换.split('=>')[0];
let replace_to = rule.图片替换.split('=>')[1];
d.forEach(it=>{
if(it.vod_pic&&it.vod_pic.startsWith('http')){
it.vod_pic = it.vod_pic.replace(replace_from,replace_to);
}
});
}
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();
if(!v_title){
v_title = '线路空'
}
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<playFrom.length;i++){
let tab_name = playFrom[i];
let tab_ext = p.tabs.split(';').length > 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.图片替换 && rule.图片替换.includes('=>')){
let replace_from = rule.图片替换.split('=>')[0];
let replace_to = rule.图片替换.split('=>')[1];
vod.vod_pic = vod.vod_pic.replace(replace_from,replace_to);
}
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;
var MY_FLAG = playObj.flag;
if(!/http/.test(MY_URL)){
try {
MY_URL = base64Decode(MY_URL);
}catch (e) {}
}
MY_URL = decodeURIComponent(MY_URL);
var input = MY_URL;//注入给免嗅js
var flag = MY_FLAG;//注入播放线路名称给免嗅js
let common_play = {
parse:1,
url:input,
flag:flag,
// 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.homeUrl = cheerio.jinja2(rule.homeUrl,{rule:rule});
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(']')&&!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.图片替换 = 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,
}
+73
View File
File diff suppressed because one or more lines are too long
+773
View File
@@ -0,0 +1,773 @@
{
"author": "takagen99",
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"homeUrl": "https://www.duboku.tv/",
"dcVipFlag": "true",
"dcPlayUrl": "true",
"cateNode": "//ul[contains(@class,'nav-menu')]/li/a[contains(@href, 'vodtype')]",
"cateName": "/text()",
"cateId": "/@href",
"cateIdR": "/vodtype/(\\w+).html",
"cateManual": {
"陆剧": "13",
"日韩剧": "15",
"短剧": "21",
"英美剧": "16",
"台泰剧": "14",
"港剧": "20",
"综艺": "3",
"动漫": "4"
},
"homeVodNode": "//ul[contains(@class,'myui-vodlist')]/li/div/a",
"homeVodName": "/@title",
"homeVodId": "/@href",
"homeVodIdR": "/voddetail/(\\w+).html",
"homeVodImg": "/@data-original",
"homeVodImgR": "\\S+(http\\S+)",
"homeVodMark": "//span[contains(@class,'pic-text')]/text()",
"cateUrl": "https://www.duboku.tv/vodshow/{cateId}-{area}-{by}------{catePg}---{year}.html",
"cateVodNode": "//ul[contains(@class,'myui-vodlist')]/li/div/a",
"cateVodName": "/@title",
"cateVodId": "/@href",
"cateVodIdR": "/voddetail/(\\w+).html",
"cateVodImg": "/@data-original",
"cateVodImgR": "\\S+(http\\S+)",
"cateVodMark": "//span[contains(@class,'pic-text')]/text()",
"dtUrl": "https://w.duboku.io/voddetail/{vid}.html",
"dtNode": "//body",
"dtName": "//div[contains(@class,'myui-content__thumb')]/a/@title",
"dtNameR": "",
"dtImg": "//div[contains(@class,'myui-content__thumb')]/a/img/@data-original",
"dtImgR": "",
"dtCate": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '分类')]/following-sibling::a/text()",
"dtYear": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '年份')]/following-sibling::a/text()",
"dtArea": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '地区')]/following-sibling::a/text()",
"dtMark": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '更新')]/following-sibling::a/text()",
"dtDirector": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '导演')]/following-sibling::a/text()",
"dtActor": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '主演')]/following-sibling::a/text()",
"dtDesc": "//div[contains(@class,'myui-content__detail')]/p/span[contains(text(), '简介')]/following-sibling::a/text()",
"dtFromNode": "//ul[contains(@class,'nav-tabs')]/li/a",
"dtFromName": "/text()",
"dtFromNameR": "",
"dtUrlNode": "//ul[contains(@class,'myui-content__list')]",
"dtUrlSubNode": "/li/a",
"dtUrlId": "/@href",
"dtUrlIdR": "/vodplay/(\\S+).html",
"dtUrlName": "/text()",
"dtUrlNameR": "",
"playUrl": "https://w.duboku.io/vodplay/{playUrl}.html",
"playUa": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"playReferer": "https://w.duboku.io/",
"searchUrl": "https://w.duboku.io/index.php/ajax/suggest?mid=1&wd={wd}&limit=10",
"scVodNode": "json:list",
"scVodName": "name",
"scVodId": "id",
"scVodIdR": "",
"scVodImg": "pic",
"scVodMark": "",
"filter": {
"13": [
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "排序",
"v": ""
},
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"14": [
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "排序",
"v": ""
},
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"16": [
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "排序",
"v": ""
},
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"15": [
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "排序",
"v": ""
},
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"2": [
{
"key": "cateId",
"name": "类型",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "陆剧",
"v": "13"
},
{
"n": "日韩剧",
"v": "15"
},
{
"n": "英美剧",
"v": "16"
},
{
"n": "台泰剧",
"v": "14"
},
{
"n": "港剧",
"v": "20"
}
]
},
{
"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": "荷兰"
}
]
},
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "排序",
"v": ""
},
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"3": [
{
"key": "area",
"name": "地区",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "内地",
"v": "内地"
},
{
"n": "香港",
"v": "香港"
},
{
"n": "台湾",
"v": "台湾"
},
{
"n": "韩国",
"v": "韩国"
},
{
"n": "美国",
"v": "美国"
}
]
},
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "排序",
"v": ""
},
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"4": [
{
"key": "area",
"name": "地区",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "国产",
"v": "国产"
},
{
"n": "日本",
"v": "日本"
},
{
"n": "美国",
"v": "美国"
},
{
"n": "法国",
"v": "法国"
},
{
"n": "其他",
"v": "其他"
}
]
},
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "排序",
"v": ""
},
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"20": [
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "排序",
"v": ""
},
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"21": [
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "排序",
"v": ""
},
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
]
}
}
+5
View File
@@ -0,0 +1,5 @@
[
{"name":"范明明OfficalSite","url":"https://live.fanmingming.com/tv/m3u/global.m3u"},
{"name":"范明明GitHub","url":"https://mirror.ghproxy.com/raw.githubusercontent.com/fanmingming/live/main/tv/m3u/global.m3u"},
{"name":"范明明IPV6","url":"https://live.fanmingming.com/tv/m3u/ipv6.m3u"}
]
+68
View File
File diff suppressed because one or more lines are too long
BIN
View File
Binary file not shown.
+118
View File
@@ -0,0 +1,118 @@
#!/usr/bin/env python3
import sys
import re
import json
import requests
import time
import traceback
import gzip
p=re.compile(r'.*/s/(.*)')
skipp = re.compile(r'.*(cover|screen|频道).*',re.IGNORECASE)
reqcount=1
sharedict=set()
def getlist(w,shareid, fileid,morepage):
global p
global skipp
global reqcount
global sharedict
reqcount += 1
if reqcount % 5 == 0:
print(f"reqcount:{reqcount} shareid:{shareid} fileid:{fileid}",file=sys.stderr)
#time.sleep(1)
url = f'http://192.168.101.188:9978/proxy?do=pikpak&type=list&share_id={shareid}&file_id={fileid}&pass_code=&morepage={morepage}'
print(f"url: {url}",file=sys.stderr)
resp = requests.get(url)
content = resp.content.decode('utf-8')
lines = content.split("\n")
if "folder" not in content and len(lines)<=4:
return
isfirst=True
for line in lines:
if isfirst:
isfirst=False
print(f"first line:{line}",file=sys.stderr)
if skipp.match(line):
continue
linearr = line.split('\t')
if len(linearr)>2:
m = p.match(linearr[0])
if m:
arr = m.group(1).split("/")
else:
arr = linearr[0].split("/")
shareid=arr[0]
fileid=arr[1] if len(arr)>1 else ""
if shareid+"/"+fileid in sharedict:
print(f"skip shareid{shareid} fileid:{fileid}", file=sys.stderr)
continue
w.write(line+"\n")
w.flush()
if linearr[2] == "folder":
getlist(w,shareid,fileid,False)
if len(lines)>0:
getlist(w,shareid,fileid,True)
def main():
try:
f = gzip.open(sys.argv[1]+".raw.gz",mode="rt",encoding="utf-8")
if f is not None:
print(f"found gz raw file:{sys.argv[1]}.raw.gz, extract it",file=sys.stderr)
with(open(sys.argv[1]+".raw","w",encoding="utf-8")) as w:
while(True):
lines = f.readlines()
if len(lines)<=0:
break
for line in lines:
line=line.strip()
w.write(line+"\n")
f.seek(0)
except:
traceback.print_exc()
try:
f = open(sys.argv[1]+".raw","r",encoding="utf-8")
except:
f = None
if f is not None:
print("found old raw file")
while True:
lines = f.readlines()
if len(lines)<=0:
break
for line in lines:
linearr = line.split("\t")
m = p.match(linearr[0])
if m:
arr = m.group(1).split("/")
else:
arr = linearr[0].split("/")
if len(arr)>1:
shareid = arr[0]
fileid = arr[1]
sharedict.add(shareid+"/"+fileid)
f.close()
print(f"old raw file record:{len(sharedict)}")
else:
print("no old raw file")
with(open(sys.argv[1]+".raw","a+",encoding="utf-8")) as w:
with(open(sys.argv[1],"r",encoding="utf-8")) as f:
j = json.load(f)
for c in j:
shareid=c.get("type_id")
fileid=""
m = p.match(shareid)
if m:
arr = m.group(1).split("/")
else:
arr = shareid.split("/")
shareid=arr[0]
fileid=arr[1] if len(arr)>1 else ""
if shareid+"/"+fileid in sharedict:
continue
getlist(w,shareid,fileid,False)
main()
+482
View File
@@ -0,0 +1,482 @@
{
"0": [
{
"key": "area",
"name": "地區",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "国产",
"v": "1"
},
{
"n": "中国香港",
"v": "3"
},
{
"n": "中国台湾",
"v": "6"
},
{
"n": "美国",
"v": "5"
},
{
"n": "韩国",
"v": "18"
},
{
"n": "日本",
"v": "2"
}
]
},
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "2023",
"v": "153"
},
{
"n": "2022",
"v": "101"
},
{
"n": "2021",
"v": "118"
},
{
"n": "2020",
"v": "16"
},
{
"n": "2019",
"v": "7"
},
{
"n": "2018",
"v": "2"
},
{
"n": "2017",
"v": "3"
},
{
"n": "2016",
"v": "22"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "热门",
"v": "hot"
},
{
"n": "更新",
"v": "updata"
},
{
"n": "评分",
"v": "rating"
}
]
}
],
"1": [
{
"key": "area",
"name": "地區",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "国产",
"v": "1"
},
{
"n": "中国香港",
"v": "3"
},
{
"n": "中国台湾",
"v": "6"
},
{
"n": "美国",
"v": "5"
},
{
"n": "韩国",
"v": "18"
},
{
"n": "日本",
"v": "2"
}
]
},
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "2023",
"v": "153"
},
{
"n": "2022",
"v": "101"
},
{
"n": "2021",
"v": "118"
},
{
"n": "2020",
"v": "16"
},
{
"n": "2019",
"v": "7"
},
{
"n": "2018",
"v": "2"
},
{
"n": "2017",
"v": "3"
},
{
"n": "2016",
"v": "22"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "热门",
"v": "hot"
},
{
"n": "更新",
"v": "updata"
},
{
"n": "评分",
"v": "rating"
}
]
}
],
"2": [
{
"key": "area",
"name": "地區",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "国产",
"v": "1"
},
{
"n": "中国香港",
"v": "3"
},
{
"n": "中国台湾",
"v": "6"
},
{
"n": "美国",
"v": "5"
},
{
"n": "韩国",
"v": "18"
},
{
"n": "日本",
"v": "2"
}
]
},
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "2023",
"v": "153"
},
{
"n": "2022",
"v": "101"
},
{
"n": "2021",
"v": "118"
},
{
"n": "2020",
"v": "16"
},
{
"n": "2019",
"v": "7"
},
{
"n": "2018",
"v": "2"
},
{
"n": "2017",
"v": "3"
},
{
"n": "2016",
"v": "22"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "热门",
"v": "hot"
},
{
"n": "更新",
"v": "updata"
},
{
"n": "评分",
"v": "rating"
}
]
}
],
"3": [
{
"key": "area",
"name": "地區",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "国产",
"v": "1"
},
{
"n": "中国香港",
"v": "3"
},
{
"n": "中国台湾",
"v": "6"
},
{
"n": "美国",
"v": "5"
},
{
"n": "韩国",
"v": "18"
},
{
"n": "日本",
"v": "2"
}
]
},
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "2023",
"v": "153"
},
{
"n": "2022",
"v": "101"
},
{
"n": "2021",
"v": "118"
},
{
"n": "2020",
"v": "16"
},
{
"n": "2019",
"v": "7"
},
{
"n": "2018",
"v": "2"
},
{
"n": "2017",
"v": "3"
},
{
"n": "2016",
"v": "22"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "热门",
"v": "hot"
},
{
"n": "更新",
"v": "updata"
},
{
"n": "评分",
"v": "rating"
}
]
}
],
"4": [
{
"key": "area",
"name": "地區",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "国产",
"v": "1"
},
{
"n": "中国香港",
"v": "3"
},
{
"n": "中国台湾",
"v": "6"
},
{
"n": "美国",
"v": "5"
},
{
"n": "韩国",
"v": "18"
},
{
"n": "日本",
"v": "2"
}
]
},
{
"key": "year",
"name": "年份",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "2023",
"v": "153"
},
{
"n": "2022",
"v": "101"
},
{
"n": "2021",
"v": "118"
},
{
"n": "2020",
"v": "16"
},
{
"n": "2019",
"v": "7"
},
{
"n": "2018",
"v": "2"
},
{
"n": "2017",
"v": "3"
},
{
"n": "2016",
"v": "22"
}
]
},
{
"key": "by",
"name": "排序",
"value": [
{
"n": "热门",
"v": "hot"
},
{
"n": "更新",
"v": "updata"
},
{
"n": "评分",
"v": "rating"
}
]
}
]
}
+265
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+534
View File
@@ -0,0 +1,534 @@
/**
* live2cms.js
* 配置设置 {"key":"Live2CMS","name":"直播转点播V2","type":3,"api":"{{host}}/libs/live2cms.js","searchable":2,"quickSearch":0,"filterable":0,"ext":"{{host}}/txt/json/live2mv_data.json"}
* live2mv_data.json
* 支持m3u类直播支持线路归并支持筛选切换显示模式
[
{"name": "甜蜜", "url": "http://zdir.kebedd69.repl.co/public/live.txt"},
{"name": "俊于", "url": "http://home.jundie.top:81/Cat/tv/live.txt"},
{"name": "菜妮丝", "url": "http://xn--ihqu10cn4c.xn--z7x900a.love:63/TV/tvzb.txt"},
{"name": "布里m3u", "url": "http://jiexi.bulisite.top/m3u.php"},
{"name": "吾爱", "url": "http://52bsj.vip:81/api/v3/file/get/763/live.txt?sign=87BTGT1_6AOry7FPwy_uuxFTv2Wcb9aDMj46rDdRTD8%3D%3A0"},
{"name": "饭太硬", "url": "http://ftyyy.tk/live.txt"}
]
* 提示 ext文件格式为json列表,name,url参数
* 取消加密,减少性能问题
*/
String.prototype.rstrip = function (chars) {
let regex = new RegExp(chars + "$");
return this.replace(regex, "");
};
const request_timeout = 5000;
const RKEY = 'live2cms'; // 源的唯一标识
const VERSION = 'live2cms 20230619';
const UA = 'Mozilla/5.0'; //默认请求ua
const __ext = {data_dict:{}};
const tips = `\n道长直播转点播js-当前版本${VERSION}`;
const def_pic = 'https://avatars.githubusercontent.com/u/58679624?s=400&u=246b55fcda2b4850b444aebd6b8f8d6a12883f8c&v=4';
/**
* 存在数据库配置表里, 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);
}
var showMode = getItem('showMode','groups'); // groups按组分类显示 all全部一条线路展示
var groupDict = JSON.parse(getItem('groupDict','{}')); // 搜索分组字典
/**
* 打印日志
* @param any 任意变量
*/
function print(any){
any = any||'';
if(typeof(any)=='object'&&Object.keys(any).length>0){
try {
any = JSON.stringify(any);
console.log(any);
}catch (e) {
// console.log('print:'+e.message);
console.log(typeof(any)+':'+any.length);
}
}else if(typeof(any)=='object'&&Object.keys(any).length<1){
console.log('null object');
}else{
console.log(any);
}
}
/*** 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
}
/**
* m3u直播格式转一般直播格式
* @param m3u
* @returns {string}
*/
function convertM3uToNormal(m3u) {
try {
const lines = m3u.split('\n');
let result = '';
let TV='';
// let flag='#genre#';
let flag='#m3u#';
let currentGroupTitle = '';
lines.forEach((line) => {
if (line.startsWith('#EXTINF:')) {
const groupTitle = line.split('"')[1].trim();
TV= line.split('"')[2].substring(1);
if (currentGroupTitle !== groupTitle) {
currentGroupTitle = groupTitle;
result += `\n${currentGroupTitle},${flag}\n`;
}
} else if (line.startsWith('http')) {
const splitLine = line.split(',');
result += `${TV}\,${splitLine[0]}\n`;
}
});
return result.trim();
}catch (e) {
print(`m3u直播转普通直播发生错误:${e.message}`);
return m3u
}
}
/**
* 线路归类
* @param arr
* @returns {*[][]}
*/
function merge(arr) {
var parse = arguments[1] ? arguments[1] : '';
var p = [];
if (parse !== '' && typeof(parse)=="function") {
p = arr.map(parse);
}
const createEmptyArrays = (length) => Array.from({
length
}, () => []);
let lists = createEmptyArrays(arr.length);
let sl = createEmptyArrays(arr.length);
(p.length ? p : arr).forEach((k, index) => {
var i = 0;
while (sl[i].includes(k)) {
i = i + 1
}
sl[i].push(k);
lists[i].push(arr[index]);
})
lists=lists.filter(x=>x.some(k=>k.length));
return lists
}
/**
* 线路归类/小棉袄算法
* @param arr 数组
* @param parse 解析式
* @returns {[[*]]}
*/
function splitArray(arr,parse) {
parse = parse&&typeof(parse)=='function'?parse:'';
let result = [[arr[0]]];
for (let i = 1; i < arr.length; i++) {
let index = -1;
for (let j = 0; j < result.length; j++) {
if (parse&&result[j].map(parse).includes(parse(arr[i]))) {
index = j;
}else if((!parse) && result[j].includes(arr[i])){
index = j;
}
}
if (index >= result.length - 1) {
result.push([]);
result[result.length - 1].push(arr[i]);
} else {
result[index + 1].push(arr[i]);
}
}
return result;
}
/**
* 搜索结果生成分组字典
* @param arr
* @param parse x=>x.split(',')[0]
* @returns {{}}
*/
function gen_group_dict(arr,parse){
let dict = {};
arr.forEach((it)=>{
let k = it.split(',')[0];
if(parse && typeof(parse)==='function'){
k = parse(k);
}
if(!dict[k]){
dict[k] = [it]
}else{
dict[k].push(it);
}
});
return dict
}
const http = function (url, options = {}) {
if(options.method ==='POST' && options.data){
options.body = JSON.stringify(options.data);
options.headers = Object.assign({'content-type':'application/json'}, options.headers);
}
options.timeout = request_timeout;
if(!options.headers){
options.headers = {};
}
let keys = Object.keys(options.headers).map(it=>it.toLowerCase());
if(!keys.includes('referer')){
options.headers['Referer'] = getHome(url);
}
if(!keys.includes('user-agent')){
options.headers['User-Agent'] = UA;
}
console.log(JSON.stringify(options.headers));
try {
const res = req(url, options);
// if(options.headers['Authorization']){
// console.log(res.content);
// }
res.json = () => res&&res.content ? JSON.parse(res.content) : null;
res.text = () => res&&res.content ? res.content:'';
return res
}catch (e) {
return {
json() {
return null
}, text() {
return ''
}
}
}
};
["get", "post"].forEach(method => {
http[method] = function (url, options = {}) {
return http(url, Object.assign(options, {method: method.toUpperCase()}));
}
});
function init(ext) {
console.log("当前版本号:"+VERSION);
let data;
if (typeof ext == 'object'){
data = ext;
print('live ext:object');
} else if (typeof ext == 'string') {
if (ext.startsWith('http')) {
let ext_paramas = ext.split(';');
let data_url = ext_paramas[0];
print(data_url);
data = http.get(data_url).json();
}
}
print(data);
__ext.data = data;
print('init执行完毕');
}
function home(filter) {
let classes = __ext.data.map(it => ({
type_id: it.url,
type_name: it.name,
}));
print("----home----");
let filter_dict = {};
let filters = [
{'key': 'show', 'name': '播放展示', 'value': [{'n': '多线路分组', 'v': 'groups'},{'n': '单线路', 'v': 'all'}]}
];
classes.forEach(it=>{
filter_dict[it.type_id] = filters;
});
print(classes);
return JSON.stringify({ 'class': classes,'filters': filter_dict});
}
function homeVod(params) {
let _get_url = __ext.data[0].url;
let html;
if(__ext.data_dict[_get_url]){
html = __ext.data_dict[_get_url];
}else{
html = http.get(_get_url).text();
if(/#EXTM3U/.test(html)){
html = convertM3uToNormal(html);
}
__ext.data_dict[_get_url] = html;
}
// let arr = html.match(/.*?,#[\s\S].*?#/g);
let arr = html.match(/.*?[,]#[\s\S].*?#/g); // 可能存在中文逗号
let _list = [];
try {
arr.forEach(it=>{
let vname = it.split(/[,]/)[0];
let vtab = it.match(/#(.*?)#/)[0];
_list.push({
vod_name:vname,
vod_id:_get_url+'$'+vname,
vod_pic:def_pic,
vod_remarks:vtab,
});
});
}catch (e) {
print('Live2cms获取首页推荐发送错误:'+e.message);
}
return JSON.stringify({ 'list': _list });
}
function category(tid, pg, filter, extend) {
let fl = filter?extend:{};
if(fl.show){
showMode = fl.show;
setItem('showMode',showMode);
}
if(parseInt(pg)>1){
return JSON.stringify({
'list': [],
});
}
let _get_url = tid;
let html;
if(__ext.data_dict[_get_url]){
html = __ext.data_dict[_get_url];
}else{
html = http.get(_get_url).text();
if(/#EXTM3U/.test(html)){
html = convertM3uToNormal(html);
}
__ext.data_dict[_get_url] = html;
}
// let arr = html.match(/.*?[,]#[\s\S].*?#/g);
let arr = html.match(/.*?[,]#[\s\S].*?#/g); // 可能存在中文逗号
let _list = [];
try {
arr.forEach(it=>{
let vname = it.split(/[,]/)[0];
let vtab = it.match(/#(.*?)#/)[0];
_list.push({
// vod_name:it.split(',')[0],
vod_name:vname,
vod_id:_get_url+'$'+vname,
vod_pic:def_pic,
vod_remarks:vtab,
});
});
}catch (e) {
print('Live2cms获取一级分类页发生错误:'+e.message);
}
return JSON.stringify({
'page': 1,
'pagecount': 1,
'limit': _list.length,
'total': _list.length,
'list': _list,
});
}
function detail(tid) { // ⛵ 港•澳•台
let _get_url = tid.split('$')[0];
let _tab = tid.split('$')[1];
if(tid.includes('#search#')){
let vod_name = _tab.replace('#search#','');
let vod_play_from = '来自搜索';
vod_play_from+=`:${_get_url}`;
// let vod_play_url = vod_name+'$'+_get_url;
// print(vod_play_url);
let vod_play_url = groupDict[_get_url].map(x=>x.replace(',','$')).join('#');
return JSON.stringify({
list: [{
vod_id: tid,
vod_name: '搜索:'+vod_name,
type_name: "直播列表",
vod_pic: def_pic,
vod_content: tid,
vod_play_from: vod_play_from,
vod_play_url: vod_play_url,
vod_director: tips,
vod_remarks: `道长直播转点播js-当前版本${VERSION}`,
}]
});
}
let html;
if(__ext.data_dict[_get_url]){
html = __ext.data_dict[_get_url];
}else{
html = http.get(_get_url).text();
if(/#EXTM3U/.test(html)){
html = convertM3uToNormal(html);
}
__ext.data_dict[_get_url] = html;
}
// let a = new RegExp(`.*?${_tab},#[\\s\\S].*?#`);
let a = new RegExp(`.*?${_tab.replace('(','\\(').replace(')','\\)')}[,]#[\\s\\S].*?#`);
let b = html.match(a)[0];
let c = html.split(b)[1];
if(c.match(/.*?[,]#[\s\S].*?#/)){
let d = c.match(/.*?[,]#[\s\S].*?#/)[0];
c = c.split(d)[0];
}
let arr = c.trim().split('\n');
let _list = [];
arr.forEach((it)=>{
if(it.trim()){
let t = it.trim().split(',')[0];
let u = it.trim().split(',')[1];
_list.push(t+'$'+u);
}
});
let vod_name = __ext.data.find(x=>x.url===_get_url).name;
let vod_play_url;
let vod_play_from;
if(showMode==='groups'){
let groups = splitArray(_list,x=>x.split('$')[0]);
let tabs = [];
for(let i=0;i<groups.length;i++){
if(i===0){
tabs.push(vod_name+'1')
}else{
tabs.push(` ${i+1} `)
}
}
vod_play_url = groups.map(it=>it.join('#')).join('$$$');
vod_play_from = tabs.join('$$$');
}else{
vod_play_url = _list.join('#');
vod_play_from = vod_name;
}
let vod = {
vod_id: tid,
vod_name: vod_name+'|'+_tab,
type_name: "直播列表",
vod_pic: def_pic,
vod_content: tid,
vod_play_from: vod_play_from,
vod_play_url: vod_play_url,
vod_director: tips,
vod_remarks: `道长直播转点播js-当前版本${VERSION}`,
};
return JSON.stringify({
list: [vod]
});
}
function play(flag, id, flags) {
let vod = {
'parse': /m3u8/.test(id)?0:1,
'playUrl': '',
'url': id
};
print(vod);
return JSON.stringify(vod);
}
function search(wd, quick) {
let _get_url = __ext.data[0].url;
let html;
if(__ext.data_dict[_get_url]){
html = __ext.data_dict[_get_url];
}else{
html = http.get(_get_url).text();
if(/#EXTM3U/.test(html)){
html = convertM3uToNormal(html);
}
__ext.data_dict[_get_url] = html;
}
let str='';
Object.keys(__ext.data_dict).forEach(()=>{
str+=__ext.data_dict[_get_url];
});
let links = str.split('\n').filter(it=>it.trim() && it.includes(',') && it.split(',')[1].trim().startsWith('http'));
links = links.map(it=>it.trim());
let plays = Array.from(new Set(links));
print('搜索关键词:'+wd);
print('过滤前:'+plays.length);
plays = plays.filter(it=>it.includes(wd));
print('过滤后:'+plays.length);
print(plays);
let new_group = gen_group_dict(plays);
groupDict = Object.assign(groupDict,new_group);
// 搜索分组结果存至本地方便二级调用
setItem('groupDict',JSON.stringify(groupDict));
let _list = [];
// plays.forEach((it)=>{
// _list.push({
// 'vod_name':it.split(',')[0],
// 'vod_id':it.split(',')[1].trim()+'$'+it.split(',')[0].trim()+'#search#',
// 'vod_pic':def_pic,
// })
// });
Object.keys(groupDict).forEach((it)=>{
_list.push({
'vod_name':it,
'vod_id':it+'$'+wd+'#search#',
'vod_pic':def_pic,
});
});
return JSON.stringify({
'list': _list
});
}
// 导出函数对象
export default {
init: init,
home: home,
homeVod: homeVod,
category: category,
detail: detail,
play: play,
search: search
}
+1
View File
@@ -0,0 +1 @@
var il='jsjiami.com.v6',il_=['il'],lIIIl1ll=[il,'\x6f\x6b\x68\x74\x74\x70\x2f\x33\x2e\x31\x35','\x69\x6e\x64\x65\x78\x4f\x66','\x24\x24\x24','\x73\x70\x6c\x69\x74','\x74\x72\x69\x6d','\x26\x26\x26','\x3a\x2f\x2f','\x6c\x6f\x67','\x70\x69\x63\x55\x72\x6c\x3a\x20','\x72\x65\x70\x6c\x61\x63\x65','\x70\x75\x73\x68','\x2f\x66\x69\x6c\x65\x2f\x6c\x69\x76\x65\x73\x6f\x75\x72\x63\x65\x6c\x69\x73\x74','\x2f\x6c\x69\x76\x65\x73\x6f\x75\x72\x63\x65\x6c\x69\x73\x74','\x47\x45\x54','\x70\x61\x72\x73\x65','\x63\x6f\x6e\x74\x65\x6e\x74','\x73\x75\x62\x73\x74\x72\x69\x6e\x67','\x6c\x61\x73\x74\x49\x6e\x64\x65\x78\x4f\x66','\x6e\x61\x6d\x65','\x75\x72\x6c','\x3d\x3d\x3d\x3d\x20\x3e\x3e\x3e\x20','\x73\x74\x72\x69\x6e\x67\x69\x66\x79','\x65\x78\x65\x63','\x74\x65\x73\x74','\x6d\x61\x74\x63\x68','\x63\x68\x61\x6e\x6e\x65\x6c','\x2c\x23\x67\x65\x6e\x72\x65\x23\x0a','\x75\x72\x6c\x73','\x64\x61\x74\x61','\x64\x61\x74\x61\x6c\x69\x73\x74','\x70\x72\x6f\x76','\x6c\x69\x73\x74','\x2d\x2d\x2d','\x6c\x69\x6e\x65','\x77\x65\x62\x50\x69\x63\x55\x72\x6c\x3a\x20','\x23\x45\x58\x54\x4d\x33\x55','\x22\x63\x68\x61\x6e\x6e\x65\x6c\x22','\x22\x75\x72\x6c\x73\x22','\x22\x64\x61\x74\x61\x6c\x69\x73\x74\x22','\x6c\x65\x6e\x67\x74\x68','\x23\x67\x65\x6e\x72\x65\x23','\x7b\x6e\x61\x6d\x65\x7d','\x7b\x63\x61\x74\x65\x7d','\u76f4\u64ad\u5217\u8868','\x6e\x75\x6c\x6c','\x74\x79\x70\x65\x5f\x69\x64','\x76\x6f\x64\x5f\x70\x6c\x61\x79\x5f\x75\x72\x6c','\x68\x61\x73\x4f\x77\x6e\x50\x72\x6f\x70\x65\x72\x74\x79','\x6a\x6f\x69\x6e','\x76\x6f\x64\x5f\x70\x6c\x61\x79\x5f\x66\x72\x6f\x6d','\x6a\x43\x50\x73\x4e\x6a\x77\x69\x4a\x61\x51\x6d\x69\x2e\x63\x6f\x4e\x4f\x6d\x47\x72\x2e\x76\x56\x36\x41\x46\x67\x79\x74\x74\x3d\x3d'];function Ii1l1III(_0x3b13df,_0x346a54){_0x3b13df=~~'0x'['concat'](_0x3b13df['slice'](0x0));var _0x4db44b=lIIIl1ll[_0x3b13df];return _0x4db44b;};(function(_0x209161,_0x5eaa4a){var _0x42ecdf=0x0;for(_0x5eaa4a=_0x209161['shift'](_0x42ecdf>>0x2);_0x5eaa4a&&_0x5eaa4a!==(_0x209161['pop'](_0x42ecdf>>0x3)+'')['replace'](/[CPNwJQNOGrVAFgytt=]/g,'');_0x42ecdf++){_0x42ecdf=_0x42ecdf^0x127efd;}}(lIIIl1ll,Ii1l1III));let headers={'User-Agent':Ii1l1III('0')};let classes=[];let cates={};let picUrl='';let webPaths={};function init(IiIIi1i){let i1Ii11I1='';if(IiIIi1i[Ii1l1III('1')](Ii1l1III('2'))>0x0){i1Ii11I1=IiIIi1i[Ii1l1III('3')](Ii1l1III('2'))[0x0][Ii1l1III('4')]();IiIIi1i=IiIIi1i[Ii1l1III('3')](Ii1l1III('2'))[0x1][Ii1l1III('4')]();}if(IiIIi1i[Ii1l1III('1')](Ii1l1III('5'))>0x0){picUrl=IiIIi1i[Ii1l1III('3')](Ii1l1III('5'))[0x1][Ii1l1III('4')]();if(picUrl[Ii1l1III('1')](Ii1l1III('6'))<0x0){picUrl=i1Ii11I1+picUrl;}IiIIi1i=IiIIi1i[Ii1l1III('3')](Ii1l1III('5'))[0x0][Ii1l1III('4')]();}console[Ii1l1III('7')](Ii1l1III('8')+picUrl);let IIlIlI1I=IiIIi1i[Ii1l1III('3')]('\x23');for(const IlII1I1 of IIlIlI1I){if(IlII1I1[Ii1l1III('1')]('\x24')>0x0){let illIl111=IlII1I1;let Ill1iIi=IlII1I1[Ii1l1III('3')]('\x24')[0x0];if(illIl111[Ii1l1III('1')](Ii1l1III('6'))<0x0){illIl111=illIl111[Ii1l1III('9')]('\x24','\x24'+i1Ii11I1);}classes[Ii1l1III('a')]({'type_id':illIl111,'type_name':Ill1iIi[Ii1l1III('9')]('\x21\x21','')});}else{let II1lIlli=IlII1I1;if(II1lIlli[Ii1l1III('1')](Ii1l1III('6'))<0x0){II1lIlli=i1Ii11I1+II1lIlli;}II1lIlli=II1lIlli[Ii1l1III('9')](Ii1l1III('b'),Ii1l1III('c'));let Illi11ll=req(II1lIlli,{'\x6d\x65\x74\x68\x6f\x64':Ii1l1III('d'),'\x68\x65\x61\x64\x65\x72\x73':headers});try{let l1lIiill=JSON[Ii1l1III('e')](Illi11ll[Ii1l1III('f')]);let lillI11l=II1lIlli[Ii1l1III('10')](0x0,II1lIlli[Ii1l1III('11')]('\x2f')+0x1);for(const i1iilII1 of l1lIiill){let Iillil=i1iilII1[Ii1l1III('12')];let lI1iIl=i1iilII1[Ii1l1III('13')];let illIl111=Iillil+'\x24'+(lI1iIl[Ii1l1III('1')](Ii1l1III('6'))<0x0?lillI11l:'')+lI1iIl;classes[Ii1l1III('a')]({'type_id':illIl111,'type_name':Iillil[Ii1l1III('9')]('\x21\x21','')});webPaths[illIl111]=lillI11l;}}catch(Ii1Ii11){console[Ii1l1III('7')](Ii1l1III('14')+Ii1Ii11);}}}}function home(I1iiIiIl){return JSON[Ii1l1III('15')]({'class':classes,'filters':null});}function parseM3u(iIi1Ii1I,I1IlIIIi){let iI1iiIii={};let iiI11111=/(#EXTINF:.+?),([^,]+?)\s*\n(.+?)\s*\n/g;let ii1iilil=null;while((ii1iilil=iiI11111[Ii1l1III('16')](iIi1Ii1I))!=null){let lllli1iI=ii1iilil[0x1];let il1Ili1I=ii1iilil[0x2];let liIlll1l=ii1iilil[0x3];if(il1Ili1I==null||liIlll1l==null||il1Ili1I==''||liIlll1l==''){continue;}il1Ili1I=il1Ili1I[Ii1l1III('4')]();liIlll1l=liIlll1l[Ii1l1III('4')]();let IiI1lI1l=I1IlIIIi;let ilIl1i1i=/group-title="(.*?)"/;if(ilIl1i1i[Ii1l1III('17')](lllli1iI)){IiI1lI1l=lllli1iI[Ii1l1III('18')](ilIl1i1i)[0x1];}if(!iI1iiIii[IiI1lI1l]){iI1iiIii[IiI1lI1l]=[];}iI1iiIii[IiI1lI1l][Ii1l1III('a')](il1Ili1I+'\x2c'+liIlll1l);}let ll11III1='';for(const li1Ili in iI1iiIii){ll11III1+=li1Ili+'\x0a';let IlIil1ll=iI1iiIii[li1Ili];for(const li1iI11 of IlIil1ll){ll11III1+=li1iI11+'\x0a';}}return ll11III1;}function parseFm(IliiIl1I){let lliiI1i1='';let Iii1ll=JSON[Ii1l1III('e')](IliiIl1I);for(const i1lIlli1 of Iii1ll){let I111Il1l=i1lIlli1[Ii1l1III('12')];let ilI11li=i1lIlli1[Ii1l1III('19')];lliiI1i1+=I111Il1l+Ii1l1III('1a');for(const iiilI1iI of ilI11li){let I11111l1=iiilI1iI[Ii1l1III('12')];let IlI1l1I1=iiilI1iI[Ii1l1III('1b')];for(const l1II1lll of IlI1l1I1){lliiI1i1+=I11111l1+'\x2c'+l1II1lll+'\x0a';}}}return lliiI1i1;}function parseLu(iIliI1lI){let IIlilI1i='';let I11ilI1i=JSON[Ii1l1III('e')](iIliI1lI)[Ii1l1III('1c')];for(const i1Ii1l1 of I11ilI1i[Ii1l1III('1d')]){let I11111l=i1Ii1l1[Ii1l1III('1e')];let IiIiii1l=i1Ii1l1[Ii1l1III('1f')];IIlilI1i+=I11111l+Ii1l1III('1a');for(const l1111lI of IiIiii1l){let lIlI1iI=l1111lI[Ii1l1III('12')];let ll11i1II=l1111lI[Ii1l1III('1b')];for(const Iliilii of ll11i1II){IIlilI1i+=lIlI1iI+Ii1l1III('20')+Iliilii[Ii1l1III('21')]+'\x2c'+Iliilii[Ii1l1III('13')]+'\x0a';}}}return IIlilI1i;}function getCateData(IliI1i){let iI1I1I1I=picUrl;if(IliI1i[Ii1l1III('1')](Ii1l1III('5'))>0x0){iI1I1I1I=IliI1i[Ii1l1III('3')](Ii1l1III('5'))[0x1][Ii1l1III('4')]();if(iI1I1I1I[Ii1l1III('1')](Ii1l1III('6'))<0x0&&webPaths[IliI1i]){iI1I1I1I=webPaths[IliI1i]+iI1I1I1I;}IliI1i=IliI1i[Ii1l1III('3')](Ii1l1III('5'))[0x0][Ii1l1III('4')]();}console[Ii1l1III('7')](Ii1l1III('22')+iI1I1I1I);let ll1iIiiI=IliI1i[Ii1l1III('3')]('\x24')[0x1];let i1I1l1i=IliI1i[Ii1l1III('3')]('\x24')[0x0];if(!cates[IliI1i]){cates[IliI1i]=[];let iIl11Iii=headers;if(ll1iIiiI[Ii1l1III('1')]('\x7c')>0x0){let ii111I1I=decodeURIComponent(ll1iIiiI[Ii1l1III('3')]('\x7c')[0x1]);ll1iIiiI=ll1iIiiI[Ii1l1III('3')]('\x7c')[0x0];for(const II1Ii1l of ii111I1I[Ii1l1III('3')]('\x26')){if(II1Ii1l[Ii1l1III('1')]('\x3d')>0x0){let lI1lliii=II1Ii1l[Ii1l1III('3')]('\x3d')[0x0];let I11Iii1i=II1Ii1l[Ii1l1III('3')]('\x3d')[0x1];iIl11Iii[lI1lliii]=I11Iii1i;}}}let I111lilI=req(ll1iIiiI,{'\x6d\x65\x74\x68\x6f\x64':Ii1l1III('d'),'\x68\x65\x61\x64\x65\x72\x73':iIl11Iii});I111lilI=I111lilI[Ii1l1III('f')][Ii1l1III('4')]();if(I111lilI[Ii1l1III('1')](Ii1l1III('23'))>=0x0){I111lilI=parseM3u(I111lilI,i1I1l1i);}else if(I111lilI[Ii1l1III('1')](Ii1l1III('24'))>0x0&&I111lilI[Ii1l1III('1')](Ii1l1III('25'))>0x0){I111lilI=parseFm(I111lilI);}else if(I111lilI[Ii1l1III('1')](Ii1l1III('26'))>0x0&&I111lilI[Ii1l1III('1')](Ii1l1III('25'))>0x0){I111lilI=parseLu(I111lilI);}let li1IiiII=(i1I1l1i+'\x0a'+I111lilI[Ii1l1III('9')]('\x0d',''))[Ii1l1III('3')]('\x0a');let lli11iI=i1I1l1i;let IiiIIiIi=null;let iiiI1l='';for(let i1ii1IIl=0x0;i1ii1IIl<li1IiiII[Ii1l1III('27')];i1ii1IIl++){let lIliIii=li1IiiII[i1ii1IIl][Ii1l1III('9')](/\s+/g,'');if(lIliIii!=''&&lIliIii[Ii1l1III('1')](Ii1l1III('6'))<0x0&&(lIliIii[Ii1l1III('1')]('\x2c')<0x0||lIliIii[Ii1l1III('1')](Ii1l1III('28'))>0x0)){if(iiiI1l!=''){let ilIIIl=iI1I1I1I[Ii1l1III('9')](Ii1l1III('29'),encodeURIComponent(lli11iI))[Ii1l1III('9')](Ii1l1III('2a'),encodeURIComponent(i1I1l1i));let ilI1ilI=ilIIIl[Ii1l1III('1')]('\x3c');let iili1I1i=ilIIIl[Ii1l1III('11')]('\x3e');if(ilI1ilI>-0x1&&iili1I1i>ilI1ilI){let I11Ilili=ilIIIl[Ii1l1III('10')](ilI1ilI,iili1I1i+0x1);let I1liliII=new RegExp(I11Ilili[Ii1l1III('9')](/<|>/g,''));let lii11liI=lli11iI[Ii1l1III('9')](I1liliII,function(Ili1lIi1,iiliII1l){return iiliII1l;});ilIIIl=ilIIIl[Ii1l1III('9')](I11Ilili,lii11liI);console[Ii1l1III('7')](lli11iI+'\x2c\x20'+ilIIIl);}let IiiIIiIi={'vod_id':IliI1i+Ii1l1III('2')+cates[IliI1i][Ii1l1III('27')],'vod_name':lli11iI,'vod_pic':ilIIIl,'vod_remarks':'','type_name':Ii1l1III('2b'),'vod_year':'','vod_area':'','vod_actor':'','vod_director':'','vod_content':'','vod_play_from':i1I1l1i,'vod_play_url':iiiI1l};cates[IliI1i][Ii1l1III('a')](IiiIIiIi);}lli11iI=lIliIii[Ii1l1III('3')]('\x2c')[0x0][Ii1l1III('4')]();iiiI1l='';}else if(lIliIii[Ii1l1III('1')]('\x2c')>0x0&&/http|rtmp|rtsp|rsp/[Ii1l1III('17')](lIliIii)){let l1iiI1ii=lIliIii[Ii1l1III('3')]('\x2c');if(iiiI1l!=''){iiiI1l+='\x23';}iiiI1l+=l1iiI1ii[0x0][Ii1l1III('4')]()+'\x24'+l1iiI1ii[0x1][Ii1l1III('4')]();}}if(iiiI1l!=''){let II1Iliil=iI1I1I1I[Ii1l1III('9')](Ii1l1III('29'),encodeURIComponent(lli11iI))[Ii1l1III('9')](Ii1l1III('2a'),encodeURIComponent(i1I1l1i));let ilI1ilI=II1Iliil[Ii1l1III('1')]('\x3c');let iili1I1i=II1Iliil[Ii1l1III('11')]('\x3e');if(ilI1ilI>-0x1&&iili1I1i>ilI1ilI){let I11Ilili=II1Iliil[Ii1l1III('10')](ilI1ilI,iili1I1i+0x1);let I1liliII=new RegExp(I11Ilili[Ii1l1III('9')](/<|>/g,''));let lii11liI=I1liliII[Ii1l1III('17')](lli11iI)?lli11iI[Ii1l1III('18')](I1liliII)[0x1]:Ii1l1III('2c');II1Iliil=II1Iliil[Ii1l1III('9')](I11Ilili,lii11liI);}let IiiIIiIi={'vod_id':IliI1i+Ii1l1III('2')+cates[IliI1i][Ii1l1III('27')],'vod_name':lli11iI,'vod_pic':II1Iliil,'vod_remarks':'','type_name':Ii1l1III('2b'),'vod_year':'','vod_area':'','vod_actor':'','vod_director':'','vod_content':'','vod_play_from':i1I1l1i,'vod_play_url':iiiI1l};cates[IliI1i][Ii1l1III('a')](IiiIIiIi);}}return cates[IliI1i];}function homeVod(liIIlIl1){let iIl1IIii=getCateData(classes[0x0][Ii1l1III('2d')]);let I1l1iil=JSON[Ii1l1III('15')]({'list':iIl1IIii});return I1l1iil;}function category(I1l1i1Ii,l1IiiIli,IIi1Illi,lilIliIl){let IIi1i1ll=[];if(l1IiiIli==0x1){IIi1i1ll=getCateData(I1l1i1Ii);}let iIiiIi1i=JSON[Ii1l1III('15')]({'list':IIi1i1ll});return iIiiIi1i;}function detail(lIl11iii){let I1IIIil=lIl11iii[Ii1l1III('3')](Ii1l1III('2'));let liiiil1i=I1IIIil[0x0];let l1l111II=liiiil1i[Ii1l1III('3')]('\x24')[0x0];let Il1li11i=parseInt(I1IIIil[0x1]);let Iill11Ii=getCateData(liiiil1i)[Il1li11i];console[Ii1l1III('7')](JSON[Ii1l1III('15')](Iill11Ii));if(l1l111II[Ii1l1III('1')]('\x21\x21')>=0x0){l1l111II=l1l111II[Ii1l1III('9')]('\x21\x21','');const ii1l1iil=Iill11Ii[Ii1l1III('2e')][Ii1l1III('3')]('\x23');console[Ii1l1III('7')](JSON[Ii1l1III('15')](ii1l1iil));let i1Ili1I={};let IIIllli1={};for(const i1IiIlIl of ii1l1iil){let Ill1iii1=i1IiIlIl[Ii1l1III('3')]('\x24')[0x0];let IIiIII11=l1l111II;if(Ill1iii1[Ii1l1III('1')](Ii1l1III('20'))>0x0){IIiIII11=Ill1iii1[Ii1l1III('3')](Ii1l1III('20'))[0x1];Ill1iii1=Ill1iii1[Ii1l1III('3')](Ii1l1III('20'))[0x0];}if(!i1Ili1I[Ii1l1III('2f')](Ill1iii1)){i1Ili1I[Ill1iii1]=0x1;}else{i1Ili1I[Ill1iii1]++;}IIiIII11=l1l111II+(i1Ili1I[Ill1iii1]>0x1?'\x20'+i1Ili1I[Ill1iii1]:'');if(!IIIllli1[Ii1l1III('2f')](IIiIII11)){IIIllli1[IIiIII11]=[];}IIIllli1[IIiIII11][Ii1l1III('a')](Ill1iii1+'\x24'+i1IiIlIl[Ii1l1III('3')]('\x24')[0x1]);}let III1i1ii=[];let iii1lIIi=[];for(let iliI1I1i in IIIllli1){III1i1ii[Ii1l1III('a')](iliI1I1i);iii1lIIi[Ii1l1III('a')](IIIllli1[iliI1I1i][Ii1l1III('30')]('\x23'));}Iill11Ii[Ii1l1III('31')]=III1i1ii[Ii1l1III('30')](Ii1l1III('2'));Iill11Ii[Ii1l1III('2e')]=iii1lIIi[Ii1l1III('30')](Ii1l1III('2'));}return JSON[Ii1l1III('15')]({'list':[Iill11Ii]});}function play(l1llIIii,illiiIII,lIIIiIiI){return JSON[Ii1l1III('15')]({'parse':0x0,'url':illiiIII});}function search(I1lll,lI1iiIII){return null;}__JS_SPIDER__={'\x69\x6e\x69\x74':init,'\x68\x6f\x6d\x65':home,'\x68\x6f\x6d\x65\x56\x6f\x64':homeVod,'\x63\x61\x74\x65\x67\x6f\x72\x79':category,'\x64\x65\x74\x61\x69\x6c':detail,'\x70\x6c\x61\x79':play,'\x73\x65\x61\x72\x63\x68':search};;il='jsjiami.com.v6';
+138
View File
@@ -0,0 +1,138 @@
const peq = new Uint32Array(0x10000);
const myers_32 = (a, b) => {
const n = a.length;
const m = b.length;
const lst = 1 << (n - 1);
let pv = -1;
let mv = 0;
let sc = n;
let i = n;
while (i--) {
peq[a.charCodeAt(i)] |= 1 << i;
}
for (i = 0; i < m; i++) {
let eq = peq[b.charCodeAt(i)];
const xv = eq | mv;
eq |= ((eq & pv) + pv) ^ pv;
mv |= ~(eq | pv);
pv &= eq;
if (mv & lst) {
sc++;
}
if (pv & lst) {
sc--;
}
mv = (mv << 1) | 1;
pv = (pv << 1) | ~(xv | mv);
mv &= xv;
}
i = n;
while (i--) {
peq[a.charCodeAt(i)] = 0;
}
return sc;
};
const myers_x = (b, a) => {
const n = a.length;
const m = b.length;
const mhc = [];
const phc = [];
const hsize = Math.ceil(n / 32);
const vsize = Math.ceil(m / 32);
for (let i = 0; i < hsize; i++) {
phc[i] = -1;
mhc[i] = 0;
}
let j = 0;
for (; j < vsize - 1; j++) {
let mv = 0;
let pv = -1;
const start = j * 32;
const vlen = Math.min(32, m) + start;
for (let k = start; k < vlen; k++) {
peq[b.charCodeAt(k)] |= 1 << k;
}
for (let i = 0; i < n; i++) {
const eq = peq[a.charCodeAt(i)];
const pb = (phc[(i / 32) | 0] >>> i) & 1;
const mb = (mhc[(i / 32) | 0] >>> i) & 1;
const xv = eq | mv;
const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;
let ph = mv | ~(xh | pv);
let mh = pv & xh;
if ((ph >>> 31) ^ pb) {
phc[(i / 32) | 0] ^= 1 << i;
}
if ((mh >>> 31) ^ mb) {
mhc[(i / 32) | 0] ^= 1 << i;
}
ph = (ph << 1) | pb;
mh = (mh << 1) | mb;
pv = mh | ~(xv | ph);
mv = ph & xv;
}
for (let k = start; k < vlen; k++) {
peq[b.charCodeAt(k)] = 0;
}
}
let mv = 0;
let pv = -1;
const start = j * 32;
const vlen = Math.min(32, m - start) + start;
for (let k = start; k < vlen; k++) {
peq[b.charCodeAt(k)] |= 1 << k;
}
let score = m;
for (let i = 0; i < n; i++) {
const eq = peq[a.charCodeAt(i)];
const pb = (phc[(i / 32) | 0] >>> i) & 1;
const mb = (mhc[(i / 32) | 0] >>> i) & 1;
const xv = eq | mv;
const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;
let ph = mv | ~(xh | pv);
let mh = pv & xh;
score += (ph >>> (m - 1)) & 1;
score -= (mh >>> (m - 1)) & 1;
if ((ph >>> 31) ^ pb) {
phc[(i / 32) | 0] ^= 1 << i;
}
if ((mh >>> 31) ^ mb) {
mhc[(i / 32) | 0] ^= 1 << i;
}
ph = (ph << 1) | pb;
mh = (mh << 1) | mb;
pv = mh | ~(xv | ph);
mv = ph & xv;
}
for (let k = start; k < vlen; k++) {
peq[b.charCodeAt(k)] = 0;
}
return score;
};
const distance = (a, b) => {
if (a.length < b.length) {
const tmp = b;
b = a;
a = tmp;
}
if (b.length === 0) {
return a.length;
}
if (a.length <= 32) {
return myers_32(a, b);
}
return myers_x(a, b);
};
const closest = (str, arr) => {
let min_distance = Infinity;
let min_index = 0;
for (let i = 0; i < arr.length; i++) {
const dist = distance(str, arr[i]);
if (dist < min_distance) {
min_distance = dist;
min_index = i;
}
}
return arr[min_index];
};
export { closest, distance };
+764
View File
@@ -0,0 +1,764 @@
{
"1": [
{
"key": "0",
"name": "类型",
"value": [
{
"n": "全部",
"v": "1"
},
{
"n": "动作",
"v": "5"
},
{
"n": "爱情",
"v": "6"
},
{
"n": "科幻",
"v": "7"
},
{
"n": "恐怖",
"v": "8"
},
{
"n": "战争",
"v": "9"
},
{
"n": "喜剧",
"v": "10"
},
{
"n": "纪录片",
"v": "11"
},
{
"n": "剧情",
"v": "12"
},
{
"n": "犯罪",
"v": "30"
},
{
"n": "动画",
"v": "32"
}
]
},
{
"key": "1",
"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": "喜剧"
}
]
},
{
"key": "2",
"name": "地区",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "美国",
"v": "美国"
},
{
"n": "韩国",
"v": "韩国"
},
{
"n": "英国",
"v": "英国"
},
{
"n": "日本",
"v": "日本"
},
{
"n": "泰国",
"v": "泰国"
},
{
"n": "中国",
"v": "中国"
},
{
"n": "其他",
"v": "其他"
}
]
},
{
"key": "3",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2024",
"v": "2024"
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
},
{
"n": "2016",
"v": "2016"
},
{
"n": "2015",
"v": "2015"
},
{
"n": "2014",
"v": "2014"
},
{
"n": "2013",
"v": "2013"
},
{
"n": "2012",
"v": "2012"
},
{
"n": "2011",
"v": "2011"
},
{
"n": "2010",
"v": "2010"
}
]
},
{
"key": "4",
"name": "状态",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "完结",
"v": "w"
},
{
"n": "连载中",
"v": "l"
}
]
},
{
"key": "5",
"name": "排序",
"value": [
{
"n": "时间",
"v": "time"
},
{
"n": "评分",
"v": "douban"
}
]
}
],
"2": [
{
"key": "0",
"name": "类型",
"value": [
{
"n": "全部",
"v": "2"
},
{
"n": "美剧",
"v": "15"
},
{
"n": "韩剧",
"v": "16"
},
{
"n": "日剧",
"v": "13"
},
{
"n": "英剧",
"v": "34"
},
{
"n": "中国",
"v": "14"
},
{
"n": "泰剧",
"v": "29"
},
{
"n": "综艺",
"v": "39"
},
{
"n": "其他",
"v": "38"
}
]
},
{
"key": "1",
"name": "剧情",
"value": [
{
"n": "战争",
"v": "战争"
},
{
"n": "恐怖",
"v": "恐怖"
},
{
"n": "剧情",
"v": "剧情"
},
{
"n": "爱情",
"v": "爱情"
},
{
"n": "家庭",
"v": "家庭"
},
{
"n": "励志",
"v": "励志"
},
{
"n": "悬疑",
"v": "悬疑"
},
{
"n": "动作",
"v": "动作"
},
{
"n": "奇幻",
"v": "奇幻"
},
{
"n": "冒险",
"v": "冒险"
},
{
"n": "历史",
"v": "历史"
},
{
"n": "惊悚",
"v": "惊悚"
},
{
"n": "音乐",
"v": "音乐"
},
{
"n": "科幻",
"v": "科幻"
},
{
"n": "犯罪",
"v": "犯罪"
},
{
"n": "运动",
"v": "运动"
},
{
"n": "喜剧",
"v": "喜剧"
}
]
},
{
"key": "2",
"name": "地区",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "美国",
"v": "美国"
},
{
"n": "韩国",
"v": "韩国"
},
{
"n": "英国",
"v": "英国"
},
{
"n": "日本",
"v": "日本"
},
{
"n": "泰国",
"v": "泰国"
},
{
"n": "中国",
"v": "中国"
},
{
"n": "其他",
"v": "其他"
}
]
},
{
"key": "3",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2024",
"v": "2024"
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
},
{
"n": "2016",
"v": "2016"
},
{
"n": "2015",
"v": "2015"
},
{
"n": "2014",
"v": "2014"
},
{
"n": "2013",
"v": "2013"
},
{
"n": "2012",
"v": "2012"
},
{
"n": "2011",
"v": "2011"
},
{
"n": "2010",
"v": "2010"
}
]
},
{
"key": "4",
"name": "状态",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "完结",
"v": "w"
},
{
"n": "连载中",
"v": "l"
}
]
},
{
"key": "5",
"name": "排序",
"value": [
{
"n": "时间",
"v": "time"
},
{
"n": "评分",
"v": "douban"
}
]
}
],
"41": [
{
"key": "0",
"name": "类型",
"value": [
{
"n": "全部",
"v": "41"
},
{
"n": "日本",
"v": "42"
},
{
"n": "其他",
"v": "43"
}
]
},
{
"key": "1",
"name": "剧情",
"value": [
{
"n": "战争",
"v": "战争"
},
{
"n": "恐怖",
"v": "恐怖"
},
{
"n": "剧情",
"v": "剧情"
},
{
"n": "爱情",
"v": "爱情"
},
{
"n": "家庭",
"v": "家庭"
},
{
"n": "励志",
"v": "励志"
},
{
"n": "悬疑",
"v": "悬疑"
},
{
"n": "动作",
"v": "动作"
},
{
"n": "奇幻",
"v": "奇幻"
},
{
"n": "冒险",
"v": "冒险"
},
{
"n": "历史",
"v": "历史"
},
{
"n": "惊悚",
"v": "惊悚"
},
{
"n": "音乐",
"v": "音乐"
},
{
"n": "科幻",
"v": "科幻"
},
{
"n": "犯罪",
"v": "犯罪"
},
{
"n": "运动",
"v": "运动"
},
{
"n": "喜剧",
"v": "喜剧"
}
]
},
{
"key": "2",
"name": "地区",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "美国",
"v": "美国"
},
{
"n": "韩国",
"v": "韩国"
},
{
"n": "英国",
"v": "英国"
},
{
"n": "日本",
"v": "日本"
},
{
"n": "泰国",
"v": "泰国"
},
{
"n": "中国",
"v": "中国"
},
{
"n": "其他",
"v": "其他"
}
]
},
{
"key": "3",
"name": "年份",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "2024",
"v": "2024"
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
},
{
"n": "2016",
"v": "2016"
},
{
"n": "2015",
"v": "2015"
},
{
"n": "2014",
"v": "2014"
},
{
"n": "2013",
"v": "2013"
},
{
"n": "2012",
"v": "2012"
},
{
"n": "2011",
"v": "2011"
},
{
"n": "2010",
"v": "2010"
}
]
},
{
"key": "4",
"name": "状态",
"value": [
{
"n": "全部",
"v": ""
},
{
"n": "完结",
"v": "w"
},
{
"n": "连载中",
"v": "l"
}
]
},
{
"key": "5",
"name": "排序",
"value": [
{
"n": "时间",
"v": "time"
},
{
"n": "评分",
"v": "douban"
}
]
}
]
}
+80
View File
@@ -0,0 +1,80 @@
[
{"type_id":"https://mypikpak.com/s/self", "type_name":"我的PikPak網盤", "version":"20240301"},
{"type_id":"https://mypikpak.com/s/VNRT8Wr8BGyw1kt1HkijKR4Qo1","type_name":"高清劇集合集一二"},
{"type_id":"https://mypikpak.com/s/VNThL9vJ7kj57e2Kr_dlOzc0o1","type_name":"每日更新" },
{"type_id":"https://mypikpak.com/s/VNBG3CPruacfHy3KVrVR1Qbko1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧1"},
{"type_id":"https://mypikpak.com/s/VNBXQHEBywwEP48SYNoLGhg-o1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧10"},
{"type_id":"https://mypikpak.com/s/VNCKGMKeL4KQWxNSeNl-aNK8o1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧11"},
{"type_id":"https://mypikpak.com/s/VNCKIgIdXbeMUnS27Hc7ifoho1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧12"},
{"type_id":"https://mypikpak.com/s/VNCKK_lIL4KQWxNSeNl-b-Avo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧13"},
{"type_id":"https://mypikpak.com/s/VNCPyF1ibAmUFsTwcgPpV2RPo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧14"},
{"type_id":"https://mypikpak.com/s/VNCPyIV4bsikE1REQUzU3HAKo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧15"},
{"type_id":"https://mypikpak.com/s/VNCPyLg-XbeMUnS27Hc8e-evo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧16"},
{"type_id":"https://mypikpak.com/s/VNCPyOHZfY9FgjheL_s6tE0Eo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧17"},
{"type_id":"https://mypikpak.com/s/VNCdGBWsTsU_1xrcd7arNGkyo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧18"},
{"type_id":"https://mypikpak.com/s/VNCdGaN8bsik85HcYchTzGwpo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧19"},
{"type_id":"https://mypikpak.com/s/VNCdGlQdbAmU3kIGsTh-INYQo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧20"},
{"type_id":"https://mypikpak.com/s/VNCdGvg1QqH-jGYGfgcDoqWho1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧21"},
{"type_id":"https://mypikpak.com/s/VNCdHOhJTsU_1xrcd7arNWAuo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧22"},
{"type_id":"https://mypikpak.com/s/VNCdHU8Xbsik85HcYchTzRlwo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧23"},
{"type_id":"https://mypikpak.com/s/VNDJ--9QP3sxqczyGV8n35pUo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧24"},
{"type_id":"https://mypikpak.com/s/VNDJ-2f3xeTB-N74vaHopsB8o1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧25"},
{"type_id":"https://mypikpak.com/s/VNDJ-6m_P3sxqczyGV8n37Lso1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧26"},
{"type_id":"https://mypikpak.com/s/VNDJ-AxdxeTB-N74vaHoptVeo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧27"},
{"type_id":"https://mypikpak.com/s/VNDJ-F3_OLXqy_gd7t0qYPsTo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧28"},
{"type_id":"https://mypikpak.com/s/VNJ-KE7EDnDGgthutL8stFDco1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧29"},
{"type_id":"https://mypikpak.com/s/VNBGhK25s795X1GmZKtAzarxo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧3"},
{"type_id":"https://mypikpak.com/s/VNJ-KU-PpnUdNyThzczFHNY0o1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧30"},
{"type_id":"https://mypikpak.com/s/VNKX8Tmvg-_M2ALfxiCXcfbOo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧31"},
{"type_id":"https://mypikpak.com/s/VNKX8k1cDAay6DoGUEtaSmGjo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧32"},
{"type_id":"https://mypikpak.com/s/VNLt5PTTTImas0d3tF0BaJ7Zo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧33"},
{"type_id":"https://mypikpak.com/s/VNLt5dq-vYqkqbIuRJRjLoiso1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧34"},
{"type_id":"https://mypikpak.com/s/VNLuwIBrvYqkY2pqZt625qhyo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧35"},
{"type_id":"https://mypikpak.com/s/VNLuwKtrvYqkY2pqZt625r-eo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧36"},
{"type_id":"https://mypikpak.com/s/VNLyAGr0Qwh14Yz40bSwR67do1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧37"},
{"type_id":"https://mypikpak.com/s/VNLyAJDMZAcORH2HWUMhsvGWo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧38"},
{"type_id":"https://mypikpak.com/s/VNLySlyJpr1J-y7W15G4N6xXo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧39"},
{"type_id":"https://mypikpak.com/s/VNBGjxzm-8JG74imIZI6qg8Do1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧4"},
{"type_id":"https://mypikpak.com/s/VNLySocLsRCm72XnqKv7pueto1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧40"},
{"type_id":"https://mypikpak.com/s/VNLyXhUKwRiUO2berP7_qFoao1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧41"},
{"type_id":"https://mypikpak.com/s/VNBH3M6lJXuc4t0v-pqB0dFQo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧5"},
{"type_id":"https://mypikpak.com/s/VNBHRToB_DHT_nmBnwoud8QJo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧6"},
{"type_id":"https://mypikpak.com/s/VNBHSrWiCjrm4NxyIs_56cHpo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧7"},
{"type_id":"https://mypikpak.com/s/VNBXPhSLJktjoBJJe8ptXNbco1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧8"},
{"type_id":"https://mypikpak.com/s/VNBXPwl3bA6kG0eqiyJI3ulOo1","type_name":"/🕸️我的PikPak分享/电视剧140T/电视剧9"},
{"type_id":"https://mypikpak.com/s/VNDb64cFhcn-yqNU5EWDgRZno1","type_name":"/🕸️我的PikPak分享/电影75T/电影1"},
{"type_id":"https://mypikpak.com/s/VNM8-8Xlpr1JhKCjzr3hvs2Vo1","type_name":"/🕸️我的PikPak分享/电影75T/电影10"},
{"type_id":"https://mypikpak.com/s/VNDb67b3hcn-yqNU5EWDgUDWo1","type_name":"/🕸️我的PikPak分享/电影75T/电影2"},
{"type_id":"https://mypikpak.com/s/VNDca2W6hcn-yqNU5EWE-PLOo1","type_name":"/🕸️我的PikPak分享/电影75T/电影3"},
{"type_id":"https://mypikpak.com/s/VNE5x-MGTKDwgZ2rSxM1xhrNo1","type_name":"/🕸️我的PikPak分享/电影75T/电影4"},
{"type_id":"https://mypikpak.com/s/VNEdL2CecnVliWDE0AMdROMzo1","type_name":"/🕸️我的PikPak分享/电影75T/电影5"},
{"type_id":"https://mypikpak.com/s/VNF8bBfoU5Warn8hY_LZYs3Xo1","type_name":"/🕸️我的PikPak分享/电影75T/电影6"},
{"type_id":"https://mypikpak.com/s/VNGGxkU4AYqxeOi-Ts-R_4koo1","type_name":"/🕸️我的PikPak分享/电影75T/电影7"},
{"type_id":"https://mypikpak.com/s/VNGHC0J31cRSfFQDubOJoLCAo1","type_name":"/🕸️我的PikPak分享/电影75T/电影8"},
{"type_id":"https://mypikpak.com/s/VNM7V9gdpr1JgySnCF-P07aJo1","type_name":"/🕸️我的PikPak分享/电影75T/电影9"},
{"type_id":"https://mypikpak.com/s/VNRnagBUCfOipBFoWCX8EGSdo1","type_name":"/🕸️我的PikPak分享/高清电影/合集10"},
{"type_id":"https://mypikpak.com/s/VNRR1cc0LmyyGDe21AoK6Ulho1","type_name":"/🕸️我的PikPak分享/高清电影/合集11"},
{"type_id":"https://mypikpak.com/s/VNRlVwQYQgqv395kxGBhPmDoo1","type_name":"/🕸️我的PikPak分享/高清电影/合集2"},
{"type_id":"https://mypikpak.com/s/VNRm3yZtBGywKa118vzvgAg6o1","type_name":"/🕸️我的PikPak分享/高清电影/合集3"},
{"type_id":"https://mypikpak.com/s/VNRmWOmQBGywKa118vzvlRiZo1","type_name":"/🕸️我的PikPak分享/高清电影/合集4"},
{"type_id":"https://mypikpak.com/s/VNRmoFmoroRROhEkho_8kY_1o1","type_name":"/🕸️我的PikPak分享/高清电影/合集5"},
{"type_id":"https://mypikpak.com/s/VNRn6HqiBGywKa118vzvuqFqo1","type_name":"/🕸️我的PikPak分享/高清电影/合集6"},
{"type_id":"https://mypikpak.com/s/VNRnJASUroRROhEkho_8tpGfo1","type_name":"/🕸️我的PikPak分享/高清电影/合集7"},
{"type_id":"https://mypikpak.com/s/VNRlg0pS7aWN3HWJGVGp2pZTo1","type_name":"/🕸️我的PikPak分享/高清电影/合集8"},
{"type_id":"https://mypikpak.com/s/VNRnQbMN7aWN3HWJGVGpSkxFo1","type_name":"/🕸️我的PikPak分享/高清电影/合集9"},
{"type_id":"https://mypikpak.com/s/VNRTAMNvBGyw1kt1HkijL-n0o1","type_name":"/🕸️我的PikPak分享/高清剧集A/合集11"},
{"type_id":"https://mypikpak.com/s/VNRTAhOZLmyyX7yiCb6t1jTuo1","type_name":"/🕸️我的PikPak分享/高清剧集A/合集14"},
{"type_id":"https://mypikpak.com/s/VNRTBCKPLmyyX7yiCb6t1qEKo1","type_name":"/🕸️我的PikPak分享/高清剧集A/合集18"},
{"type_id":"https://mypikpak.com/s/VNRT8zZXg3b_VYsn0bCwlVh5o1","type_name":"/🕸️我的PikPak分享/高清剧集A/合集3"},
{"type_id":"https://mypikpak.com/s/VNRT9eYeBGyw1kt1HkijKmL_o1","type_name":"/🕸️我的PikPak分享/高清剧集A/合集5"},
{"type_id":"https://mypikpak.com/s/VNRTA2HOg3b_VYsn0bCwlhKyo1","type_name":"/🕸️我的PikPak分享/高清剧集A/合集8"},
{"type_id":"https://mypikpak.com/s/VNRTCK4Lg3b_VYsn0bCwmeWXo1","type_name":"/🕸️我的PikPak分享/高清剧集B/合集24"},
{"type_id":"https://mypikpak.com/s/VNRTCmbnCfOi1Zl2Ft25Sjw8o1","type_name":"/🕸️我的PikPak分享/高清剧集B/合集30"},
{"type_id":"https://mypikpak.com/s/VNRTD2ceyM2NQYlKo78MEzY0o1","type_name":"/🕸️我的PikPak分享/高清剧集B/合集32"},
{"type_id":"https://mypikpak.com/s/VNRTDH_KBGyw1kt1HkijMHG5o1","type_name":"/🕸️我的PikPak分享/高清剧集B/合集34"},
{"type_id":"https://mypikpak.com/s/VNRTDh9fQgqv_6lSY5Z75Z5Yo1","type_name":"/🕸️我的PikPak分享/高清剧集B/合集35"},
{"type_id":"https://mypikpak.com/s/VNRTDyshQgqv_6lSY5Z75a42o1","type_name":"/🕸️我的PikPak分享/高清剧集B/合集37"},
{"type_id":"https://mypikpak.com/s/VNRTEG11roRROhEkho_4qFPYo1","type_name":"/🕸️我的PikPak分享/高清剧集B/合集39"},
{"type_id":"https://mypikpak.com/s/VNRTFVbPBGyw1kt1HkijMoBko1","type_name":"/🕸️我的PikPak分享/高清剧集B/合集41"}
]
Binary file not shown.
+10
View File
@@ -0,0 +1,10 @@
[
{
"type_id":"pikpak分享地址1",
"type_name":"分享名稱1"
},
{
"type_id":"pikpak分享地址2",
"type_name":"分享名稱2"
}
]
+13
View File
@@ -0,0 +1,13 @@
https://www.alipan.com/s/self 我的阿里云盘
https://pan.quark.cn/s/self 我的夸克云盘
https://drive.uc.cn/s/self 我的UC云盘
https://115.com/s/self 我的115云盘
https://pan.xunlei.com/s/self 我的迅雷云盘
https://mypikpak.com/s/self 我的PikPak云盘
https://docs.qq.com/sheet/DVXp5Q2dRTVRXb2VS?tab=ith4wt 阿里云资源每天更新
https://docs.qq.com/sheet/DVHpJVmRhT3ViV09Q?tab=ppx5bp 资源大全3
https://docs.qq.com/sheet/DVHpJVmRhT3ViV09Q?tab=qvnx1e 星火阿里云盘
https://docs.qq.com/sheet/DVXFYSURJRG9qbWJi?tab=BB08J2 短剧更新1
https://docs.qq.com/sheet/DVXFYSURJRG9qbWJi?tab=x5a2cy 短剧更新2
magnet:?xt=urn:btih:448aa6f77f1c1a14eb233b1f06b614a8d3193c51 绝命毒师1-5季 pushset1
magnet:?xt=urn:btih:6EF000064DC6402E00E65F3B2029226196CD55C1 权力的游戏第八季 pushset2
+8
View File
@@ -0,0 +1,8 @@
self 我的夸克网盘
885fd4ba2d92 每日短剧更新
432b5cd3a225 短剧162g
c54a8e47f82f 短剧114g
047991d5955e 经典剧集
ecdf7d6ffaaa 经典港剧合集1
187062318ebc 经典港剧合集2
9ebb62b93194 2023-2024跨年晚会合集
+7
View File
@@ -0,0 +1,7 @@
user:[email protected]/share Samba分享 0 updated_at DESC
user:[email protected]/share2 Samba分享2 0 updated_at DESC
user:[email protected]/share8 Samba分享8 0 updated_at DESC
user:[email protected]/share10 Samba分享10 0 updated_at DESC
user:[email protected]/share11 Samba分享11 0 updated_at DESC
user:[email protected]/share12 Samba分享12 0 updated_at DESC
user:[email protected]/share13 Samba分享13 0 updated_at DESC
BIN
View File
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
a13f87deb17cbb5201eae4b671e1209d
+252
View File
@@ -0,0 +1,252 @@
{
"log": {
"level": "debug",
"timestamp": true
},
"dns": {
"servers": [
{
"tag": "remote",
"address": "https://8.8.8.8/dns-query",
"detour": "select"
},
{
"tag": "local",
"address": "https://223.5.5.5/dns-query",
"detour": "direct"
},
{
"tag": "block",
"address": "rcode://success"
},
{
"tag": "fakeip",
"address": "fakeip"
}
],
"rules": [
{
"outbound": ["any"],
"server": "local"
},
{
"clash_mode": "Global",
"server": "remote"
},
{
"clash_mode": "Direct",
"server": "local"
},
{
"rule_set": "geosite-geolocation-cn",
"server": "local"
},
{
"type": "logical",
"mode": "and",
"rules": [
{
"rule_set": "geosite-geolocation-!cn",
"invert": true
},
{
"rule_set": "geoip-cn"
}
],
"server": "local"
},
{
"rule_set": "geosite-geolocation-!cn",
"query_type":["A","AAAA"],
"server": "fakeip",
"rewrite_ttl": 1
}
],
"fakeip": {
"enabled": true,
"inet4_range": "198.18.0.0/15",
"inet6_range": "fc00::/18"
},
"strategy": "prefer_ipv4",
"independent_cache": true,
"reverse_mapping": true
},
"inbounds": [
{
"type": "mixed",
"tag": "mixed-in",
"listen": "0.0.0.0",
"listen_port": 10172,
"tcp_fast_open":true,
"sniff": false,
"sniff_override_destination": false,
"domain_strategy": "prefer_ipv4",
"set_system_proxy": false
},
{
"type": "socks",
"tag": "socks-in",
"listen": "0.0.0.0",
"listen_port": 10173,
"tcp_fast_open":true,
"sniff": false,
"sniff_override_destination": false,
"domain_strategy": "prefer_ipv4"
},
{
"type": "mixed",
"tag": "mixed-in2",
"listen": "0.0.0.0",
"listen_port": 10174,
"tcp_fast_open":true,
"sniff": false,
"sniff_override_destination": false,
"domain_strategy": "prefer_ipv4",
"set_system_proxy": false
},
{
"type": "mixed",
"tag": "mixed-in3",
"listen": "0.0.0.0",
"listen_port": 10175,
"tcp_fast_open":true,
"sniff": false,
"sniff_override_destination": false,
"domain_strategy": "prefer_ipv4",
"set_system_proxy": false
}
],
"outbounds": [
{
"type": "selector",
"tag": "select",
"outbounds": [
"urltest"
],
"default": "urltest"
},
{
"type": "urltest",
"tag": "urltest",
"interval": "30m",
"idle_timeout": "60m",
"interrupt_exist_connections": false,
"outbounds": null
},
{
"type": "direct",
"tag": "direct"
},
{
"type": "block",
"tag": "block"
},
{
"type": "dns",
"tag": "dns-out"
}
],
"route": {
"rules": [
{
"type": "logical",
"mode": "or",
"rules": [
{
"protocol": "dns"
},
{
"port": 53
}
],
"outbound": "dns-out"
},
{
"ip_is_private": true,
"outbound": "direct"
},
{
"inbound":[
"mixed-in2"
],
"outbound":"select2"
},
{
"inbound":[
"mixed-in3"
],
"outbound":"select3"
},
{
"clash_mode": "Direct",
"outbound": "direct"
},
{
"clash_mode": "Global",
"outbound": "select"
},
{
"type": "logical",
"mode": "or",
"rules": [
{
"port": 853
},
{
"network": "udp",
"port": 443
},
{
"protocol": "stun"
}
],
"outbound": "block"
},
{
"rule_set": [
"geoip-cn",
"geosite-geolocation-cn"
],
"outbound": "direct"
}
],
"rule_set": [
{
"type": "remote",
"tag": "geoip-cn",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs",
"download_detour": "select"
},
{
"type": "remote",
"tag": "geosite-geolocation-cn",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-cn.srs",
"download_detour": "select"
},
{
"type": "remote",
"tag": "geosite-geolocation-!cn",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-!cn.srs",
"download_detour": "select"
}
],
"auto_detect_interface": false
},
"experimental": {
"cache_file": {
"enabled": true,
"store_rdrc": true
},
"clash_api": {
"external_controller": "0.0.0.0:19090",
"external_ui": "ui",
"external_ui_download_url": "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip",
"external_ui_download_detour": "select",
"default_mode": "Rule"
}
}
}
+178
View File
@@ -0,0 +1,178 @@
var strChineseFirstPY = "YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY";
//此处收录了375个多音字
var oMultiDiff = { "19969": "DZ", "19975": "WM", "19988": "QJ", "20048": "YL", "20056": "SC", "20060": "NM", "20094": "QG", "20127": "QJ", "20167": "QC", "20193": "YG", "20250": "KH", "20256": "ZC", "20282": "SC", "20285": "QJG", "20291": "TD", "20314": "YD", "20340": "NE", "20375": "TD", "20389": "YJ", "20391": "CZ", "20415": "PB", "20446": "YS", "20447": "SQ", "20504": "TC", "20608": "KG", "20854": "QJ", "20857": "ZC", "20911": "PF", "20504": "TC", "20608": "KG", "20854": "QJ", "20857": "ZC", "20911": "PF", "20985": "AW", "21032": "PB", "21048": "XQ", "21049": "SC", "21089": "YS", "21119": "JC", "21242": "SB", "21273": "SC", "21305": "YP", "21306": "QO", "21330": "ZC", "21333": "SDC", "21345": "QK", "21378": "CA", "21397": "SC", "21414": "XS", "21442": "SC", "21477": "JG", "21480": "TD", "21484": "ZS", "21494": "YX", "21505": "YX", "21512": "HG", "21523": "XH", "21537": "PB", "21542": "PF", "21549": "KH", "21571": "E", "21574": "DA", "21588": "TD", "21589": "O", "21618": "ZC", "21621": "KHA", "21632": "ZJ", "21654": "KG", "21679": "LKG", "21683": "KH", "21710": "A", "21719": "YH", "21734": "WOE", "21769": "A", "21780": "WN", "21804": "XH", "21834": "A", "21899": "ZD", "21903": "RN", "21908": "WO", "21939": "ZC", "21956": "SA", "21964": "YA", "21970": "TD", "22003": "A", "22031": "JG", "22040": "XS", "22060": "ZC", "22066": "ZC", "22079": "MH", "22129": "XJ", "22179": "XA", "22237": "NJ", "22244": "TD", "22280": "JQ", "22300": "YH", "22313": "XW", "22331": "YQ", "22343": "YJ", "22351": "PH", "22395": "DC", "22412": "TD", "22484": "PB", "22500": "PB", "22534": "ZD", "22549": "DH", "22561": "PB", "22612": "TD", "22771": "KQ", "22831": "HB", "22841": "JG", "22855": "QJ", "22865": "XQ", "23013": "ML", "23081": "WM", "23487": "SX", "23558": "QJ", "23561": "YW", "23586": "YW", "23614": "YW", "23615": "SN", "23631": "PB", "23646": "ZS", "23663": "ZT", "23673": "YG", "23762": "TD", "23769": "ZS", "23780": "QJ", "23884": "QK", "24055": "XH", "24113": "DC", "24162": "ZC", "24191": "GA", "24273": "QJ", "24324": "NL", "24377": "TD", "24378": "QJ", "24439": "PF", "24554": "ZS", "24683": "TD", "24694": "WE", "24733": "LK", "24925": "TN", "25094": "ZG", "25100": "XQ", "25103": "XH", "25153": "PB", "25170": "PB", "25179": "KG", "25203": "PB", "25240": "ZS", "25282": "FB", "25303": "NA", "25324": "KG", "25341": "ZY", "25373": "WZ", "25375": "XJ", "25384": "A", "25457": "A", "25528": "SD", "25530": "SC", "25552": "TD", "25774": "ZC", "25874": "ZC", "26044": "YW", "26080": "WM", "26292": "PB", "26333": "PB", "26355": "ZY", "26366": "CZ", "26397": "ZC", "26399": "QJ", "26415": "ZS", "26451": "SB", "26526": "ZC", "26552": "JG", "26561": "TD", "26588": "JG", "26597": "CZ", "26629": "ZS", "26638": "YL", "26646": "XQ", "26653": "KG", "26657": "XJ", "26727": "HG", "26894": "ZC", "26937": "ZS", "26946": "ZC", "26999": "KJ", "27099": "KJ", "27449": "YQ", "27481": "XS", "27542": "ZS", "27663": "ZS", "27748": "TS", "27784": "SC", "27788": "ZD", "27795": "TD", "27812": "O", "27850": "PB", "27852": "MB", "27895": "SL", "27898": "PL", "27973": "QJ", "27981": "KH", "27986": "HX", "27994": "XJ", "28044": "YC", "28065": "WG", "28177": "SM", "28267": "QJ", "28291": "KH", "28337": "ZQ", "28463": "TL", "28548": "DC", "28601": "TD", "28689": "PB", "28805": "JG", "28820": "QG", "28846": "PB", "28952": "TD", "28975": "ZC", "29100": "A", "29325": "QJ", "29575": "SL", "29602": "FB", "30010": "TD", "30044": "CX", "30058": "PF", "30091": "YSP", "30111": "YN", "30229": "XJ", "30427": "SC", "30465": "SX", "30631": "YQ", "30655": "QJ", "30684": "QJG", "30707": "SD", "30729": "XH", "30796": "LG", "30917": "PB", "31074": "NM", "31085": "JZ", "31109": "SC", "31181": "ZC", "31192": "MLB", "31293": "JQ", "31400": "YX", "31584": "YJ", "31896": "ZN", "31909": "ZY", "31995": "XJ", "32321": "PF", "32327": "ZY", "32418": "HG", "32420": "XQ", "32421": "HG", "32438": "LG", "32473": "GJ", "32488": "TD", "32521": "QJ", "32527": "PB", "32562": "ZSQ", "32564": "JZ", "32735": "ZD", "32793": "PB", "33071": "PF", "33098": "XL", "33100": "YA", "33152": "PB", "33261": "CX", "33324": "BP", "33333": "TD", "33406": "YA", "33426": "WM", "33432": "PB", "33445": "JG", "33486": "ZN", "33493": "TS", "33507": "QJ", "33540": "QJ", "33544": "ZC", "33564": "XQ", "33617": "YT", "33632": "QJ", "33636": "XH", "33637": "YX", "33694": "WG", "33705": "PF", "33728": "YW", "33882": "SR", "34067": "WM", "34074": "YW", "34121": "QJ", "34255": "ZC", "34259": "XL", "34425": "JH", "34430": "XH", "34485": "KH", "34503": "YS", "34532": "HG", "34552": "XS", "34558": "YE", "34593": "ZL", "34660": "YQ", "34892": "XH", "34928": "SC", "34999": "QJ", "35048": "PB", "35059": "SC", "35098": "ZC", "35203": "TQ", "35265": "JX", "35299": "JX", "35782": "SZ", "35828": "YS", "35830": "E", "35843": "TD", "35895": "YG", "35977": "MH", "36158": "JG", "36228": "QJ", "36426": "XQ", "36466": "DC", "36710": "JC", "36711": "ZYG", "36767": "PB", "36866": "SK", "36951": "YW", "37034": "YX", "37063": "XH", "37218": "ZC", "37325": "ZC", "38063": "PB", "38079": "TD", "38085": "QY", "38107": "DC", "38116": "TD", "38123": "YD", "38224": "HG", "38241": "XTC", "38271": "ZC", "38415": "YE", "38426": "KH", "38461": "YD", "38463": "AE", "38466": "PB", "38477": "XJ", "38518": "YT", "38551": "WK", "38585": "ZC", "38704": "XS", "38739": "LJ", "38761": "GJ", "38808": "SQ", "39048": "JG", "39049": "XJ", "39052": "HG", "39076": "CZ", "39271": "XT", "39534": "TD", "39552": "TD", "39584": "PB", "39647": "SB", "39730": "LG", "39748": "TPB", "40109": "ZQ", "40479": "ND", "40516": "HG", "40536": "HG", "40583": "QJ", "40765": "YQ", "40784": "QJ", "40840": "YK", "40863": "QJG" };
function checkCh(ch) {
var uni = ch.charCodeAt(0);
//如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数
if (uni > 40869 || uni < 19968)
return ch; //dealWithOthers(ch);
//检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母
return (oMultiDiff[uni] ? oMultiDiff[uni] : (strChineseFirstPY.charAt(uni - 19968)));
}
function mkRslt(arr) {
var arrRslt = [""];
for (var i = 0, len = arr.length; i < len; i++) {
var str = arr[i];
var strlen = str.length;
if (strlen == 1) {
for (var k = 0; k < arrRslt.length; k++) {
arrRslt[k] += str;
}
} else {
var tmpArr = arrRslt.slice(0);
arrRslt = [];
for (k = 0; k < strlen; k++) {
//复制一个相同的arrRslt
var tmp = tmpArr.slice(0);
//把当前字符str[k]添加到每个元素末尾
for (var j = 0; j < tmp.length; j++) {
tmp[j] += str.charAt(k);
}
//把复制并修改后的数组连接到arrRslt上
arrRslt = arrRslt.concat(tmp);
}
}
}
return arrRslt;
}
//两端去空格函数
String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); }
//参数——中文字符串
//返回值——拼音首字母串数组
export function getFirstLetterList(str) {
if (typeof(str) != "string")
throw new Error(-1, "请传入字符串类型的参数!");
var arrResult = new Array(); //保存中间结果的数组
for (var i = 0, len = str.length; i < len; i++) {
//获得unicode码
var ch = str.charAt(i);
//检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理
arrResult.push(checkCh(ch));
}
//处理arrResult,返回所有可能的拼音首字母串数组
return mkRslt(arrResult);
}
// 判断字符串是否全是中文
function isAllChinese(str) {
return /^[\u4E00-\u9FA5]+$/.test(str);
}
// 判断字符是否为中文
function isChinese(char) {
return /^[\u4E00-\u9FA5]$/.test(char);
}
// 中文拼音名称排序
export const sortListByCN = (vodList,key,order) => {
if(!key){
return vodList
}
order = order||'asc'; // 默认正序
let ASCarr = vodList.sort((a, b) => {
a = a[key];
b = b[key];
// 数字排在字符串前面
if (typeof a === 'number' && typeof b === 'string') {
return -1;
}
if (typeof a === 'string' && typeof b === 'number') {
return 1;
}
// 当存在非数字时
if (isNaN(a) || isNaN(b)) {
// 全汉字的排在非全汉字的后面
if (isAllChinese(a) && !isAllChinese(b)) {
return 1;
}
if (!isAllChinese(a) && isAllChinese(b)) {
return -1;
}
// 存在非数字的数据时,都转为字符串进行比较
a = a.toString();
b = b.toString();
let result = 0;
// 依次比较两个字符串的各项字符
for (let index = 0; index < ((a.length - b.length) ? b.length : a.length); index++) {
// 汉字排在非汉字的后面
if (!isChinese(a[index]) && isChinese(b[index])) {
result = -1;
}
if (isChinese(a[index]) && !isChinese(b[index])) {
result = 1;
}
// 若两个汉字进行比较,则比较他们的拼音首字母
if (isChinese(a[index]) && isChinese(b[index])) {
let pinyinA = getFirstLetterList(a[index]).toString();
let pinyinB = getFirstLetterList(b[index]).toString();
result = pinyinA.localeCompare(pinyinB, 'zh-Hans-CN', { sensitivity: 'accent' });
}
// 若已经比较出结果,则跳出循环,不再继续比较剩余字符
if (result !== 0) {
break
}
}
// 只要有一个无法转换为数字——转换为字符串进行比较——先按字符排序,然后按照数字排序
return result || a.toString().localeCompare(b.toString(), 'zh-Hans-CN', { sensitivity: 'accent' });
} else {
// 都能转换为数字——转换为数字进行比较——从小到大排序
return Number(a) - Number(b);
}
});
if(order==='desc'){
ASCarr.reverse();
}
return ASCarr
};
// 首字母开头排序
export const sortListByFirst = (vodList,key) => {
key = key||'vod_name';
// 名字以特殊符号开头的应用列表
const symbol_list = [];
// 名字以中文开头的应用列表
const cn_list = [];
// 名字以英文开头的应用列表
const en_list = [];
// 名字以数字开头的应用列表
const num_list = [];
vodList.forEach((vod) => {
const { vod_name } = vod;
//通过正则进行数据分类
if (/[\u4e00-\u9fa5]/.test(vod_name[0])) {
cn_list.push(vod);
} else if (/[a-zA-Z]/.test(vod_name[0])) {
en_list.push(vod);
} else if (/[\d]/.test(vod_name[0])) {
num_list.push(vod);
} else {
symbol_list.push(vod);
}
});
//按照要求的方式进行数据排序重组
const newList = [
...cn_list.sort((a, b) => a.vod_name[0]?.localeCompare(b.vod_name[0])),
...en_list.sort((a, b) => a.vod_name[0].localeCompare(b.vod_name[0])),//localeCompare可以不区分大小写的进行排序
...num_list.sort((a, b) => a.vod_name[0] - b.vod_name[0]),
...symbol_list.sort((a, b) => a.vod_name[0] - b.vod_name[0])
];
return newList
};
+15
View File
@@ -0,0 +1,15 @@
self 我的迅雷雲盤
VNg6eg34ncoRGHp98SBeYRUmA1?pwd=ywp2 刘德华高清电影电视剧全集
VNg6YRPKiFWtWRrEfTcmpo4nA1?pwd=3dk6 李连杰电影合集
VNg6af5Yu4IVpCplLZEXpTCHA1?pwd=e3tk 周星驰电影合集
VNg6ZDjEu4IVpCplLZEXovZMA1?pwd=i83r 成龙电影合集
VNg6aYN6S67q560x6uBmiTxGA1?pwd=vcff 金庸武侠作品电视剧版合集
VNgOl6jLwFWEAL3PSyCmyc9vA1?pwd=z3jn 邵氏电影合集中文字幕
VNfYsaHU3GXpR3Wc6X2vLDRXA1?pwd=k327 1962-2015[欧美][动作][007系列4K][24部][409GB]
VNgOliKdkJeHX8To1KuRhkabA1?pwd=8dfq 中国大陆老电影合集
VNgOnbo2VGbPDhR48Bgvh0GMA1?pwd=n59u TVB香港电视剧
VNgOkmDE9KxEdCnfuqBq-nh6A1?pwd=nr2b 豆瓣top电影合集
VNfGhoL9ptGD3gtENXxflDZ6A1?pwd=4a3t 5TB精选迅雷云盘资源
VNgOlIg5E5iq61_VnPABvO3BA1?pwd=bxix 港台大陆三级影片
VNg9Y19oPimZP2d2xRhFUkQ6A1?pwd=nr2c 中国电视剧合集
VNjwyIJVrUPzmOwSA07z6EP1A1?pwd=a84q 抖音短剧合集
+75
View File
@@ -0,0 +1,75 @@
{
"token":"",
"open_token":"",
"open_api_url":"postparam|http://api.extscreen.com/aliyundrive/token",
"oauth_client_id":"",
"oauth_client_secret":"",
"oauth_auth_url":"",
"oauth_refresh_url":"",
"thread_limit":32,
"is_vip":true,
"vip_thread_limit":32,
"vod_flags":"4kz|auto",
"quark_thread_limit":32,
"quark_is_vip":false,
"quark_is_guest":true,
"quark_vip_thread_limit":32,
"quark_flags":"4kz|auto",
"uc_thread_limit":0,
"uc_is_vip":false,
"uc_vip_thread_limit":0,
"uc_flags":"4kz|auto",
"thunder_thread_limit":2,
"thunder_is_vip":false,
"thunder_vip_thread_limit":2,
"thunder_flags":"4k|4kz|auto",
"aliproxy":"",
"aliproxy_url":"",
"proxy":"socks5://127.0.0.1:10172",
"danmu":true,
"quark_danmu":true,
"quark_cookie":"",
"uc_cookie":"",
"thunder_username":"",
"thunder_password":"",
"thunder_captchatoken":"",
"yd_auth":"",
"yd_thread_limit":4,
"yd_flags":"auto|4kz",
"yd_danmu":true,
"pikpak_username":"",
"pikpak_password":"",
"pikpak_flags":"4k|auto",
"pikpak_thread_limit":2,
"pikpak_vip_thread_limit":2,
"pikpak_proxy":"socks5://127.0.0.1:10172",
"pikpak_proxy_onlyapi":false,
"pikpak_danmu":true,
"wgcf_key":"",
"wgcf_key2":"",
"wgcf_ipport":"",
"wgcf_xray_url":"./xray.gz",
"wgcf_geoip_url":"./geoip.dat.gz",
"wgcf_json_url":"./wgcf.json",
"wgcf_vless_id":"",
"wgcf_vless_optname":"singapore.com:443",
"wgcf_vless_worker":"",
"wgcf_vless_path":"/?ed=2048",
"wgcf_vless_protocol":"vless",
"wgcf_vless_network":"ws",
"wgcf_vless_tls":false,
"libxl_url":"./libxl_thunder_sdk.so",
"youtube_proxy":"socks5://127.0.0.1:10172",
"singbox_url":"./sing-box.gz",
"singbox_subscribe_url":"",
"singbox_clash2singbox_url":"./clash2singbox.gz",
"singbox_template_url":"./singbox.json",
"pan115_cookie":"",
"pan115_thread_limit":0,
"pan115_vip_thread_limit":0,
"pan115_is_vip":false,
"pan115_flags":"4kz",
"pan115_auto_delete":true,
"pan115_delete_code":"",
"pan_order":"ali|quark|uc|115|yd|thunder|pikpak"
}
+74
View File
@@ -0,0 +1,74 @@
{
"token":"",
"open_token":"",
"open_api_url":"postparam|http://api.extscreen.com/aliyundrive/token",
"oauth_client_id":"",
"oauth_client_secret":"",
"oauth_auth_url":"",
"oauth_refresh_url":"",
"thread_limit":32,
"is_vip":true,
"vip_thread_limit":32,
"vod_flags":"4kz|auto",
"quark_thread_limit":32,
"quark_is_vip":false,
"quark_vip_thread_limit":32,
"quark_flags":"4kz|auto",
"uc_thread_limit":0,
"uc_is_vip":false,
"uc_vip_thread_limit":0,
"uc_flags":"4kz|auto",
"thunder_thread_limit":2,
"thunder_is_vip":false,
"thunder_vip_thread_limit":2,
"thunder_flags":"4k|4kz|auto",
"aliproxy":"",
"aliproxy_url":"",
"proxy":"",
"danmu":true,
"quark_danmu":true,
"quark_cookie":"",
"uc_cookie":"",
"thunder_username":"",
"thunder_password":"",
"thunder_captchatoken":"",
"yd_auth":"",
"yd_thread_limit":4,
"yd_flags":"auto|4kz",
"yd_danmu":true,
"pikpak_username":"[email protected]",
"pikpak_password":"Aa123123",
"pikpak_flags":"4k|auto",
"pikpak_thread_limit":2,
"pikpak_vip_thread_limit":2,
"pikpak_proxy":"",
"pikpak_proxy_onlyapi":false,
"pikpak_danmu":true,
"wgcf_key":"",
"wgcf_key2":"",
"wgcf_ipport":"",
"wgcf_xray_url":"./xray.gz",
"wgcf_geoip_url":"./geoip.dat.gz",
"wgcf_json_url":"./wgcf.json",
"wgcf_vless_id":"",
"wgcf_vless_optname":"singapore.com:443",
"wgcf_vless_worker":"",
"wgcf_vless_path":"/?ed=2048",
"wgcf_vless_protocol":"vless",
"wgcf_vless_network":"ws",
"wgcf_vless_tls":false,
"libxl_url":"./libxl_thunder_sdk.so",
"youtube_proxy":"proxy",
"singbox_url":"./sing-box.gz",
"singbox_subscribe_url":"",
"singbox_clash2singbox_url":"./clash2singbox.gz",
"singbox_template_url":"./singbox.json",
"pan115_cookie":"",
"pan115_thread_limit":0,
"pan115_vip_thread_limit":0,
"pan115_is_vip":false,
"pan115_flags":"4kz",
"pan115_auto_delete":true,
"pan115_delete_code":"",
"pan_order":"ali|quark|uc|115|yd|thunder|pikpak"
}
+75
View File
@@ -0,0 +1,75 @@
{
"token":"",
"open_token":"",
"open_api_url":"postparam|http://api.extscreen.com/aliyundrive/token",
"oauth_client_id":"",
"oauth_client_secret":"",
"oauth_auth_url":"",
"oauth_refresh_url":"",
"thread_limit":32,
"is_vip":true,
"vip_thread_limit":32,
"vod_flags":"4kz|auto",
"quark_thread_limit":32,
"quark_is_vip":true,
"quark_is_guest":false,
"quark_vip_thread_limit":32,
"quark_flags":"4kz|auto",
"uc_thread_limit":0,
"uc_is_vip":false,
"uc_vip_thread_limit":0,
"uc_flags":"4kz|auto",
"thunder_thread_limit":2,
"thunder_is_vip":false,
"thunder_vip_thread_limit":2,
"thunder_flags":"4k|4kz|auto",
"aliproxy":"",
"aliproxy_url":"",
"proxy":"",
"danmu":true,
"quark_danmu":true,
"quark_cookie":"",
"uc_cookie":"",
"thunder_username":"",
"thunder_password":"",
"thunder_captchatoken":"",
"yd_auth":"",
"yd_thread_limit":4,
"yd_flags":"auto|4kz",
"yd_danmu":true,
"pikpak_username":"",
"pikpak_password":"",
"pikpak_flags":"4k|auto",
"pikpak_thread_limit":2,
"pikpak_vip_thread_limit":2,
"pikpak_proxy":"",
"pikpak_proxy_onlyapi":false,
"pikpak_danmu":true,
"wgcf_key":"",
"wgcf_key2":"",
"wgcf_ipport":"",
"wgcf_xray_url":"./xray.gz",
"wgcf_geoip_url":"./geoip.dat.gz",
"wgcf_json_url":"./wgcf.json",
"wgcf_vless_id":"",
"wgcf_vless_optname":"singapore.com:443",
"wgcf_vless_worker":"",
"wgcf_vless_path":"/?ed=2048",
"wgcf_vless_protocol":"vless",
"wgcf_vless_network":"ws",
"wgcf_vless_tls":false,
"libxl_url":"./libxl_thunder_sdk.so",
"youtube_proxy":"proxy",
"singbox_url":"./sing-box.gz",
"singbox_subscribe_url":"",
"singbox_clash2singbox_url":"./clash2singbox.gz",
"singbox_template_url":"./singbox.json",
"pan115_cookie":"",
"pan115_thread_limit":0,
"pan115_vip_thread_limit":0,
"pan115_is_vip":false,
"pan115_flags":"4kz",
"pan115_auto_delete":true,
"pan115_delete_code":"",
"pan_order":"ali|quark|uc|115|yd|thunder|pikpak"
}
+12
View File
@@ -0,0 +1,12 @@
self 我的UC网盘
c0503fdee6644 2024最新精整豆瓣TOP250部
369e30038dae4 音乐
5e0c900955654 完美世界
d695231313ba4 沧元图-东宁府番外篇(2024)
db80b739256e4 诛仙2
cdbc974cf3c14 斗罗大陆2-绝世唐门4K
714a0d7f921b4 七夕之国-2024
9cca54e72e7e4 遮天4K
42e08284433b4?pwd=NZQb 影视ziyuan每日更新
391b86c09cd24 2023日剧
21f04a22052f4 2023韩剧
+262
View File
@@ -0,0 +1,262 @@
{
"log": {
"loglevel": "debug"
},
"dns": {
"disableFallbackIfMatch": true,
"hosts": {},
"queryStrategy": "UseIP",
"servers": [
{
"address": "tcp://1.1.1.1",
"concurrency": true
},
{
"address": "tcp+local://223.5.5.5:53",
"concurrency": true,
"domains": [
"full:cdn-all.xn--b6gac.eu.org"
],
"skipFallback": true
}
]
},
"outbounds": [
{
"settings": {
"secretKey": "KEY",
"mtu": 1400,
"peers": [
{
"publicKey": "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=",
"endpoint" : "engage.cloudflareclient.com:2408",
"keepAlive": 30
}
],
"address": [
"172.16.0.2/32",
"2606:4700:110:893c:845c:536b:5565:8106/128"
],
"kernelMode": false,
"worker":16
},
"protocol": "wireguard",
"streamSettings": {
"network": "tcp"
},
"tag":"directwarp"
},
{
"settings": {
"secretKey": "KEY",
"mtu": 1280,
"peers": [
{
"publicKey": "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=",
"endpoint" : "engage.cloudflareclient.com:2408",
"keepAlive": 30
}
],
"address": [
"172.16.0.2/32",
"2606:4700:110:893c:845c:536b:5565:8106/128"
],
"kernelMode": false,
"worker":16
},
"protocol": "wireguard",
"streamSettings": {
"network": "tcp"
},
"tag":"warpoverwarp",
"proxySettings": {
"tag": "directwarp",
"transportLayer": true
}
},
{
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "cdn-all.xn--b6gac.eu.org",
"port": 443,
"users": [
{
"id": "VLESSID",
"encryption": "none",
"level":0
}
]
}
]
},
"streamSettings": {
"network": "ws",
"security": "tls",
"tlsSettings": {
"serverName": "VLESSCFWORKERNAME",
"allowInsecure": true
},
"wsSettings": {
"headers": {
"Host": "VLESSCFWORKERNAME"
},
"path": "/?ed=2048"
}
},
"tag":"vlesscf",
"proxySettings": {
"tag": "directfragment",
"transportLayer": true
}
},
{
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "cdn-all.xn--b6gac.eu.org",
"port": 443,
"users": [
{
"id": "VLESSID",
"encryption": "none",
"level":0
}
]
}
]
},
"streamSettings": {
"network": "ws",
"security": "tls",
"tlsSettings": {
"serverName": "VLESSCFWORKERNAME",
"allowInsecure": true
},
"wsSettings": {
"headers": {
"Host": "VLESSCFWORKERNAME"
},
"path": "/?ed=2048"
}
},
"tag":"vlesscfoverwarp",
"proxySettings": {
"tag": "directwarp",
"transportLayer": true
}
},
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "freedom",
"settings":{
"fragment": {
"packets": "tlshello",
"length": "40-60",
"interval": "30-50"
}
},
"tag": "directfragment"
}
]
,
"inbounds":[
{
"listen": "0.0.0.0",
"port": 10070,
"protocol": "http",
"settings": {
"allowTransparent": true
},
"tag": "http"
},
{
"port": 10071,
"protocol": "socks",
"settings": {
"udp": true,
"auth": "noauth"
},
"tag":"socks5"
},
{
"port": 10072,
"protocol": "socks",
"settings": {
"udp": true,
"auth": "noauth"
},
"tag":"socks5overvless"
},
{
"port": 10073,
"protocol": "socks",
"settings": {
"udp": true,
"auth": "noauth"
},
"tag":"socks5overwarpoverwarp"
},
{
"port": 10074,
"protocol": "socks",
"settings": {
"udp": true,
"auth": "noauth"
},
"tag":"socks5overvlessoverwarp"
}
],
"routing": {
"domainStrategy": "AsIs",
"rules": [
{
"type": "field",
"ip": [
"127.0.0.1"
],
"outboundTag": "direct"
},
{
"type": "field",
"inboundTag": [
"socks5"
],
"outboundTag": "directwarp"
},
{
"type": "field",
"inboundTag": [
"socks5overvless"
],
"outboundTag": "vlesscf"
},
{
"type": "field",
"inboundTag": [
"http"
],
"outboundTag": "vlesscf"
},
{
"type": "field",
"inboundTag": [
"socks5overwarpoverwarp"
],
"outboundTag": "warpoverwarp"
},
{
"type": "field",
"inboundTag": [
"socks5overvlessoverwarp"
],
"outboundTag": "vlesscfoverwarp"
}
]
}
}
+1558
View File
@@ -0,0 +1,1558 @@
{
"1": [
{
"key": "3",
"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": "微电影"
}
]
},
{
"key": "1",
"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": "其他"
}
]
},
{
"key": "11",
"name": "年份",
"value": [
{
"n": "2024",
"v": "2024"
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
},
{
"n": "2016",
"v": "2016"
},
{
"n": "2015",
"v": "2015"
},
{
"n": "2014",
"v": "2014"
},
{
"n": "2013",
"v": "2013"
},
{
"n": "2012",
"v": "2012"
},
{
"n": "2011",
"v": "2011"
},
{
"n": "2010",
"v": "2010"
}
]
},
{
"key": "5",
"name": "字母",
"value": [
{
"n": "A",
"v": "A"
},
{
"n": "B",
"v": "B"
},
{
"n": "C",
"v": "C"
},
{
"n": "D",
"v": "D"
},
{
"n": "E",
"v": "E"
},
{
"n": "F",
"v": "F"
},
{
"n": "G",
"v": "G"
},
{
"n": "H",
"v": "H"
},
{
"n": "I",
"v": "I"
},
{
"n": "J",
"v": "J"
},
{
"n": "K",
"v": "K"
},
{
"n": "L",
"v": "L"
},
{
"n": "M",
"v": "M"
},
{
"n": "N",
"v": "N"
},
{
"n": "O",
"v": "O"
},
{
"n": "P",
"v": "P"
},
{
"n": "Q",
"v": "Q"
},
{
"n": "R",
"v": "R"
},
{
"n": "S",
"v": "S"
},
{
"n": "T",
"v": "T"
},
{
"n": "U",
"v": "U"
},
{
"n": "V",
"v": "V"
},
{
"n": "W",
"v": "W"
},
{
"n": "X",
"v": "X"
},
{
"n": "Y",
"v": "Y"
},
{
"n": "Z",
"v": "Z"
},
{
"n": "0-9",
"v": "0-9"
}
]
},
{
"key": "2",
"name": "排序",
"value": [
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"2": [
{
"key": "1",
"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": "其他"
}
]
},
{
"key": "4",
"name": "语言",
"value": [
{
"n": "国语",
"v": "国语"
},
{
"n": "英语",
"v": "英语"
},
{
"n": "粤语",
"v": "粤语"
},
{
"n": "闽南语",
"v": "闽南语"
},
{
"n": "韩语",
"v": "韩语"
},
{
"n": "日语",
"v": "日语"
},
{
"n": "法语",
"v": "法语"
},
{
"n": "德语",
"v": "德语"
},
{
"n": "其它",
"v": "其它"
}
]
},
{
"key": "11",
"name": "年份",
"value": [
{
"n": "2024",
"v": "2024"
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
},
{
"n": "2016",
"v": "2016"
},
{
"n": "2015",
"v": "2015"
},
{
"n": "2014",
"v": "2014"
},
{
"n": "2013",
"v": "2013"
},
{
"n": "2012",
"v": "2012"
},
{
"n": "2011",
"v": "2011"
},
{
"n": "2010",
"v": "2010"
}
]
},
{
"key": "5",
"name": "字母",
"value": [
{
"n": "A",
"v": "A"
},
{
"n": "B",
"v": "B"
},
{
"n": "C",
"v": "C"
},
{
"n": "D",
"v": "D"
},
{
"n": "E",
"v": "E"
},
{
"n": "F",
"v": "F"
},
{
"n": "G",
"v": "G"
},
{
"n": "H",
"v": "H"
},
{
"n": "I",
"v": "I"
},
{
"n": "J",
"v": "J"
},
{
"n": "K",
"v": "K"
},
{
"n": "L",
"v": "L"
},
{
"n": "M",
"v": "M"
},
{
"n": "N",
"v": "N"
},
{
"n": "O",
"v": "O"
},
{
"n": "P",
"v": "P"
},
{
"n": "Q",
"v": "Q"
},
{
"n": "R",
"v": "R"
},
{
"n": "S",
"v": "S"
},
{
"n": "T",
"v": "T"
},
{
"n": "U",
"v": "U"
},
{
"n": "V",
"v": "V"
},
{
"n": "W",
"v": "W"
},
{
"n": "X",
"v": "X"
},
{
"n": "Y",
"v": "Y"
},
{
"n": "Z",
"v": "Z"
},
{
"n": "0-9",
"v": "0-9"
}
]
},
{
"key": "2",
"name": "排序",
"value": [
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"3": [
{
"key": "1",
"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": "其他"
}
]
},
{
"key": "4",
"name": "语言",
"value": [
{
"n": "国语",
"v": "国语"
},
{
"n": "英语",
"v": "英语"
},
{
"n": "粤语",
"v": "粤语"
},
{
"n": "闽南语",
"v": "闽南语"
},
{
"n": "韩语",
"v": "韩语"
},
{
"n": "日语",
"v": "日语"
},
{
"n": "法语",
"v": "法语"
},
{
"n": "德语",
"v": "德语"
},
{
"n": "其它",
"v": "其它"
}
]
},
{
"key": "11",
"name": "年份",
"value": [
{
"n": "2024",
"v": "2024"
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
},
{
"n": "2016",
"v": "2016"
},
{
"n": "2015",
"v": "2015"
},
{
"n": "2014",
"v": "2014"
},
{
"n": "2013",
"v": "2013"
},
{
"n": "2012",
"v": "2012"
},
{
"n": "2011",
"v": "2011"
},
{
"n": "2010",
"v": "2010"
}
]
},
{
"key": "5",
"name": "字母",
"value": [
{
"n": "A",
"v": "A"
},
{
"n": "B",
"v": "B"
},
{
"n": "C",
"v": "C"
},
{
"n": "D",
"v": "D"
},
{
"n": "E",
"v": "E"
},
{
"n": "F",
"v": "F"
},
{
"n": "G",
"v": "G"
},
{
"n": "H",
"v": "H"
},
{
"n": "I",
"v": "I"
},
{
"n": "J",
"v": "J"
},
{
"n": "K",
"v": "K"
},
{
"n": "L",
"v": "L"
},
{
"n": "M",
"v": "M"
},
{
"n": "N",
"v": "N"
},
{
"n": "O",
"v": "O"
},
{
"n": "P",
"v": "P"
},
{
"n": "Q",
"v": "Q"
},
{
"n": "R",
"v": "R"
},
{
"n": "S",
"v": "S"
},
{
"n": "T",
"v": "T"
},
{
"n": "U",
"v": "U"
},
{
"n": "V",
"v": "V"
},
{
"n": "W",
"v": "W"
},
{
"n": "X",
"v": "X"
},
{
"n": "Y",
"v": "Y"
},
{
"n": "Z",
"v": "Z"
},
{
"n": "0-9",
"v": "0-9"
}
]
},
{
"key": "2",
"name": "排序",
"value": [
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"4": [
{
"key": "1",
"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": "其他"
}
]
},
{
"key": "4",
"name": "语言",
"value": [
{
"n": "国语",
"v": "国语"
},
{
"n": "英语",
"v": "英语"
},
{
"n": "粤语",
"v": "粤语"
},
{
"n": "闽南语",
"v": "闽南语"
},
{
"n": "韩语",
"v": "韩语"
},
{
"n": "日语",
"v": "日语"
},
{
"n": "法语",
"v": "法语"
},
{
"n": "德语",
"v": "德语"
},
{
"n": "其它",
"v": "其它"
}
]
},
{
"key": "11",
"name": "年份",
"value": [
{
"n": "2024",
"v": "2024"
},
{
"n": "2023",
"v": "2023"
},
{
"n": "2022",
"v": "2022"
},
{
"n": "2021",
"v": "2021"
},
{
"n": "2020",
"v": "2020"
},
{
"n": "2019",
"v": "2019"
},
{
"n": "2018",
"v": "2018"
},
{
"n": "2017",
"v": "2017"
},
{
"n": "2016",
"v": "2016"
},
{
"n": "2015",
"v": "2015"
},
{
"n": "2014",
"v": "2014"
},
{
"n": "2013",
"v": "2013"
},
{
"n": "2012",
"v": "2012"
},
{
"n": "2011",
"v": "2011"
},
{
"n": "2010",
"v": "2010"
}
]
},
{
"key": "5",
"name": "字母",
"value": [
{
"n": "A",
"v": "A"
},
{
"n": "B",
"v": "B"
},
{
"n": "C",
"v": "C"
},
{
"n": "D",
"v": "D"
},
{
"n": "E",
"v": "E"
},
{
"n": "F",
"v": "F"
},
{
"n": "G",
"v": "G"
},
{
"n": "H",
"v": "H"
},
{
"n": "I",
"v": "I"
},
{
"n": "J",
"v": "J"
},
{
"n": "K",
"v": "K"
},
{
"n": "L",
"v": "L"
},
{
"n": "M",
"v": "M"
},
{
"n": "N",
"v": "N"
},
{
"n": "O",
"v": "O"
},
{
"n": "P",
"v": "P"
},
{
"n": "Q",
"v": "Q"
},
{
"n": "R",
"v": "R"
},
{
"n": "S",
"v": "S"
},
{
"n": "T",
"v": "T"
},
{
"n": "U",
"v": "U"
},
{
"n": "V",
"v": "V"
},
{
"n": "W",
"v": "W"
},
{
"n": "X",
"v": "X"
},
{
"n": "Y",
"v": "Y"
},
{
"n": "Z",
"v": "Z"
},
{
"n": "0-9",
"v": "0-9"
}
]
},
{
"key": "2",
"name": "排序",
"value": [
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"5": [
{
"key": "5",
"name": "字母",
"value": [
{
"n": "A",
"v": "A"
},
{
"n": "B",
"v": "B"
},
{
"n": "C",
"v": "C"
},
{
"n": "D",
"v": "D"
},
{
"n": "E",
"v": "E"
},
{
"n": "F",
"v": "F"
},
{
"n": "G",
"v": "G"
},
{
"n": "H",
"v": "H"
},
{
"n": "I",
"v": "I"
},
{
"n": "J",
"v": "J"
},
{
"n": "K",
"v": "K"
},
{
"n": "L",
"v": "L"
},
{
"n": "M",
"v": "M"
},
{
"n": "N",
"v": "N"
},
{
"n": "O",
"v": "O"
},
{
"n": "P",
"v": "P"
},
{
"n": "Q",
"v": "Q"
},
{
"n": "R",
"v": "R"
},
{
"n": "S",
"v": "S"
},
{
"n": "T",
"v": "T"
},
{
"n": "U",
"v": "U"
},
{
"n": "V",
"v": "V"
},
{
"n": "W",
"v": "W"
},
{
"n": "X",
"v": "X"
},
{
"n": "Y",
"v": "Y"
},
{
"n": "Z",
"v": "Z"
},
{
"n": "0-9",
"v": "0-9"
}
]
},
{
"key": "2",
"name": "排序",
"value": [
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
],
"6": [
{
"key": "5",
"name": "字母",
"value": [
{
"n": "A",
"v": "A"
},
{
"n": "B",
"v": "B"
},
{
"n": "C",
"v": "C"
},
{
"n": "D",
"v": "D"
},
{
"n": "E",
"v": "E"
},
{
"n": "F",
"v": "F"
},
{
"n": "G",
"v": "G"
},
{
"n": "H",
"v": "H"
},
{
"n": "I",
"v": "I"
},
{
"n": "J",
"v": "J"
},
{
"n": "K",
"v": "K"
},
{
"n": "L",
"v": "L"
},
{
"n": "M",
"v": "M"
},
{
"n": "N",
"v": "N"
},
{
"n": "O",
"v": "O"
},
{
"n": "P",
"v": "P"
},
{
"n": "Q",
"v": "Q"
},
{
"n": "R",
"v": "R"
},
{
"n": "S",
"v": "S"
},
{
"n": "T",
"v": "T"
},
{
"n": "U",
"v": "U"
},
{
"n": "V",
"v": "V"
},
{
"n": "W",
"v": "W"
},
{
"n": "X",
"v": "X"
},
{
"n": "Y",
"v": "Y"
},
{
"n": "Z",
"v": "Z"
},
{
"n": "0-9",
"v": "0-9"
}
]
},
{
"key": "2",
"name": "排序",
"value": [
{
"n": "时间",
"v": "time"
},
{
"n": "人气",
"v": "hits"
},
{
"n": "评分",
"v": "score"
}
]
}
]
}
BIN
View File
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
61391714926a9636e7d75a81c7cd0a14
+42
View File
@@ -0,0 +1,42 @@
鳳凰資訊,http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=http://www.youtube.com/watch?v=if6yQq_JJyY
凤凰卫视,http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=http://www.youtube.com/watch?v=dmDg7NfUoSw
寰宇新聞, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=B7Zp3d6xXWw
鏡新聞, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=5n0y6b0Q25o
東森Live, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=R2iMq5LKXco
中天新聞, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=oIgbl7t0S_w
中天新聞, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/live/oIgbl7t0S_w?feature=share
中天新聞2, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=WPfPjbOLNfE
三立live, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=FoBfXvlOR6I
三立inews, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=CKjSm5ZeehE
三立NEWS+, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=oZdzzvxTfUY
TVBS新聞, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=2mCSYvcfhtc
TVBS NEWS LIVE, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=m_dhMSvUCIc
民視新聞, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=ylYJSBUgaMA
華視新聞, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=wM0g8EoUZ_E
中視新聞, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=TCnaIE_SAtM
台視新聞, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=xL0ch83RAK8
EBC東森財經, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=WHEPzbFA3hw
三立財經, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=CKjSm5ZeehE
NHK WORLD, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=f0lYkdA-Gtw
NHK WORLD,https://nhkwlive-xjp.akamaized.net/hls/live/2003458/nhkwlive-xjp-en/index_1M.m3u8?zshijd
Sky News, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=9Auq9mYxFEE
FRANCE 24, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=h3MuIUNCCzI
ABC News, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=w_Ma8oQLmSM
Euronews English, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=pykpO5kQJ98
DW, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=pqabxBKzZ6M
ANN News, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=coYw-eVU0Ks
KBS KOREA, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=HnfpTMtfFk8
NBC NEW, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=0IUbD_4ytuo
鳳凰資訊, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=sUISafvOieY
凤凰卫视, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=dmDg7NfUoSw
CCTV中文国际, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=9sE12tg3CmA
东森财经股市, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=LbS-xQ67fos
公視直播, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=4Uc00FPs27M
KOMPASTV, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=4rmf-lk3ito
东京新宿, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=DjdUEyjx8GM
台灣地震監視, http://127.0.0.1:9978/proxy?do=yt&proxy=proxy&url=https://www.youtube.com/watch?v=Owke6Quk7T0
+1248
View File
@@ -0,0 +1,1248 @@
{
"recommend":"LIST:最新|推薦,官方頻道",
"class":[
{
"type_id":"GETTRENDS",
"type_name":"Youtube Trends"
},
{
"type_id":"LIST:自媒體 We Media,老高與小茉 @laogao,脑洞乌托邦 @NDWTB,自说自话的总裁 @STBoss,纪实说 @C-Documentary,老肉雜談 @老肉雜談,李永樂老師 @TchLiyongle,滇西小哥 @dianxixiaoge,李子柒 Liziqi @cnliziqi,老饭骨 @LaoFanGu,小高姐的 Magic Ingredients @MagicIngredients,小穎美食 @XiaoYingFood,primitivetechnology9550 @primitivetechnology9550,Mr Beast@MrBeast,Airforceproud95 @Airforceproud95,TheGreatWar @TheGreatWar,Mark Rober @MarkRober,不良林,涌哥侃侃 @ygkkk,悟空的日常",
"type_name":"自媒體"
},
{
"type_id":"LIST:HDR,Girls HDR,Landscape HDR,Walk HDR",
"type_name":"HDR"
},
{
"type_id":"LIST:华语音乐,华语MV,点击率最高",
"type_name":"音樂"
},
{
"type_id":"LIST:综艺,芒果综艺,腾讯综艺,爱奇艺综艺,优酷综艺,卫视综艺",
"type_name":"綜藝"
},
{
"type_id":"LIST:紀錄片,历史纪录片,自然纪录片,宇宙纪录片",
"type_name":"紀錄片"
},
{
"type_id":"LIST:新闻 Live,体育直播,赛事直播",
"type_name":"新聞直播"
},
{
"type_id":"短劇",
"type_name":"短劇"
},
{
"type_id":"LIST:剧集,腾讯剧集,爱奇艺剧集,优酷剧集,芒果剧集,TVB",
"type_name":"劇集"
},
{
"type_id":"電影",
"type_name":"電影"
},
{
"type_id":"體育",
"type_name":"體育"
},
{
"type_id":"時尚潮流",
"type_name":"時尚潮流"
},
{
"type_id":"放松",
"type_name":"放松"
},
{
"type_id":"4K",
"type_name":"4K"
},
{
"type_id":"宇宙",
"type_name":"科普知識"
},
{
"type_id":"科技",
"type_name":"科技"
},
{
"type_id":"解說",
"type_name":"解說"
},
{
"type_id":"神秘",
"type_name":"神秘"
},
{
"type_id":"动画片",
"type_name":"动画片"
}
],
"filters":{
"短劇":[
{
"key":"time",
"name":"時間",
"value":[
{"n":"時間全選","v":""},
{"n":"2024","v":"2024"},
{"n":"2023","v":"2023"},
{"n":"2022","v":"2022"},
{"n":"2021","v":"2021"},
{"n":"2020","v":"2020"},
{"n":"2019","v":"2019"},
{"n":"2018","v":"2018"},
{"n":"2017","v":"2017"},
{"n":"2016","v":"2016"},
{"n":"2015","v":"2015"},
{"n":"2014","v":"2014"},
{"n":"2013","v":"2013"},
{"n":"2012","v":"2012"},
{"n":"2011","v":"2011"},
{"n":"2010","v":"2010"},
{"n":"2009","v":"2009"},
{"n":"2008","v":"2008"},
{"n":"2007","v":"2007"},
{"n":"2006","v":"2006"},
{"n":"2005","v":"2005"},
{"n":"2004","v":"2004"},
{"n":"2003","v":"2003"},
{"n":"2002","v":"2002"},
{"n":"2001","v":"2001"},
{"n":"2000","v":"2000"},
{"n":"1999","v":"1999"},
{"n":"1998","v":"1998"},
{"n":"1997","v":"1997"},
{"n":"1996","v":"1996"},
{"n":"1995","v":"1995"},
{"n":"1994","v":"1994"},
{"n":"1993","v":"1993"},
{"n":"1992","v":"1992"},
{"n":"1991","v":"1991"},
{"n":"1990","v":"1990"},
{"n":"1989","v":"1989"},
{"n":"1988","v":"1988"},
{"n":"1987","v":"1987"},
{"n":"1986","v":"1986"},
{"n":"1985","v":"1985"},
{"n":"1984","v":"1984"},
{"n":"1983","v":"1983"},
{"n":"1982","v":"1982"},
{"n":"1981","v":"1981"},
{"n":"1980","v":"1980"},
{"n":"1979","v":"1979"},
{"n":"1978","v":"1978"},
{"n":"1977","v":"1977"},
{"n":"1976","v":"1976"},
{"n":"1975","v":"1975"},
{"n":"1974","v":"1974"},
{"n":"1973","v":"1973"},
{"n":"1972","v":"1972"},
{"n":"1971","v":"1971"},
{"n":"1970","v":"1970"},
{"n":"1969","v":"1969"},
{"n":"1968","v":"1968"},
{"n":"1967","v":"1967"},
{"n":"1966","v":"1966"},
{"n":"1965","v":"1965"},
{"n":"1964","v":"1964"},
{"n":"1963","v":"1963"},
{"n":"1962","v":"1962"},
{"n":"1961","v":"1961"},
{"n":"1960","v":"1960"},
{"n":"1959","v":"1959"},
{"n":"1958","v":"1958"}
]
},
{
"key":"tid",
"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":"芒果TV 短剧"},
{"n":"搜狐","v":"搜狐 短剧"}
]
},
{
"key":"tid",
"name":"短劇",
"value":[
{"n":"都市","v":"@Urbanshort-TV 都市 短劇"},
{"n":"爱情","v":"爱情 短劇"},
{"n":"复仇","v":"复仇 短劇"},
{"n":"穿越","v":"穿越 短劇"},
{"n":"喜剧","v":"喜剧 短劇"},
{"n":"奇幻","v":"奇幻 短劇"},
{"n":"九酱爱追剧","v":"@NineSauceDramaTV"},
{"n":"百万好剧场","v":"@1-pw5ox"},
{"n":"咖啡追剧","v":"@@coffeedrama605"},
{"n":"斗罗短剧","v":"@DouluoDrama123 斗羅短劇"},
{"n":"嘟嘟剧场","v":"@DUDUJUCHANG"},
{"n":"牛牛短剧","v":"@niuniuduanju"}
]
}
],
"動畫片":[
{
"key":"time",
"name":"時間",
"value":[
{"n":"時間全選","v":""},
{"n":"2024","v":"2024"},
{"n":"2023","v":"2023"},
{"n":"2022","v":"2022"},
{"n":"2021","v":"2021"},
{"n":"2020","v":"2020"},
{"n":"2019","v":"2019"},
{"n":"2018","v":"2018"},
{"n":"2017","v":"2017"},
{"n":"2016","v":"2016"},
{"n":"2015","v":"2015"},
{"n":"2014","v":"2014"},
{"n":"2013","v":"2013"},
{"n":"2012","v":"2012"},
{"n":"2011","v":"2011"},
{"n":"2010","v":"2010"},
{"n":"2009","v":"2009"},
{"n":"2008","v":"2008"},
{"n":"2007","v":"2007"},
{"n":"2006","v":"2006"},
{"n":"2005","v":"2005"},
{"n":"2004","v":"2004"},
{"n":"2003","v":"2003"},
{"n":"2002","v":"2002"},
{"n":"2001","v":"2001"},
{"n":"2000","v":"2000"},
{"n":"1999","v":"1999"},
{"n":"1998","v":"1998"},
{"n":"1997","v":"1997"},
{"n":"1996","v":"1996"},
{"n":"1995","v":"1995"},
{"n":"1994","v":"1994"},
{"n":"1993","v":"1993"},
{"n":"1992","v":"1992"},
{"n":"1991","v":"1991"},
{"n":"1990","v":"1990"},
{"n":"1989","v":"1989"},
{"n":"1988","v":"1988"},
{"n":"1987","v":"1987"},
{"n":"1986","v":"1986"},
{"n":"1985","v":"1985"},
{"n":"1984","v":"1984"},
{"n":"1983","v":"1983"},
{"n":"1982","v":"1982"},
{"n":"1981","v":"1981"},
{"n":"1980","v":"1980"},
{"n":"1979","v":"1979"},
{"n":"1978","v":"1978"},
{"n":"1977","v":"1977"},
{"n":"1976","v":"1976"},
{"n":"1975","v":"1975"},
{"n":"1974","v":"1974"},
{"n":"1973","v":"1973"},
{"n":"1972","v":"1972"},
{"n":"1971","v":"1971"},
{"n":"1970","v":"1970"},
{"n":"1969","v":"1969"},
{"n":"1968","v":"1968"},
{"n":"1967","v":"1967"},
{"n":"1966","v":"1966"},
{"n":"1965","v":"1965"},
{"n":"1964","v":"1964"},
{"n":"1963","v":"1963"},
{"n":"1962","v":"1962"},
{"n":"1961","v":"1961"},
{"n":"1960","v":"1960"},
{"n":"1959","v":"1959"},
{"n":"1958","v":"1958"}
]
},
{
"key":"tid",
"name":"中文",
"value":[
{"n":"默认中文国漫","v":"國漫 劇集 3D"},
{"n":"默认","v":"animation"},
{"n":"儿童早教","v":"儿童早教"},
{"n":"儿童歌曲","v":"儿童歌曲"},
{"n":"儿童音乐","v":"儿童音乐"},
{"n":"儿童绘画","v":"儿童绘画"},
{"n":"宝宝巴士","v":"宝宝巴士"},
{"n":"儿歌多多","v":"儿歌多多"},
{"n":"儿童英语启蒙","v":"儿童英语启蒙"},
{"n":"儿童启蒙故事","v":"儿童启蒙故事"},
{"n":"儿童安全教育","v":"儿童安全教育"}
]
},
{
"key":"tid",
"name":"English",
"value":[
{"n":"默认英文国漫","v":"3D Chinese cartoon"},
{"n":"小猪佩奇","v":"@PeppaPigChineseOfficial 小猪佩奇 中文官方 - Peppa Pig"},
{"n":"CoComelon","v":"@CoComelon"},
{"n":"合集","v":"Anime ENG SUB 合集"},
{"n":"国漫社","v":"@Animation 次元 苍穹动漫 PP看动漫 公馆"},
{"n":"国漫工厂","v":"@3DGuoman SUB"},
{"n":"阅文动漫","v":"@yuewenanimation SUB"},
{"n":"哔哩","v":"@madebybilibili 哔哩动漫"},
{"n":"腾讯","v":"@TencentVideoAnimation SUB"},
{"n":"优酷","v":"@youkuanimation 优酷动漫"},
{"n":"爱奇艺","v":"@iQIYIAnime 爱奇艺动漫"}
]
}
],
"LIST:新闻 Live,体育直播,赛事直播":[
{
"key":"tid",
"name":"中文",
"value":[
{"n":"默认","v":"fully YouTube 新聞 Live"},
{"n":"赛事","v":"直播 赛事"},
{"n":"CCTV","v":"直播 CCTV"},
{"n":"港台","v":"直播 港台"}
]
},
{
"key":"tid",
"name":"English",
"value":[
{"n":"Live","v":"live"},
{"n":"CNN","v":"live CNN"},
{"n":"BBC","v":"live BBC"},
{"n":"games","v":"live games"},
{"n":"印度電視台","v":"@SETIndia"}
]
},
{
"key":"tid",
"name":"中文",
"value":[
{"n":"默认","v":"News"},
{"n":"时政","v":"时政 新闻"},
{"n":"体育","v":"体育 新闻"},
{"n":"娱乐","v":"娱乐 新闻"},
{"n":"大陆","v":"大陆 新闻"},
{"n":"港台","v":"港台 新闻"}
]
},
{
"key":"tid",
"name":"English",
"value":[
{"n":"科技與發展","v":"閱兵 奧運會 航母 航空母艦 潛水艇 核武器 坦克 武器 卫星 火箭 輪船 飛機 飛碟"},
{"n":"法治与社会","v":"法治 法制 社会 卖淫 淫秽 污蔑 赌博 毒品 裸聊 诈骗 拐卖 强奸 勒索"},
{"n":"News","v":"News"},
{"n":"CNN","v":"CNN news"},
{"n":"BBC","v":"BBC news"}
]
}
],
"LIST:剧集,腾讯剧集,爱奇艺剧集,优酷剧集,芒果剧集,TVB":[
{
"key":"time",
"name":"時間",
"value":[
{"n":"時間全選","v":""},
{"n":"2024","v":"2024"},
{"n":"2023","v":"2023"},
{"n":"2022","v":"2022"},
{"n":"2021","v":"2021"},
{"n":"2020","v":"2020"},
{"n":"2019","v":"2019"},
{"n":"2018","v":"2018"},
{"n":"2017","v":"2017"},
{"n":"2016","v":"2016"},
{"n":"2015","v":"2015"},
{"n":"2014","v":"2014"},
{"n":"2013","v":"2013"},
{"n":"2012","v":"2012"},
{"n":"2011","v":"2011"},
{"n":"2010","v":"2010"},
{"n":"2009","v":"2009"},
{"n":"2008","v":"2008"},
{"n":"2007","v":"2007"},
{"n":"2006","v":"2006"},
{"n":"2005","v":"2005"},
{"n":"2004","v":"2004"},
{"n":"2003","v":"2003"},
{"n":"2002","v":"2002"},
{"n":"2001","v":"2001"},
{"n":"2000","v":"2000"},
{"n":"1999","v":"1999"},
{"n":"1998","v":"1998"},
{"n":"1997","v":"1997"},
{"n":"1996","v":"1996"},
{"n":"1995","v":"1995"},
{"n":"1994","v":"1994"},
{"n":"1993","v":"1993"},
{"n":"1992","v":"1992"},
{"n":"1991","v":"1991"},
{"n":"1990","v":"1990"},
{"n":"1989","v":"1989"},
{"n":"1988","v":"1988"},
{"n":"1987","v":"1987"},
{"n":"1986","v":"1986"},
{"n":"1985","v":"1985"},
{"n":"1984","v":"1984"},
{"n":"1983","v":"1983"},
{"n":"1982","v":"1982"},
{"n":"1981","v":"1981"},
{"n":"1980","v":"1980"},
{"n":"1979","v":"1979"},
{"n":"1978","v":"1978"},
{"n":"1977","v":"1977"},
{"n":"1976","v":"1976"},
{"n":"1975","v":"1975"},
{"n":"1974","v":"1974"},
{"n":"1973","v":"1973"},
{"n":"1972","v":"1972"},
{"n":"1971","v":"1971"},
{"n":"1970","v":"1970"},
{"n":"1969","v":"1969"},
{"n":"1968","v":"1968"},
{"n":"1967","v":"1967"},
{"n":"1966","v":"1966"},
{"n":"1965","v":"1965"},
{"n":"1964","v":"1964"},
{"n":"1963","v":"1963"},
{"n":"1962","v":"1962"},
{"n":"1961","v":"1961"},
{"n":"1960","v":"1960"},
{"n":"1959","v":"1959"},
{"n":"1958","v":"1958"}
]
},
{
"key":"tid",
"name":"中文",
"value":[
{"n":"默認","v":""},
{"n":"華語熱播電視劇官方頻道","v":"華語熱播電視劇官方頻道"},
{"n":"粵劇","v":"粵劇 劇集"},
{"n":"TVB","v":"@TVB"},
{"n":"国剧放映社","v":"国剧放映社"},
{"n":"大陆","v":"大陆 剧集"},
{"n":"腾讯","v":"腾讯 剧集"},
{"n":"爱奇艺","v":"爱奇艺 剧集"},
{"n":"优酷","v":"优酷 剧集"},
{"n":"芒果","v":"芒果TV 剧集"},
{"n":"搜狐","v":"搜狐 剧集"},
{"n":"华数","v":"华数 剧集"},
{"n":"港台","v":"港台 剧集"},
{"n":"美国","v":"美国 Full Episode 完整剧集"},
{"n":"Netflix","v":"Netflix Full Episode 完整剧集"},
{"n":"Disney","v":"disney Full Episode 完整剧集"},
{"n":"Apple","v":"apple Full Episode 完整剧集"},
{"n":"Amazon","v":"amazon Full Episode 完整剧集"},
{"n":"HBO","v":"hbo Full Episode 完整剧集"},
{"n":"韩国","v":"韩国 剧集"},
{"n":"日本","v":"日本 剧集"},
{"n":"英国","v":"英国 Full Episode 完整剧集"}
]
},
{
"key":"tid",
"name":"English",
"value":[
{"n":"Drama","v":"Full Episode drama"},
{"n":"US","v":"drama Full Episode US"},
{"n":"Netflix","v":"netflix Full Episode drama"},
{"n":"Disney","v":"disney Full Episode drama"},
{"n":"Apple","v":"apple Full Episode drama"},
{"n":"Amazon","v":"amazon Full Episode drama"},
{"n":"HBO","v":"hbo Full Episode drama"},
{"n":"Korea","v":"korea Full Episode drama"},
{"n":"Japan","v":"japan Full Episode drama"},
{"n":"UK","v":"uk Full Episode drama"}
]
}
],
"電影":[
{
"key":"time",
"name":"時間",
"value":[
{"n":"時間全選","v":""},
{"n":"2024","v":"2024"},
{"n":"2023","v":"2023"},
{"n":"2022","v":"2022"},
{"n":"2021","v":"2021"},
{"n":"2020","v":"2020"},
{"n":"2019","v":"2019"},
{"n":"2018","v":"2018"},
{"n":"2017","v":"2017"},
{"n":"2016","v":"2016"},
{"n":"2015","v":"2015"},
{"n":"2014","v":"2014"},
{"n":"2013","v":"2013"},
{"n":"2012","v":"2012"},
{"n":"2011","v":"2011"},
{"n":"2010","v":"2010"},
{"n":"2009","v":"2009"},
{"n":"2008","v":"2008"},
{"n":"2007","v":"2007"},
{"n":"2006","v":"2006"},
{"n":"2005","v":"2005"},
{"n":"2004","v":"2004"},
{"n":"2003","v":"2003"},
{"n":"2002","v":"2002"},
{"n":"2001","v":"2001"},
{"n":"2000","v":"2000"},
{"n":"1999","v":"1999"},
{"n":"1998","v":"1998"},
{"n":"1997","v":"1997"},
{"n":"1996","v":"1996"},
{"n":"1995","v":"1995"},
{"n":"1994","v":"1994"},
{"n":"1993","v":"1993"},
{"n":"1992","v":"1992"},
{"n":"1991","v":"1991"},
{"n":"1990","v":"1990"},
{"n":"1989","v":"1989"},
{"n":"1988","v":"1988"},
{"n":"1987","v":"1987"},
{"n":"1986","v":"1986"},
{"n":"1985","v":"1985"},
{"n":"1984","v":"1984"},
{"n":"1983","v":"1983"},
{"n":"1982","v":"1982"},
{"n":"1981","v":"1981"},
{"n":"1980","v":"1980"},
{"n":"1979","v":"1979"},
{"n":"1978","v":"1978"},
{"n":"1977","v":"1977"},
{"n":"1976","v":"1976"},
{"n":"1975","v":"1975"},
{"n":"1974","v":"1974"},
{"n":"1973","v":"1973"},
{"n":"1972","v":"1972"},
{"n":"1971","v":"1971"},
{"n":"1970","v":"1970"},
{"n":"1969","v":"1969"},
{"n":"1968","v":"1968"},
{"n":"1967","v":"1967"},
{"n":"1966","v":"1966"},
{"n":"1965","v":"1965"},
{"n":"1964","v":"1964"},
{"n":"1963","v":"1963"},
{"n":"1962","v":"1962"},
{"n":"1961","v":"1961"},
{"n":"1960","v":"1960"},
{"n":"1959","v":"1959"},
{"n":"1958","v":"1958"}
]
},
{
"key":"tid",
"name":"中文",
"value":[
{"n":"默認","v":""},
{"n":"大陆","v":"大陆 电影"},
{"n":"腾讯","v":"腾讯 电影"},
{"n":"爱奇艺","v":"爱奇艺 电影"},
{"n":"优酷","v":"优酷 电影"},
{"n":"芒果","v":"芒果TV 电影"},
{"n":"搜狐","v":"搜狐 电影"},
{"n":"港台","v":"港台 电影"},
{"n":"美国","v":"美国 电影"},
{"n":"Netflix","v":"netflix Full movie 电影"},
{"n":"Disney","v":"disney Full movie 电影"},
{"n":"Apple","v":"apple Full movie 电影"},
{"n":"Amazon","v":"amazon Full movie 电影"},
{"n":"HBO","v":"hbo Full movie 电影"},
{"n":"韩国","v":"韩国 Full movie 电影"},
{"n":"日本","v":"日本 Full movie 电影"},
{"n":"英国","v":"英国 Full movie 电影"}
]
},
{
"key":"tid",
"name":"English",
"value":[
{"n":"movie","v":"youtube movies Full movie"},
{"n":"US","v":"us Full movie movie"},
{"n":"Netflix movie","v":"netflix Full movie movie"},
{"n":"Disney","v":"disney Full movie movie"},
{"n":"Apple","v":"apple Full movie movie"},
{"n":"Amazon","v":"amazon Full movie movie"},
{"n":"HBO","v":"hbo Full movie movie"},
{"n":"Koera","v":"korea Full movie movie"},
{"n":"Japan","v":"japan Full movie movie"},
{"n":"UK","v":"uk Full movie movie"}
]
}
],
"LIST:综艺,芒果综艺,腾讯综艺,爱奇艺综艺,优酷综艺,卫视综艺":[
{
"key":"time",
"name":"時間",
"value":[
{"n":"時間全選","v":""},
{"n":"2024","v":"2024"},
{"n":"2023","v":"2023"},
{"n":"2022","v":"2022"},
{"n":"2021","v":"2021"},
{"n":"2020","v":"2020"},
{"n":"2019","v":"2019"},
{"n":"2018","v":"2018"},
{"n":"2017","v":"2017"},
{"n":"2016","v":"2016"},
{"n":"2015","v":"2015"},
{"n":"2014","v":"2014"},
{"n":"2013","v":"2013"},
{"n":"2012","v":"2012"},
{"n":"2011","v":"2011"},
{"n":"2010","v":"2010"},
{"n":"2009","v":"2009"},
{"n":"2008","v":"2008"},
{"n":"2007","v":"2007"},
{"n":"2006","v":"2006"},
{"n":"2005","v":"2005"},
{"n":"2004","v":"2004"},
{"n":"2003","v":"2003"},
{"n":"2002","v":"2002"},
{"n":"2001","v":"2001"},
{"n":"2000","v":"2000"},
{"n":"1999","v":"1999"},
{"n":"1998","v":"1998"},
{"n":"1997","v":"1997"},
{"n":"1996","v":"1996"},
{"n":"1995","v":"1995"},
{"n":"1994","v":"1994"},
{"n":"1993","v":"1993"},
{"n":"1992","v":"1992"},
{"n":"1991","v":"1991"},
{"n":"1990","v":"1990"},
{"n":"1989","v":"1989"},
{"n":"1988","v":"1988"},
{"n":"1987","v":"1987"},
{"n":"1986","v":"1986"},
{"n":"1985","v":"1985"},
{"n":"1984","v":"1984"},
{"n":"1983","v":"1983"},
{"n":"1982","v":"1982"},
{"n":"1981","v":"1981"},
{"n":"1980","v":"1980"},
{"n":"1979","v":"1979"},
{"n":"1978","v":"1978"},
{"n":"1977","v":"1977"},
{"n":"1976","v":"1976"},
{"n":"1975","v":"1975"},
{"n":"1974","v":"1974"},
{"n":"1973","v":"1973"},
{"n":"1972","v":"1972"},
{"n":"1971","v":"1971"},
{"n":"1970","v":"1970"},
{"n":"1969","v":"1969"},
{"n":"1968","v":"1968"},
{"n":"1967","v":"1967"},
{"n":"1966","v":"1966"},
{"n":"1965","v":"1965"},
{"n":"1964","v":"1964"},
{"n":"1963","v":"1963"},
{"n":"1962","v":"1962"},
{"n":"1961","v":"1961"},
{"n":"1960","v":"1960"},
{"n":"1959","v":"1959"},
{"n":"1958","v":"1958"}
]
},
{
"key":"tid",
"name":"中文",
"value":[
{"n":"默认","v":"Variety show"},
{"n":"大陆","v":"大陆 综艺"},
{"n":"芒果","v":"芒果 综艺"},
{"n":"腾讯","v":"腾讯 综艺"},
{"n":"爱奇艺","v":"爱奇艺 综艺"},
{"n":"优酷","v":"优酷 综艺"},
{"n":"港台","v":"港台 综艺"},
{"n":"美国","v":"美国 综艺"},
{"n":"Netflix","v":"Netflix 综艺"},
{"n":"韩国","v":"CRAVITY on Variety Shows 韩国 综艺"},
{"n":"日本","v":"日本 综艺"},
{"n":"英国","v":"英国 综艺"}
]
},
{
"key":"tid",
"name":"English",
"value":[
{"n":"Variety","v":"variety"},
{"n":"Netflix variety","v":"netflix variety"},
{"n":"Korea","v":"korea variety"},
{"n":"Japan","v":"japan variety"},
{"n":"UK","v":"uk variety"}
]
},
{
"key":"tid",
"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":"文松"}
]
}
],
"LIST:紀錄片,历史纪录片,自然纪录片,宇宙纪录片":[
{
"key":"time",
"name":"時間",
"value":[
{"n":"時間全選","v":""},
{"n":"2024","v":"2024"},
{"n":"2023","v":"2023"},
{"n":"2022","v":"2022"},
{"n":"2021","v":"2021"},
{"n":"2020","v":"2020"},
{"n":"2019","v":"2019"},
{"n":"2018","v":"2018"},
{"n":"2017","v":"2017"},
{"n":"2016","v":"2016"},
{"n":"2015","v":"2015"},
{"n":"2014","v":"2014"},
{"n":"2013","v":"2013"},
{"n":"2012","v":"2012"},
{"n":"2011","v":"2011"},
{"n":"2010","v":"2010"},
{"n":"2009","v":"2009"},
{"n":"2008","v":"2008"},
{"n":"2007","v":"2007"},
{"n":"2006","v":"2006"},
{"n":"2005","v":"2005"},
{"n":"2004","v":"2004"},
{"n":"2003","v":"2003"},
{"n":"2002","v":"2002"},
{"n":"2001","v":"2001"},
{"n":"2000","v":"2000"},
{"n":"1999","v":"1999"},
{"n":"1998","v":"1998"},
{"n":"1997","v":"1997"},
{"n":"1996","v":"1996"},
{"n":"1995","v":"1995"},
{"n":"1994","v":"1994"},
{"n":"1993","v":"1993"},
{"n":"1992","v":"1992"},
{"n":"1991","v":"1991"},
{"n":"1990","v":"1990"},
{"n":"1989","v":"1989"},
{"n":"1988","v":"1988"},
{"n":"1987","v":"1987"},
{"n":"1986","v":"1986"},
{"n":"1985","v":"1985"},
{"n":"1984","v":"1984"},
{"n":"1983","v":"1983"},
{"n":"1982","v":"1982"},
{"n":"1981","v":"1981"},
{"n":"1980","v":"1980"},
{"n":"1979","v":"1979"},
{"n":"1978","v":"1978"},
{"n":"1977","v":"1977"},
{"n":"1976","v":"1976"},
{"n":"1975","v":"1975"},
{"n":"1974","v":"1974"},
{"n":"1973","v":"1973"},
{"n":"1972","v":"1972"},
{"n":"1971","v":"1971"},
{"n":"1970","v":"1970"},
{"n":"1969","v":"1969"},
{"n":"1968","v":"1968"},
{"n":"1967","v":"1967"},
{"n":"1966","v":"1966"},
{"n":"1965","v":"1965"},
{"n":"1964","v":"1964"},
{"n":"1963","v":"1963"},
{"n":"1962","v":"1962"},
{"n":"1961","v":"1961"},
{"n":"1960","v":"1960"},
{"n":"1959","v":"1959"},
{"n":"1958","v":"1958"}
]
},
{
"key":"tid",
"name":"中文",
"value":[
{"n":"地區🎶排序","v":"歷史記錄片 地球記錄片 宇宙記錄片 海洋記錄片 戰爭記錄片 大自然生存記錄片"},
{"n":"默认","v":"documentary"},
{"n":"CCTV纪录片","v":"CCTV 纪录片"},
{"n":"BBC纪录片","v":"BBC 纪录片"},
{"n":"国家地理","v":"国家地理 纪录片"},
{"n":"Netflix纪录片","v":"netflix 纪录片"},
{"n":"BBC","v":"BBC documentary"},
{"n":"National Geographic","v":"National Geographic documentary"},
{"n":"Netflix","v":"netflix documentary"},
{"n":"历史","v":"历史 纪录片"},
{"n":"野性","v":"野性 纪录片"},
{"n":"地球","v":"地球 纪录片"},
{"n":"宇宙","v":"宇宙 纪录片"},
{"n":"海洋","v":"海洋 纪录片"},
{"n":"人文","v":"人文 纪录片"},
{"n":"战争","v":"战争 纪录片"}
]
},
{
"key":"tid",
"name":"English",
"value":[
{"n":"History","v":"Full history documentary"},
{"n":"WILD","v":"Full wild documentary"},
{"n":"Earch","v":"Full earth documentary"},
{"n":"Universe","v":"Full universe documentary"},
{"n":"Oceans","v":"Full oceans documentary"},
{"n":"Humanism","v":"Full humanism documentary"},
{"n":"Wars","v":"Full war documentary"}
]
}
],
"LIST:华语音乐,华语MV,点击率最高":[
{
"key":"time",
"name":"時間",
"value":[
{"n":"時間全選","v":""},
{"n":"2024","v":"2024"},
{"n":"2023","v":"2023"},
{"n":"2022","v":"2022"},
{"n":"2021","v":"2021"},
{"n":"2020","v":"2020"},
{"n":"2019","v":"2019"},
{"n":"2018","v":"2018"},
{"n":"2017","v":"2017"},
{"n":"2016","v":"2016"},
{"n":"2015","v":"2015"},
{"n":"2014","v":"2014"},
{"n":"2013","v":"2013"},
{"n":"2012","v":"2012"},
{"n":"2011","v":"2011"},
{"n":"2010","v":"2010"},
{"n":"2009","v":"2009"},
{"n":"2008","v":"2008"},
{"n":"2007","v":"2007"},
{"n":"2006","v":"2006"},
{"n":"2005","v":"2005"},
{"n":"2004","v":"2004"},
{"n":"2003","v":"2003"},
{"n":"2002","v":"2002"},
{"n":"2001","v":"2001"},
{"n":"2000","v":"2000"},
{"n":"1999","v":"1999"},
{"n":"1998","v":"1998"},
{"n":"1997","v":"1997"},
{"n":"1996","v":"1996"},
{"n":"1995","v":"1995"},
{"n":"1994","v":"1994"},
{"n":"1993","v":"1993"},
{"n":"1992","v":"1992"},
{"n":"1991","v":"1991"},
{"n":"1990","v":"1990"},
{"n":"1989","v":"1989"},
{"n":"1988","v":"1988"},
{"n":"1987","v":"1987"},
{"n":"1986","v":"1986"},
{"n":"1985","v":"1985"},
{"n":"1984","v":"1984"},
{"n":"1983","v":"1983"},
{"n":"1982","v":"1982"},
{"n":"1981","v":"1981"},
{"n":"1980","v":"1980"},
{"n":"1979","v":"1979"},
{"n":"1978","v":"1978"},
{"n":"1977","v":"1977"},
{"n":"1976","v":"1976"},
{"n":"1975","v":"1975"},
{"n":"1974","v":"1974"},
{"n":"1973","v":"1973"},
{"n":"1972","v":"1972"},
{"n":"1971","v":"1971"},
{"n":"1970","v":"1970"},
{"n":"1969","v":"1969"},
{"n":"1968","v":"1968"},
{"n":"1967","v":"1967"},
{"n":"1966","v":"1966"},
{"n":"1965","v":"1965"},
{"n":"1964","v":"1964"},
{"n":"1963","v":"1963"},
{"n":"1962","v":"1962"},
{"n":"1961","v":"1961"},
{"n":"1960","v":"1960"},
{"n":"1959","v":"1959"},
{"n":"1958","v":"1958"}
]
},
{
"key":"tid",
"name":"地區",
"value":[
{"n":"華語音樂","v":"華語音樂"},
{"n":"華語MV","v":"華語MV"},
{"n":"环球视听","v":"环球视听1980 @RippleOfficialEvent"},
{"n":"YouTube 點閱率最高","v":"YouTube 點閱率最高觀看次數最多華語歌曲"},
{"n":"海外抖音","v":"TikTok 翻唱 抖音 音樂"},
{"n":"粵語","v":"粵語 音樂"},
{"n":"國語","v":"國語 音樂"},
{"n":"大陆","v":"大陆 音乐"},
{"n":"香港","v":"香港 音乐"},
{"n":"台湾","v":"台湾 音乐"},
{"n":"新加坡","v":"新加坡 音乐"},
{"n":"馬來西亞","v":"馬來西亞 音乐"},
{"n":"泰國","v":"泰國 音乐"},
{"n":"越南","v":"越南 音乐"},
{"n":"印度","v":"印度 音乐"},
{"n":"韩国","v":"韩国 音乐"},
{"n":"日本","v":"日本 音乐"},
{"n":"欧美","v":"欧美 音乐"}
]
},
{
"key":"tid",
"name":"愛好",
"value":[
{"n":"舞曲","v":"慢搖 夜店 低音 女聲 "},
{"n":"80-90","v":"80 90 音樂"},
{"n":"人聲","v":"人聲 音樂"},
{"n":"A8製造","v":"A8製造 工體音樂"},
{"n":"硬歌","v":"深水炸彈 音樂"},
{"n":"失傳已久","v":"嗨音雷虎 失傳 嗨音會所 音樂"},
{"n":"重低音DJ","v":"3D 8D 慢搖 重低音 音樂"},
{"n":"車載舞曲","v":"車載慢搖DJ歌曲串燒 深水炸彈DJ歌曲串燒 越南鼓DJ歌曲串燒 音樂"},
{"n":"超級女聲","v":"超級女聲"},
{"n":"tseries","v":"@tseries"}
]
},
{
"key":"tid",
"name":"歌手",
"value":[
{"n":"邁克爾傑克遜","v":"邁克爾傑克遜 演唱會,巡演 音樂"},
{"n":"張瑋伽","v":"張瑋伽 演唱會 巡演 音樂"},
{"n":"孫露","v":"孫露 演唱會 巡演 音樂"},
{"n":"鳳凰傳奇","v":"鳳凰傳奇 演 巡演 音樂"},
{"n":"龍梅子","v":"龍梅子 演唱會 巡演 音樂"},
{"n":"刀郎","v":"刀郎 演唱會 巡演 音樂"},
{"n":"S.H.E","v":"S.H.E 演唱會 巡演 音樂"},
{"n":"慕容曉曉","v":"慕容曉曉 演唱會 巡演 音樂"},
{"n":"東方紅豔","v":"東方紅豔 演唱會 巡演 音樂"},
{"n":"孟庭葦","v":"孟庭葦 演唱會 巡演 音樂"},
{"n":"斯琴高麗","v":"斯琴高麗 演唱會 巡演 音樂"},
{"n":"程響","v":"程響 演唱會 巡演 音樂"},
{"n":"蔣雪兒","v":"蔣雪兒 演唱會 巡演 音樂"}
]
}
],
"體育":[
{
"key":"time",
"name":"時間",
"value":[
{"n":"時間全選","v":""},
{"n":"2024","v":"2024"},
{"n":"2023","v":"2023"},
{"n":"2022","v":"2022"},
{"n":"2021","v":"2021"},
{"n":"2020","v":"2020"},
{"n":"2019","v":"2019"},
{"n":"2018","v":"2018"},
{"n":"2017","v":"2017"},
{"n":"2016","v":"2016"},
{"n":"2015","v":"2015"},
{"n":"2014","v":"2014"},
{"n":"2013","v":"2013"},
{"n":"2012","v":"2012"},
{"n":"2011","v":"2011"},
{"n":"2010","v":"2010"},
{"n":"2009","v":"2009"},
{"n":"2008","v":"2008"},
{"n":"2007","v":"2007"},
{"n":"2006","v":"2006"},
{"n":"2005","v":"2005"},
{"n":"2004","v":"2004"},
{"n":"2003","v":"2003"},
{"n":"2002","v":"2002"},
{"n":"2001","v":"2001"},
{"n":"2000","v":"2000"},
{"n":"1999","v":"1999"},
{"n":"1998","v":"1998"},
{"n":"1997","v":"1997"},
{"n":"1996","v":"1996"},
{"n":"1995","v":"1995"},
{"n":"1994","v":"1994"},
{"n":"1993","v":"1993"},
{"n":"1992","v":"1992"},
{"n":"1991","v":"1991"},
{"n":"1990","v":"1990"},
{"n":"1989","v":"1989"},
{"n":"1988","v":"1988"},
{"n":"1987","v":"1987"},
{"n":"1986","v":"1986"},
{"n":"1985","v":"1985"},
{"n":"1984","v":"1984"},
{"n":"1983","v":"1983"},
{"n":"1982","v":"1982"},
{"n":"1981","v":"1981"},
{"n":"1980","v":"1980"},
{"n":"1979","v":"1979"},
{"n":"1978","v":"1978"},
{"n":"1977","v":"1977"},
{"n":"1976","v":"1976"},
{"n":"1975","v":"1975"},
{"n":"1974","v":"1974"},
{"n":"1973","v":"1973"},
{"n":"1972","v":"1972"},
{"n":"1971","v":"1971"},
{"n":"1970","v":"1970"},
{"n":"1969","v":"1969"},
{"n":"1968","v":"1968"},
{"n":"1967","v":"1967"},
{"n":"1966","v":"1966"},
{"n":"1965","v":"1965"},
{"n":"1964","v":"1964"},
{"n":"1963","v":"1963"},
{"n":"1962","v":"1962"},
{"n":"1961","v":"1961"},
{"n":"1960","v":"1960"},
{"n":"1959","v":"1959"},
{"n":"1958","v":"1958"}
]
},
{
"key":"tid",
"name":"中文",
"value":[
{"n":"默认","v":""},
{"n":"體育直播","v":"体育直播"},
{"n":"體育赛事","v":"体育赛事"},
{"n":"足球比賽","v":"足球賽事"},
{"n":"篮球比賽","v":"篮球賽事"},
{"n":"极限運動","v":"极限運動"},
{"n":"室内運動","v":"室内运动"},
{"n":"户外運動","v":"户外运动"},
{"n":"健身運動","v":"健身運動"}
]
},
{
"key":"tid",
"name":"English",
"value":[
{"n":"Live","v":"live sports"},
{"n":"Games","v":"live games"},
{"n":"Soccer","v":"live soccer"},
{"n":"NBA","v":"NBA"},
{"n":"Extreme","v":"extreme sports"},
{"n":"InDoor","v":"indoor sports"},
{"n":"OutDoor","v":"outdoor sports"},
{"n":"Workout","v":"workout"}
]
},
{
"key":"tid",
"name":"體育",
"value":[
{"n":"女足港場","v":"女足港場 @Hong KongWomensStadium"},
{"n":"全國校運動會","v":"全國大專 校院運動會 全中運 女子組賽事 全國中等 學校運動會"},
{"n":"女中儀隊","v":"北一女中樂儀旗隊永續發展協會 北一女中家長會樂儀旗家長後援會 北一女中儀隊校友隊 台灣 学校运动会 景美女中儀隊 北一女樂儀旗隊 full樂儀隊 "},
{"n":"校園熱舞","v":"full 校園熱舞 開南熱無 開南大學課外活動組 女生熱舞社 南寶熱舞社 寶踐熱舞社 NTDC 熱舞社 STUST"},
{"n":"红星体育官方频道","v":"红星体育官方频道【高清直播】"},
{"n":"中國體育比賽傳奇","v":"中國體育比賽傳奇"},
{"n":"愛爾達體育家族","v":"愛爾達體育家族 ELTA Sports"},
{"n":"公視體育","v":"公視體育"},
{"n":"體育之光","v":"體育之光"},
{"n":"偶然體育賽事","v":"偶然體育賽事"}
]
}
],
"時尚潮流":[
{
"key":"tid",
"name":"時裝秀",
"value":[
{"n":"街舞","v":"脫衣舞 丁字褲 街舞 太空步 機械舞 舞 裸體舞蹈 霹靂舞 魔性舞蹈 鬼步舞 木偶舞 女性藝術舞蹈"},
{"n":"時尚走秀","v":"T台走秀 lingerie show"},
{"n":"時裝秀","v":"hdr ASM lingerieTV 東京ファッションショー 下着ショー"},
{"n":"潮流秀","v":"FASHION IN UHD"},
{"n":"時裝模特","v":"FASHION Runway"},
{"n":"模特","v":"比基尼 泳裝 頂級車模 空姐 寫真 Car model Stewardess Portrait"},
{"n":"裸体秀","v":"hdr 人體藝術 裸体秀 Nude show"},
{"n":"無限亂鬥","v":"hdr 廟會秀 無限HD 公廟 鋼管舞 脫衣舞 舞女 清純 寫真"}
]
},
{
"key":"tid",
"name":"小姐姐",
"value":[
{"n":"小姐姐超清","v":"小姐姐超清"},
{"n":"国内小姐姐","v":"快手模特 抖音模特 国内小姐姐"},
{"n":"韩国小姐姐","v":"韩国小姐姐"},
{"n":"日本小姐姐","v":"日本小姐姐"},
{"n":"俄罗斯小姐姐","v":"俄罗斯小姐姐"},
{"n":"混血小姐姐","v":"混血小姐姐"},
{"n":"越南小姐姐","v":"越南小姐姐"},
{"n":"Al小姐姐","v":"Al美女超清"},
{"n":"抖音热门小姐姐","v":"抖音热门小姐姐"},
{"n":"快手热门美女","v":"快手热门美女"},
{"n":"打碟小姐姐","v":"打碟小姐姐"},
{"n":"冲浪小姐姐","v":"冲浪小姐姐"},
{"n":"蹦迪小姐姐","v":"蹦迪小姐姐"},
{"n":"艺校小姐姐","v":"艺校小姐姐"},
{"n":"环球小姐","v":"环球小姐"},
{"n":"泰国人妖","v":"泰国人妖"},
{"n":"人间胸器","v":"人间胸器"}
]
},
{
"key":"tid",
"name":"English",
"value":[
{"n":"sexy Miss","v":"sexy Miss"},
{"n":"Hot sexy Girl","v":"Hot sexy Girl"},
{"n":"Korean Girl","v":"Korean sexy Girl"},
{"n":"Japanese Girl","v":"Japanese sexy Girl"},
{"n":"Russian Girl","v":"Russian sexy Girl"},
{"n":"Vietnamese Girl","v":"Vietnamese sexy Girl"},
{"n":"AI Girl","v":"AI Girl"},
{"n":"TikTok Hot Siste","v":"TikTok Hot sexy Girl"},
{"n":"Cute Girl","v":"sexy Cute Girl"},
{"n":"Girl Dj","v":"sexy Girl Dj"},
{"n":"Girl Surfer","v":"sexy Girl Surfer"},
{"n":"Dance Girl","v":"Dance sexy Girl"},
{"n":"Miss Universe","v":"Miss Universe"},
{"n":"Thai Shemale","v":"Thai Shemale"}
]
}
],
"解說":[
{
"key":"tid",
"name":"頻道主",
"value":[
{"n":"宇哥侃故事","v":"@yuge"},
{"n":"零度解说","v":"@lingdujieshuo"}
]
}
],
"LIST:HDR,Girls HDR,Landscape HDR,Walk HDR":[
{
"key":"tid",
"name":"風景",
"value":[
{"n":"運動","v":"GoPro 女翼裝飛行 極限自行車運動"},
{"n":"風景","v":"hdr 大自然"},
{"n":"Links TV頻道主","v":"@linksphotograph Links TV hdr"},
{"n":"放鬆","v":"hdr 放鬆"},
{"n":"動物世界","v":"hdr Carnivorous Animals 動物世界"},
{"n":"深海世界","v":"hdr Invertebrate Fish 深海世界"},
{"n":"飛禽走獸","v":"hdr Birds of Prey Columbiform Birds Passerine Birds"},
{"n":"生物世界","v":"hdr Amphibians Reptiles 生物世界"}
]
}
],
"Full YouTube":[
{
"key":"tid",
"name":"頻道主",
"value":[
{"n":"李子柒","v":"李子柒 Liziqi @cnliziqi"},
{"n":"滇西小哥","v":"滇西小哥 @dianxixiaoge"},
{"n":"老高與小茉","v":"老高與小茉 @laogao"},
{"n":"李永樂老師","v":"李永樂老師 @TchLiyongle"}
]
},
{
"key":"tid",
"name":"美食頻道主",
"value":[
{"n":"美食作家王刚","v":"美食作家王刚 @chefwang"},
{"n":"小高姐的 Magic Ingredients","v":"小高姐的 Magic Ingredients @MagicIngredients"},
{"n":"小穎美食","v":"小穎美食 @XiaoYingFood"}
]
},
{
"key":"tid",
"name":"野外頻道主",
"value":[
{"n":"野外求生","v":"primitivetechnology9550 @primitivetechnology9550"}
]
},
{
"key":"tid",
"name":"科普頻道主",
"value":[
{"n":"科普","v":"Mr Beast@MrBeast"},
{"n":"航天大學","v":"Airforceproud95 @Airforceproud95"},
{"n":"世界大戰","v":"TheGreatWar @TheGreatWar"},
{"n":"MarkRober","v":"Mark Rober @MarkRober"}
]
},
{
"key":"tid",
"name":"教材",
"value":[
{"n":"不良林","v":"不良林"},
{"n":"涌哥侃侃","v":"涌哥侃侃 @ygkkk"},
{"n":"悟空的日常","v":"悟空的日常"}
]
}
],
"宇宙":[
{
"key":"tid",
"name":"科普知識",
"value":[
{"n":"宇宙","v":"光年 黑洞 銀河系 空間站 太空技術"},
{"n":"粒子","v":"空間粒子 宇宙磁場 四維空間 元素 量子 光波 光源 靈魂"},
{"n":"靠蒙","v":"microorganism"}
]
},
{
"key":"tid",
"name":"歷史科普",
"value":[
{"n":"世界大戰","v":"世界大戰 二戰 日侵 八國聯軍"},
{"n":"人物","v":"古代名人 歷史名人 歷代祖先"},
{"n":"生物進化史","v":"人類進化 微生物進化 動物進化 地球進化"},
{"n":"靠蒙","v":"歷史 History"}
]
}
]
},
"jx":0,
"parse":0
}
+1
View File
@@ -0,0 +1 @@
{"20": [{"key": "class","name": "剧情","value": [{"n": "全部","v": ""}, {"n": "喜剧","v": "喜剧"}, {"n": "爱情","v": "爱情"}, {"n": "恐怖","v": "恐怖"}, {"n": "动作","v": "动作"}, {"n": "科幻","v": "科幻"}, {"n": "剧情","v": "剧情"}, {"n": "战争","v": "战争"}, {"n": "警匪","v": "警匪"}, {"n": "犯罪","v": "犯罪"}, {"n": "武侠","v": "武侠"}, {"n": "冒险","v": "冒险"}, {"n": "枪战","v": "枪战"}, {"n": "恐怖","v": "恐怖"}, {"n": "悬疑","v": "悬疑"}, {"n": "惊悚","v": "惊悚"}, {"n": "青春","v": "青春"}, {"n": "文艺","v": "文艺"}, {"n": "古装","v": "古装"}, {"n": "历史","v": "历史"}, {"n": "运动","v": "运动"}, {"n": "农村","v": "农村"}]}, {"key": "area","name": "地区","value": [{"n": "全部","v": ""}, {"n": "大陆","v": "大陆"}, {"n": "香港","v": "香港"}, {"n": "台湾","v": "台湾"},{"n": "日本","v": "日本"},{"n": "韩国","v": "韩国"},{"n": "泰国","v": "泰国"},{"n": "印度","v": "印度"}]}, {"key": "lang","name": "语言","value": [{"n": "全部","v": ""}, {"n": "国语","v": "国语"}, {"n": "英语","v": "英语"}, {"n": "粤语","v": "粤语"}, {"n": "闽南语","v": "闽南语"}, {"n": "韩语","v": "韩语"}, {"n": "日语","v": "日语"},{"n": "其他","v": "其他"}]}, {"key": "year","name": "年份","value": [{"n": "全部","v": ""},{"n": "2024","v": "2024"},{"n": "2023","v": "2023"}, {"n": "2022","v": "2022"}, {"n": "2021","v": "2021"}, {"n": "2020","v": "2020"}, {"n": "2019","v": "2019"}, {"n": "2018","v": "2018"}, {"n": "2017","v": "2017"}, {"n": "2016","v": "2016"}, {"n": "2015","v": "2015"}, {"n": "2014","v": "2014"}, {"n": "2013","v": "2013"}, {"n": "2012","v": "2012"}, {"n": "2011","v": "2011"}, {"n": "2010","v": "2010"}]}],"21": [{"key": "class","name": "剧情","value": [{"n": "全部","v": ""}, {"n": "古装","v": "古装"}, {"n": "战争","v": "战争"}, {"n": "青春偶像","v": "青春偶像"}, {"n": "喜剧","v": "喜剧"}, {"n": "家庭","v": "家庭"}, {"n": "犯罪","v": "犯罪"}, {"n": "动作","v": "动作"}, {"n": "奇幻","v": "奇幻"}, {"n": "剧情","v": "剧情"}, {"n": "历史","v": "历史"}, {"n": "经典","v": "经典"}, {"n": "乡村","v": "乡村"}, {"n": "情景","v": "情景"}, {"n": "商战","v": "商战"}, {"n": "网剧","v": "网剧"}, {"n": "其他","v": "其他"}]}, {"key": "area","name": "地区","value": [{"n": "全部","v": ""}, {"n": "内地","v": "内地"}, {"n": "香港","v": "香港"}, {"n": "台湾","v": "台湾"},{"n": "日本","v": "日本"},{"n": "韩国","v": "韩国"},{"n": "泰国","v": "泰国"},{"n": "美国","v": "美国"},{"n": "英国","v": "英国"},{"n": "新加坡","v": "新加坡"},{"n": "其他","v": "其他"}]}, {"key": "lang","name": "语言","value": [{"n": "全部","v": ""}, {"n": "国语","v": "国语"}, {"n": "英语","v": "英语"}, {"n": "粤语","v": "粤语"}, {"n": "闽南语","v": "闽南语"}, {"n": "韩语","v": "韩语"}, {"n": "日语","v": "日语"},{"n": "其他","v": "其他"}]}, {"key": "year","name": "年份","value": [{"n": "全部","v": ""}, {"n": "2024","v": "2024"},{"n": "2023","v": "2023"}, {"n": "2022","v": "2022"}, {"n": "2021","v": "2021"}, {"n": "2020","v": "2020"}, {"n": "2019","v": "2019"}, {"n": "2018","v": "2018"}, {"n": "2017","v": "2017"}, {"n": "2016","v": "2016"}, {"n": "2015","v": "2015"}, {"n": "2014","v": "2014"}, {"n": "2013","v": "2013"}, {"n": "2012","v": "2012"}, {"n": "2011","v": "2011"}, {"n": "2010","v": "2010"}]}],"47": [{"key": "class","name": "剧情","value": [{"n": "全部","v": ""}, {"n": "喜剧","v": "喜剧"}, {"n": "爱情","v": "爱情"}, {"n": "恐怖","v": "恐怖"}, {"n": "动作","v": "动作"}, {"n": "科幻","v": "科幻"}, {"n": "剧情","v": "剧情"}, {"n": "战争","v": "战争"}, {"n": "警匪","v": "警匪"}, {"n": "犯罪","v": "犯罪"}, {"n": "武侠","v": "武侠"}, {"n": "冒险","v": "冒险"}, {"n": "枪战","v": "枪战"}, {"n": "恐怖","v": "恐怖"}, {"n": "悬疑","v": "悬疑"}, {"n": "惊悚","v": "惊悚"}, {"n": "青春","v": "青春"}, {"n": "文艺","v": "文艺"}, {"n": "古装","v": "古装"}, {"n": "历史","v": "历史"}, {"n": "运动","v": "运动"}, {"n": "农村","v": "农村"}]}, {"key": "area","name": "地区","value": [{"n": "全部","v": ""}, {"n": "大陆","v": "大陆"}, {"n": "香港","v": "香港"}, {"n": "台湾","v": "台湾"},{"n": "日本","v": "日本"},{"n": "韩国","v": "韩国"},{"n": "泰国","v": "泰国"},{"n": "印度","v": "印度"}]}, {"key": "lang","name": "语言","value": [{"n": "全部","v": ""}, {"n": "国语","v": "国语"}, {"n": "英语","v": "英语"}, {"n": "粤语","v": "粤语"}, {"n": "闽南语","v": "闽南语"}, {"n": "韩语","v": "韩语"}, {"n": "日语","v": "日语"},{"n": "其他","v": "其他"}]}, {"key": "year","name": "年份","value": [{"n": "全部","v": ""},{"n": "2024","v": "2024"},{"n": "2023","v": "2023"}, {"n": "2022","v": "2022"}, {"n": "2021","v": "2021"}, {"n": "2020","v": "2020"}, {"n": "2019","v": "2019"}, {"n": "2018","v": "2018"}, {"n": "2017","v": "2017"}, {"n": "2016","v": "2016"}, {"n": "2015","v": "2015"}, {"n": "2014","v": "2014"}, {"n": "2013","v": "2013"}, {"n": "2012","v": "2012"}, {"n": "2011","v": "2011"}, {"n": "2010","v": "2010"}]}],"48": [{"key": "class","name": "剧情","value": [{"n": "全部","v": ""}, {"n": "喜剧","v": "喜剧"}, {"n": "爱情","v": "爱情"}, {"n": "恐怖","v": "恐怖"}, {"n": "动作","v": "动作"}, {"n": "科幻","v": "科幻"}, {"n": "剧情","v": "剧情"}, {"n": "战争","v": "战争"}, {"n": "警匪","v": "警匪"}, {"n": "犯罪","v": "犯罪"}, {"n": "武侠","v": "武侠"}, {"n": "冒险","v": "冒险"}, {"n": "枪战","v": "枪战"}, {"n": "恐怖","v": "恐怖"}, {"n": "悬疑","v": "悬疑"}, {"n": "惊悚","v": "惊悚"}, {"n": "青春","v": "青春"}, {"n": "文艺","v": "文艺"}, {"n": "古装","v": "古装"}, {"n": "历史","v": "历史"}, {"n": "运动","v": "运动"}, {"n": "农村","v": "农村"}]}, {"key": "area","name": "地区","value": [{"n": "全部","v": ""}, {"n": "大陆","v": "大陆"}, {"n": "香港","v": "香港"}, {"n": "台湾","v": "台湾"},{"n": "日本","v": "日本"},{"n": "韩国","v": "韩国"},{"n": "泰国","v": "泰国"},{"n": "印度","v": "印度"}]}, {"key": "lang","name": "语言","value": [{"n": "全部","v": ""}, {"n": "国语","v": "国语"}, {"n": "英语","v": "英语"}, {"n": "粤语","v": "粤语"}, {"n": "闽南语","v": "闽南语"}, {"n": "韩语","v": "韩语"}, {"n": "日语","v": "日语"},{"n": "其他","v": "其他"}]}, {"key": "year","name": "年份","value": [{"n": "全部","v": ""},{"n": "2024","v": "2024"},{"n": "2023","v": "2023"}, {"n": "2022","v": "2022"}, {"n": "2021","v": "2021"}, {"n": "2020","v": "2020"}, {"n": "2019","v": "2019"}, {"n": "2018","v": "2018"}, {"n": "2017","v": "2017"}, {"n": "2016","v": "2016"}, {"n": "2015","v": "2015"}, {"n": "2014","v": "2014"}, {"n": "2013","v": "2013"}, {"n": "2012","v": "2012"}, {"n": "2011","v": "2011"}, {"n": "2010","v": "2010"}]}],"58": [{"key": "class","name": "剧情","value": [{"n": "全部","v": ""}, {"n": "情感","v": "情感"}, {"n": "科幻","v": "科幻"}, {"n": "热血","v": "热血"}, {"n": "推理","v": "推理"}, {"n": "搞笑","v": "搞笑"}, {"n": "冒险","v": "冒险"}, {"n": "萝莉","v": "萝莉"}, {"n": "校园","v": "校园"}, {"n": "动作","v": "动作"}, {"n": "机战","v": "机战"}, {"n": "运动","v": "运动"}, {"n": "战争","v": "战争"}, {"n": "少年","v": "少年"}, {"n": "少女","v": "少女"}, {"n": "社会","v": "社会"}, {"n": "原创","v": "原创"}, {"n": "亲子","v": "亲子"}, {"n": "益智","v": "益智"}, {"n": "励志","v": "励志"}, {"n": "其他","v": "其他"}]}, {"key": "area","name": "地区","value": [{"n": "全部","v": ""}, {"n": "内地","v": "内地"}, {"n": "香港","v": "香港"}, {"n": "台湾","v": "台湾"},{"n": "日本","v": "日本"},{"n": "韩国","v": "韩国"},{"n": "泰国","v": "泰国"},{"n": "美国","v": "美国"},{"n": "英国","v": "英国"},{"n": "新加坡","v": "新加坡"},{"n": "其他","v": "其他"}]}, {"key": "lang","name": "语言","value": [{"n": "全部","v": ""}, {"n": "国语","v": "国语"}, {"n": "英语","v": "英语"}, {"n": "粤语","v": "粤语"}, {"n": "闽南语","v": "闽南语"}, {"n": "韩语","v": "韩语"}, {"n": "日语","v": "日语"},{"n": "其他","v": "其他"}]}, {"key": "year","name": "年份","value": [{"n": "全部","v": ""}, {"n": "2024","v": "2024"} ,{"n": "2023","v": "2023"}, {"n": "2022","v": "2022"}, {"n": "2021","v": "2021"}, {"n": "2020","v": "2020"}, {"n": "2019","v": "2019"}, {"n": "2018","v": "2018"}, {"n": "2017","v": "2017"}, {"n": "2016","v": "2016"}, {"n": "2015","v": "2015"}, {"n": "2014","v": "2014"}, {"n": "2013","v": "2013"}, {"n": "2012","v": "2012"}, {"n": "2011","v": "2011"}, {"n": "2010","v": "2010"}]}],"46": [{"key": "class","name": "剧情","value": [{"n": "全部","v": ""}, {"n": "古装","v": "古装"}, {"n": "战争","v": "战争"}, {"n": "青春偶像","v": "青春偶像"}, {"n": "家庭","v": "家庭"}, {"n": "犯罪","v": "犯罪"}, {"n": "奇幻","v": "奇幻"}, {"n": "历史","v": "历史"}, {"n": "商战","v": "商战"}]}, {"key": "area","name": "地区","value": [{"n": "全部","v": ""}, {"n": "大陆","v": "大陆"}]}, {"key": "lang","name": "语言","value": [{"n": "全部","v": ""}, {"n": "国语","v": "国语"}]}, {"key": "year","name": "年份","value": [{"n": "全部","v": ""}, {"n": "2024","v": "2024"},{"n": "2023","v": "2023"}, {"n": "2022","v": "2022"}, {"n": "2021","v": "2021"}, {"n": "2020","v": "2020"}, {"n": "2019","v": "2019"}, {"n": "2018","v": "2018"}, {"n": "2017","v": "2017"}, {"n": "2016","v": "2016"}, {"n": "2015","v": "2015"}, {"n": "2014","v": "2014"}, {"n": "2013","v": "2013"}, {"n": "2012","v": "2012"}, {"n": "2011","v": "2011"}, {"n": "2010","v": "2010"}]}],"53": [{"key": "class","name": "剧情","value": [{"n": "全部","v": ""}, {"n": "古装","v": "古装"}, {"n": "战争","v": "战争"}, {"n": "青春偶像","v": "青春偶像"}, {"n": "喜剧","v": "喜剧"}, {"n": "家庭","v": "家庭"}, {"n": "犯罪","v": "犯罪"}, {"n": "动作","v": "动作"}, {"n": "奇幻","v": "奇幻"}, {"n": "剧情","v": "剧情"}, {"n": "历史","v": "历史"}, {"n": "经典","v": "经典"}, {"n": "乡村","v": "乡村"}, {"n": "情景","v": "情景"}, {"n": "商战","v": "商战"}, {"n": "网剧","v": "网剧"},{"n": "其他","v": "其他"}]}, {"key": "area","name": "地区","value": [{"n": "全部","v": ""}, {"n": "内地","v": "内地"}, {"n": "香港","v": "香港"}, {"n": "台湾","v": "台湾"},{"n": "日本","v": "日本"},{"n": "韩国","v": "韩国"},{"n": "泰国","v": "泰国"},{"n": "美国","v": "美国"},{"n": "英国","v": "英国"},{"n": "新加坡","v": "新加坡"},{"n": "其他","v": "其他"}]}, {"key": "lang","name": "语言","value": [{"n": "全部","v": ""}, {"n": "国语","v": "国语"}, {"n": "英语","v": "英语"}, {"n": "粤语","v": "粤语"}, {"n": "闽南语","v": "闽南语"}, {"n": "韩语","v": "韩语"}, {"n": "日语","v": "日语"},{"n": "其他","v": "其他"}]}, {"key": "year","name": "年份","value": [{"n": "全部","v": ""}, {"n": "2024","v": "2024"} ,{"n": "2023","v": "2023"}, {"n": "2022","v": "2022"}, {"n": "2021","v": "2021"}, {"n": "2020","v": "2020"}, {"n": "2019","v": "2019"}, {"n": "2018","v": "2018"}, {"n": "2017","v": "2017"}, {"n": "2016","v": "2016"}, {"n": "2015","v": "2015"}, {"n": "2014","v": "2014"}, {"n": "2013","v": "2013"}, {"n": "2012","v": "2012"}, {"n": "2011","v": "2011"}, {"n": "2010","v": "2010"}]}],"5": [{"key": "class","name": "剧情","value": [{"n": "全部","v": ""}, {"n": "喜剧","v": "喜剧"}, {"n": "爱情","v": "爱情"}, {"n": "恐怖","v": "恐怖"}, {"n": "动作","v": "动作"}, {"n": "科幻","v": "科幻"}, {"n": "剧情","v": "剧情"}, {"n": "战争","v": "战争"}, {"n": "警匪","v": "警匪"}, {"n": "犯罪","v": "犯罪"}, {"n": "武侠","v": "武侠"}, {"n": "冒险","v": "冒险"}, {"n": "枪战","v": "枪战"}, {"n": "恐怖","v": "恐怖"}, {"n": "悬疑","v": "悬疑"}, {"n": "惊悚","v": "惊悚"}, {"n": "青春","v": "青春"}, {"n": "文艺","v": "文艺"}, {"n": "古装","v": "古装"}, {"n": "历史","v": "历史"}, {"n": "运动","v": "运动"}, {"n": "农村","v": "农村"}]}, {"key": "area","name": "地区","value": [{"n": "全部","v": ""}, {"n": "大陆","v": "大陆"}, {"n": "香港","v": "香港"}, {"n": "台湾","v": "台湾"},{"n": "日本","v": "日本"},{"n": "韩国","v": "韩国"},{"n": "泰国","v": "泰国"},{"n": "印度","v": "印度"}]}, {"key": "lang","name": "语言","value": [{"n": "全部","v": ""}, {"n": "国语","v": "国语"}, {"n": "英语","v": "英语"}, {"n": "粤语","v": "粤语"}, {"n": "闽南语","v": "闽南语"}, {"n": "韩语","v": "韩语"}, {"n": "日语","v": "日语"},{"n": "其他","v": "其他"}]}, {"key": "year","name": "年份","value": [{"n": "全部","v": ""},{"n": "2024","v": "2024"},{"n": "2023","v": "2023"}, {"n": "2022","v": "2022"}, {"n": "2021","v": "2021"}, {"n": "2020","v": "2020"}, {"n": "2019","v": "2019"}, {"n": "2018","v": "2018"}, {"n": "2017","v": "2017"}, {"n": "2016","v": "2016"}, {"n": "2015","v": "2015"}, {"n": "2014","v": "2014"}, {"n": "2013","v": "2013"}, {"n": "2012","v": "2012"}, {"n": "2011","v": "2011"}, {"n": "2010","v": "2010"}]}],"51": [{"key": "class","name": "剧情","value": [{"n": "全部","v": ""}, {"n": "喜剧","v": "喜剧"}, {"n": "爱情","v": "爱情"}, {"n": "恐怖","v": "恐怖"}, {"n": "动作","v": "动作"}, {"n": "科幻","v": "科幻"}, {"n": "剧情","v": "剧情"}, {"n": "战争","v": "战争"}, {"n": "警匪","v": "警匪"}, {"n": "犯罪","v": "犯罪"}, {"n": "武侠","v": "武侠"}, {"n": "冒险","v": "冒险"}, {"n": "枪战","v": "枪战"}, {"n": "恐怖","v": "恐怖"}, {"n": "悬疑","v": "悬疑"}, {"n": "惊悚","v": "惊悚"}, {"n": "青春","v": "青春"}, {"n": "文艺","v": "文艺"}, {"n": "古装","v": "古装"}, {"n": "历史","v": "历史"}, {"n": "运动","v": "运动"}, {"n": "农村","v": "农村"}]}, {"key": "area","name": "地区","value": [{"n": "全部","v": ""}, {"n": "大陆","v": "大陆"}, {"n": "香港","v": "香港"}, {"n": "台湾","v": "台湾"},{"n": "日本","v": "日本"},{"n": "韩国","v": "韩国"},{"n": "泰国","v": "泰国"},{"n": "印度","v": "印度"}]}, {"key": "lang","name": "语言","value": [{"n": "全部","v": ""}, {"n": "国语","v": "国语"}, {"n": "英语","v": "英语"}, {"n": "粤语","v": "粤语"}, {"n": "闽南语","v": "闽南语"}, {"n": "韩语","v": "韩语"}, {"n": "日语","v": "日语"},{"n": "其他","v": "其他"}]}, {"key": "year","name": "年份","value": [{"n": "全部","v": ""},{"n": "2024","v": "2024"},{"n": "2023","v": "2023"}, {"n": "2022","v": "2022"}, {"n": "2021","v": "2021"}, {"n": "2020","v": "2020"}, {"n": "2019","v": "2019"}, {"n": "2018","v": "2018"}, {"n": "2017","v": "2017"}, {"n": "2016","v": "2016"}, {"n": "2015","v": "2015"}, {"n": "2014","v": "2014"}, {"n": "2013","v": "2013"}, {"n": "2012","v": "2012"}, {"n": "2011","v": "2011"}, {"n": "2010","v": "2010"}]}],"45": [{"key": "class","name": "剧情","value": [{"n": "全部","v": ""}, {"n": "喜剧","v": "喜剧"}, {"n": "爱情","v": "爱情"}, {"n": "恐怖","v": "恐怖"}, {"n": "动作","v": "动作"}, {"n": "科幻","v": "科幻"}, {"n": "剧情","v": "剧情"}, {"n": "战争","v": "战争"}, {"n": "警匪","v": "警匪"}, {"n": "犯罪","v": "犯罪"}, {"n": "武侠","v": "武侠"}, {"n": "冒险","v": "冒险"}, {"n": "枪战","v": "枪战"}, {"n": "恐怖","v": "恐怖"}, {"n": "悬疑","v": "悬疑"}, {"n": "惊悚","v": "惊悚"}, {"n": "青春","v": "青春"}, {"n": "文艺","v": "文艺"}, {"n": "古装","v": "古装"}, {"n": "历史","v": "历史"}, {"n": "运动","v": "运动"}, {"n": "农村","v": "农村"}]}, {"key": "area","name": "地区","value": [{"n": "全部","v": ""}, {"n": "大陆","v": "大陆"}, {"n": "香港","v": "香港"}, {"n": "台湾","v": "台湾"},{"n": "日本","v": "日本"},{"n": "韩国","v": "韩国"},{"n": "泰国","v": "泰国"},{"n": "印度","v": "印度"}]}, {"key": "lang","name": "语言","value": [{"n": "全部","v": ""}, {"n": "国语","v": "国语"}, {"n": "英语","v": "英语"}, {"n": "粤语","v": "粤语"}, {"n": "闽南语","v": "闽南语"}, {"n": "韩语","v": "韩语"}, {"n": "日语","v": "日语"},{"n": "其他","v": "其他"}]}, {"key": "year","name": "年份","value": [{"n": "全部","v": ""},{"n": "2024","v": "2024"},{"n": "2023","v": "2023"}, {"n": "2022","v": "2022"}, {"n": "2021","v": "2021"}, {"n": "2020","v": "2020"}, {"n": "2019","v": "2019"}, {"n": "2018","v": "2018"}, {"n": "2017","v": "2017"}, {"n": "2016","v": "2016"}, {"n": "2015","v": "2015"}, {"n": "2014","v": "2014"}, {"n": "2013","v": "2013"}, {"n": "2012","v": "2012"}, {"n": "2011","v": "2011"}, {"n": "2010","v": "2010"}]}]}
+301
View File
@@ -0,0 +1,301 @@
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;
};
}
function getMubans() {
var mubanDict = { // 模板字典
mxpro: {
title: '',
host: '',
// homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
"title": "h1&&Text;.module-info-tag&&Text",
"img": ".lazyload&&data-original",
"desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
"content": ".module-info-introduction&&Text",
"tabs": ".module-tab-item",
"lists": ".module-play-list:eq(#id) a"
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
},
mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/search/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
"title": "h1&&Text;.tag-link&&Text",
"img": ".module-item-pic&&img&&data-src",
"desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text",
"content": ".vod_content&&Text",
"tabs": ".module-tab-item",
"lists": ".module-player-list:eq(#id)&&.scroll-content&&a"
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
},
首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text",
"img": ".myui-content__thumb .lazyload&&data-original",
"desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text",
"content": ".content&&Text",
"tabs": ".nav-tabs:eq(0) li",
"lists": ".myui-content__list:eq(#id) li"
},
搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
// "Cookie": ""
},
// class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
"title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
"img": ".stui-content__thumb .lazyload&&data-original",
"desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
"content": ".detail&&Text",
"tabs": ".stui-vodlist__head h3",
"lists": ".stui-content__playlist:eq(#id) li"
},
搜索: 'ul.stui-vodlist__media:eq(0) li,ul.stui-vodlist:eq(0) li,#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
},
默认: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/-------------.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'MOBILE_UA',
},
play_parse: true,
lazy: '',
limit: 6,
double: true, // 推荐内容是否双层定位
},
vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
'User-Agent': 'UC_UA',
},
// class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
lazy: '',
limit: 6,
推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
"title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text",
"img": ".fed-list-info&&a&&data-original",
"desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text",
"content": ".fed-part-esan&&Text",
"tabs": ".fed-drop-boxs&&.fed-part-rows&&li",
"lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li"
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
},
海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
double: true,
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
"title": ".hl-infos-title&&Text;.hl-text-conch&&Text",
"img": ".hl-lazy&&data-original",
"desc": ".hl-infos-content&&.hl-text-conch&&Text",
"content": ".hl-content-text&&Text",
"tabs": ".hl-tabs&&a",
"lists": ".hl-plays-list:eq(#id)&&li"
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
'User-Agent': 'MOBILE_UA'
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
lazy: '',
推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
double: true,
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
"title": "h2&&Text;.deployment&&Text",
"img": ".lazy&&data-original",
"desc": ".deployment&&Text",
"content": ".ec-show&&Text",
"tabs": "#tag&&a",
"lists": ".play_list_box:eq(#id)&&li"
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
},
短视: {
title: '',
host: '',
// homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
'User-Agent': 'MOBILE_UA',
// "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
lazy: '',
limit: 6,
推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
double: true, // 推荐内容是否双层定位
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
"title": "h1&&Text;.content-rt&&p:eq(0)&&Text",
"img": ".img&&img&&data-src",
"desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text",
"content": ".zkjj_a&&Text",
"tabs": ".py-tabs&&option",
"lists": ".player:eq(#id) li"
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
},
短视2:{
title: '',
host: '',
class_name:'电影&电视剧&综艺&动漫',
class_url:'1&2&3&4',
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**',
searchable: 2,
quickSearch: 0,
headers:{'User-Agent':'MOBILE_UA'},
url: '/index.php/api/vod#type=fyclass&page=fypage',
filterable:0,//是否启用分类筛选,
filter_url:'',
filter: {},
filter_def:{},
detailUrl:'/index.php/vod/detail/id/fyid.html',
推荐:'.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
一级:'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
二级:{
"title":".slide-info-title&&Text;.slide-info:eq(3)--strong&&Text",
"img":".detail-pic&&data-original",
"desc":".fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text",
"content":"#height_limit&&Text",
"tabs":".anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a",
"tab_text":".swiper-slide&&Text",
"lists":".anthology-list-box:eq(#id) li"
},
搜索:'json:list;name;pic;;id',
}
};
return JSON.parse(JSON.stringify(mubanDict));
}
var mubanDict = getMubans();
var muban = getMubans();
export default {muban,getMubans};