# 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('', "").replace('', "") # 根据链接类型设置不同的图标 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