parent
f74d24c2f2
commit
5cb75d947e
|
@ -1,5 +1,5 @@
|
|||
# tvboxtg
|
||||
#
|
||||
整体更新25.06.25
|
||||
整体更新25.06.29
|
||||
#
|
||||
The resources are sourced from the internet and are only used for learning purposes. Please delete them yourself 24 hours after using them for learning.
|
23
小米/api.json
23
小米/api.json
|
@ -171,6 +171,14 @@
|
|||
"api": "csp_AppRJ2",
|
||||
"ext": "sHR2rlsfjI4L3t4RXQMkn9mmg6Ofmy66+wcs9waIyn4hKqT9jG9s4kO6qzcu2OSqWS1/T+wfkqe+UwoipekwvcM11PTDrQqKYI8lmMXUc1vBHxp/2uWIw5HUoscBNWEb"
|
||||
},
|
||||
{
|
||||
"key": "云速",
|
||||
"name": "☁️云速",
|
||||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
"api": "csp_AppGet",
|
||||
"ext": "0evJofTC3SDpNrfOmmIChloowwLlacEkTpPXHQGvnuCpyCfTv9+5Hw5j0SotfVBcEq8fDKoU6OPigTkxuxrtKQW49bxv497xKTtkiqnzuYtFR20r0/AERsnnPXGiHNlAl7LsuYnvTFyIam1RXbHBPyoihFRMLrOuCIEjkigiDACt5Ab3Mljmzanr/arLhmiidNNE2nwe4WXh866ANBt6BpgAajtWgtcj7v6tywA72VqJepkhwiqJEwFD3ZI07QvYoSu93TELWKv8sIpK86TiWw=="
|
||||
},
|
||||
{
|
||||
"key": "QD4K",
|
||||
"name": "🐷猪猪",
|
||||
|
@ -213,6 +221,15 @@
|
|||
"playerType": 2,
|
||||
"ext": "7lj763gg0939790i413gi484k8058896highi4414h68l7g6hk8qiaojig9k2k289l9ik807i213k5j602"
|
||||
},
|
||||
{
|
||||
"key": "金牌app",
|
||||
"name": "💯爆炸",
|
||||
"type": 3,
|
||||
"api": "csp_Muou",
|
||||
"jar": "./jars/巧技.jar",
|
||||
"playerType": 2,
|
||||
"ext": "7lj763gg402i79425i3l85i6h848i295l5hiji5l828g3l3jjhg6kg7410lhjkqiaojij3ig1lg475178k7h0il4ig3h753h7hi516758699jh2g5h433li30gk11g73l90312h4g7"
|
||||
},
|
||||
{
|
||||
"key": "公公",
|
||||
"name": "🏠公共",
|
||||
|
@ -227,8 +244,8 @@
|
|||
"name": "🐀仓鼠",
|
||||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
"api": "csp_AppGet2",
|
||||
"ext": "sHR2rlsfjI4L3t4RXQMkn85YdqME5ZFXdHXyEUNrexXmXuKOZHlPhQJvT6ZKEMODJQuGTLg+gpKS+XoOxUH8DdjcutGqV/lfrY9l/Ww/J/LYA0AH34KTXsOeg1p5p+KSYaG5at+IT/dqPugeQjLLpkECHqWJpIs4B2evdM7dDIOBuPmMrT5lbU1yNZHMNkr8tConVxhS1qlq57WIByuNTQ=="
|
||||
"api": "csp_AppGet",
|
||||
"ext": "hN4H3ccT+y6iapwG7kunJ4SmldFmZ1hfH8vlRYDhyV5lfJpsQugjNIfE7uQfJXIgaAIWglsN2NfMYlZPot87Gre40WQdwciyfLKJ5Gg3XlHFpl7nLgatKdxJj3+4Jz2D77KnIzS2wHbydsXI1Bmc6NfBz1dN17CNgrwCehKFKGLFi556QQL4FFKyk7EDk3IdoABCDBSrssej/v08+FKRU/W1TJr5vaRY7V69vIrentbM69VlqA2KI4qXqc8H3VDSjekl5AY3Fakh9JGwniItdw=="
|
||||
},
|
||||
{
|
||||
"key": "咖啡",
|
||||
|
@ -236,7 +253,7 @@
|
|||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
"api": "csp_AppGet2",
|
||||
"ext": "N/01JeZBCBEQ0wOXNuAI/q97iGf3Y/QaLBH0kIoVdrmTkhIhx+6EMtUU6wfrlju+QX7XN4M9gXGJVIEMZgKYUCwM6KgbMpNxhhOH6nYmXoVYHv0cP5lhbLBYo7DCAkhAxkPrCjHFRgvXwPF5q5UdW7GGTBi7lkRvSimUHIl5hfbk1xA7FNs0GOoDzzqt9FLCO3PvhWaR6QVKFPLiVPct9x99q0yUl4JgaDFKPzQGL1BvGbCqIFyRrSAKGPiFlpiCuv2NjLFRQvx6umXk3/1A4EytR+ZHfPNuCguBgkOFqHg="
|
||||
"ext": "N/01JeZBCBEQ0wOXNuAI/q97iGf3Y/QaLBH0kIoVdrnKxCuUIWfVlZJJ8jMpxXfPucm5RSdtMJbZblSTMupL7o4AHp23ZTnVCED1wLkNnYb7h+sLlCKHgtQL85pn+AZBdptE/pamy+f2puhKSSeRI07QbGtIU5Fbic5xpcJ5MU+9fH6PEfB3QX/uyzdFsumzDJ++ARLNolCknuB7kEaO/QJkB80p/bbHByMUk70xWNrepv5Dw1CNScgAtTUG8WfFBDW2Pl0w/D5YFjARkkHXURcgZik1Cyof0JuhBjNXP0o="
|
||||
},
|
||||
{
|
||||
"key": "牛牛",
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
198
欧歌/api.json
198
欧歌/api.json
|
@ -4,9 +4,9 @@
|
|||
"spider": "./spider.jar",
|
||||
"lives": [
|
||||
{
|
||||
"name": "公众号【欧歌APP】仅供测试安装24小时后删除!.",
|
||||
"name": "公众号【光歌软件分享】严谨用于任何商业用途!",
|
||||
"type": 0,
|
||||
"url": "./lives/公众号【欧歌APP】仅供测试安装24小时后删除!..txt",
|
||||
"url": "./lives/公众号【光歌软件分享】严谨用于任何商业用途!.txt",
|
||||
"epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}",
|
||||
"logo":"https://live.fanmingming.cn/tv/{name}.png",
|
||||
"playerType":2,
|
||||
|
@ -22,20 +22,20 @@
|
|||
"sites": [
|
||||
{
|
||||
"key": "豆瓣2",
|
||||
"name": "📢公众号【欧歌APP】仅供测试安装24小时后删除!.",
|
||||
"name": "📢公众号【光歌软件分享】严谨用于任何商业用途!",
|
||||
"type": 3,
|
||||
"api": "csp_Douban",
|
||||
"searchable": 0
|
||||
},
|
||||
{
|
||||
"key": "豆瓣1",
|
||||
"name": "📢公众号【欧歌APP】仅供测试安装24小时后删除!.公告❤更新:6/22❤",
|
||||
"name": "📢公众号【光歌软件分享】严谨用于任何商业用途!公告❤更新:6/29❤",
|
||||
"type": 3,
|
||||
"api": "csp_Notice",
|
||||
"searchable": 0,
|
||||
"changeable": 0,
|
||||
"jar": "./jars/豆瓣1.jar",
|
||||
"ext": "https://xn--dkw0c.v.nxog.top/m/公告.php?b=公众号【欧歌APP】仅供测试安装24小时后删除!."
|
||||
"ext": "https://xn--dkw0c.v.nxog.top/m/公告.php?b=公众号【光歌软件分享】严谨用于任何商业用途!"
|
||||
},
|
||||
{
|
||||
"key": "csp_woog",
|
||||
|
@ -54,7 +54,7 @@
|
|||
],
|
||||
"url_key": "woog",
|
||||
"threadinfo": {
|
||||
"chunksize": 232,
|
||||
"chunksize": 222,
|
||||
"threads": 16
|
||||
}
|
||||
}
|
||||
|
@ -83,7 +83,7 @@
|
|||
],
|
||||
"url_key": "UC",
|
||||
"threadinfo": {
|
||||
"chunksize": 263,
|
||||
"chunksize": 207,
|
||||
"threads": 60
|
||||
}
|
||||
}
|
||||
|
@ -114,7 +114,7 @@
|
|||
],
|
||||
"url_key": "woog2",
|
||||
"threadinfo": {
|
||||
"chunksize": 279,
|
||||
"chunksize": 291,
|
||||
"threads": 16
|
||||
}
|
||||
}
|
||||
|
@ -274,24 +274,6 @@
|
|||
"api": "csp_Wwys",
|
||||
"ext": "https://www.wwgz.cn"
|
||||
},
|
||||
{
|
||||
"key": "顾我",
|
||||
"name": "💡顾我|影视",
|
||||
"type": 3,
|
||||
"playerType": 2,
|
||||
"api": "csp_AppYsV2",
|
||||
"ext": "http://121.62.21.14:520/api.php/app/"
|
||||
},
|
||||
{
|
||||
"key": "起点",
|
||||
"name": "💡起点|影视",
|
||||
"type": 3,
|
||||
"api": "csp_AppYsV2",
|
||||
"searchable": 1,
|
||||
"quickSearch": 1,
|
||||
"filterable": 1,
|
||||
"ext": "http://172.83.156.150:1010/api.php/app/"
|
||||
},
|
||||
{
|
||||
"key": "好感",
|
||||
"name": "💡好感|影视",
|
||||
|
@ -303,14 +285,39 @@
|
|||
"ext": "https://cs.hgyx.vip/api2/api.php/app/"
|
||||
},
|
||||
{
|
||||
"key": "QD4K",
|
||||
"name": "💡蝴蝴|影视",
|
||||
"key": "csp_nongmin",
|
||||
"name": "💡农民|影视",
|
||||
"type": 3,
|
||||
"api": "csp_AppYsV2",
|
||||
"api": "csp_Wwys",
|
||||
"searchable": 1,
|
||||
"quickSearch": 1,
|
||||
"filterable": 1,
|
||||
"ext": "http://172.83.156.150:1010/api.php/app/"
|
||||
"ext": "https://wwgz.cn/"
|
||||
},
|
||||
{
|
||||
"key": "csp_Jpys",
|
||||
"name": "💡金牌|影视",
|
||||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
"api": "csp_Jpys"
|
||||
},
|
||||
{
|
||||
"key": "huomaoys",
|
||||
"name": "💡火猫|影视",
|
||||
"type": 3,
|
||||
"api": "csp_Muou",
|
||||
"jar": "./jars/huomaoys.jar",
|
||||
"playerType": 2,
|
||||
"ext": "7lj763gg0939790i413gi484k8058896highi4414h68l7g6hk8qiaojig9k2k289l9ik807i213k5j602"
|
||||
},
|
||||
{
|
||||
"key": "爆炸",
|
||||
"name": "💡爆炸|影视",
|
||||
"type": 3,
|
||||
"api": "csp_Muou",
|
||||
"jar": "./jars/huomaoys.jar",
|
||||
"playerType": 2,
|
||||
"ext": "7lj763gg402i79425i3l85i6h848i295l5hiji5l828g3l3jjhg6kg7410lhjkqiaojij3ig1lg475178k7h0il4ig3h753h7hi516758699jh2g5h433li30gk11g73l90312h4g7"
|
||||
},
|
||||
{
|
||||
"key": "巧技",
|
||||
|
@ -318,37 +325,9 @@
|
|||
"type": 3,
|
||||
"api": "csp_qiao2",
|
||||
"playerType": 2,
|
||||
"jar": "./jars/巧技.jar",
|
||||
"jar": "./jars/huomaoys.jar",
|
||||
"ext": "7lj763gg402i79425739i7jghj118797l4hj840gi18633331l4708g2h7145403549g44l8ii56i187681hkjj3hhgh1ih3l32j250lk1k786lj20j468hk3hli4l46gig4i3g7g2722328j0136h01i7g5183k22k7gg3i72hk81gl8k9839kl7i0707"
|
||||
},
|
||||
{
|
||||
"key": "雨滴",
|
||||
"name": "👑雨滴|弹幕",
|
||||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
"api": "csp_AppGet",
|
||||
"ext": {
|
||||
"url": "https://c8w2ov7u5wg2z1o8p21c.aliyuncs.click:27899",
|
||||
"dataKey": "k9o3p2c8b7m3z0o8",
|
||||
"dataIv": "k9o3p2c8b7m3z0o8",
|
||||
"deviceId": "",
|
||||
"version": "100"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "星河",
|
||||
"name": "👑星河|弹幕",
|
||||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
"api": "csp_AppGet",
|
||||
"ext": {
|
||||
"url": "http://121.62.22.204:9876",
|
||||
"dataKey": "f5e2tx53ykp6s2c9",
|
||||
"dataIv": "f5e2tx53ykp6s2c9",
|
||||
"deviceId": "",
|
||||
"version": "361"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "橘子",
|
||||
"name": "👑橘子|弹幕",
|
||||
|
@ -364,35 +343,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"key": "晴天",
|
||||
"name": "👑晴天|弹幕",
|
||||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
"api": "csp_AppGet",
|
||||
"ext": {
|
||||
"url": "https://qjappcms.sun4k.top",
|
||||
"dataKey": "sBxqXVF5pAHbGzrH",
|
||||
"dataIv": "sBxqXVF5pAHbGzrH",
|
||||
"deviceId": "",
|
||||
"version": "119"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "人人",
|
||||
"name": "👑人人|弹幕",
|
||||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
"api": "csp_AppGet",
|
||||
"ext": {
|
||||
"url": "https://www.xiaohys.com",
|
||||
"dataKey": "ENonBHeVBoYZhVUV",
|
||||
"dataIv": "ENonBHeVBoYZhVUV",
|
||||
"deviceId": "298e5fe29c74b35aabb9836ee2f6f449f",
|
||||
"version": "166"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "若惜",
|
||||
"key": "1若惜",
|
||||
"name": "👑若惜|弹幕",
|
||||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
|
@ -459,34 +410,6 @@
|
|||
"jxurl": "https://www.ququkan.cc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "超前",
|
||||
"name": "👑超前|弹幕",
|
||||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
"api": "csp_AppGet",
|
||||
"ext": {
|
||||
"url": "https://app.ystva.com",
|
||||
"dataKey": "A1akVPQmnnE4Fz9Z",
|
||||
"dataIv": "A1akVPQmnnE4Fz9Z",
|
||||
"deviceId": "2112fc5eac600314ba95c4d65da9286b3",
|
||||
"version": "134"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "瓜萌",
|
||||
"name": "👑瓜萌|弹幕",
|
||||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
"api": "csp_AppGet",
|
||||
"ext": {
|
||||
"url": "https://www.guahd.com",
|
||||
"dataKey": "f2A7D4B9E8C16531",
|
||||
"dataIv": "f2A7D4B9E8C16531",
|
||||
"deviceId": "",
|
||||
"version": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "海豚",
|
||||
"name": "👑海豚|弹幕",
|
||||
|
@ -529,6 +452,13 @@
|
|||
"version": "102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "采集之王",
|
||||
"name": "🐢采集┃搜索",
|
||||
"type": 3,
|
||||
"api": "./api/drpy2.min.js",
|
||||
"ext": "./js/CJZW.js?type=url¶ms=./json/CJJT.json$1$1"
|
||||
},
|
||||
{
|
||||
"key": "csp_XYQHiker_农民影视",
|
||||
"name": "🧿农民|影视",
|
||||
|
@ -588,17 +518,6 @@
|
|||
"filterable": 1,
|
||||
"playerType": 2
|
||||
},
|
||||
{
|
||||
"key": "边缘",
|
||||
"name": "🧡边缘|PY影视",
|
||||
"type": 3,
|
||||
"api": "./api/边缘影视APP.py",
|
||||
"searchable": 1,
|
||||
"changeable": 1,
|
||||
"quickSearch": 1,
|
||||
"filterable": 1,
|
||||
"playerType": 2
|
||||
},
|
||||
{
|
||||
"key": "若惜",
|
||||
"name": "🧡若惜|PY影视",
|
||||
|
@ -610,17 +529,6 @@
|
|||
"filterable": 1,
|
||||
"playerType": 2
|
||||
},
|
||||
{
|
||||
"key": "悠悠",
|
||||
"name": "🧡悠悠|PY影视",
|
||||
"type": 3,
|
||||
"api": "./api/悠悠APP.py",
|
||||
"searchable": 1,
|
||||
"changeable": 1,
|
||||
"quickSearch": 1,
|
||||
"filterable": 1,
|
||||
"playerType": 2
|
||||
},
|
||||
{
|
||||
"key": "金牌影视PY",
|
||||
"name": "🧡金牌|PY影视",
|
||||
|
@ -961,20 +869,6 @@
|
|||
"version": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "稀饭动漫",
|
||||
"name": "🤣稀饭|动漫",
|
||||
"type": 3,
|
||||
"quickSearch": 1,
|
||||
"api": "csp_AppGet",
|
||||
"ext": {
|
||||
"url": "https://pzoap.moedot.net",
|
||||
"dataKey": "1yZ2Spn9krnzVKoC",
|
||||
"dataIv": "1yZ2Spn9krnzVKoC",
|
||||
"deviceId": "",
|
||||
"version": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "咕咕动漫",
|
||||
"name": "🤣咕咕|动漫",
|
||||
|
|
220
欧歌/api/悠悠APP.py
220
欧歌/api/悠悠APP.py
|
@ -1,220 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# by @嗷呜
|
||||
import re
|
||||
import sys
|
||||
from Crypto.Hash import MD5
|
||||
sys.path.append("..")
|
||||
from Crypto.Cipher import AES
|
||||
from Crypto.Util.Padding import pad, unpad
|
||||
from urllib.parse import quote, urlparse
|
||||
from base64 import b64encode, b64decode
|
||||
import json
|
||||
import time
|
||||
from base.spider import Spider
|
||||
|
||||
class Spider(Spider):
|
||||
|
||||
def init(self, extend=""):
|
||||
self.host = self.gethost()
|
||||
pass
|
||||
|
||||
def getName(self):
|
||||
pass
|
||||
|
||||
|
||||
def isVideoFormat(self, url):
|
||||
pass
|
||||
|
||||
def manualVideoCheck(self):
|
||||
pass
|
||||
|
||||
def action(self, action):
|
||||
pass
|
||||
|
||||
def destroy(self):
|
||||
pass
|
||||
|
||||
def homeContent(self, filter):
|
||||
data = self.getdata("/api.php/getappapi.index/initV119")
|
||||
dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序",
|
||||
"sort": "排序"}
|
||||
filters = {}
|
||||
classes = []
|
||||
json_data = data["type_list"]
|
||||
homedata = data["banner_list"][8:]
|
||||
for item in json_data:
|
||||
if item["type_name"] == "全部":
|
||||
continue
|
||||
has_non_empty_field = False
|
||||
jsontype_extend = json.loads(item["type_extend"])
|
||||
homedata.extend(item["recommend_list"])
|
||||
jsontype_extend["sort"] = "最新,最热,最赞"
|
||||
classes.append({"type_name": item["type_name"], "type_id": item["type_id"]})
|
||||
for key in dy:
|
||||
if key in jsontype_extend and jsontype_extend[key].strip() != "":
|
||||
has_non_empty_field = True
|
||||
break
|
||||
if has_non_empty_field:
|
||||
filters[str(item["type_id"])] = []
|
||||
for dkey in jsontype_extend:
|
||||
if dkey in dy and jsontype_extend[dkey].strip() != "":
|
||||
values = jsontype_extend[dkey].split(",")
|
||||
value_array = [{"n": value.strip(), "v": value.strip()} for value in values if
|
||||
value.strip() != ""]
|
||||
filters[str(item["type_id"])].append({"key": dkey, "name": dy[dkey], "value": value_array})
|
||||
result = {}
|
||||
result["class"] = classes
|
||||
result["filters"] = filters
|
||||
result["list"] = homedata[1:]
|
||||
return result
|
||||
|
||||
def homeVideoContent(self):
|
||||
pass
|
||||
|
||||
def categoryContent(self, tid, pg, filter, extend):
|
||||
body = {"area": extend.get('area', '全部'), "year": extend.get('year', '全部'), "type_id": tid, "page": pg,
|
||||
"sort": extend.get('sort', '最新'), "lang": extend.get('lang', '全部'),
|
||||
"class": extend.get('class', '全部')}
|
||||
result = {}
|
||||
data = self.getdata("/api.php/getappapi.index/typeFilterVodList", body)
|
||||
result["list"] = data["recommend_list"]
|
||||
result["page"] = pg
|
||||
result["pagecount"] = 9999
|
||||
result["limit"] = 90
|
||||
result["total"] = 999999
|
||||
return result
|
||||
|
||||
def detailContent(self, ids):
|
||||
body = f"vod_id={ids[0]}"
|
||||
data = self.getdata("/api.php/getappapi.index/vodDetail", body)
|
||||
vod = data["vod"]
|
||||
play = []
|
||||
names = []
|
||||
for itt in data["vod_play_list"]:
|
||||
a = []
|
||||
names.append(itt["player_info"]["show"])
|
||||
for it in itt['urls']:
|
||||
it['user_agent']=itt["player_info"].get("user_agent")
|
||||
it["parse"]=itt["player_info"].get("parse")
|
||||
a.append(f"{it['name']}${self.e64(json.dumps(it))}")
|
||||
play.append("#".join(a))
|
||||
vod["vod_play_from"] = "$$$".join(names)
|
||||
vod["vod_play_url"] = "$$$".join(play)
|
||||
result = {"list": [vod]}
|
||||
return result
|
||||
|
||||
def searchContent(self, key, quick, pg="1"):
|
||||
body = f"keywords={key}&type_id=0&page={pg}"
|
||||
data = self.getdata("/api.php/getappapi.index/searchList", body)
|
||||
result = {"list": data["search_list"], "page": pg}
|
||||
return result
|
||||
|
||||
def playerContent(self, flag, id, vipFlags):
|
||||
ids = json.loads(self.d64(id))
|
||||
h = {"User-Agent": (ids['user_agent'] or "okhttp/3.14.9")}
|
||||
try:
|
||||
if re.search(r'url=', ids['parse_api_url']):
|
||||
data = self.fetch(ids['parse_api_url'], headers=h, timeout=10).json()
|
||||
url = data.get('url') or data['data'].get('url')
|
||||
else:
|
||||
body = f"parse_api={ids.get('parse') or ids['parse_api_url'].replace(ids['url'], '')}&url={quote(self.aes(ids['url'], True))}&token={ids.get('token')}"
|
||||
b = self.getdata("/api.php/getappapi.index/vodParse", body)['json']
|
||||
url = json.loads(b)['url']
|
||||
if 'error' in url: raise ValueError(f"解析失败: {url}")
|
||||
p = 0
|
||||
except Exception as e:
|
||||
print('错误信息:', e)
|
||||
url, p = ids['url'], 1
|
||||
|
||||
if re.search(r'\.jpg|\.png|\.jpeg', url):
|
||||
url = self.Mproxy(url)
|
||||
result = {}
|
||||
result["parse"] = p
|
||||
result["url"] = url
|
||||
result["header"] = h
|
||||
return result
|
||||
|
||||
def localProxy(self, param):
|
||||
return self.Mlocal(param)
|
||||
|
||||
def gethost(self):
|
||||
headers = {
|
||||
'User-Agent': 'okhttp/3.14.9'
|
||||
}
|
||||
host = self.fetch('http://host.yyys.news/250123.txt', headers=headers).text
|
||||
return host.strip()
|
||||
|
||||
phend = {
|
||||
'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 11; M2012K10C Build/RP1A.200720.011)',
|
||||
'allowCrossProtocolRedirects': 'true'
|
||||
}
|
||||
|
||||
def aes(self, text,b=None):
|
||||
key = b"RuN9LRvwTRgpQnpK"
|
||||
cipher = AES.new(key, AES.MODE_CBC, key)
|
||||
if b:
|
||||
ct_bytes = cipher.encrypt(pad(text.encode("utf-8"), AES.block_size))
|
||||
ct = b64encode(ct_bytes).decode("utf-8")
|
||||
return ct
|
||||
else :
|
||||
pt = unpad(cipher.decrypt(b64decode(text)), AES.block_size)
|
||||
return pt.decode("utf-8")
|
||||
|
||||
def header(self):
|
||||
t = str(int(time.time()))
|
||||
header = {"Referer":self.host,
|
||||
"User-Agent": "okhttp/3.14.9", "app-version-code": "547", "app-ui-mode": "light",
|
||||
"app-api-verify-time": t, "app-user-device-id": self.md5(t),
|
||||
"app-api-verify-sign": self.aes(t,True),
|
||||
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}
|
||||
return header
|
||||
|
||||
def getdata(self, path, data=None):
|
||||
vdata = self.post(f"{self.host}{path}", headers=self.header(), data=data, timeout=10).json()['data']
|
||||
data1 = self.aes(vdata)
|
||||
return json.loads(data1)
|
||||
|
||||
def Mproxy(self, url):
|
||||
return f"{self.getProxyUrl()}&url={self.e64(url)}&type=m3u8"
|
||||
|
||||
def Mlocal(self, param,header=None):
|
||||
url = self.d64(param["url"])
|
||||
ydata = self.fetch(url, headers=header, allow_redirects=False)
|
||||
data = ydata.content.decode('utf-8')
|
||||
if ydata.headers.get('Location'):
|
||||
url = ydata.headers['Location']
|
||||
data = self.fetch(url, headers=header).content.decode('utf-8')
|
||||
parsed_url = urlparse(url)
|
||||
durl = parsed_url.scheme + "://" + parsed_url.netloc
|
||||
lines = data.strip().split('\n')
|
||||
for index, string in enumerate(lines):
|
||||
if '#EXT' not in string and 'http' not in string:
|
||||
last_slash_index = string.rfind('/')
|
||||
lpath = string[:last_slash_index + 1]
|
||||
lines[index] = durl + ('' if lpath.startswith('/') else '/') + lpath
|
||||
data = '\n'.join(lines)
|
||||
return [200, "application/vnd.apple.mpegur", data]
|
||||
|
||||
def e64(self, text):
|
||||
try:
|
||||
text_bytes = text.encode('utf-8')
|
||||
encoded_bytes = b64encode(text_bytes)
|
||||
return encoded_bytes.decode('utf-8')
|
||||
except Exception as e:
|
||||
print(f"Base64编码错误: {str(e)}")
|
||||
return ""
|
||||
|
||||
def d64(self,encoded_text):
|
||||
try:
|
||||
encoded_bytes = encoded_text.encode('utf-8')
|
||||
decoded_bytes = b64decode(encoded_bytes)
|
||||
return decoded_bytes.decode('utf-8')
|
||||
except Exception as e:
|
||||
print(f"Base64解码错误: {str(e)}")
|
||||
return ""
|
||||
|
||||
def md5(self, text):
|
||||
h = MD5.new()
|
||||
h.update(text.encode('utf-8'))
|
||||
return h.hexdigest()
|
||||
|
|
@ -1,340 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# by @嗷呜
|
||||
import binascii
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
import time
|
||||
import uuid
|
||||
from urllib.parse import urlparse
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
sys.path.append('..')
|
||||
from base.spider import Spider
|
||||
from base64 import b64encode, b64decode
|
||||
from Crypto.PublicKey import RSA
|
||||
from Crypto.Cipher import AES, PKCS1_v1_5
|
||||
from Crypto.Util.Padding import unpad, pad
|
||||
from Crypto.Hash import MD5
|
||||
|
||||
|
||||
class Spider(Spider):
|
||||
|
||||
def init(self, extend=""):
|
||||
self.host = self.gethost()
|
||||
pass
|
||||
|
||||
def getName(self):
|
||||
pass
|
||||
|
||||
def isVideoFormat(self, url):
|
||||
pass
|
||||
|
||||
def manualVideoCheck(self):
|
||||
pass
|
||||
|
||||
def destroy(self):
|
||||
pass
|
||||
|
||||
headers = {
|
||||
'AppID': '534',
|
||||
'app_id': '534',
|
||||
'version': '1.0.3',
|
||||
'package': 'com.hjmore.wallpaper',
|
||||
'user_id': '3507f394e83d2424',
|
||||
'user-id': '3507f394e83d2424',
|
||||
'app_name': 'lanlan',
|
||||
'app-name': 'lanlan',
|
||||
'Content-Type': 'application/json; charset=utf-8;',
|
||||
'User-Agent': 'okhttp/4.9.0'
|
||||
}
|
||||
|
||||
def homeContent(self, filter):
|
||||
hdata=self.getdata('/api.php/provide/index',self.getbody({'tid':'0'}))
|
||||
vlist=hdata['data'].get('tj',[])
|
||||
result = {}
|
||||
classes = []
|
||||
filters = {}
|
||||
for i in hdata['data']['sub_data']:
|
||||
id=str(i['type_id'])
|
||||
classes.append({'type_id': id, 'type_name': i['type_name']})
|
||||
if len(i['data']):
|
||||
vlist.extend(i['data'])
|
||||
with ThreadPoolExecutor(max_workers=len(classes)) as executor:
|
||||
results = executor.map(self.getf, classes)
|
||||
for id, ft in results:
|
||||
if len(ft):filters[id] = ft
|
||||
result['class'] = classes
|
||||
result['filters'] = filters
|
||||
result['list'] = vlist
|
||||
return result
|
||||
|
||||
def homeVideoContent(self):
|
||||
pass
|
||||
|
||||
def categoryContent(self, tid, pg, filter, extend):
|
||||
body={
|
||||
"tid": tid,
|
||||
"type": extend.get('type'),
|
||||
"lang": extend.get('lang'),
|
||||
"area": extend.get('area'),
|
||||
"year": extend.get('year'),
|
||||
"pg": pg
|
||||
}
|
||||
body = {k: v for k, v in body.items() if v is not None and v != ""}
|
||||
data=self.getdata('/api.php/provide/nav',self.getbody(body))
|
||||
result = {}
|
||||
result['list'] = data['data']['data']
|
||||
result['page'] = pg
|
||||
result['pagecount'] = 9999
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
return result
|
||||
pass
|
||||
|
||||
def detailContent(self, ids):
|
||||
data=self.getdata('/api.php/provide/vod',self.getbody({'ids':ids[0]}))
|
||||
vod=data['data']
|
||||
plist=[]
|
||||
names=[]
|
||||
for i in vod['vod_play_url']:
|
||||
ulist=[]
|
||||
names.append(i['name'].split(' ')[0])
|
||||
jdata={'parse':''}
|
||||
if i.get('parse') and isinstance(i['parse'], list) and len(i['parse']):
|
||||
jdata['parse']=self.e64(json.dumps(i['parse']))
|
||||
for j in i['data']:
|
||||
jdata['url']=j['url']
|
||||
ulist.append(f'{j["name"]}${self.e64(json.dumps(jdata))}')
|
||||
plist.append('#'.join(ulist))
|
||||
vod['vod_play_from']='$$$'.join(names)
|
||||
vod['vod_play_url']='$$$'.join(plist)
|
||||
vod.pop('cover_list', None)
|
||||
return {'list':[vod]}
|
||||
|
||||
def searchContent(self, key, quick, pg="1"):
|
||||
body={"wd":key,"tid":"0","pg":pg}
|
||||
data=self.getdata('/api.php/provide/search',self.getbody(body))
|
||||
vlist=[]
|
||||
for i in data['data']:
|
||||
i.pop('vod_play_from', None)
|
||||
vlist.append(i)
|
||||
return {'list':vlist,'page':pg}
|
||||
|
||||
def playerContent(self, flag, id, vipFlags):
|
||||
data=json.loads(self.d64(id))
|
||||
parse=data.get('parse')
|
||||
url,p,head = data.get('url'),1,''
|
||||
if parse:
|
||||
parse=json.loads(self.d64(parse))
|
||||
if not re.search(r'\.m3u8|.mp4|\.flv', url) and parse:
|
||||
for p in parse:
|
||||
try:
|
||||
data=self.fetch(f'{p}{url}',self.headers).json()
|
||||
url=data.get('data',{}).get('url') or data.get('url')
|
||||
head=data.get('data',{}).get('header') or data.get('header')
|
||||
p=0
|
||||
break
|
||||
except:
|
||||
p,url=1,data.get('url')
|
||||
head = {'User-Agent': 'okhttp/4.9.0'}
|
||||
return {'parse': p, 'url': url, 'header': head}
|
||||
|
||||
def localProxy(self, param):
|
||||
pass
|
||||
|
||||
def getf(self, map):
|
||||
ft,id =[], map['type_id']
|
||||
try:
|
||||
fdata = self.getdata('/api.php/provide/nav', self.getbody({'tid': id, 'pg': '1'}))
|
||||
dy = ['area', 'year', 'lang', 'type']
|
||||
fd = fdata['data']['type_extend']
|
||||
has_non_empty_field = False
|
||||
for key in dy:
|
||||
if key in fd and fd[key].strip() != "":
|
||||
has_non_empty_field = True
|
||||
break
|
||||
if has_non_empty_field:
|
||||
for dkey in fd:
|
||||
if dkey in dy and fd[dkey].strip() != "":
|
||||
values = fd[dkey].split(",")
|
||||
value_array = [{"n": value.strip(), "v": value.strip()} for value in values if
|
||||
value.strip() != ""]
|
||||
ft.append({"key": dkey, "name": dkey, "value": value_array})
|
||||
return (id, ft)
|
||||
except:
|
||||
return (id, ft)
|
||||
|
||||
def getskey(self):
|
||||
random_bytes = os.urandom(16)
|
||||
return binascii.hexlify(random_bytes).decode()
|
||||
|
||||
def getohost(self):
|
||||
url='https://bianyuan001.oss-cn-beijing.aliyuncs.com/huidu1.0.0.json'
|
||||
response = self.fetch(url, headers=self.headers).json()
|
||||
return response['servers'][0]
|
||||
|
||||
def gethost(self):
|
||||
body={
|
||||
"gr_rp_size": "1080*2272",
|
||||
"gr_app_list": "%E5%B1%8F%E5%B9%95%E5%BD%95%E5%88%B6%EF%BC%88com.miui.screenrecorder%29%0A%E5%A4%B8%E5%85%8B%EF%BC%88com.quark.browser%29%0A%E8%BE%B9%E7%BC%98%E8%A7%86%E9%A2%91%EF%BC%88com.hjmore.wallpaper%29%0A%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9%EF%BC%88tv.danmaku.bili%29%0A%E7%81%AB%E6%98%9F%E6%90%9C%E9%A2%98%EF%BC%88com.fenbi.android.souti%29%0A%E6%94%AF%E4%BB%98%E5%AE%9D%EF%BC%88com.eg.android.AlipayGphone%29%0AWPS%20Office%EF%BC%88cn.wps.moffice_eng%29",
|
||||
"gr_lal": "0.0%2C0.0",
|
||||
"gr_system_type": "android",
|
||||
"gr_device_imei": "3507f394e83d2424",
|
||||
"gr_app_version": "1.0.3",
|
||||
"gr_device_model": "Xiaomi%20M2012K10C%20%28Android%20%E7%89%88%E6%9C%AC%3A%2011%2C%20SDK%E7%89%88%E6%9C%AC%3A%2030%29",
|
||||
"gr_city": "%E8%B4%B5%E5%B7%9E%2C%E6%9C%AA%E7%9F%A5%2C%E6%9C%AA%E7%9F%A5",
|
||||
"requestId": self.uuid(),
|
||||
"timeStamp": str(int(time.time() * 1000)),
|
||||
"version": "1.0.3",
|
||||
"package": "com.hjmore.wallpaper",
|
||||
"userLoginToken": "",
|
||||
"app_id": "534",
|
||||
"appName": 2131951658,
|
||||
"device_id": "3507f394e83d2424",
|
||||
"device-id": "3507f394e83d2424",
|
||||
"oaid": "",
|
||||
"imei": "",
|
||||
"referer_shop": "边缘影视",
|
||||
"referer-shop": "边缘影视",
|
||||
"access_fine_location": 0,
|
||||
"access-fine-location": 0
|
||||
}
|
||||
ohost = self.getohost()
|
||||
data=self.getdata(f'/api.php/settings/grayscale_list',body,ohost)
|
||||
parsed_url = urlparse(data['data']['grayscale']['server_url'][0])
|
||||
domain = parsed_url.scheme + "://" + parsed_url.netloc
|
||||
return domain
|
||||
|
||||
def drsa(self, encrypted_data):
|
||||
private_key_pem = """-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDA5NWiAwRjH50/
|
||||
IJY1N0zLopa4jpuWE7kWMn1Qunu6SjBgTvNRmRUoPDHn54haLfbfXIa2X+/sIaMB
|
||||
/O3HhrpVsz55E5W2vpZ5fBYWh+M65bQERKTW+l72H7GR9x0yj3QPByzzfsj/QkyP
|
||||
81prpwR9i8yMe7yG9TFKqUQCPE+/GrhNU1Qf6nFmV+vMnlP9DantkwAt4fPOMZn3
|
||||
j4da65/1YQV+F5bYzaLenNVKbHf8U8fVYLZWIy4yk2Vpe4R2Z+JX/eHWsChE9hOu
|
||||
iFm02eTW5NJLZlWUxYrSE23VXi8oXSEdON3UEOrwSdAUh4SXxLZ9U7KpNVdTwWyR
|
||||
AS4GyzJ/AgMBAAECggEBAKzmcXefLLeNBu4mz30z7Go7es5DRcLoOudiqmFKRs1c
|
||||
4q/xFLj3drdx/WnZZ6ctvDPKRBYFOJF4NRz7Ekfew/c9i6oLnA8KFuceCs53T37j
|
||||
ltCclwT7t1L2ZbxovIsteuJdlDVOV+w2CVqez1Xfh27heKAT6ZEvBtfdkVBPr0uj
|
||||
oVwa2+XlJmYZw5dHeB7ySVeAQ+69zDuADB8OWxPWsv6Del+Fhf0kTHAw4WgqcYsd
|
||||
JUunCjgLdJUlDgXzH/M/Nj8NYVEuq6QpmhaktJ4fwn/F7u3lQllVCFKj5lr0Xb92
|
||||
y7lvQlGqMKX1oxf+P5c5/vie1kDx1Rj4S++flIcVlUECgYEA4BuxCZ1c8oOF98bs
|
||||
KTAONnnZniQ1BRt7rA+O9+++lDjxJhxkuthwjB9YzrnZtxHJtvIIie9Jv8MVfzHa
|
||||
p2woDtiEh3YYwmIlgNUFvTcGe++tTiEiLDcGc/xNhpvfbLaw9QB7/HQ+LT1QCMxJ
|
||||
ufdBrR98l0khIGjYqxDW3W5pV70CgYEA3Ff/9+GM2XI/EUSTYrpnwp5R5OsXz1DL
|
||||
3CFFgp1EPCNk/c3YNWnrUtTkfmKAlRqWIHfphvH/jS6jpGrfRxDggPwGMtBc134b
|
||||
brIM5i4KNj/EcE+w5g03HaKBf1ZihHDQ53c6wTn6IFOHJNSPRLqMNqRymfbclNyO
|
||||
lBMHQmB8yOsCgYBCdZPTwRnuRTi2WQRx1nFwkEQL1Lrwb80GInsIZc2DkTtaTPNG
|
||||
QadmtmkUrSK2Wo0SNsZ3eUHKn2TBmpw4KCfc9zKeJVSEWKy8fu+7xBSlLlebotHK
|
||||
gOrl/H1VHOZuC+OAVItwO1yw98zDPynh/0Q3ve2pw6MSRGV0nYLKmdKdlQKBgQCJ
|
||||
Ty1rw1qKhu9WS22tMIxIc3CFPxtvTeI8I1+1rVtAPq5Im2YIoyDKVXCucaO/RvoW
|
||||
8aLNPTELQe0oIJFTL+k3d9ZFBCNXBncB3GK9biNe+w3nD0IlmkamaQZZ2/M4pTUJ
|
||||
iPtMPlzomCS3ht5g7f9CbegcmgGLooYXMGRtsMMSUQKBgQCoj+3UciH2i+HyUla5
|
||||
1FxivjH3MqSTE4Q7OdzrELb6DoLYzjgWAbpG8HIuodD4uG5xz1oR5H7vkblf1itB
|
||||
hwOwDEiabyX76e/I3Q0ovwBV+9PMjM4UVU0kHoiu3Z2s90ckwNh58w3QH5fn9E0b
|
||||
fqMnB6uWze+xrXWijaOzVZhIZg==
|
||||
-----END RSA PRIVATE KEY-----"""
|
||||
private_key = RSA.import_key(private_key_pem)
|
||||
cipher = PKCS1_v1_5.new(private_key)
|
||||
decrypted_data = cipher.decrypt(b64decode(encrypted_data), None)
|
||||
return decrypted_data.decode('utf-8')
|
||||
|
||||
def ersa(self, data):
|
||||
public_key = """-----BEGIN PUBLIC KEY-----
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+0QMb3WDXjNBRovRhTLH
|
||||
g3d+CliZAva2tepWNNN0Pj6DgE3ZTnPR34iL/cjo9Jbd3dqAJs/YkKnFurGkDxz5
|
||||
TthIqvmz244wiFcHt+FGWoJsj5ZVvrH3pPwH85ggmI1DjxSJEUhB12Z9X6FGli8D
|
||||
drR9xeLe5y8vFekux8xCQ7pwH1mNQu4Wy32WVM8aLjmRjNzEWOvEMAWCRuwymEdS
|
||||
zlWoH53qk1dqd6DAmOJhWU2hH6Yt2ZY9LTaDGiHrS+g0DuwajAQzhbM8eonGYMph
|
||||
nP4q0UTHWEfaGR3HoILmeM32M+qF/UCGfgfR6tCMiXPoHwnD2zoxbZ2p+QlYuTZL
|
||||
vQIDAQAB
|
||||
-----END PUBLIC KEY-----"""
|
||||
key = RSA.importKey(public_key)
|
||||
cipher = PKCS1_v1_5.new(key)
|
||||
encrypted = cipher.encrypt(data.encode())
|
||||
return b64encode(encrypted).decode()
|
||||
|
||||
def eaes(self, data, key):
|
||||
key = key.encode('utf-8')
|
||||
cipher = AES.new(key, AES.MODE_ECB)
|
||||
padded = pad(data.encode('utf-8'), AES.block_size)
|
||||
encrypted = cipher.encrypt(padded)
|
||||
word = b64encode(encrypted).decode('utf-8')
|
||||
return word
|
||||
|
||||
def daes(self, encrypted_data, key):
|
||||
key = key.encode('utf-8')
|
||||
cipher = AES.new(key, AES.MODE_ECB)
|
||||
encrypted = b64decode(encrypted_data)
|
||||
decrypted = cipher.decrypt(encrypted)
|
||||
unpadded = unpad(decrypted, AES.block_size)
|
||||
return unpadded.decode('utf-8')
|
||||
|
||||
def getbody(self,params=None):
|
||||
body = {
|
||||
"requestId": self.uuid(),
|
||||
"timeStamp": str(int(time.time()*1000)),
|
||||
"version": "1.0.3",
|
||||
"package": "com.hjmore.wallpaper",
|
||||
"userLoginToken": "",
|
||||
"app_id": "534",
|
||||
"appName": 2131951658,
|
||||
"device_id": "3507f394e83d2424",
|
||||
"device-id": "3507f394e83d2424",
|
||||
"oaid": "",
|
||||
"imei": "",
|
||||
"referer_shop": "边缘影视",
|
||||
"referer-shop": "边缘影视",
|
||||
"access_fine_location": 0,
|
||||
"access-fine-location": 0
|
||||
}
|
||||
if params:
|
||||
body.update(params)
|
||||
return body
|
||||
|
||||
def getdata(self, path, body,host=None):
|
||||
jdata=json.dumps(body)
|
||||
msign = self.md5(jdata)
|
||||
skey = self.getskey()
|
||||
jsign={'key': skey,'sign': msign}
|
||||
Sign=self.ersa(json.dumps(jsign))
|
||||
header=self.headers.copy()
|
||||
header['Sign']=Sign
|
||||
dbody=self.eaes(jdata, skey)
|
||||
response = self.post(f'{host or self.host}{path}', headers=header, data=dbody)
|
||||
rdata=response.text
|
||||
if response.headers.get('Sign'):
|
||||
dkey=self.drsa(response.headers['Sign'])
|
||||
rdata=self.daes(rdata, dkey)
|
||||
return json.loads(rdata)
|
||||
|
||||
def e64(self, text):
|
||||
try:
|
||||
text_bytes = text.encode('utf-8')
|
||||
encoded_bytes = b64encode(text_bytes)
|
||||
return encoded_bytes.decode('utf-8')
|
||||
except Exception as e:
|
||||
print(f"Base64编码错误: {str(e)}")
|
||||
return ""
|
||||
|
||||
def d64(self,encoded_text):
|
||||
try:
|
||||
encoded_bytes = encoded_text.encode('utf-8')
|
||||
decoded_bytes = b64decode(encoded_bytes)
|
||||
return decoded_bytes.decode('utf-8')
|
||||
except Exception as e:
|
||||
print(f"Base64解码错误: {str(e)}")
|
||||
return ""
|
||||
|
||||
def md5(self,text):
|
||||
h = MD5.new()
|
||||
h.update(text.encode('utf-8'))
|
||||
return h.hexdigest()
|
||||
|
||||
def uuid(self):
|
||||
return str(uuid.uuid4())
|
||||
|
||||
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,141 @@
|
|||
[
|
||||
{
|
||||
"name": "360资源",
|
||||
"url": "https://360zy.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|连续剧|综艺|动漫|伦理片|体育|爽文短剧",
|
||||
"class_name": "H4sIALGjdWYC/zWRa3aCMBCFd5N9tAvomhRaFHoqcKpYrUd7VEQtCD6rYGAzee6iYYi/8s0kmZl7h/fPFO+RqKa8SKgdIV7chZ0j6qzZ/ReR+4p7Frc7dYLgCVAwUQ9r4t09M9+AIp/eippY22OtAN7Zkb5l3S+S25D7xiSP6j5yNWLXFGi2UemaWBzxslcTwZ/COKCX5yfETIcZY/i8u9A84akidykWUJr2LOoeoIkR88CHYZyU4y1Qu5TjEijfUjwAmiVaD+/DxNTN2K2E/sOQTWKg8x9dBkDHTE9Hl5EcWdqfenY3ewTDUIl4BCDiYWOjtzFTy9MB/NGBuBy5ZyKe7uqDTba0a/F9gURYSXPdWI1Z0FGzw456GSkW0sT0aiDx6rPTtFGP6O2kbvimEhdHu0SKESl/VPAhcKzKgJTwKOc+a7+rDarteHJQyZYl5sk/IOiszA8CAAA=",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&45&46&47&48&49&50&51&52&53"
|
||||
},
|
||||
{
|
||||
"name": "豪华资源",
|
||||
"url": "https://hhzyapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电视剧|电影|综艺|动漫|短剧|伦理片",
|
||||
"class_name": "H4sIALGjdWYC/zVPWw6CMBC8Tc/pI6D1w0eCKErCj1ofKBBjokg5DbsLt7Bdy1dnZrezMxS8WuWDVIKCF+hCYKqonluhO0X4zhglF/vg5sjskuIzt6ipTrT0SU4EzM6Nji2iaYFjj7UwNkusqRV8vhbhcImDkKdSuT2cbptSWtQ+ctBr54fVTYDvQcynjEABWzTvO+y1WzCRME578o/+J/StWlkKWOT4qdnhoLrId7L5Z0r1xLRc5D1hE0doWHe7mkOOUgpXXGaWkb5yyOPE1aLkbk78ALNMUSlMAQAA",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&20&23&24&25&26&27&28&30&31&32&33&34&35&36&37&38"
|
||||
},
|
||||
{
|
||||
"name": "速播资源",
|
||||
"url": "https://subocaiji.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|电视剧|动漫|综艺|短剧|伦理片",
|
||||
"class_name": "H4sIALGjdWYC/zWPWw6CMBBFd9N1+ohKNVGMiBpI+FHrAyJISHiV1bQzsAuZgl/39LY9k0En0zJh6GStWGoumF4/oH4zrOqWlwzLl5ZH5CvqlfSJ0EpgvjAk9rqoiMA6q5Kbd1yMtzC1YeKazvX7erT0dhyG6qvoLsPQXQxFQ9QFTwpsthSQf6BJDZ1uJtKYQtV3tJckVPLQzr5t5qlyw1QeaU+OG/Q/wA//h1CQctwtiHrJD0Ycn8r6AAAA",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27"
|
||||
},
|
||||
{
|
||||
"name": "红牛资源",
|
||||
"url": "https://www.hongniuzy2.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|连续剧|综艺|动漫|纪录片|伦理片|体育赛事|短剧",
|
||||
"class_name": "H4sIALGjdWYC/y2PXQ6CMBCEb9Nz+hOVaqIYFU0g8qRV1AgSEikUL9Pu1lvorj7Nl5nNZBbXlTOF8K89NjcnlcCm9VILNz1BeyGxJkE5ES5KvjERBgUMR0xq6eqGCPoh9CK+k+qfQrCzWrIXG6sVtcPzDl3JtD2wXBV2cyK3yKHu2Ctzknd65kE6c2bDNbwJf4tte8RwTLY1Kz94+Cq2eiYwpS8+mOVyptYAAAA=",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&21&29&30"
|
||||
},
|
||||
{
|
||||
"name": "新浪资源",
|
||||
"url": "https://api.xinlangapi.com",
|
||||
"parse_url": "",
|
||||
"api": "/xinlangapi.php/provide/vod/from/xlm3u8/",
|
||||
"cate_exclude": "电影|电视剧|动漫|综艺|纪录片|伦理片|体育|短剧",
|
||||
"class_name": "H4sIALGjdWYC/0WOXQ6CMBCEb9Nz+hOR+qAYETUh4UWtikaQkEihPU27W24hXU18msk3m53BuLaqZBjXTgSWC2YXF+hyhm3nuGQob1Ztkc89Nyr1DsMSpjNyYm2b1jsI90ZyuuPil8I4glFCLEkHTO4o+gP1wPsJuqLGVQGNJnYXqJf/Ffgd12dXSncnkqrwYrozRoH/adTGTV4Ms8fAP2ziC/TQAAAA",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24"
|
||||
},
|
||||
{
|
||||
"name": "黑木耳资源",
|
||||
"url": "https://www.heimuer.tv",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "^电影$|^电视剧$|^综艺$|^动漫$|^短剧$",
|
||||
"class_name": "H4sIALGjdWYC/0WSbXKCQAyGb8M5UQcRqgU7DFal2mllKBa/pqNjQexl2M1yi7LZpP2175PNJnkDEJ1FfbIgOqtsKLzMEv6HvH1aUN2UV1pdRA4c8Fwdb+oE1fCpneeowrG0M1Rx0qWiSl3xXWkle6G0Y4wt66bMdHV5PeijXedIsxSPfgHxFJ8MfNlfaAW9e7u4oxqdaATwD1BvUWVTatKNBVEF5GK9w3pfR3QS4CGLDO6PqOJjmxd45VyaKsbYbqxGK+w9em5KD6tXgXCuqOopVAlV7x6J/eDfD61IWwqOBNrYsuabWSqTggHHYMBJujl5zTgPQ7BR7w55UfNQ9h4IWnuo3nbs0mzNAKQrddpymjuBaE0gNpOmcjkt/1EXnyFKxP6V026lsv+ahmOxf+EbY5uammWaf8T4IzDOCeiDUxouiIGdcyZWN/ALQpTFCIwCAAA=",
|
||||
"class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63"
|
||||
},
|
||||
{
|
||||
"name": "暴风资源",
|
||||
"url": "https://bfzyapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影片|连续剧|综艺片|动漫片|伦理片|电影解说|体育|演员|新闻资讯",
|
||||
"class_name": "H4sIALGjdWYC/zWRa3aCMBCFd5N1+kIFj1VOLdbq0Z6iBq0VrI8qGN1MMhN20WSAP8x34c7NZMDRWYkDuh2mvEiKGVEwUy63BPUh1AJLyH11y4i6B2g65HN5SdB9l6lLX9OtEm9Ew7bep5b0c47Zj3EzNRUy5ZZgx/HxYilfT+AaEy02xkC+QQK3B/nGK5jtiM5/ahkQHZPK50Vw/6ZZimTStslmlaI4qRTmpEFSiSKxEJjdtUvjqiXPJ+1Clw2VoNxKUG4pTAiOivXQQjUPdXxi+VdL+Z59LcWrbvzq81SmPaYvRxw2GcZ7KsK3BYJYx6lyegwXdllmDOVELO/0cbSAxDc3ZLh56ounbieZhQxfElN0VDM/wWysr8UOuwICc4PVEeo9qGU6rLN8vFWbD1xn5snyplDXhm75cJqbnqUOHZlN5OPzH964N6gIAgAA",
|
||||
"class_url": "20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&65&66&67&68&69&70&71&72"
|
||||
},
|
||||
{
|
||||
"name": "量子资源",
|
||||
"url": "https://cj.lziapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影片|连续剧|动漫片|综艺片|伦理片|电影解说|体育|演员|新闻资讯",
|
||||
"class_name": "H4sIALGjdWYC/zWR607DMAyF3ybPCbuxDom1Yms3UTEJtmWI0bSMAr1kvEzspG9B46S/8h3b8XEcvSpBFjq4Y+bvWTcfEHCmm9YEtY3B4oTtuyclU6I47Yss6XmB4ykRj6BqLOFtiDcx1QXcZ3G+UXVAsSepam49uuMWfwXR7q0PW8Iz19cHSybLQa7pxjLH6krZ5IDpmaj8gX1MdMn9XdjzbjtzkzPbeZkPIjn0FoMgCy/8NPRGXzYIN4kX1G0QztsJ1R51OKMF0BoNfzXiiyn5aEafzHxfdDhmWmR0yMgeGAsjapjeM2xXEG36QN4ljSknJhNDGyfgVKgqdHnWvUwgWpDVzn7SP/ilxw64AQAA",
|
||||
"class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46"
|
||||
},
|
||||
{
|
||||
"name": "非凡资源",
|
||||
"url": "http://cj.ffzyapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影片|连续剧|动漫片|综艺片|伦理片",
|
||||
"class_name": "H4sIAFhXhmYC/zWQWw6CMBBFd8M6NUakfggmChKJ/ADViFpiiPIobqadwi6kQ/k7d153ZtShlLxQZGP1v4tqHpJQSzVtT2odk9srtHdDgkdIfjQWaVJOAas1Et3LqtEESw8WPtYRarLgnERNMHbmoqbaY8hC+L6Q4tsY1gQ5Vd1OU/9kkh+xw2VQdZgNUohypPIjEx/pzUyvTOgQ2tPmlp7sslkE6WgxC7QwwmyDN5qyWUybGIHTZjF5T0K0mfJsfECsP/cHYziM500BAAA=",
|
||||
"class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&36"
|
||||
},
|
||||
{
|
||||
"name": "索尼资源",
|
||||
"url": "https://suoniapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|电视剧|综艺|动漫|体育赛事|预告片|影视解说|爽文短剧|伦理|港台三级|两性课堂|写真热舞",
|
||||
"class_name": "H4sIAFlXhmYC/z1RbXaCMBC8TU7QW/RSip/oq8orxVp56hNoaqtFq1gFopfJZsMtGhLor93Z3czuTNBNgB0IuomkXbApwSyXdkpg8CHyrzJw5qPdI+D5ql1m2D+IVkdn1IFrVmaiORENT8/ZtOqK/itPbV2bM57Skl1sKd5GZVYsN7owjXS4xGWA8V6jow6YfgJ70VTJL4SenghpMetWR6rHiqYGimK8r4HeU2sx640i86YG5px/regaNZqqnjG7K5C74B54/kY4e5bWj0zmPB0SjL9x0iLyfCxDsW6DM9BEXizjFDpDokxWBksayPikHGTC6+FyVyri+TtOutVOfrExNeaoo01HRnfhXeuxaST8bQX4JRQNKuMbrCwC3Rn6S2ztZH9BHh7RfKzwbQhqKRAdi7UjmkP1hcrrJ8m26hRjfCiDDs9m/LYicD3xLMDNXZ4HRLYdcVoIa4ueQ3C0V52ixeBikcJKxH5s9vwBtOQp10cCAAA=",
|
||||
"class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&23&25&26&27&28&29&30&31&39&44&45&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63&64&65&66&67&68&69&70"
|
||||
},
|
||||
{
|
||||
"name": "快车资源",
|
||||
"url": "https://caiji.kczyapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|电视剧|综艺|动漫|预告片|伦理|影视解说|体育赛事|港台三级|两性课堂|写真热舞",
|
||||
"class_name": "H4sIAFZXhmYC/z1RbXaCMBC8TU7QW/RSip/oq8orxVp56hNoaqtFq1gFopfJZsMtGhLor93Z3czuTNBNgB0IuomkXbApwSyXdkpg8CHyrzJw5qPdI+D5ql1m2D+IVkdn1IFrVmaiORENT8/ZtOqK/itPbV2bM57Skl1sKd5GZVYsN7owjXS4xGWA8V6jow6YfgJ70VTJL4SenghpMetWR6rHiqYGimK8r4HeU2sx640i86YG5px/regaNZqqnjG7K5C74B54/kY4e5bWj0zmPB0SjL9x0iLyfCxDsW6DM9BEXizjFDpDokxWBksayPikHGTC6+FyVyri+TtOutVOfrExNeaoo01HRnfhXeuxaST8bQX4JRQNKuMbrCwC3Rn6S2ztZH9BHh7RfKzwbQhqKRAdi7UjmkP1hcrrJ8m26hRjfCiDDs9m/LYicD3xLMDNXZ4HRLYdcVoIa4ueQ3C0V52ixeBikcJKxH5s9vwBtOQp10cCAAA=",
|
||||
"class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&23&25&26&27&28&29&30&31&39&44&45&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63&64&65&66&67&68&69&70"
|
||||
},
|
||||
{
|
||||
"name": "️极速资源",
|
||||
"url": "https://jszyapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电视剧|电影|动漫|综艺|短剧|伦理片",
|
||||
"api": "/api.php/provide/vod/at/json/",
|
||||
"class_name": "H4sIAGJXhmYC/zVP0W7CMBD7m3znYKIQkICKUsaoxMsgsBUooEpQmn5N7i79iyVH+hTbsXw2JaVVEUglKClBXwXmipqpF9r9Gh8XRtujf3C1Y3bM8V54ZOo9zSOSQwHjg9GZRzS64ueAtTRzJtZUDM+XR9ib40fKv1IFH46+TCU9sucC9DLkYf0nIBpAxqecQAlHmMcJNjoYXCXM8o68q78JvWorKwGzAp8Nl9UL27/ZcmOqiYAf1a6j4HEhbmFH3ORZ0RFODIR6TfvdcON+TmnMy8YX0r/ceDcMG2l7cvf+AYiMpdZZAQAA",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&20&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38"
|
||||
},
|
||||
{
|
||||
"name": "光速资源",
|
||||
"url": "https://api.guangsuapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|电视剧|综艺|动漫|记录片|伦理片|体育赛事|短剧",
|
||||
"class_name": "H4sIAFVXhmYC/y2Oaw6CMBCEb9Nz+ohINVGMiBpJ+KNW4gskJPJoT9PulltIF3/Nl5nJ7GJYGpkzDEsrPMMFw6a1vGZmcYP27kTLGPmcmSjuY0fo5zCdEYmNqRpKufh7MA5gFBH5B11zSs+iO9I6PASqFdH3Dapw1CWpk+EiDv/A/kLeOoNKUb3InNhXZuTOber2ioFHJLd28rHlSddLhsmz7/0A4RcQUdYAAAA=",
|
||||
"class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&30&31"
|
||||
},
|
||||
{
|
||||
"name": "卧龙资源",
|
||||
"url": "https://collect.wolongzy.cc",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影片|连续剧|综艺片|动漫片|伦理片|电影解说|体育|短剧",
|
||||
"class_name": "H4sIAFZXhmYC/1WR0VLCQAxF/6bfqXQsbB9omYEq2JEHKqtQ2iIC0nbxZ5pk+Qt303VG307uZnJvsjQ9gtqTGHr6+4WaHQjpUdNqUVsNwjdst446lTIlqWmyRKM9+g9McgKXxhLex3iXcJ+Q7hVHT10tWHtWXS2tx209x6+SafluZEuYS7qOLUFU4eXK2uMrpjnT8QxZYkkXFagZ+y53LhxNmz8GHPt3niv6Qa4w1lHV7+kCuAIyeZsHrsBD9S+ak4lvpuVKl58e+iEOFuxdnKDu80SZXvHqMA4g+uAjDHJKJhw6LEltmMqCYt/r2jXFAf/B6WAFs5Yx/QEG4wmPmwEAAA==",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&22&23&24&25&26&27&30&31&32&33&37&38&39&42&43&44&45&46&48&49&51&54"
|
||||
},
|
||||
{
|
||||
"name": "天空资源",
|
||||
"url": "https://m3u8.tiankongapi.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|连续剧|动漫|综艺|伦理片|电影解说|体育赛事|短剧",
|
||||
"api": "/api.php/provide/vod/from/tkm3u8/",
|
||||
"class_name": "H4sIAFdXhmYC/zVQW3LCMAy8jc/JYygknSllCqGUTPkoYAphEqCB4uD0Mrbk3KK2Yn95V9autMJpqeWJodhrOcNoyMzfJ1ZHHXEGGcf6xaFmu4Df3CEd75RMXR+OTtAfEOITfa8cgu4rdBKHbK//hdG7EhHVktSWCcU7nJIC4xzlnmpLqQSnaatvS/w0eBwYVg8TCabXvFk8eeL2GReBzDdWFAitHTTjAu41ebX+raMVQJoF0ub0pLzpdRLIpfCbWIF7kK5l+JfJf5jeDH1u7NbNR01pexkmE8ozuKqKbqHkm+mdTblU4pnhyt32H73g+qZ2AQAA",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&44"
|
||||
},
|
||||
{
|
||||
"name": "百度云资源",
|
||||
"url": "https://api.apibdzy.com",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|电视剧|综艺|动漫|伦理片|纪录片|体育赛事|资讯",
|
||||
"class_name": "H4sIAFdXhmYC/zVP7W7CMAx8mzzn1vGVTgKqla4TSEgTLMAQLaBMkDZ9msRO32KNm/67O9t3Z0yl1VeGqXRiYrlgWNWOK2bjA9S/zNQ/uJwgn3rB6A2hbNMteoSzK7yNCYnEPiuP4HUJLxntcRGmMMuN4qTtRPtFOfAooLl71G6PJHzuKV+drF6RZ1ygPoVsTCvsq9pFCc+GLs4Cm7lHdvxnqoy0e0kC5YRfOucuYyCPonMYCDkML6+1USI83t8MpA8KJDpjlvhabSShXIRaRn+46Obk2qh35uTIXQrWjwKBfA75NpD2e2ST+B8HkFGOfQEAAA==",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&36&37&38&39"
|
||||
},
|
||||
{
|
||||
"name": "无尽资源",
|
||||
"url": "https://api.wujinapi.me",
|
||||
"parse_url": "",
|
||||
"cate_exclude": "电影|连续剧|综艺|动漫|伦理片|体育赛事|影视解说|短剧|预告片|资讯|公告|头条|港台三级|韩国伦理|西方伦理|日本伦理|两性课堂|写真热舞",
|
||||
"class_name": "H4sIAFhXhmYC/zVRWVbCQBC8zZxTwxp8CnliFI2AEhzUaIIQhSxwmeklt3Ayk/xVdVe/7qqmaQrlVvB5TvkXuFJQXrCbCRhtsPgUnHb5O66ZKgNyBwL8QKtqRMMtdnoGSQ+OeY3wcoIXvtG5suni8EFlrqk9lSqT9ZLqbYaHuEYwTvB4MotPN1pgar0IvJGAcI/PL0IVbzTpmz3ZB5R3NaoW740W79cYRAalfxD6Zj6U1azfGNECrW6JXjpOWhJJvbP1a2+zru1MS4ysJU5EvmfMjDY0NaZpFFP5YWrrQRNE5aSYjMmGi7ukPkuVt+z8cPqksitB8TdNOkK3WfZZrjjeC1qYD9gj24XWVUOKKUy3qngU/Lurx6vXrk7KpGyG1MGlTDbx2OAEr8/oHxti42qIOoR4ITk+wdIR0J9RsKDOFw/nAgMXVu0JsN5Vrx5eXumP639dcxnR0ITPXQ/3c5uJgONe5St6P/Ov/t045FVP5TN1Wgq6SXSn6pRwcP4BxMt0fHACAAA=",
|
||||
"class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&59"
|
||||
}
|
||||
]
|
|
@ -61,7 +61,6 @@ CCTV-6,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/
|
|||
CCTV-6,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226010/index.m3u8
|
||||
CCTV-6,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226468/1.m3u8
|
||||
CCTV-6,http://iptv.huuc.edu.cn/hls/cctv6hd.m3u8
|
||||
CCTV-7,http://119.32.12.17:2901/udp/224.1.100.27:11111
|
||||
CCTV-7,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225733
|
||||
CCTV-7,http://goo.bkpcp.top/mg/CCTV7
|
||||
CCTV-7,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000504/index.m3u8
|
||||
|
@ -72,7 +71,6 @@ CCTV-7,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/2
|
|||
CCTV-7,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226234/1.m3u8
|
||||
CCTV-7,http://iptv.huuc.edu.cn/hls/cctv7hd.m3u8
|
||||
CCTV-8,http://119.32.12.17:2901/udp/224.1.100.86:11111
|
||||
CCTV-8,http://113.57.93.165:9900/tsfile/live/0008_1.m3u8
|
||||
CCTV-8,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226008
|
||||
CCTV-8,http://goo.bkpcp.top/mg/cctv8
|
||||
CCTV-8,http://[2409:8087:74f0:22::9]:6410/270000001111/1110000309/index.m3u8
|
||||
|
@ -81,9 +79,10 @@ CCTV-8,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/
|
|||
CCTV-8,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226008/index.m3u8
|
||||
CCTV-8,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226485/1.m3u8
|
||||
CCTV-8,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226451/1.m3u8
|
||||
CCTV-8,http://[2409:8087:1a01:df::4051]:80/TVOD/88888888/224/3221225795/main.m3u8
|
||||
CCTV-9,http://119.32.12.17:2901/udp/224.1.100.29:11111
|
||||
CCTV-9,http://omnix.cn:4000/udp/225.1.8.9:8112
|
||||
CCTV-9,http://110.7.131.4:9901/tsfile/live/0008_2.m3u8?key=txiptv&playlive=1&authid=0
|
||||
CCTV-9,http://61.136.172.236:9901/tsfile/live/0009_1.m3u8
|
||||
CCTV-9,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225734
|
||||
CCTV-9,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000505/index.m3u8
|
||||
CCTV-9,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225734/index.m3u8
|
||||
|
@ -91,7 +90,6 @@ CCTV-9,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/
|
|||
CCTV-9,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225734/index.m3u8
|
||||
CCTV-9,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226944/1.m3u8
|
||||
CCTV-9,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226236/1.m3u8
|
||||
CCTV-10,http://123.129.70.178:9901/tsfile/live/0010_1.m3u8
|
||||
CCTV-10,http://z.b.bkpcp.top/m.php?id=CCTV-10科教科教
|
||||
CCTV-10,http://goo.bkpcp.top/mg/cctv10
|
||||
CCTV-10,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000506/index.m3u8
|
||||
|
@ -121,7 +119,6 @@ CCTV-12,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
CCTV-12,http://iptv.huuc.edu.cn/hls/cctv12hd.m3u8
|
||||
CCTV-12,http://lu.wqwqwq.sbs/itv/1000000005000265012.m3u8?cdn=ystenlive
|
||||
CCTV-13,http://ali-m-l.cztv.com/channels/lantian/channel21/1080p.m3u8
|
||||
CCTV-13,http://120.76.248.139/live/bfgd/4200000067.m3u8
|
||||
CCTV-13,https://event.pull.hebtv.com/jishi/cp1.m3u8
|
||||
CCTV-13,http://z.b.bkpcp.top/m.php?id=cctv13
|
||||
CCTV-13,http://j.x.bkpcp.top/jx/CCTV13HD
|
||||
|
@ -130,6 +127,7 @@ CCTV-13,https://ldncctvwbcdcnc.v.wscdns.com/ldncctvwbcd/cdrmldcctv13_1/index.m3u
|
|||
CCTV-13,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000510/index.m3u8
|
||||
CCTV-13,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226011/index.m3u8
|
||||
CCTV-13,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226537/index.m3u8
|
||||
CCTV-13,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226537/index.m3u8
|
||||
CCTV-14,http://119.32.12.17:2901/udp/224.1.100.80:11111
|
||||
CCTV-14,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225732
|
||||
CCTV-14,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000511/index.m3u8
|
||||
|
@ -188,16 +186,16 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
东方卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010054/1.m3u8
|
||||
东方卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226898/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0uh4lyjjBCCN7TCq21vSIQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
|
||||
东方卫视,http://iptv.huuc.edu.cn/hls/dfhd.m3u8
|
||||
浙江卫视,http://ali-m-l.cztv.com/channels/lantian/channel01/1080p.m3u8
|
||||
浙江卫视,http://8.138.7.223/tv/zjws.m3u8
|
||||
浙江卫视,http://ali-m-l.cztv.com:80/channels/lantian/channel001/1080p.m3u8
|
||||
浙江卫视,http://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8
|
||||
浙江卫视,http://ali-m-l.cztv.com/channels/lantian/channel01/1080p.m3u8
|
||||
浙江卫视,http://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8#mitv://generationnexxxt.com:19806/7bf4b3a65eaf421ab6d71bd8dcc4547a
|
||||
浙江卫视,http://zwebl02.cztv.com/live/channel011080P.m3u8?auth_key=2524708799-0-0-9a1229d8b9d311024ebea08c3fb1d63f
|
||||
浙江卫视,http://zhfivel02.cztv.com/channel01/1080p.m3u8?auth_key=2524708799-0-0-adde67b1b344fdd5e512f30a4ae31915
|
||||
浙江卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010070
|
||||
浙江卫视,http://z.b.bkpcp.top/m.php?id=zjws
|
||||
浙江卫视,http://goo.bkpcp.top/mg/zjws
|
||||
浙江卫视,http://l.cztvcloud.com/channels/lantian/SXpinghu3/720p.m3u8
|
||||
浙江卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000531/index.m3u8
|
||||
江苏卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010059
|
||||
江苏卫视,http://z.b.bkpcp.top/m.php?id=jsws
|
||||
江苏卫视,http://goo.bkpcp.top/mg/jsws
|
||||
|
@ -208,6 +206,7 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
江苏卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010059/1.m3u8
|
||||
江苏卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226897/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0BmO6uHF7WFoTed__Xr3NQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
|
||||
江苏卫视,http://iptv.huuc.edu.cn/hls/jshd.m3u8
|
||||
湖南卫视,http://113.57.93.165:9900/tsfile/live/0128_1.m3u8
|
||||
湖南卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010058
|
||||
湖南卫视,http://z.b.bkpcp.top/m.php?id=hunws
|
||||
湖南卫视,http://j.x.bkpcp.top/jx/HUNANHD
|
||||
|
@ -217,7 +216,6 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
湖南卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010058/1.m3u8
|
||||
湖南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226493/1.m3u8
|
||||
湖南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226509/1.m3u8
|
||||
湖南卫视,http://iptv.huuc.edu.cn/hls/hunanhd.m3u8
|
||||
广东卫视,http://satellitepull.cnr.cn/live/wxgdws/playlist.m3u8
|
||||
广东卫视,http://php.jdshipin.com:8880/TVOD/gsyd.php?id=9900000520
|
||||
广东卫视,http://z.b.bkpcp.top/m.php?id=gdws
|
||||
|
@ -238,7 +236,6 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
深圳卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
|
||||
深圳卫视,http://iptv.huuc.edu.cn/hls/szhd.m3u8
|
||||
深圳卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003873474.m3u8
|
||||
天津卫视,http://nas.hssvm.com:8888/udp/225.1.1.111:5002
|
||||
天津卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226459
|
||||
天津卫视,http://j.x.bkpcp.top/jx/TIANJHD
|
||||
天津卫视,http://[2409:8087:74f0:22::6]:6410/270000001128/9900000530/index.m3u8
|
||||
|
@ -248,6 +245,7 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
天津卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010069/1.m3u8
|
||||
天津卫视,http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225972/main.m3u8
|
||||
天津卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226246/1.m3u8
|
||||
天津卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226489/1.m3u8
|
||||
安徽卫视,http://satellitepull.cnr.cn/live/wxahws/playlist.m3u8
|
||||
安徽卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226391
|
||||
安徽卫视,http://j.x.bkpcp.top/jx/ANHUIHD
|
||||
|
@ -279,6 +277,7 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
辽宁卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226336/1.m3u8
|
||||
辽宁卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226488/1.m3u8
|
||||
河北卫视,http://satellitepull.cnr.cn/live/wxhebws/playlist.m3u8
|
||||
河北卫视,http://171.15.18.199:8180/TV00000000000000000035@HHZT
|
||||
河北卫视,http://php.fjl626.cn/hebei.php?id=hbws
|
||||
河北卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010101
|
||||
河北卫视,http://z.b.bkpcp.top/m.php?id=hbws
|
||||
|
@ -287,7 +286,6 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
河北卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226406/index.m3u8
|
||||
河北卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010101/1.m3u8
|
||||
河北卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
|
||||
河北卫视,http://[2409:8087:1a01:df::4035]:80/TVOD/88888888/224/3221225961/main.m3u8
|
||||
河南卫视,http://satellitepull.cnr.cn/live/wxhnws/playlist.m3u8
|
||||
河南卫视,http://tvpull.dxhmt.cn:9081/tv/11425-1.m3u8
|
||||
河南卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226480
|
||||
|
@ -348,6 +346,7 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
湖北卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226477/index.m3u8
|
||||
湖北卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010057/1.m3u8
|
||||
湖北卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226952/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EREB40lnZnCEwjRy7LZuhIQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
|
||||
广西卫视,http://123.163.114.72:85/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||
广西卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226549
|
||||
广西卫视,http://z.b.bkpcp.top/m.php?id=gxws
|
||||
广西卫视,https://mobilelive.gxtv.cn/live/gx_live1004/playlist.m3u8
|
||||
|
@ -357,7 +356,6 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
广西卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226549/index.m3u8
|
||||
广西卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226549/index.m3u8
|
||||
广西卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010099/1.m3u8
|
||||
广西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227010/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkAhb-89sxdm9fz6-heXCuw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
|
||||
东南卫视,http://satellitepull.cnr.cn/live/wx32fjws/playlist.m3u8
|
||||
东南卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010096
|
||||
东南卫视,http://z.b.bkpcp.top/m.php?id=dnws
|
||||
|
@ -414,7 +412,6 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
安多卫视,https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd
|
||||
兵团卫视,http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226439/index.m3u8
|
||||
甘肃卫视,http://qwt.zhibotv.top:2016/全网通.php?id=甘肃卫视
|
||||
甘肃卫视,http://61.138.128.226:19901/tsfile/live/0141_1.m3u8
|
||||
甘肃卫视,http://live.zohi.tv/video/s10001-fztv-3/index.m3u8
|
||||
甘肃卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010098
|
||||
甘肃卫视,http://z.b.bkpcp.top/m.php?id=gsws
|
||||
|
@ -423,6 +420,7 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
甘肃卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000023/index.m3u8
|
||||
甘肃卫视,http://[2409:8087:74f0:22::7]:6410/270000001111/1110000322/index.m3u8
|
||||
甘肃卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225633/index.m3u8
|
||||
甘肃卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010098/1.m3u8
|
||||
康巴卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225660
|
||||
康巴卫视,http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225660/index.m3u8
|
||||
康巴卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227027/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkHMvBpWz4rccMxNvSRekpQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
|
||||
|
@ -470,7 +468,6 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
三沙卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003887452.m3u8
|
||||
三沙卫视,https://livessws.hnntv.cn/live/ssws_02hnntv.m3u8?_upt=c509d0ea1747156492
|
||||
新疆卫视,http://satellitepull.cnr.cn/live/wxxjws/playlist.m3u8
|
||||
新疆卫视,http://61.138.128.226:19901/tsfile/live/0110_1.m3u8
|
||||
新疆卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225635
|
||||
新疆卫视,http://z.b.bkpcp.top/m.php?id=xjws
|
||||
新疆卫视,http://j.x.bkpcp.top/jx/XJWS
|
||||
|
@ -479,6 +476,7 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
新疆卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226923/1.m3u8
|
||||
新疆卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003887448.m3u8
|
||||
新疆卫视,http://goo.bkpcp.top/mg/xjws
|
||||
新疆卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227011/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ExAUu61iVvo_xYbANWJhgXw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND
|
||||
西藏卫视,http://qwt.zhibotv.top:2016/全网通.php?id=西藏卫视
|
||||
西藏卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225638
|
||||
西藏卫视,http://z.b.bkpcp.top/m.php?id=xzws
|
||||
|
@ -592,7 +590,6 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
广东体育,https://epg.pw/stream/7b470f9fc5c305db0c8622117b7b25ca00eb35ba3e93e865cf0ff9df5c736681.m3u8
|
||||
广东体育,http://cdn2.163189.xyz/live/gdty/stream.m3u8
|
||||
广东体育,http://cdn2.132.us.kg/live/gdty/stream.m3u8
|
||||
广东民生,http://119.32.12.17:2901/udp/224.1.100.4:11111
|
||||
广东民生,http://183.237.95.108:9901/tsfile/live/1032_1.m3u8?key=txiptv&playlive=0&authid=0
|
||||
广东民生,http://183.11.239.36:808/hls/18/index.m3u8
|
||||
广东新闻,https://satellitepull.cnr.cn/live/wxgdxwgb/playlist.m3u8
|
||||
|
@ -643,12 +640,12 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
海南少儿,http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000112/1.m3u8
|
||||
|
||||
河北频道,#genre#
|
||||
河北都市,http://php.fjl626.cn/hebei.php?id=hbds
|
||||
河北都市,https://jwplay.hebyun.com.cn/live/hbdstv/1500k/tzwj_video.m3u8#http://tv.pull.hebtv.com/jishi/dushipindao.m3u8?t=2510710360&k=4380da13735a230c080ce8ff404033af
|
||||
河北都市,http://jwplay.hebyun.com.cn/live/hbnmtv/1500k/tzwj_video.m3u8
|
||||
河北少儿科教,http://php.fjl626.cn/hebei.php?id=sekj
|
||||
|
||||
河南频道,#genre#
|
||||
河南都市,http://zzssw01.55555.io:9901/tsfile/live/1002_1.m3u8
|
||||
河南民生,http://61.163.181.78:85/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||
河南法治,http://www.cdnstv.com:6398/hls/1112/index.m3u8
|
||||
河南电视剧,http://www.cdnstv.com:6398/hls/1113/index.m3u8
|
||||
|
@ -657,7 +654,6 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
|
||||
湖北频道,#genre#
|
||||
湖北综合,http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072216f7da/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNLx3R3LdIBdA5q61lut1LwZcw4SC2tJubc%2Bq5t%2F61jvWCtjrJL0x%2BHncPgdmcbBW9I
|
||||
湖北经视,http://113.57.93.165:9900/tsfile/live/1017_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||
湖北经视,http://58.19.43.46:9901/tsfile/live/1017_1.m3u8
|
||||
湖北影视,http://58.19.43.46:9901/tsfile/live/1016_1.m3u8
|
||||
湖北教育,http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072a6cbbf6/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNKTFQuOKNd5i0HMa3ydMWIQ6kJ2fBJGJ77BLTXK72CqUYQsX3ZguYt0954s9hfZTfc
|
||||
|
@ -701,16 +697,12 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
哈尔滨新闻综合,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226434
|
||||
哈尔滨影视,http://111.43.126.240:9003/hls/5/index.m3u8
|
||||
哈尔滨影视,https://stream.hrbtv.net/yspd/sd/live.m3u8
|
||||
哈尔滨影视,http://stream.hrbtv.net/yspd/sd/live.m3u8
|
||||
哈尔滨影视,http://stream.hrbtv.net/yspd/sd/live.m3u8?zheild
|
||||
哈尔滨影视,http://stream.hrbtv.net/yspd/sd/live.m3u8
|
||||
哈尔滨资讯,http://stream.hrbtv.net/zxpd/sd/live.m3u8
|
||||
哈尔滨生活,http://111.43.126.240:9003/hls/3/index.m3u8
|
||||
哈尔滨生活,http://stream.hrbtv.net/shpd/sd/live.m3u8
|
||||
哈尔滨生活,https://stream.hrbtv.net/shpd/sd/live.m3u8
|
||||
哈尔滨生活,http://stream.hrbtv.net/shpd/sd/live.m3u8?zheild
|
||||
哈尔滨娱乐,https://stream.hrbtv.net/ylpd/sd/live.m3u8
|
||||
哈尔滨娱乐,http://stream.hrbtv.net/ylpd/sd/live.m3u8
|
||||
哈尔滨娱乐,http://stream.hrbtv.net/ylpd/sd/live.m3u8?zheild#http://stream.hrbtv.net/ylpd/sd/live.m3u8#https://stream.hrbtv.net/ylpd/sd/live.m3u8
|
||||
|
||||
吉林频道,#genre#
|
||||
吉林乡村,https://satellitepull.cnr.cn/live/wxjlxcgb/playlist.m3u8
|
||||
|
@ -762,15 +754,14 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
辽宁都市,https://ls.qingting.fm/live/1099/64k.m3u8
|
||||
辽宁影视剧,http://120.76.248.139/live/bfgd/4200000070.m3u8
|
||||
辽宁生活,http://120.76.248.139/live/bfgd/4200000073.m3u8
|
||||
辽宁生活,http://dassby.qqff.top:99/live/辽宁生活/index.m3u8
|
||||
辽宁教育青少,http://120.76.248.139/live/bfgd/4200000075.m3u8
|
||||
辽宁教育青少,http://dassby.qqff.top:99/live/辽宁教育青少/index.m3u8
|
||||
辽宁北方,http://120.76.248.139/live/bfgd/4200000071.m3u8
|
||||
朝阳新闻综合,http://120.76.248.139/live/bfgd/4200000282.m3u8
|
||||
|
||||
内蒙古频道,#genre#
|
||||
内蒙古文体娱乐,https://livestream-bt.nmtv.cn/nmtv/2319general.m3u8?txSecret=c7b5c515d2bb6df442492d54955329a3&txTime=771E8800
|
||||
内蒙古经济生活,https://ls.qingting.fm/live/1885/64k.m3u8
|
||||
内蒙古农牧,http://play1-qk.nmtv.cn:80/live/1686561299036179.m3u8
|
||||
内蒙古农牧,https://livestream-bt.nmtv.cn/nmtv/2320general.m3u8?txSecret=4d368a175afa19737a9f5be10af24fe2&txTime=771E8800
|
||||
内蒙古少儿,https://livestream-bt.nmtv.cn/nmtv/2318general.m3u8?txSecret=a2c948908728a0733cecbe1fadea23dc&txTime=771E8800
|
||||
|
||||
|
@ -784,7 +775,7 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
安多卫视,https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd
|
||||
|
||||
山东频道,#genre#
|
||||
山东齐鲁,http://123.130.84.106:8154/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||
山东齐鲁,http://124.128.73.58:9901/tsfile/live/1000_1.m3u8
|
||||
山东齐鲁,http://111.14.181.15:9901/tsfile/live/1000_1.m3u8
|
||||
山东文旅,http://58.57.40.22:9901/tsfile/live/1023_1.m3u8
|
||||
山东综艺,http://123.129.70.178:9901/tsfile/live/1001_1.m3u8
|
||||
|
@ -796,7 +787,9 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
山西频道,#genre#
|
||||
|
||||
陕西频道,#genre#
|
||||
陕西新闻资讯,http://124.116.183.146:9901/tsfile/live/1000_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||
陕西都市青春,http://112.46.105.20:8009/hls/19/index.m3u8
|
||||
陕西都市青春,http://124.116.183.146:9901/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0
|
||||
农林卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226544/1.m3u8
|
||||
|
||||
四川频道,#genre#
|
||||
|
@ -900,9 +893,7 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/
|
|||
CGTN,https://0472.org/hls/cgtn.m3u8
|
||||
CGTN,https://news.cgtn.com/resource/live/english/cgtn-news.m3u8
|
||||
CGTN阿语,https://0472.org/hls/cgtna.m3u8
|
||||
CGTN俄语,http://russian-livews.cgtn.com/hls/LSvexABhNipibK5KRuUkvHZ7220802LSTeze9o8tdFXMHsb1VosgoT220802cd.m3u8
|
||||
CGTN俄语,https://0472.org/hls/cgtne.m3u8
|
||||
CGTN法语,http://espanol-liveali.cgtn.com/hls/LSveOGBaBw41Ea7ukkVAUdKQ220802LSTexu6xAuFH8VZNBLE1ZNEa220802cd.m3u8
|
||||
CGTN法语,https://0472.org/hls/cgtnf.m3u8
|
||||
CGTN纪录,https://0472.org/hls/cgtnd.m3u8
|
||||
CGTN西语,https://0472.org/hls/cgtnx.m3u8
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
BIN
王二小/spider.jar
BIN
王二小/spider.jar
Binary file not shown.
376
肥猫/api.json
376
肥猫/api.json
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"spider": "./spider.jar",
|
||||
"wallpaper": "http://ceshi.xn--z7x900a.com/ppic/feimao.php",
|
||||
"logo": "http://ceshi.xn--z7x900a.com/panda/0262.png",
|
||||
"wallpaper": "http://ppic/feimao.php",
|
||||
"logo": "http://panda/0262.png",
|
||||
"sites": [
|
||||
{
|
||||
"key": "drpy_js_豆瓣",
|
||||
|
@ -95,31 +95,94 @@
|
|||
},
|
||||
{
|
||||
"key": "潮流",
|
||||
"name": "🏜┃潮流┃影视",
|
||||
"name": "🏜┃潮流┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppRJ",
|
||||
"ext": "sHR2rlsfjI4L3t4RXQMkn9mmg6Ofmy66+wcs9waIyn4hKqT9jG9s4kO6qzcu2OSqWS1/T+wfkqe+UwoipekwvcM11PTDrQqKYI8lmMXUc1vBHxp/2uWIw5HUoscBNWEb"
|
||||
"ext": "vxw35/hHSj07Q+maxQzOVMq1rjRCOTXpUCx8iKu5jIg="
|
||||
},
|
||||
{
|
||||
"key": "梦回",
|
||||
"name": "🏈┃梦回┃影视",
|
||||
"name": "🏈┃梦回┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppRJ",
|
||||
"ext": "sHR2rlsfjI4L3t4RXQMkn9NPgTvCXvJVoUvXJHT6PqBNTg88Q5I4mc95m2RizprWhdAIQNMU/HShly4WRNzUsfhvqzHXHhHD57G7QagNV0Cx+WDSBgm0uZMAbZVHmzjM"
|
||||
"ext": "Z2MNziRBwjQxqaBuUxNkDRyvTntIkN1cOXhjyWgjCTc="
|
||||
},
|
||||
{
|
||||
"key": "星辉",
|
||||
"name": "🦢┃星辉┃影视",
|
||||
"name": "🦢┃星辉┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppRJ",
|
||||
"ext": "sHR2rlsfjI4L3t4RXQMknxhunFUlA4159TKiKvIPpfcM1xianxebcSLajBbwFymqC+z9WoGzQYbh7FSvh8KdiC0BKF0CalaPaCEMOZm+ClGEeNzXAaR0FnrV04SiB2NK"
|
||||
"ext": "jsSMEuhTZIAHjnUoLBzKdlRu5exzno6M4efF8LzwjWM="
|
||||
},
|
||||
{
|
||||
"key": "菲儿",
|
||||
"name": "🍁┃菲菲┃影视",
|
||||
"key": "肥猫",
|
||||
"name": "🐼┃肥猫┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppFerr",
|
||||
"ext": "sHR2rlsfjI4L3t4RXQMkn/M3t4AXAKTrZj3tfhm1t/gMT3dOrHqIzUNqLUEOIDMvllTbX6e1hMhB2mfpOaCmHNOL1yBB3SmxNyqXlai90EIpdnwOOgCR9Z+YwCTj6ySjzJ2VBiH3eXeOGcavcNeVRA=="
|
||||
"api": "csp_AppGet",
|
||||
"ext": "4wSF77WNzVYxpDQF3Vf/eAoVqKf1nKdv5MpKtrhokKJN288M3lP16ZeoM36I71sJ"
|
||||
},
|
||||
{
|
||||
"key": "干饭",
|
||||
"name": "🍚┃干饭┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppGet",
|
||||
"ext": "Ygx7wpu8Zcm70i88iO9WMRvxQZdMqIapMqvlBKPmjCP60xrvslJlJFIwHepviTkKbgCK9nn25i0k7xnWVX0Y7g=="
|
||||
},
|
||||
{
|
||||
"key": "光盘",
|
||||
"name": "📀┃光盘┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppGet",
|
||||
"ext": "5ztMiKPUcHLR7TRusm5rHsPgFhlXstdsZuadxKTvmldCWgloYKsAMQA+2Sr7eCUj"
|
||||
},
|
||||
{
|
||||
"key": "行动",
|
||||
"name": "😌┃行动┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppSy",
|
||||
"ext": "iUYplHbim/qVptUBrzCuqk72erYn+xHvZVGawkGUOqtLGtiWlDcWpUagYzdfPYeECbG+IjVf7Mhz2ZqZ70k6X72tkUhQDNEpIN/XScTGlUE="
|
||||
},
|
||||
{
|
||||
"key": "再来",
|
||||
"name": "✌️┃再来┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppGet",
|
||||
"ext": "gKqtScS9maa2YW8G9NNOtUsSxDvraRvNMDiazqRUzDYklDH0MMxfu9ZPgRdHKBcI"
|
||||
},
|
||||
{
|
||||
"key": "一碗",
|
||||
"name": "🥣┃一碗┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppGet",
|
||||
"ext": "cOS1UvSbYM3xW1jXF4QBcYkSAhpFDDoh7c53wGBZEyxDhNunH+Feq+RreiUkQsV1"
|
||||
},
|
||||
{
|
||||
"key": "猫抓",
|
||||
"name": "🐱┃猫抓┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppGet",
|
||||
"ext": "iUYplHbim/qVptUBrzCuqmzk48cRdrCU+TvWjkRayUR3VnXktGT5Xk3xOdnrzb1IN9MUDdYRVCdA3H9+5eszqQ=="
|
||||
},
|
||||
{
|
||||
"key": "仓鼠",
|
||||
"name": "🐹┃耗子┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppGet",
|
||||
"ext": "uOx4WoHPKe5LbDsNX+u7yPwU6Ups0duUFWxZbQqPo2oF+jkgV7jbW6aOO1kS4+9PdDFoRHhRxKKvcUOgzloTKw=="
|
||||
},
|
||||
{
|
||||
"key": "蔬菜",
|
||||
"name": "🫛┃蔬菜┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppGet",
|
||||
"ext": "II6EBjEX9APRjw9zkvfuusSMPTiiXvPm9pK9Zv0wFaq4AWWODp1x+otEA1t0ZFTSq+p0AmaiQvE9cq5Hdl/Vlg=="
|
||||
},
|
||||
{
|
||||
"key": "黑猫",
|
||||
"name": "🐼┃黑猫┃APP",
|
||||
"type": 3,
|
||||
"api": "csp_AppGet",
|
||||
"ext": "cLeOXZXsq65z+2s8qkWsD+GYhlTxoLn2cNnZiAXyiQPBfOCR3nVfgmZWdkvjSaqJFD9Bmb+U0RVCI9wv8BMVIg=="
|
||||
},
|
||||
{
|
||||
"key": "csp_Jpys",
|
||||
|
@ -147,12 +210,6 @@
|
|||
"api": "csp_FourK",
|
||||
"ext": "https://www.4kvm.tv"
|
||||
},
|
||||
{
|
||||
"key": "csp_Siren",
|
||||
"name": "🎉️┃私人┃影城",
|
||||
"type": 3,
|
||||
"api": "csp_Siren"
|
||||
},
|
||||
{
|
||||
"key": "csp_Lkdy",
|
||||
"name": "🏔️┃来看┃影视",
|
||||
|
@ -263,18 +320,6 @@
|
|||
"ratio": 1.333
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "csp_YouShengBook",
|
||||
"name": "📚┃六月┃听书",
|
||||
"type": 3,
|
||||
"playerType": "2",
|
||||
"api": "csp_TingBook",
|
||||
"searchable": 0,
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.333
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "csp_Dm84",
|
||||
"name": "🤣┃动漫┃巴士",
|
||||
|
@ -310,52 +355,31 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "酷奇",
|
||||
"name": "🎤┃酷奇┃MV",
|
||||
"type": 3,
|
||||
"api": "./api/drpy2.min.js",
|
||||
"searchable": 0,
|
||||
"quickSearch": 0,
|
||||
"ext": "./js/酷奇MV.js"
|
||||
},
|
||||
{
|
||||
"key": "MTV",
|
||||
"name": "🎧┃明星┃MV",
|
||||
"type": 3,
|
||||
"api": "csp_Bili",
|
||||
"searchable": 0,
|
||||
"quickSearch": 0,
|
||||
"ext": "./json/MTV.json"
|
||||
"playerType": 2,
|
||||
"ext": {
|
||||
"json": "https://img2.gelonghui.com/library/2b4eb-8fb08a6b-f9f1-48d8-816a-1bc712a85fefnull",
|
||||
"cookie": ""
|
||||
},
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.333
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "虎牙直播js",
|
||||
"name": "🐯┃虎牙┃直播",
|
||||
"key": "娱乐",
|
||||
"name": "🎮┃游戏┃娱乐",
|
||||
"type": 3,
|
||||
"api": "./api/drpy2.min.js",
|
||||
"searchable": 0,
|
||||
"quickSearch": 0,
|
||||
"playerType": 1,
|
||||
"ext": "./js/huya2.js"
|
||||
},
|
||||
{
|
||||
"key": "斗鱼js",
|
||||
"name": "🐟┃斗鱼┃直播",
|
||||
"type": 3,
|
||||
"api": "./api/drpy2.min.js",
|
||||
"searchable": 0,
|
||||
"quickSearch": 0,
|
||||
"playerType": 1,
|
||||
"ext": "./js/斗鱼直播.js"
|
||||
},
|
||||
{
|
||||
"key": "聚短视频js",
|
||||
"name": "📽┃️聚短┃视频",
|
||||
"type": 3,
|
||||
"api": "./api/drpy2.min.js",
|
||||
"searchable": 0,
|
||||
"quickSearch": 0,
|
||||
"ext": "./js/短视频.js"
|
||||
"api": "./api/LIVES.py",
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.333
|
||||
},
|
||||
"ext": ""
|
||||
},
|
||||
{
|
||||
"key": "看球",
|
||||
|
@ -411,60 +435,64 @@
|
|||
"ext": "./js/兔小贝.js"
|
||||
},
|
||||
{
|
||||
"key": "少儿",
|
||||
"key": "csp_少儿",
|
||||
"name": "📚┃少儿┃教育",
|
||||
"type": 3,
|
||||
"api": "csp_Bili",
|
||||
"searchable": 0,
|
||||
"quickSearch": 0,
|
||||
"changeable": 0,
|
||||
"playerType": 2,
|
||||
"ext": {
|
||||
"json": "https://img2.gelonghui.com/library/1903b-eb0f1675-2437-4e72-bcf0-427b1626d79fnull",
|
||||
"cookie": ""
|
||||
},
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.597
|
||||
},
|
||||
"ext": "./json/少儿教育.json"
|
||||
"ratio": 1.333
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "小学",
|
||||
"key": "csp_小学",
|
||||
"name": "📚┃小学┃课堂",
|
||||
"type": 3,
|
||||
"api": "csp_Bili",
|
||||
"searchable": 0,
|
||||
"quickSearch": 0,
|
||||
"changeable": 0,
|
||||
"playerType": 2,
|
||||
"ext": {
|
||||
"json": "https://img2.gelonghui.com/library/a1140-144855fe-3eaa-44f3-b689-6812c233de54null",
|
||||
"cookie": ""
|
||||
},
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.597
|
||||
},
|
||||
"ext": "./json/小学课堂.json"
|
||||
"ratio": 1.333
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "初中",
|
||||
"key": "csp_初中",
|
||||
"name": "📚┃初中┃课堂",
|
||||
"type": 3,
|
||||
"api": "csp_Bili",
|
||||
"searchable": 0,
|
||||
"quickSearch": 0,
|
||||
"changeable": 0,
|
||||
"playerType": 2,
|
||||
"ext": {
|
||||
"json": "https://img2.gelonghui.com/library/ba156-73e16cad-8257-4f33-b8c0-e051e72e546dnull",
|
||||
"cookie": ""
|
||||
},
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.597
|
||||
},
|
||||
"ext": "./json/初中课堂.json"
|
||||
"ratio": 1.333
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "高中",
|
||||
"key": "csp_高中",
|
||||
"name": "📚┃高中┃课堂",
|
||||
"type": 3,
|
||||
"api": "csp_Bili",
|
||||
"searchable": 0,
|
||||
"quickSearch": 0,
|
||||
"changeable": 0,
|
||||
"playerType": 2,
|
||||
"ext": {
|
||||
"json": "https://img2.gelonghui.com/library/e44b3-4a82ab48-e014-49b2-bb66-ee5207e8f195null",
|
||||
"cookie": ""
|
||||
},
|
||||
"style": {
|
||||
"type": "rect",
|
||||
"ratio": 1.597
|
||||
},
|
||||
"ext": "./json/高中课堂.json"
|
||||
"ratio": 1.333
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "push_agent",
|
||||
|
@ -535,5 +563,161 @@
|
|||
"url": "./lives/live.txt",
|
||||
"epg": "http://epg.112114.xyz/?ch={name}&date={date}"
|
||||
}
|
||||
],
|
||||
"rules": [
|
||||
{
|
||||
"name": "♻️量非",
|
||||
"hosts": [
|
||||
"lz",
|
||||
"vip.lz",
|
||||
"v.cdnlz",
|
||||
"hd.lz",
|
||||
"ffzy",
|
||||
"vip.ffzy",
|
||||
"hd.ffzy"
|
||||
],
|
||||
"regex": [
|
||||
"#EXT-X-DISCONTINUITY\r*\n*#EXTINF:6.666667,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
||||
"#EXT-X-DISCONTINUITY\r*\n*#EXTINF:6.600000,[\\s\\S]*?#EXT-X-DISCONTINUITY"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️索尼",
|
||||
"hosts": [
|
||||
"suonizy",
|
||||
"qrssv.com"
|
||||
],
|
||||
"regex": [
|
||||
"15.1666",
|
||||
"15.2666"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️乐视",
|
||||
"hosts": [
|
||||
"leshiyun"
|
||||
],
|
||||
"regex": [
|
||||
"15.92"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️优质",
|
||||
"hosts": [
|
||||
"yzzy",
|
||||
"playback"
|
||||
],
|
||||
"regex": [
|
||||
"16.63",
|
||||
"18.66",
|
||||
"17.66",
|
||||
"19.13"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️快看",
|
||||
"hosts": [
|
||||
"kuaikan",
|
||||
"vip.kuaikan"
|
||||
],
|
||||
"regex": [
|
||||
"15.32",
|
||||
"15.231",
|
||||
"18.066"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️360",
|
||||
"hosts": [
|
||||
"lyhuicheng"
|
||||
],
|
||||
"regex": [
|
||||
"#EXTINF.*?\\s+.*?hrz8QcR9.*?\\.ts\\s+",
|
||||
"#EXT-X-KEY:METHOD=NONE[\\s\\S]*?#EXT-X-DISCONTINUITY"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️开源棋牌",
|
||||
"hosts": [
|
||||
"askzycdn",
|
||||
"jkunbf",
|
||||
"bfikuncdn",
|
||||
"bfaskcdn"
|
||||
],
|
||||
"regex": [
|
||||
"#EXT-X-KEY:METHOD=NONE\r*\n*#EXTINF:5,[\\s\\S]*?#EXT-X-DISCONTINUITY",
|
||||
"#EXT-X-KEY:METHOD=AES-128,URI=\"[^\"]+\"\r*\n*#EXTINF:3.333,[\\s\\S]*?#EXT-X-DISCONTINUITY"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️暴风",
|
||||
"hosts": [
|
||||
"bfengbf.com",
|
||||
"bfzy",
|
||||
"c1"
|
||||
],
|
||||
"regex": [
|
||||
"#EXTINF.*?\\s+.*?adjump.*?\\.ts\\s+",
|
||||
"#EXT-X-DISCONTINUITY\r*\n*#EXTINF:3,[\\s\\S]*?#EXT-X-DISCONTINUITY"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️农民",
|
||||
"hosts": [
|
||||
"toutiaovod.com"
|
||||
],
|
||||
"regex": [
|
||||
"video/tos/cn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️火山",
|
||||
"hosts": [
|
||||
"huoshan.com"
|
||||
],
|
||||
"regex": [
|
||||
"item_id="
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️抖音",
|
||||
"hosts": [
|
||||
"douyin.com"
|
||||
],
|
||||
"regex": [
|
||||
"is_play_url="
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️磁力",
|
||||
"hosts": [
|
||||
"magnet"
|
||||
],
|
||||
"regex": [
|
||||
"最 新",
|
||||
"直 播",
|
||||
"更 新"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️饭团点击",
|
||||
"hosts": [
|
||||
"dadagui",
|
||||
"freeok",
|
||||
"dadagui"
|
||||
],
|
||||
"script": [
|
||||
"document.querySelector(\"#playleft iframe\").contentWindow.document.querySelector(\"#start\").click();"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "♻️毛驴点击",
|
||||
"hosts": [
|
||||
"www.maolvys.com"
|
||||
],
|
||||
"script": [
|
||||
"document.getElementsByClassName('swal-button swal-button--confirm')[0].click()"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,768 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# by @嗷呜
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
import time
|
||||
from base64 import b64decode, b64encode
|
||||
from urllib.parse import parse_qs
|
||||
import requests
|
||||
from pyquery import PyQuery as pq
|
||||
sys.path.append('..')
|
||||
from base.spider import Spider
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
|
||||
|
||||
class Spider(Spider):
|
||||
|
||||
def init(self, extend=""):
|
||||
tid = 'douyin'
|
||||
headers = self.gethr(0, tid)
|
||||
response = requests.head(self.hosts[tid], headers=headers)
|
||||
ttwid = response.cookies.get('ttwid')
|
||||
headers.update({
|
||||
'authority': self.hosts[tid].split('//')[-1],
|
||||
'cookie': f'ttwid={ttwid}' if ttwid else ''
|
||||
})
|
||||
self.dyheaders = headers
|
||||
pass
|
||||
|
||||
def getName(self):
|
||||
pass
|
||||
|
||||
def isVideoFormat(self, url):
|
||||
pass
|
||||
|
||||
def manualVideoCheck(self):
|
||||
pass
|
||||
|
||||
def destroy(self):
|
||||
pass
|
||||
|
||||
headers = [
|
||||
{
|
||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
|
||||
},
|
||||
{
|
||||
"User-Agent": "Dart/3.4 (dart:io)"
|
||||
}
|
||||
]
|
||||
|
||||
excepturl = 'https://www.baidu.com'
|
||||
|
||||
hosts = {
|
||||
"huya": ["https://www.huya.com","https://mp.huya.com"],
|
||||
"douyin": "https://live.douyin.com",
|
||||
"douyu": "https://www.douyu.com",
|
||||
"wangyi": "https://cc.163.com",
|
||||
"bili": ["https://api.live.bilibili.com", "https://api.bilibili.com"]
|
||||
}
|
||||
|
||||
referers = {
|
||||
"huya": "https://live.cdn.huya.com",
|
||||
"douyin": "https://live.douyin.com",
|
||||
"douyu": "https://m.douyu.com",
|
||||
"bili": "https://live.bilibili.com"
|
||||
}
|
||||
|
||||
playheaders = {
|
||||
"wangyi": {
|
||||
"User-Agent": "ExoPlayer",
|
||||
"Connection": "Keep-Alive",
|
||||
"Icy-MetaData": "1"
|
||||
},
|
||||
"bili": {
|
||||
'Accept': '*/*',
|
||||
'Icy-MetaData': '1',
|
||||
'referer': referers['bili'],
|
||||
'user-agent': headers[0]['User-Agent']
|
||||
},
|
||||
'douyin': {
|
||||
'User-Agent': 'libmpv',
|
||||
'Icy-MetaData': '1'
|
||||
},
|
||||
'huya': {
|
||||
'User-Agent': 'ExoPlayer',
|
||||
'Connection': 'Keep-Alive',
|
||||
'Icy-MetaData': '1'
|
||||
},
|
||||
'douyu': {
|
||||
'User-Agent': 'libmpv',
|
||||
'Icy-MetaData': '1'
|
||||
}
|
||||
}
|
||||
|
||||
def process_bili(self):
|
||||
try:
|
||||
self.blfdata = self.fetch(
|
||||
f'{self.hosts["bili"][0]}/room/v1/Area/getList?need_entrance=1&parent_id=0',
|
||||
headers=self.gethr(0, 'bili')
|
||||
).json()
|
||||
return ('bili', [{'key': 'cate', 'name': '分类',
|
||||
'value': [{'n': i['name'], 'v': str(i['id'])}
|
||||
for i in self.blfdata['data']]}])
|
||||
except Exception as e:
|
||||
print(f"bili处理错误: {e}")
|
||||
return 'bili', None
|
||||
|
||||
def process_douyin(self):
|
||||
try:
|
||||
data = self.getpq(self.hosts['douyin'], headers=self.dyheaders)('script')
|
||||
for i in data.items():
|
||||
if 'categoryData' in i.text():
|
||||
content = i.text()
|
||||
start = content.find('{')
|
||||
end = content.rfind('}') + 1
|
||||
if start != -1 and end != -1:
|
||||
json_str = content[start:end]
|
||||
json_str = json_str.replace('\\"', '"')
|
||||
try:
|
||||
self.dyifdata = json.loads(json_str)
|
||||
return ('douyin', [{'key': 'cate', 'name': '分类',
|
||||
'value': [{'n': i['partition']['title'],
|
||||
'v': f"{i['partition']['id_str']}@@{i['partition']['title']}"}
|
||||
for i in self.dyifdata['categoryData']]}])
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"douyin解析错误: {e}")
|
||||
return 'douyin', None
|
||||
except Exception as e:
|
||||
print(f"douyin请求或处理错误: {e}")
|
||||
return 'douyin', None
|
||||
|
||||
def process_douyu(self):
|
||||
try:
|
||||
self.dyufdata = self.fetch(
|
||||
f'{self.referers["douyu"]}/api/cate/list',
|
||||
headers=self.headers[1]
|
||||
).json()
|
||||
return ('douyu', [{'key': 'cate', 'name': '分类',
|
||||
'value': [{'n': i['cate1Name'], 'v': str(i['cate1Id'])}
|
||||
for i in self.dyufdata['data']['cate1Info']]}])
|
||||
except Exception as e:
|
||||
print(f"douyu错误: {e}")
|
||||
return 'douyu', None
|
||||
|
||||
def homeContent(self, filter):
|
||||
result = {}
|
||||
cateManual = {
|
||||
"虎牙": "huya",
|
||||
"哔哩": "bili",
|
||||
"抖音": "douyin",
|
||||
"斗鱼": "douyu",
|
||||
"网易": "wangyi"
|
||||
}
|
||||
classes = []
|
||||
filters = {
|
||||
'huya': [{'key': 'cate', 'name': '分类',
|
||||
'value': [{'n': '网游', 'v': '1'}, {'n': '单机', 'v': '2'},
|
||||
{'n': '娱乐', 'v': '8'}, {'n': '手游', 'v': '3'}]}]
|
||||
}
|
||||
|
||||
with ThreadPoolExecutor(max_workers=3) as executor:
|
||||
futures = {
|
||||
executor.submit(self.process_bili): 'bili',
|
||||
executor.submit(self.process_douyin): 'douyin',
|
||||
executor.submit(self.process_douyu): 'douyu'
|
||||
}
|
||||
|
||||
for future in futures:
|
||||
platform, filter_data = future.result()
|
||||
if filter_data:
|
||||
filters[platform] = filter_data
|
||||
|
||||
for k in cateManual:
|
||||
classes.append({
|
||||
'type_name': k,
|
||||
'type_id': cateManual[k]
|
||||
})
|
||||
|
||||
result['class'] = classes
|
||||
result['filters'] = filters
|
||||
return result
|
||||
|
||||
def homeVideoContent(self):
|
||||
pass
|
||||
|
||||
def categoryContent(self, tid, pg, filter, extend):
|
||||
vdata = []
|
||||
result = {}
|
||||
pagecount = 9999
|
||||
result['page'] = pg
|
||||
result['limit'] = 90
|
||||
result['total'] = 999999
|
||||
if tid == 'wangyi':
|
||||
vdata, pagecount = self.wyccContent(tid, pg, filter, extend, vdata)
|
||||
elif 'bili' in tid:
|
||||
vdata, pagecount = self.biliContent(tid, pg, filter, extend, vdata)
|
||||
elif 'huya' in tid:
|
||||
vdata, pagecount = self.huyaContent(tid, pg, filter, extend, vdata)
|
||||
elif 'douyin' in tid:
|
||||
vdata, pagecount = self.douyinContent(tid, pg, filter, extend, vdata)
|
||||
elif 'douyu' in tid:
|
||||
vdata, pagecount = self.douyuContent(tid, pg, filter, extend, vdata)
|
||||
result['list'] = vdata
|
||||
result['pagecount'] = pagecount
|
||||
return result
|
||||
|
||||
def wyccContent(self, tid, pg, filter, extend, vdata):
|
||||
params = {
|
||||
'format': 'json',
|
||||
'start': (int(pg) - 1) * 20,
|
||||
'size': '20',
|
||||
}
|
||||
response = self.fetch(f'{self.hosts[tid]}/api/category/live/', params=params, headers=self.headers[0]).json()
|
||||
for i in response['lives']:
|
||||
if i.get('cuteid'):
|
||||
bvdata = self.buildvod(
|
||||
vod_id=f"{tid}@@{i['cuteid']}",
|
||||
vod_name=i.get('title'),
|
||||
vod_pic=i.get('cover'),
|
||||
vod_remarks=i.get('nickname'),
|
||||
style={"type": "rect", "ratio": 1.33}
|
||||
)
|
||||
vdata.append(bvdata)
|
||||
return vdata, 9999
|
||||
|
||||
def biliContent(self, tid, pg, filter, extend, vdata):
|
||||
if extend.get('cate') and pg == '1' and 'click' not in tid:
|
||||
for i in self.blfdata['data']:
|
||||
if str(i['id']) == extend['cate']:
|
||||
for j in i['list']:
|
||||
v = self.buildvod(
|
||||
vod_id=f"click_{tid}@@{i['id']}@@{j['id']}",
|
||||
vod_name=j.get('name'),
|
||||
vod_pic=j.get('pic'),
|
||||
vod_tag=1,
|
||||
style={"type": "oval", "ratio": 1}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 1
|
||||
else:
|
||||
path = f'/xlive/web-interface/v1/second/getListByArea?platform=web&sort=online&page_size=30&page={pg}'
|
||||
if 'click' in tid:
|
||||
ids = tid.split('_')[1].split('@@')
|
||||
tid = ids[0]
|
||||
path = f'/xlive/web-interface/v1/second/getList?platform=web&parent_area_id={ids[1]}&area_id={ids[-1]}&sort_type=&page={pg}'
|
||||
data = self.fetch(f'{self.hosts[tid][0]}{path}', headers=self.gethr(0, tid)).json()
|
||||
for i in data['data']['list']:
|
||||
if i.get('roomid'):
|
||||
data = self.buildvod(
|
||||
f"{tid}@@{i['roomid']}",
|
||||
i.get('title'),
|
||||
i.get('cover'),
|
||||
i.get('watched_show', {}).get('text_large'),
|
||||
0,
|
||||
i.get('uname'),
|
||||
style={"type": "rect", "ratio": 1.33}
|
||||
)
|
||||
vdata.append(data)
|
||||
return vdata, 9999
|
||||
|
||||
def huyaContent(self, tid, pg, filter, extend, vdata):
|
||||
if extend.get('cate') and pg == '1' and 'click' not in tid:
|
||||
id = extend.get('cate')
|
||||
data = self.fetch(f'{self.referers[tid]}/liveconfig/game/bussLive?bussType={id}',
|
||||
headers=self.headers[1]).json()
|
||||
for i in data['data']:
|
||||
v = self.buildvod(
|
||||
vod_id=f"click_{tid}@@{int(i['gid'])}",
|
||||
vod_name=i.get('gameFullName'),
|
||||
vod_pic=f'https://huyaimg.msstatic.com/cdnimage/game/{int(i["gid"])}-MS.jpg',
|
||||
vod_tag=1,
|
||||
style={"type": "oval", "ratio": 1}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 1
|
||||
else:
|
||||
gid = ''
|
||||
if 'click' in tid:
|
||||
ids = tid.split('_')[1].split('@@')
|
||||
tid = ids[0]
|
||||
gid = f'&gameId={ids[1]}'
|
||||
data = self.fetch(f'{self.hosts[tid][0]}/cache.php?m=LiveList&do=getLiveListByPage&tagAll=0{gid}&page={pg}',
|
||||
headers=self.headers[1]).json()
|
||||
for i in data['data']['datas']:
|
||||
if i.get('profileRoom'):
|
||||
v = self.buildvod(
|
||||
f"{tid}@@{i['profileRoom']}",
|
||||
i.get('introduction'),
|
||||
i.get('screenshot'),
|
||||
str(int(i.get('totalCount', '1')) / 10000) + '万',
|
||||
0,
|
||||
i.get('nick'),
|
||||
style={"type": "rect", "ratio": 1.33}
|
||||
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 9999
|
||||
|
||||
def douyinContent(self, tid, pg, filter, extend, vdata):
|
||||
if extend.get('cate') and pg == '1' and 'click' not in tid:
|
||||
ids = extend.get('cate').split('@@')
|
||||
for i in self.dyifdata['categoryData']:
|
||||
c = i['partition']
|
||||
if c['id_str'] == ids[0] and c['title'] == ids[1]:
|
||||
vlist = i['sub_partition'].copy()
|
||||
vlist.insert(0, {'partition': c})
|
||||
for j in vlist:
|
||||
j = j['partition']
|
||||
v = self.buildvod(
|
||||
vod_id=f"click_{tid}@@{j['id_str']}@@{j['type']}",
|
||||
vod_name=j.get('title'),
|
||||
vod_pic='https://p3-pc-weboff.byteimg.com/tos-cn-i-9r5gewecjs/pwa_v3/512x512-1.png',
|
||||
vod_tag=1,
|
||||
style={"type": "oval", "ratio": 1}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 1
|
||||
else:
|
||||
path = f'/webcast/web/partition/detail/room/?aid=6383&app_name=douyin_web&live_id=1&device_platform=web&count=15&offset={(int(pg) - 1) * 15}&partition=720&partition_type=1'
|
||||
if 'click' in tid:
|
||||
ids = tid.split('_')[1].split('@@')
|
||||
tid = ids[0]
|
||||
path = f'/webcast/web/partition/detail/room/?aid=6383&app_name=douyin_web&live_id=1&device_platform=web&count=15&offset={(int(pg) - 1) * 15}&partition={ids[1]}&partition_type={ids[-1]}&req_from=2'
|
||||
data = self.fetch(f'{self.hosts[tid]}{path}', headers=self.dyheaders).json()
|
||||
for i in data['data']['data']:
|
||||
v = self.buildvod(
|
||||
vod_id=f"{tid}@@{i['web_rid']}",
|
||||
vod_name=i['room'].get('title'),
|
||||
vod_pic=i['room']['cover'].get('url_list')[0],
|
||||
vod_year=i.get('user_count_str'),
|
||||
vod_remarks=i['room']['owner'].get('nickname'),
|
||||
style={"type": "rect", "ratio": 1.33}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 9999
|
||||
|
||||
def douyuContent(self, tid, pg, filter, extend, vdata):
|
||||
if extend.get('cate') and pg == '1' and 'click' not in tid:
|
||||
for i in self.dyufdata['data']['cate2Info']:
|
||||
if str(i['cate1Id']) == extend['cate']:
|
||||
v = self.buildvod(
|
||||
vod_id=f"click_{tid}@@{i['cate2Id']}",
|
||||
vod_name=i.get('cate2Name'),
|
||||
vod_pic=i.get('icon'),
|
||||
vod_remarks=i.get('count'),
|
||||
vod_tag=1,
|
||||
style={"type": "oval", "ratio": 1}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 1
|
||||
else:
|
||||
path = f'/japi/weblist/apinc/allpage/6/{pg}'
|
||||
if 'click' in tid:
|
||||
ids = tid.split('_')[1].split('@@')
|
||||
tid = ids[0]
|
||||
path = f'/gapi/rkc/directory/mixList/2_{ids[1]}/{pg}'
|
||||
url = f'{self.hosts[tid]}{path}'
|
||||
data = self.fetch(url, headers=self.headers[1]).json()
|
||||
for i in data['data']['rl']:
|
||||
v = self.buildvod(
|
||||
vod_id=f"{tid}@@{i['rid']}",
|
||||
vod_name=i.get('rn'),
|
||||
vod_pic=i.get('rs16'),
|
||||
vod_year=str(int(i.get('ol', 1)) / 10000) + '万',
|
||||
vod_remarks=i.get('nn'),
|
||||
style={"type": "rect", "ratio": 1.33}
|
||||
)
|
||||
vdata.append(v)
|
||||
return vdata, 9999
|
||||
|
||||
def detailContent(self, ids):
|
||||
ids = ids[0].split('@@')
|
||||
if ids[0] == 'wangyi':
|
||||
vod = self.wyccDetail(ids)
|
||||
elif ids[0] == 'bili':
|
||||
vod = self.biliDetail(ids)
|
||||
elif ids[0] == 'huya':
|
||||
vod = self.huyaDetail(ids)
|
||||
elif ids[0] == 'douyin':
|
||||
vod = self.douyinDetail(ids)
|
||||
elif ids[0] == 'douyu':
|
||||
vod = self.douyuDetail(ids)
|
||||
return {'list': [vod]}
|
||||
|
||||
def wyccDetail(self, ids):
|
||||
try:
|
||||
vdata = self.getpq(f'{self.hosts[ids[0]]}/{ids[1]}', self.headers[0])('script').eq(-1).text()
|
||||
|
||||
def get_quality_name(vbr):
|
||||
if vbr <= 600:
|
||||
return "标清"
|
||||
elif vbr <= 1000:
|
||||
return "高清"
|
||||
elif vbr <= 2000:
|
||||
return "超清"
|
||||
else:
|
||||
return "蓝光"
|
||||
|
||||
data = json.loads(vdata)['props']['pageProps']['roomInfoInitData']
|
||||
name = data['live'].get('title', ids[0])
|
||||
vod = self.buildvod(vod_name=data.get('keywords_suffix'), vod_remarks=data['live'].get('title'),
|
||||
vod_content=data.get('description_suffix'))
|
||||
resolution_data = data['live']['quickplay']['resolution']
|
||||
all_streams = {}
|
||||
sorted_qualities = sorted(resolution_data.items(),
|
||||
key=lambda x: x[1]['vbr'],
|
||||
reverse=True)
|
||||
for quality, data in sorted_qualities:
|
||||
vbr = data['vbr']
|
||||
quality_name = get_quality_name(vbr)
|
||||
for cdn_name, url in data['cdn'].items():
|
||||
if cdn_name not in all_streams and type(url) == str and url.startswith('http'):
|
||||
all_streams[cdn_name] = []
|
||||
if isinstance(url, str) and url.startswith('http'):
|
||||
all_streams[cdn_name].extend([quality_name, url])
|
||||
plists = []
|
||||
names = []
|
||||
for i, (cdn_name, stream_list) in enumerate(all_streams.items(), 1):
|
||||
names.append(f'线路{i}')
|
||||
pstr = f"{name}${ids[0]}@@{self.e64(json.dumps(stream_list))}"
|
||||
plists.append(pstr)
|
||||
vod['vod_play_from'] = "$$$".join(names)
|
||||
vod['vod_play_url'] = "$$$".join(plists)
|
||||
return vod
|
||||
except Exception as e:
|
||||
return self.handle_exception(e)
|
||||
|
||||
def biliDetail(self, ids):
|
||||
try:
|
||||
vdata = self.fetch(
|
||||
f'{self.hosts[ids[0]][0]}/xlive/web-room/v1/index/getInfoByRoom?room_id={ids[1]}&wts={int(time.time())}',
|
||||
headers=self.gethr(0, ids[0])).json()
|
||||
v = vdata['data']['room_info']
|
||||
vod = self.buildvod(
|
||||
vod_name=v.get('title'),
|
||||
type_name=v.get('parent_area_name') + '/' + v.get('area_name'),
|
||||
vod_remarks=v.get('tags'),
|
||||
vod_play_from=v.get('title'),
|
||||
)
|
||||
data = self.fetch(
|
||||
f'{self.hosts[ids[0]][0]}/xlive/web-room/v2/index/getRoomPlayInfo?room_id={ids[1]}&protocol=0%2C1&format=0%2C1%2C2&codec=0%2C1&platform=web',
|
||||
headers=self.gethr(0, ids[0])).json()
|
||||
vdnams = data['data']['playurl_info']['playurl']['g_qn_desc']
|
||||
all_accept_qns = []
|
||||
streams = data['data']['playurl_info']['playurl']['stream']
|
||||
for stream in streams:
|
||||
for format_item in stream['format']:
|
||||
for codec in format_item['codec']:
|
||||
if 'accept_qn' in codec:
|
||||
all_accept_qns.append(codec['accept_qn'])
|
||||
max_accept_qn = max(all_accept_qns, key=len) if all_accept_qns else []
|
||||
quality_map = {
|
||||
item['qn']: item['desc']
|
||||
for item in vdnams
|
||||
}
|
||||
quality_names = [f"{quality_map.get(qn)}${ids[0]}@@{ids[1]}@@{qn}" for qn in max_accept_qn]
|
||||
vod['vod_play_url'] = "#".join(quality_names)
|
||||
return vod
|
||||
except Exception as e:
|
||||
return self.handle_exception(e)
|
||||
|
||||
def huyaDetail(self, ids):
|
||||
try:
|
||||
vdata = self.fetch(f'{self.hosts[ids[0]][1]}/cache.php?m=Live&do=profileRoom&roomid={ids[1]}',
|
||||
headers=self.headers[0]).json()
|
||||
v = vdata['data']['liveData']
|
||||
vod = self.buildvod(
|
||||
vod_name=v.get('introduction'),
|
||||
type_name=v.get('gameFullName'),
|
||||
vod_director=v.get('nick'),
|
||||
vod_remarks=v.get('contentIntro'),
|
||||
)
|
||||
data = dict(reversed(list(vdata['data']['stream'].items())))
|
||||
names = []
|
||||
plist = []
|
||||
|
||||
for stream_type, stream_data in data.items():
|
||||
if isinstance(stream_data, dict) and 'multiLine' in stream_data and 'rateArray' in stream_data:
|
||||
names.append(f"线路{len(names) + 1}")
|
||||
qualities = sorted(
|
||||
stream_data['rateArray'],
|
||||
key=lambda x: (x['iBitRate'], x['sDisplayName']),
|
||||
reverse=True
|
||||
)
|
||||
cdn_urls = []
|
||||
for cdn in stream_data['multiLine']:
|
||||
quality_urls = []
|
||||
for quality in qualities:
|
||||
quality_name = quality['sDisplayName']
|
||||
bit_rate = quality['iBitRate']
|
||||
base_url = cdn['url']
|
||||
if bit_rate > 0:
|
||||
if '.m3u8' in base_url:
|
||||
new_url = base_url.replace(
|
||||
'ratio=2000',
|
||||
f'ratio={bit_rate}'
|
||||
)
|
||||
else:
|
||||
new_url = base_url.replace(
|
||||
'imgplus.flv',
|
||||
f'imgplus_{bit_rate}.flv'
|
||||
)
|
||||
else:
|
||||
new_url = base_url
|
||||
quality_urls.extend([quality_name, new_url])
|
||||
encoded_urls = self.e64(json.dumps(quality_urls))
|
||||
cdn_urls.append(f"{cdn['cdnType']}${ids[0]}@@{encoded_urls}")
|
||||
|
||||
if cdn_urls:
|
||||
plist.append('#'.join(cdn_urls))
|
||||
vod['vod_play_from'] = "$$$".join(names)
|
||||
vod['vod_play_url'] = "$$$".join(plist)
|
||||
return vod
|
||||
except Exception as e:
|
||||
return self.handle_exception(e)
|
||||
|
||||
def douyinDetail(self, ids):
|
||||
url = f'{self.hosts[ids[0]]}/webcast/room/web/enter/?aid=6383&app_name=douyin_web&live_id=1&device_platform=web&enter_from=web_live&web_rid={ids[1]}&room_id_str=&enter_source=&Room-Enter-User-Login-Ab=0&is_need_double_stream=false&cookie_enabled=true&screen_width=1980&screen_height=1080&browser_language=zh-CN&browser_platform=Win32&browser_name=Edge&browser_version=125.0.0.0'
|
||||
data = self.fetch(url, headers=self.dyheaders).json()
|
||||
try:
|
||||
vdata = data['data']['data'][0]
|
||||
vod = self.buildvod(
|
||||
vod_name=vdata['title'],
|
||||
vod_remarks=vdata['user_count_str'],
|
||||
)
|
||||
resolution_data = vdata['stream_url']['live_core_sdk_data']['pull_data']['options']['qualities']
|
||||
stream_json = vdata['stream_url']['live_core_sdk_data']['pull_data']['stream_data']
|
||||
stream_json = json.loads(stream_json)
|
||||
available_types = []
|
||||
if any(sdk_key in stream_json['data'] and 'main' in stream_json['data'][sdk_key] for sdk_key in
|
||||
stream_json['data']):
|
||||
available_types.append('main')
|
||||
if any(sdk_key in stream_json['data'] and 'backup' in stream_json['data'][sdk_key] for sdk_key in
|
||||
stream_json['data']):
|
||||
available_types.append('backup')
|
||||
plist = []
|
||||
for line_type in available_types:
|
||||
format_arrays = {'flv': [], 'hls': [], 'lls': []}
|
||||
qualities = sorted(resolution_data, key=lambda x: x['level'], reverse=True)
|
||||
for quality in qualities:
|
||||
sdk_key = quality['sdk_key']
|
||||
if sdk_key in stream_json['data'] and line_type in stream_json['data'][sdk_key]:
|
||||
stream_info = stream_json['data'][sdk_key][line_type]
|
||||
if stream_info.get('flv'):
|
||||
format_arrays['flv'].extend([quality['name'], stream_info['flv']])
|
||||
if stream_info.get('hls'):
|
||||
format_arrays['hls'].extend([quality['name'], stream_info['hls']])
|
||||
if stream_info.get('lls'):
|
||||
format_arrays['lls'].extend([quality['name'], stream_info['lls']])
|
||||
format_urls = []
|
||||
for format_name, url_array in format_arrays.items():
|
||||
if url_array:
|
||||
encoded_urls = self.e64(json.dumps(url_array))
|
||||
format_urls.append(f"{format_name}${ids[0]}@@{encoded_urls}")
|
||||
|
||||
if format_urls:
|
||||
plist.append('#'.join(format_urls))
|
||||
|
||||
names = ['线路1', '线路2'][:len(plist)]
|
||||
vod['vod_play_from'] = "$$$".join(names)
|
||||
vod['vod_play_url'] = "$$$".join(plist)
|
||||
return vod
|
||||
|
||||
except Exception as e:
|
||||
return self.handle_exception(e)
|
||||
|
||||
def douyuDetail(self, ids):
|
||||
headers = self.gethr(0, zr=f'{self.hosts[ids[0]]}/{ids[1]}')
|
||||
try:
|
||||
data = self.fetch(f'{self.hosts[ids[0]]}/betard/{ids[1]}', headers=headers).json()
|
||||
vname = data['room']['room_name']
|
||||
vod = self.buildvod(
|
||||
vod_name=vname,
|
||||
vod_remarks=data['room'].get('second_lvl_name'),
|
||||
vod_director=data['room'].get('nickname'),
|
||||
)
|
||||
vdata = self.fetch(f'{self.hosts[ids[0]]}/swf_api/homeH5Enc?rids={ids[1]}', headers=headers).json()
|
||||
json_body = vdata['data']
|
||||
json_body = {"html": self.douyu_text(json_body[f'room{ids[1]}']), "rid": ids[1]}
|
||||
sign = self.post('http://alive.nsapps.cn/api/AllLive/DouyuSign', json=json_body, headers=self.headers[1]).json()['data']
|
||||
body = f'{sign}&cdn=&rate=-1&ver=Douyu_223061205&iar=1&ive=1&hevc=0&fa=0'
|
||||
body=self.params_to_json(body)
|
||||
nubdata = self.post(f'{self.hosts[ids[0]]}/lapi/live/getH5Play/{ids[1]}', data=body, headers=headers).json()
|
||||
plist = []
|
||||
names = []
|
||||
for i,x in enumerate(nubdata['data']['cdnsWithName']):
|
||||
names.append(f'线路{i+1}')
|
||||
d = {'sign': sign, 'cdn': x['cdn'], 'id': ids[1]}
|
||||
plist.append(
|
||||
f'{vname}${ids[0]}@@{self.e64(json.dumps(d))}@@{self.e64(json.dumps(nubdata["data"]["multirates"]))}')
|
||||
vod['vod_play_from'] = "$$$".join(names)
|
||||
vod['vod_play_url'] = "$$$".join(plist)
|
||||
return vod
|
||||
except Exception as e:
|
||||
return self.handle_exception(e)
|
||||
|
||||
def douyu_text(self, text):
|
||||
function_positions = [m.start() for m in re.finditer('function', text)]
|
||||
total_functions = len(function_positions)
|
||||
if total_functions % 2 == 0:
|
||||
target_index = total_functions // 2 + 1
|
||||
else:
|
||||
target_index = (total_functions - 1) // 2 + 1
|
||||
if total_functions >= target_index:
|
||||
cut_position = function_positions[target_index - 1]
|
||||
ctext = text[4:cut_position]
|
||||
return re.sub(r'eval\(strc\)\([\w\d,]+\)', 'strc', ctext)
|
||||
return text
|
||||
|
||||
def searchContent(self, key, quick, pg="1"):
|
||||
pass
|
||||
|
||||
def playerContent(self, flag, id, vipFlags):
|
||||
try:
|
||||
ids = id.split('@@')
|
||||
p = 1
|
||||
if ids[0] in ['wangyi', 'douyin','huya']:
|
||||
p, url = 0, json.loads(self.d64(ids[1]))
|
||||
elif ids[0] == 'bili':
|
||||
p, url = self.biliplay(ids)
|
||||
elif ids[0] == 'huya':
|
||||
p, url = 0, json.loads(self.d64(ids[1]))
|
||||
elif ids[0] == 'douyu':
|
||||
p, url = self.douyuplay(ids)
|
||||
return {'parse': p, 'url': url, 'header': self.playheaders[ids[0]]}
|
||||
except Exception as e:
|
||||
return {'parse': 1, 'url': self.excepturl, 'header': self.headers[0]}
|
||||
|
||||
def biliplay(self, ids):
|
||||
try:
|
||||
data = self.fetch(
|
||||
f'{self.hosts[ids[0]][0]}/xlive/web-room/v2/index/getRoomPlayInfo?room_id={ids[1]}&protocol=0,1&format=0,2&codec=0&platform=web&qn={ids[2]}',
|
||||
headers=self.gethr(0, ids[0])).json()
|
||||
urls = []
|
||||
line_index = 1
|
||||
for stream in data['data']['playurl_info']['playurl']['stream']:
|
||||
for format_item in stream['format']:
|
||||
for codec in format_item['codec']:
|
||||
for url_info in codec['url_info']:
|
||||
full_url = f"{url_info['host']}/{codec['base_url'].lstrip('/')}{url_info['extra']}"
|
||||
urls.extend([f"线路{line_index}", full_url])
|
||||
line_index += 1
|
||||
return 0, urls
|
||||
except Exception as e:
|
||||
return 1, self.excepturl
|
||||
|
||||
def douyuplay(self, ids):
|
||||
try:
|
||||
sdata = json.loads(self.d64(ids[1]))
|
||||
headers = self.gethr(0, zr=f'{self.hosts[ids[0]]}/{sdata["id"]}')
|
||||
ldata = json.loads(self.d64(ids[2]))
|
||||
result_obj = {}
|
||||
with ThreadPoolExecutor(max_workers=len(ldata)) as executor:
|
||||
futures = [
|
||||
executor.submit(
|
||||
self.douyufp,
|
||||
sdata,
|
||||
quality,
|
||||
headers,
|
||||
self.hosts[ids[0]],
|
||||
result_obj
|
||||
) for quality in ldata
|
||||
]
|
||||
for future in futures:
|
||||
future.result()
|
||||
|
||||
result = []
|
||||
for bit in sorted(result_obj.keys(), reverse=True):
|
||||
result.extend(result_obj[bit])
|
||||
|
||||
if result:
|
||||
return 0, result
|
||||
return 1, self.excepturl
|
||||
|
||||
except Exception as e:
|
||||
return 1, self.excepturl
|
||||
|
||||
def douyufp(self, sdata, quality, headers, host, result_obj):
|
||||
try:
|
||||
body = f'{sdata["sign"]}&cdn={sdata["cdn"]}&rate={quality["rate"]}'
|
||||
body=self.params_to_json(body)
|
||||
data = self.post(f'{host}/lapi/live/getH5Play/{sdata["id"]}',
|
||||
data=body, headers=headers).json()
|
||||
if data.get('data'):
|
||||
play_url = data['data']['rtmp_url'] + '/' + data['data']['rtmp_live']
|
||||
bit = quality.get('bit', 0)
|
||||
if bit not in result_obj:
|
||||
result_obj[bit] = []
|
||||
result_obj[bit].extend([quality['name'], play_url])
|
||||
except Exception as e:
|
||||
print(f"Error fetching {quality['name']}: {str(e)}")
|
||||
|
||||
def localProxy(self, param):
|
||||
pass
|
||||
|
||||
def e64(self, text):
|
||||
try:
|
||||
text_bytes = text.encode('utf-8')
|
||||
encoded_bytes = b64encode(text_bytes)
|
||||
return encoded_bytes.decode('utf-8')
|
||||
except Exception as e:
|
||||
print(f"Base64编码错误: {str(e)}")
|
||||
return ""
|
||||
|
||||
def d64(self, encoded_text):
|
||||
try:
|
||||
encoded_bytes = encoded_text.encode('utf-8')
|
||||
decoded_bytes = b64decode(encoded_bytes)
|
||||
return decoded_bytes.decode('utf-8')
|
||||
except Exception as e:
|
||||
print(f"Base64解码错误: {str(e)}")
|
||||
return ""
|
||||
|
||||
def josn_to_params(self, params, skip_empty=False):
|
||||
query = []
|
||||
for k, v in params.items():
|
||||
if skip_empty and not v:
|
||||
continue
|
||||
query.append(f"{k}={v}")
|
||||
return "&".join(query)
|
||||
|
||||
def params_to_json(self, query_string):
|
||||
parsed_data = parse_qs(query_string)
|
||||
result = {key: value[0] for key, value in parsed_data.items()}
|
||||
return result
|
||||
|
||||
def buildvod(self, vod_id='', vod_name='', vod_pic='', vod_year='', vod_tag='', vod_remarks='', style='',
|
||||
type_name='', vod_area='', vod_actor='', vod_director='',
|
||||
vod_content='', vod_play_from='', vod_play_url=''):
|
||||
vod = {
|
||||
'vod_id': vod_id,
|
||||
'vod_name': vod_name,
|
||||
'vod_pic': vod_pic,
|
||||
'vod_year': vod_year,
|
||||
'vod_tag': 'folder' if vod_tag else '',
|
||||
'vod_remarks': vod_remarks,
|
||||
'style': style,
|
||||
'type_name': type_name,
|
||||
'vod_area': vod_area,
|
||||
'vod_actor': vod_actor,
|
||||
'vod_director': vod_director,
|
||||
'vod_content': vod_content,
|
||||
'vod_play_from': vod_play_from,
|
||||
'vod_play_url': vod_play_url
|
||||
}
|
||||
vod = {key: value for key, value in vod.items() if value}
|
||||
return vod
|
||||
|
||||
def getpq(self, url, headers=None, cookies=None):
|
||||
data = self.fetch(url, headers=headers, cookies=cookies).text
|
||||
try:
|
||||
return pq(data)
|
||||
except Exception as e:
|
||||
print(f"解析页面错误: {str(e)}")
|
||||
return pq(data.encode('utf-8'))
|
||||
|
||||
def gethr(self, index, rf='', zr=''):
|
||||
headers = self.headers[index]
|
||||
if zr:
|
||||
headers['referer'] = zr
|
||||
else:
|
||||
headers['referer'] = f"{self.referers[rf]}/"
|
||||
return headers
|
||||
|
||||
def handle_exception(self, e):
|
||||
print(f"报错: {str(e)}")
|
||||
return {'vod_play_from': '哎呀翻车啦', 'vod_play_url': f'翻车啦${self.excepturl}'}
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
24
肥猫/js/短视频.js
24
肥猫/js/短视频.js
|
@ -1,24 +0,0 @@
|
|||
// 搜寻验证
|
||||
var rule = {
|
||||
title:'短视频',
|
||||
host:'http://www.sharenice.net',
|
||||
url:'/fyclass?page=fypage',
|
||||
//searchUrl:'/video/search?search_key=**',
|
||||
searchable:0,
|
||||
quickSearch:0,
|
||||
headers:{
|
||||
'User-Agent':'PC_UA'
|
||||
},
|
||||
timeout:5000,
|
||||
// class_name:'抖音&快手&微视&火山&场库&体育&美拍&秒拍&全民&梨&好兔&美女&正能量&搞笑&社会&游戏&娱乐&旅游&萌系&生活&音乐&美食&明星&动漫&影视&时尚',
|
||||
class_name:'抖音&快手&微视&火山&场库&美拍&秒拍&全民&澎湃&好兔&开眼&美女&搞笑&社会&影视&音乐&娱乐&正能量&生活&动漫&体育&美食&萌系&旅游&游戏&明星&时尚',
|
||||
// class_url:'douyin&kuaishou&weishi&huoshan&changku&tags/t-5L2T6IKy.html&meipai&miaopai&quanmin&lishipin&haotu&tags/t-576O5aWz.html&tags/t-5q2j6IO96YeP.html&tags/t-5pCe56yR.html&tags/t-56S+5Lya.html&tags/t-5ri45oiP.html&tags/t-5aix5LmQ.html&tags/t-5peF5ri4.html&tags/t-6JCM57O7.html&tags/t-55Sf5rS7.html&tags/t-6Z+z5LmQ.html&tags/t-576O6aOf.html&tags/t-5piO5pif.html&tags/t-5Yqo5ryr.html&tags/t-5b2x6KeG.html&tags/t-5pe25bCa.html',
|
||||
class_url:'douyin&kuaishou&weishi&huoshan&changku&meipai&miaopai&quanmin&lishipin&haotu&kaiyan&t-576O5aWz&t-5pCe56yR&t-56S+5Lya&t-5b2x6KeG&t-6Z+z5LmQ&t-5aix5LmQ&t-5q2j6IO96YeP&t-55Sf5rS7&t-5Yqo5ryr&t-5L2T6IKy&t-576O6aOf&t-6JCM57O7&t-5peF5ri4&t-5ri45oiP&t-5piO5pif&t-5pe25bCa',
|
||||
play_parse:true,
|
||||
lazy:'js:/kuaishou/.test(input)?input=jsp.pdfh(request("http://m.sharenice.net/mobile"+input.split("net")[1]),".video-play-box&&video&&src"):input=jsp.pdfh(request("http://m.sharenice.net/mobile"+input.split("net")[1]),".video-play-box&&video&&src")+"#.mp4"',
|
||||
limit:6,
|
||||
double:false,
|
||||
推荐:'*',
|
||||
一级:'.item-box&&ul&&li;a&&title;img&&data-original;;a&&href',
|
||||
二级:'*',
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
var rule = {
|
||||
title:'酷奇MV',
|
||||
host:'https://www.kuqimv.com',
|
||||
// homeUrl:'/play/',
|
||||
url:'/play/fyclass_fypage.html',
|
||||
searchUrl:'/search.php?key=**&pages=fypage',
|
||||
searchable:2,
|
||||
quickSearch:0,
|
||||
// class_parse:'.main:eq(1)&&li;a&&Text;a&&href;.*/(\\d+)_1.html',
|
||||
// class_parse:'.lei_class&&a;a&&Text;a&&href;.*/(\\d+)_1.html',
|
||||
class_name:'华语高清&日韩精选&欧美MV&高清现场&影视MV&夜店视频&车模视频&热舞视频&美女写真&美女打碟',
|
||||
class_url:'1&2&3&4&5&6&7&8&9&10',
|
||||
headers:{
|
||||
'User-Agent':'MOBILE_UA'
|
||||
},
|
||||
timeout:5000,
|
||||
play_parse:true,
|
||||
lazy:'',
|
||||
limit:6,
|
||||
double:false,
|
||||
推荐:'*',
|
||||
一级:'js:var d=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;var html=request(input);let list=pdfa(html,".mv_list&&li");list.forEach((it)=>{d.push({title:pdfh(it,".name&&Text"),desc:"🎤"+pdfh(it,".singer&&Text")+"|"+pdfh(it,".time&&Text"),pic_url:pd(it,"img&&src"),url:pd(it,"a&&href"),})});setResult(d);',
|
||||
二级:'*',
|
||||
搜索:'.video_list&&li;a&&title;;.singer&&Text;a&&href;.t_03:eq(1)&&Text',
|
||||
}
|
2286
肥猫/json/MTV.json
2286
肥猫/json/MTV.json
File diff suppressed because it is too large
Load Diff
2655
肥猫/json/初中课堂.json
2655
肥猫/json/初中课堂.json
File diff suppressed because it is too large
Load Diff
|
@ -1,782 +0,0 @@
|
|||
|
||||
{
|
||||
|
||||
"classes": [{
|
||||
"type_name": "1年级语文",
|
||||
"type_id": "1年级语文"
|
||||
}, {
|
||||
"type_name": "1年级数学",
|
||||
"type_id": "1年级数学"
|
||||
}, {
|
||||
"type_name": "1年级英语",
|
||||
"type_id": "1年级英语"
|
||||
}, {
|
||||
"type_name": "2年级语文",
|
||||
"type_id": "2年级语文"
|
||||
}, {
|
||||
"type_name": "2年级数学",
|
||||
"type_id": "2年级数学"
|
||||
}, {
|
||||
"type_name": "2年级英语",
|
||||
"type_id": "2年级英语"
|
||||
}, {
|
||||
"type_name": "3年级语文",
|
||||
"type_id": "3年级语文"
|
||||
}, {
|
||||
"type_name": "3年级数学",
|
||||
"type_id": "3年级数学"
|
||||
}, {
|
||||
"type_name": "3年级英语",
|
||||
"type_id": "3年级英语"
|
||||
}, {
|
||||
"type_name": "4年级语文",
|
||||
"type_id": "4年级语文"
|
||||
}, {
|
||||
"type_name": "4年级数学",
|
||||
"type_id": "4年级数学"
|
||||
}, {
|
||||
"type_name": "4年级英语",
|
||||
"type_id": "4年级英语"
|
||||
}, {
|
||||
"type_name": "5年级语文",
|
||||
"type_id": "5年级语文"
|
||||
}, {
|
||||
"type_name": "5年级数学",
|
||||
"type_id": "5年级数学"
|
||||
}, {
|
||||
"type_name": "5年级英语",
|
||||
"type_id": "5年级英语"
|
||||
}, {
|
||||
"type_name": "6年级语文",
|
||||
"type_id": "6年级语文"
|
||||
}, {
|
||||
"type_name": "6年级数学",
|
||||
"type_id": "6年级数学"
|
||||
}, {
|
||||
"type_name": "6年级英语",
|
||||
"type_id": "6年级英语"
|
||||
}],
|
||||
"cookie": "SESSDATA=01c79709%2C1711618905%2C244c3%2A91CjA9UUnRb_kJg03J5FqUbin76yMY90o1-ckJsM1ItQH21ns4hgcS6Le6oMR3SKtC18QSVmxSbGRhN3cyS3NReERsOHRfYVlhTWJKZjZyTF9wUWJXbjNfaF9qWklFMFpoeVg1ZUhFb0Q0MGFiN3FYd1N3UEFEY1oxX29IdmFSRVVLamcybGhhSkJnIIEC; bili_jct=e9d6e9df733afde2a03693d63a4e77dc; DedeUserID=186957646; DedeUserID__ckMd5=4f717c8832ee1e62; sid=elhiqom1",
|
||||
"filter": {
|
||||
"1年级语文": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版1年级语文"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版1年级语文"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版1年级语文"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版1年级语文"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"1年级英语": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版1年级英语"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版1年级英语"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版1年级英语"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版1年级英语"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"1年级数学": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版1年级数学"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版1年级数学"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版1年级数学"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版1年级数学"
|
||||
}, {
|
||||
"n": "青岛版",
|
||||
"v": "青岛版1年级数学"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"2年级语文": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版2年级语文"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版2年级语文"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版2年级语文"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版2年级语文"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"2年级英语": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版2年级英语"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版2年级英语"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版2年级英语"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版2年级英语"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"2年级数学": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版2年级数学"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版2年级数学"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版2年级数学"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版2年级数学"
|
||||
}, {
|
||||
"n": "青岛版",
|
||||
"v": "青岛版2年级数学"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"3年级语文": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版3年级语文"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版3年级语文"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版3年级语文"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版3年级语文"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"3年级英语": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版3年级英语"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版3年级英语"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版3年级英语"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版3年级英语"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"3年级数学": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版3年级数学"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版3年级数学"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版3年级数学"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版3年级数学"
|
||||
}, {
|
||||
"n": "青岛版",
|
||||
"v": "青岛版3年级数学"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"4年级语文": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版4年级语文"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版4年级语文"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版4年级语文"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版4年级语文"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"4年级英语": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版4年级英语"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版4年级英语"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版4年级英语"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版4年级英语"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"4年级数学": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版4年级数学"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版4年级数学"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版4年级数学"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版4年级数学"
|
||||
}, {
|
||||
"n": "青岛版",
|
||||
"v": "青岛版4年级数学"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"5年级语文": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版5年级语文"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版5年级语文"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版5年级语文"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版5年级语文"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"5年级英语": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版5年级英语"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版5年级英语"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版5年级英语"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版5年级英语"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"5年级数学": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版5年级数学"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版5年级数学"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版5年级数学"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版5年级数学"
|
||||
}, {
|
||||
"n": "青岛版",
|
||||
"v": "青岛版5年级数学"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"6年级语文": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版6年级语文"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版6年级语文"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版6年级语文"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版6年级语文"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"6年级英语": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版6年级英语"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版6年级英语"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版6年级英语"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版6年级英语"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}],
|
||||
"6年级数学": [{
|
||||
"key": "tid",
|
||||
"name": "分类",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "沪教版",
|
||||
"v": "沪教版6年级数学"
|
||||
}, {
|
||||
"n": "人教版",
|
||||
"v": "人教版6年级数学"
|
||||
}, {
|
||||
"n": "北师大版",
|
||||
"v": "北师大版6年级数学"
|
||||
}, {
|
||||
"n": "苏教版",
|
||||
"v": "苏教版6年级数学"
|
||||
}, {
|
||||
"n": "青岛版",
|
||||
"v": "青岛版6年级数学"
|
||||
}]
|
||||
}, {
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
}, {
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
}, {
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
}, {
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
}, {
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}]
|
||||
}]
|
||||
}
|
||||
}
|
|
@ -1,476 +0,0 @@
|
|||
{
|
||||
"classes": [
|
||||
{
|
||||
"type_name": "儿童早教",
|
||||
"type_id": "儿童早教"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童启蒙故事",
|
||||
"type_id": "儿童启蒙故事"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童英语启蒙",
|
||||
"type_id": "儿童英语启蒙"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童歌曲",
|
||||
"type_id": "儿童歌曲"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童绘画",
|
||||
"type_id": "儿童绘画"
|
||||
},
|
||||
{
|
||||
"type_name": "睡前故事",
|
||||
"type_id": "睡前故事"
|
||||
},
|
||||
|
||||
{
|
||||
"type_name": "儿童动画",
|
||||
"type_id": "儿童动画"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童音乐",
|
||||
"type_id": "儿童音乐"
|
||||
},
|
||||
{
|
||||
"type_name": "儿童安全教育",
|
||||
"type_id": "儿童安全教育"
|
||||
},
|
||||
{
|
||||
"type_name": "贝瓦儿歌",
|
||||
"type_id": "贝瓦儿歌"
|
||||
},
|
||||
{
|
||||
"type_name": "悟空识字",
|
||||
"type_id": "悟空识字"
|
||||
},
|
||||
{
|
||||
"type_name": "宝宝巴士",
|
||||
"type_id": "宝宝巴士"
|
||||
},
|
||||
{
|
||||
"type_name": "儿歌多多",
|
||||
"type_id": "儿歌多多"
|
||||
},
|
||||
{
|
||||
"type_name": "学而思",
|
||||
"type_id": "学而思"
|
||||
}],
|
||||
|
||||
"cookie": "SESSDATA=01c79709%2C1711618905%2C244c3%2A91CjA9UUnRb_kJg03J5FqUbin76yMY90o1-ckJsM1ItQH21ns4hgcS6Le6oMR3SKtC18QSVmxSbGRhN3cyS3NReERsOHRfYVlhTWJKZjZyTF9wUWJXbjNfaF9qWklFMFpoeVg1ZUhFb0Q0MGFiN3FYd1N3UEFEY1oxX29IdmFSRVVLamcybGhhSkJnIIEC; bili_jct=e9d6e9df733afde2a03693d63a4e77dc; DedeUserID=186957646; DedeUserID__ckMd5=4f717c8832ee1e62; sid=elhiqom1",
|
||||
"filter": {
|
||||
|
||||
"儿童早教": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
|
||||
"儿童启蒙故事": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童英语启蒙": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童歌曲": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
"儿童绘画": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"睡前故事": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童动画": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童音乐": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿童安全教育": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
"贝瓦儿歌": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
"悟空识字": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"宝宝巴士": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"儿歌多多": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"学而思": [
|
||||
|
||||
{
|
||||
"key": "duration",
|
||||
"name": "时长",
|
||||
"value": [
|
||||
{
|
||||
"n": "全部",
|
||||
"v": "0"
|
||||
},
|
||||
{
|
||||
"n": "60分钟以上",
|
||||
"v": "4"
|
||||
},
|
||||
{
|
||||
"n": "30~60分钟",
|
||||
"v": "3"
|
||||
},
|
||||
{
|
||||
"n": "10~30分钟",
|
||||
"v": "2"
|
||||
},
|
||||
{
|
||||
"n": "10分钟以下",
|
||||
"v": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
}}
|
2669
肥猫/json/高中课堂.json
2669
肥猫/json/高中课堂.json
File diff suppressed because it is too large
Load Diff
BIN
肥猫/spider.jar
BIN
肥猫/spider.jar
Binary file not shown.
|
@ -4,7 +4,7 @@
|
|||
"sites": [
|
||||
{
|
||||
"key": "豆",
|
||||
"name": "修复网盘搜索【神秘的哥哥们】",
|
||||
"name": "修复阿狸第三方权益包【神秘的哥哥们】",
|
||||
"type": 3,
|
||||
"api": "csp_DouDouGuard",
|
||||
"indexs": 1,
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
BIN
饭太硬/spider.jar
BIN
饭太硬/spider.jar
Binary file not shown.
Loading…
Reference in New Issue