TV-BOX/tvbox/pro/py/米盘搜.py
yuanwangokk-1 702014e14d main
2025-09-14 23:44:46 +08:00

173 lines
5.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# coding=utf-8
# !/usr/bin/python
import requests
from bs4 import BeautifulSoup
import re
from base.spider import Spider
import sys
import json
import os
import base64
sys.path.append('..')
xurl = 'http://www.misoso.cc'
headerx = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36'
}
class Spider(Spider):
global xurl
global headerx
def getName(self):
return "米盘搜"
def init(self, extend):
pass
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def homeContent(self, filter):
pass
return result
def homeVideoContent(self):
pass
def categoryContent(self, cid, pg, filter, ext):
pass
def detailContent(self, ids):
try:
# 解码ID获取链接信息
data = json.loads(bytes.fromhex(ids[0]).decode())
purl = data['url']
# 如果有密码且链接中不包含密码参数,则添加密码
if data.get('password') and not re.search(r'pwd=|密码', purl):
purl = f"{purl}{'&' if '?' in purl else '?'}pwd={data['password']}"
print("获取盘链接为:", purl)
vod = {
'vod_id': '',
'vod_name': '',
'vod_pic': '',
'type_name': '',
'vod_year': '',
'vod_area': '',
'vod_remarks': '',
'vod_actor': '',
'vod_director': '',
'vod_content': '',
'vod_play_from': '米盘搜',
'vod_play_url': purl
}
# 推送链接到本地服务
params = {
"do": "push",
"url": purl
}
response = requests.post("http://127.0.0.1:9978/action", data=params, headers={
"Content-Type": "application/x-www-form-urlencoded"
})
return {'list': [vod]}
except Exception as e:
print(e)
# 如果解码失败尝试直接使用ID作为链接
purl = ids[0]
vod = {
'vod_id': '',
'vod_name': '',
'vod_pic': '',
'type_name': '',
'vod_year': '',
'vod_area': '',
'vod_remarks': '',
'vod_actor': '',
'vod_director': '',
'vod_content': '',
'vod_play_from': '米盘搜',
'vod_play_url': purl
}
params = {
"do": "push",
"url": purl
}
response = requests.post("http://127.0.0.1:9978/action", data=params, headers={
"Content-Type": "application/x-www-form-urlencoded"
})
return {'list': [vod]}
def playerContent(self, flag, id, vipFlags):
pass
def searchContentPage(self, key, quick, page='1'):
videos = []
data = {
"page": int(page),
"q": key,
"user": "",
"exact": False,
"format": [],
"share_time": "",
"size": 15,
"type": "",
"exclude_user": [],
"adv_params": {
"wechat_pwd": "",
"platform": "pc"
}
}
res = requests.post(f'{xurl}/v1/search/disk', json=data, headers=headerx).text
js1 = json.loads(res)
for i in js1['data']['list']:
url = i['link']
name = i['disk_name'].replace('<em>', "").replace('</em>', "")
# 根据链接类型设置不同的图标
if 'drive.uc' in url:
pic = 'https://img1.baidu.com/it/u=2031987711,74538878&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=505'
elif 'pan.quark' in url:
pic = 'https://img2.baidu.com/it/u=1963522584,2950363542&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
elif 'pan.baidu' in url:
pic = 'https://bkimg.cdn.bcebos.com/pic/35a85edf8db1cb13b7bc9af2d354564e93584b7e'
else:
pic = 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.alicdn.com%2Fbao%2Fuploaded%2Fi4%2F2213060290763%2FO1CN01joakK61HVUwob2JIJ_%21%212213060290763.jpg&refer=http%3A%2F%2Fimg.alicdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1757745912&t=e7b98fced3a4f092c8ef26490997b004'
# 编码链接信息包括URL和可能的密码
link_data = {
"url": url,
"password": i.get('password', '')
}
vid = json.dumps(link_data).encode().hex()
videos.append({
'vod_id': vid,
'vod_name': name,
'vod_pic': pic,
'vod_remarks': i.get('shared_time', '')
})
return {'list': videos, 'page': page}
def searchContent(self, key, quick):
return self.searchContentPage(key, quick, '1')
def searchContent(self, key, quick, pg):
return self.searchContentPage(key, quick, pg)
def localProxy(self, params):
if params['type'] == "m3u8":
return self.proxyM3u8(params)
elif params['type'] == "media":
return self.proxyMedia(params)
elif params['type'] == "ts":
return self.proxyTs(params)
return None