更新线路

整体线路:v20250629
This commit is contained in:
Liu 2025-06-30 12:08:52 +08:00
parent f74d24c2f2
commit 5cb75d947e
36 changed files with 3244 additions and 71494 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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&params=./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": "🤣咕咕|动漫",

View File

@ -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()

View File

@ -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.

1
欧歌/js/CJZW.js Normal file

File diff suppressed because one or more lines are too long

141
欧歌/json/CJJT.json Normal file
View File

@ -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"
}
]

View File

@ -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

Binary file not shown.

View File

@ -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()"
]
}
]
}

768
肥猫/api/LIVES.py Normal file
View File

@ -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

View File

@ -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',
二级:'*',
}

View File

@ -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',
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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"
}]
}]
}
}

View File

@ -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"
}
]
}
]
}}

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -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

Binary file not shown.