1202/1202-1520

up
This commit is contained in:
Liu
2024-12-02 18:53:21 +08:00
parent 868ddfe9ba
commit 348bdb7f86
86 changed files with 21757 additions and 45209 deletions

View File

@@ -23,11 +23,13 @@
"name": "🧸玩偶┃4K4K",
"type": 3,
"api": "csp_Wogg",
"changeable": 0,
"filterable": 1,
"ext": {
"site_urls": [
"https://wogg.xxooo.cf",
"http://www.wogg.bf",
"https://woggpan.333232.xyz/",
"https://wogg.xxooo.cf/",
"https://woggapi.888484.xyz/",
"https://www.wogg.net"
],
"threadinfo": {
@@ -41,10 +43,13 @@
"name": "💯至臻┃4K4K",
"type": 3,
"api": "csp_Duopan",
"changeable": 0,
"filterable": 1,
"ext": {
"site_urls": [
"https://mihdr.top",
"http://www.xhww.net",
"http://xhww.net",
"https://xiaomiai.site"
],
"url_key": "Duopan",
@@ -59,6 +64,7 @@
"name": "💌MIUC┃4K4K",
"type": 3,
"api": "csp_MiUc",
"changeable": 0,
"filterable": 1,
"ext": {
"site_urls": [
@@ -107,6 +113,44 @@
"changeable": 0,
"ext": "./js/kanqiu.js"
},
{
"key": "csp_JPYY",
"name": "🥇文采┃1080P",
"type": 3,
"searchable": 1,
"changeable": 1,
"api": "csp_Jpyy",
"playerType": 2,
"filterable": 1,
"ext": ""
},
{
"key": "csp_XSX",
"name": "👀视讯┃1080P",
"type": 3,
"searchable": 1,
"changeable": 1,
"quickSearch": 1,
"api": "csp_Xsx",
"playerType": 2,
"filterable": 1,
"ext": ""
},
{
"key": "csp_SuBaiBai",
"name": "☁白白┃1080P",
"type": 3,
"api": "csp_SuBaiBai",
"playerType": 2,
"ext": "https://subaibai.com/"
},
{
"key": "huohuo",
"name": "💥火火┃1080P",
"type": 3,
"changeable": 0,
"api": "csp_SaoHuo"
},
{
"key": "瓜子",
"name": "🍉瓜子┃1080P",
@@ -153,13 +197,18 @@
"jar": "./jars/天天.jar"
},
{
"key": "繁荣",
"name": "🥝凡人┃1080P",
"key": "csp_zhufan",
"name": "🚗追饭┃1080P",
"searchable": 1,
"quickSearch": 1,
"type": 3,
"api": "csp_Frong",
"playerType": 2,
"ext": "FMy4wLjJ8aHR0cDovLzQzLjI0OC4xMjguMTM4OjgxMzN8NDJmN2EyMDl8MjV8NTY4Njg1NDM0RkVDN0M4QzI5MEFFNEZCMzI1RkYxMzB8c2hpamllbWFvdHZ8MzNhN2ZmYTljODU0MTJjNzQyZjdhMjA5fDI1fDU2ODY4NTQzNEZFQzdDOEMyOTBBRTRGQjMyNUZGMTMwfHNoaWppZW1hb3R2fDMzYTdmZmE5Yzg1NDEyYzc=",
"jar": "./jars/天天.jar"
"api": "csp_MiTo",
"ext": {
"url": "http://xiafan.zhuiju666.com",
"dataKey": "aassddwwxxllsx1x",
"playKey": "bbssqdbbssll25sx",
"version": "1.1.0"
}
},
{
"key": "csp_LiteApple",
@@ -173,41 +222,39 @@
"ext": ""
},
{
"key": "csp_JPYY",
"name": "🥇文采┃1080P",
"key": "hipy_js_腾云驾雾[官]",
"name": "🌞腾腾┃解析",
"type": 3,
"api": "./api/drpy2.js",
"searchable": 1,
"changeable": 1,
"api": "csp_Jpyy",
"playerType": 2,
"quickSearch": 1,
"filterable": 1,
"ext": ""
"order_num": 0,
"changeable": 0,
"ext": "./js/tm.js"
},
{
"key": "csp_XSX",
"name": "👀视讯┃1080P",
"key": "guoguo",
"name": "🌞果果┃解析",
"type": 3,
"api": "./api/drpy2.js",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"order_num": 0,
"changeable": 0,
"ext": "./js/guoguo.js"
},
{
"key": "csp_视觉",
"name": "🔭视觉┃PYTHON",
"type": 3,
"searchable": 1,
"changeable": 1,
"quickSearch": 1,
"api": "csp_Xsx",
"api": "./api/shijue.py",
"playerType": 2,
"filterable": 1,
"ext": ""
},
{
"key": "csp_SuBaiBai",
"name": "☁白白┃1080P",
"type": 3,
"api": "csp_SuBaiBai",
"playerType": 2,
"ext": "https://subaibai.com/"
},
{
"key": "csp_Tvyb",
"name": "☁云播┃1080P",
"type": 3,
"api": "csp_Tvyb"
"filterable": 1
},
{
"key": "csp_Czsapp",
@@ -229,20 +276,6 @@
"click": "document.querySelector(\"#playleft iframe\").contentWindow.document.querySelector(\"#start\").click();",
"ext": "https://fantuan.vip/"
},
{
"key": "csp_Dm84",
"name": "🎨动漫┃1080P",
"type": 3,
"api": "csp_Dm84",
"playerType": 2
},
{
"key": "huohuo",
"name": "💥火火┃1080P",
"type": 3,
"changeable": 0,
"api": "csp_SaoHuo"
},
{
"key": "荐片",
"name": "🍭荐片┃磁力",
@@ -294,9 +327,9 @@
"url": "Web"
},
{
"name": "4K解析",
"name": "解析1",
"type": 1,
"url": "https://jx.xiaofengtv.com/jx.php?url=",
"url": "https://www.mpanso.com/muou/qilin.php?url=",
"ext": {
"flag": [
"qq",
@@ -325,36 +358,7 @@
{
"name": "反弹",
"type": 1,
"url": "http://27.25.141.188:6688/api/?key=cc10901237ea968438714d7f0303986b&url=",
"ext": {
"flag": [
"qq",
"腾讯",
"qiyi",
"爱奇艺",
"奇艺",
"youku",
"优酷",
"sohu",
"搜狐",
"letv",
"乐视",
"mgtv",
"芒果",
"tnmb",
"seven",
"bilibili",
"1905"
],
"header": {
"User-Agent": "okhttp/4.9.1"
}
}
},
{
"name": "1080解析1",
"type": 1,
"url": "https://zy.qiaoji8.com/neibu.php?url=",
"url": "",
"ext": {
"flag": [
"qq",
@@ -383,7 +387,7 @@
{
"name": "1080解析",
"type": 1,
"url": "http://117.50.183.202:8036/?ip=111.55.12.236&url=",
"url": "",
"ext": {
"flag": [
"qq",

238
小米/api/shijue.py Normal file
View File

@@ -0,0 +1,238 @@
# coding=utf-8
# !/usr/bin/python
# by嗷呜
import sys
sys.path.append("..")
import re
import os
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from base64 import b64encode, b64decode
import json
from base.spider import Spider
from urllib.parse import quote
class Spider(Spider):
def getName(self):
return "视觉"
def init(self, extend=""):
self.host = self.host()
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.fetch(
f"{self.host}/api/v3/drama/getCategory?orderBy=type_id",
headers=self.headers,
).json()
dy = {
"class": "类型",
"area": "地区",
"lang": "语言",
"year": "年份",
"letter": "字母",
"by": "排序",
"sort": "排序",
}
filters = {}
classes = []
for item in data["data"]:
has_non_empty_field = False
jsontype_extend = json.loads(item["converUrl"])
classes.append({"type_name": item["name"], "type_id": str(item["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["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["id"])].append(
{"key": dkey, "name": dy[dkey], "value": value_array}
)
result = {}
result["class"] = classes
result["filters"] = filters
return result
def homeVideoContent(self):
data = self.fetch(f"{self.host}/api/ex/v3/security/tag/list", headers=self.headers).json()["data"]
data1 = self.aes(self.aes(data, self.key[0]), self.key[1], 'decrypt', True)
list = []
for item in data1[0]['carousels']:
id = item['link'].split("id=")[1]
list.append({
"vod_id": id,
'vod_name': item.get("title"),
'vod_pic': item.get("cover"),
'vod_remarks': item.get("sort"),
})
result = {"list": list}
return result
def categoryContent(self, tid, pg, filter, extend):
params = []
if extend.get('area'):
params.append(f"vodArea={extend['area']}")
if extend.get('classs'):
params.append(f"vodClass={extend['class']}")
params.append("pagesize=20")
params.append(f"typeId1={tid}")
params.append(f"page={pg}")
if extend.get('year'):
params.append(f"vodYear={extend['year']}")
body = '&'.join(params)
path = self.aes(self.aes(body, self.key[1], 'encrypt'), self.key[0], 'encrypt', True)
data = self.fetch(f"{self.host}/api/ex/v3/security/drama/list?query={path}", headers=self.headers).json()[
"data"]
data = self.aes(self.aes(data, self.key[0]), self.key[1], 'decrypt', True)['list']
list = []
for item in data:
list.append({
'vod_id': item.get("id"),
'vod_pic': item["coverImage"].get("path"),
'vod_name': item.get("name"),
'vod_year': item.get("year"),
'vod_remarks': item.get("remark")
})
result = {}
result["list"] = list
result["page"] = pg
result["pagecount"] = 9999
result["limit"] = 90
result["total"] = 999999
return result
def detailContent(self, ids):
url = f"{self.host}/api/v3/drama/getDetail?id={ids[0]}"
data = self.fetch(url, headers=self.headers).json()["data"]
vod = {
'vod_name': data.get("name"),
'vod_area': data.get("area"),
'type_name': data.get("clazz"),
'vod_actor': data.get("actor"),
'vod_director': data.get("director"),
'vod_content': data.get("brief").strip(),
}
play = []
names = []
plays = {}
for itt in data["videos"]:
if itt["sourceCn"] not in names:
plays[itt["source"]] = []
names.append(itt["sourceCn"])
url = f"vodPlayFrom={itt['source']}&playUrl={itt['path']}"
if re.search(r"\.(mp4|m3u8|flv)$", itt["path"]):
url = itt["path"]
plays[itt["source"]].append(f"{itt['titleOld']}${url}")
for it in plays:
play.append("#".join(plays[it]))
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"pagesize=20&page={pg}&searchKeys={key}"
path = self.aes(self.aes(body, self.key[1], 'encrypt'), self.key[0], 'encrypt', True)
data = self.fetch(f"{self.host}/api/ex/v3/security/drama/list?query={path}", headers=self.headers).json()[
"data"]
data = self.aes(self.aes(data, self.key[0]), self.key[1], 'decrypt', True)['list']
list = []
for item in data:
list.append({
'vod_id': item.get("id"),
'vod_pic': item["coverImage"].get("path"),
'vod_name': item.get("name"),
'vod_year': item.get("year"),
'vod_remarks': item.get("remark")
})
result = {"list": list, "page": pg}
return result
def playerContent(self, flag, id, vipFlags):
url = id
if "vodPlayFrom" in url:
try:
path = self.aes(self.aes(id, self.key[1], 'encrypt'), self.key[0], 'encrypt', True)
data = self.fetch(f"{self.host}/api/ex/v3/security/videoUsableUrl?query={path}", headers=self.headers).json()[
"data"]
url = self.aes(self.aes(data, self.key[0]), self.key[1], 'decrypt', True)['playUrl']
# try:
# url1 = self.fetch(url, headers=self.headers, timeout=5, allow_redirects=False).headers['Location']
# if "http" in url1 and url1:
# url = url1
# except:
# pass
except Exception as e:
pass
if '.jpg' in url or '.jpeg' in url or '.png' in url:
url = self.getProxyUrl() + "&url=" + b64encode(url.encode('utf-8')).decode('utf-8') + "&type=m3u8"
result = {}
result["parse"] = 0
result["url"] = url
result["header"] = {'User-Agent': 'okhttp/3.12.1'}
return result
def localProxy(self, param):
url = b64decode(param["url"]).decode('utf-8')
durl = url[:url.rfind('/')]
data = self.fetch(url, headers=self.headers).content.decode("utf-8")
lines = data.strip().split('\n')
for index, string in enumerate(lines):
if '#EXT' not in string and 'http' not in string:
lines[index] = durl + ('' if string.startswith('/') else '/') + string
data = '\n'.join(lines)
return [200, "application/vnd.apple.mpegur", data]
def host(self):
try:
url = self.fetch('https://www.shijue.pro/token.txt', headers=self.headers).json()['domain']
return url
except:
return "http://118.25.18.217:6632"
headers = {
'User-Agent': 'okhttp/3.12.1',
'Content-Type': 'application/json;'
}
key = ['TFLYWVJ5EG5YB1PLZLVVMGVLBGRIDCSW', 'nj6E5K4yYYT5W4ScJ3J3rJ2zrzcJkpTk']
def aes(self, word, key, mode='decrypt', bool=False):
key = key.encode('utf-8')
if mode == 'decrypt':
word = b64decode(word)
cipher = AES.new(key, AES.MODE_ECB)
decrypted = cipher.decrypt(word)
word = unpad(decrypted, AES.block_size).decode('utf-8')
if bool:
word = json.loads(word)
elif mode == 'encrypt':
cipher = AES.new(key, AES.MODE_ECB)
padded = pad(word.encode('utf-8'), AES.block_size)
encrypted = cipher.encrypt(padded)
word = b64encode(encrypted).decode('utf-8')
if bool:
word = quote(word)
return word

1
小米/js/guoguo.js Normal file

File diff suppressed because one or more lines are too long

1
小米/js/tm.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -277,6 +277,22 @@ http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHAN
http://[2409:8087:3c02:21:0:1:0:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002010/index.m3u8?IASHttpSessionId=
#EXTINF:-1 tvg-name="第一财经" tvg-logo="https://live.fanmingming.com/tv/上海第一财经.png" group-title="上海频道",第一财经
http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000004/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000004&IASHttpSessionId=OTT19019320240419154124000281
#EXTINF:-1 tvg-name="浙江公共新闻" tvg-logo="https://live.fanmingming.com/tv/浙江新闻.png" group-title="浙江频道",浙江新闻
https://ali-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8
#EXTINF:-1 tvg-name="浙江国际" tvg-logo="https://live.fanmingming.com/tv/浙江国际.png" group-title="浙江频道",浙江国际
https://ali-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8
#EXTINF:-1 tvg-name="浙江少儿" tvg-logo="https://live.fanmingming.com/tv/浙江少儿.png" group-title="浙江频道",浙江少儿
https://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8
#EXTINF:-1 tvg-name="浙江教科影视" tvg-logo="https://live.fanmingming.com/tv/浙江教科影视.png" group-title="浙江频道",浙江教科
https://ali-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8
#EXTINF:-1 tvg-name="之江纪录" tvg-logo="https://live.fanmingming.com/tv/之江纪录.png" group-title="浙江频道",之江纪录
https://ali-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8
#EXTINF:-1 tvg-name="浙江民生休闲" tvg-logo="https://live.fanmingming.com/tv/浙江民生休闲.png" group-title="浙江频道",浙江民生
https://ali-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8
#EXTINF:-1 tvg-name="浙江经视" tvg-logo="https://live.fanmingming.com/tv/浙江经济生活.png" group-title="浙江频道",浙江经济
https://ali-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8
#EXTINF:-1 tvg-name="浙江钱江都市" tvg-logo="https://live.fanmingming.com/tv/钱江都市.png" group-title="浙江频道",浙江钱江
https://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8
#EXTINF:-1 tvg-name="内蒙古综合" tvg-logo="https://live.fanmingming.com/tv/内蒙古新闻综合.png" group-title="内蒙频道",内蒙新闻
https://livestream-bt.nmtv.cn/nmtv/2316general.m3u8?txSecret=b4373417a82ed64e52b0982a66da8df2&txTime=771E8800
#EXTINF:-1 tvg-name="内蒙古经济生活" tvg-logo="https://live.fanmingming.com/tv/内蒙古经济生活.png" group-title="内蒙频道",内蒙经济

File diff suppressed because it is too large Load Diff

Binary file not shown.