Sync all projects

This commit is contained in:
github-actions[bot]
2026-06-29 19:06:15 +00:00
parent 8dc4338f61
commit b596bc1708
9 changed files with 1095 additions and 204 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# by @嗷呜
# by @6666
import json
import re
import sys
+1 -1
View File
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# by @嗷呜
# by @666
import json
import sys
import time
+2 -3
View File
@@ -20,8 +20,7 @@ class Spider(Spider):
{
"vod_id": "/" + item['address'],
"vod_name": item['title'],
"vod_pic": item['xinimg'].replace("http://cdn.gcufbd.top/img/",
"https://slink.ltd/https://raw.githubusercontent.com/fish2018/lib/refs/heads/main/imgs/"),
"vod_pic": item['xinimg'],
"vod_remarks": item['Number'],
"style": {"type": "rect", "ratio": 1.33}
} for item in sorted(data, key=lambda x: int(x['Number']), reverse=True)
@@ -43,7 +42,7 @@ class Spider(Spider):
vod = [{
"vod_play_from": 'sebo',
"vod_play_url": playUrls,
"vod_content": 'https://github.com/fish2018',
"vod_content": '简介',
}]
result = {"list": vod}
return result
+205
View File
@@ -0,0 +1,205 @@
# -*- coding: utf-8 -*-
# by @6666
import sys
import time
from concurrent.futures import ThreadPoolExecutor, as_completed
sys.path.append('..')
from base.spider import Spider
class Spider(Spider):
def init(self, extend=""):
pass
def getName(self):
pass
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def destroy(self):
pass
rhost='https://www.mgtv.com'
host='https://pianku.api.mgtv.com'
vhost='https://pcweb.api.mgtv.com'
mhost='https://dc.bz.mgtv.com'
shost='https://mobileso.bz.mgtv.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.61 Chrome/126.0.6478.61 Not/A)Brand/8 Safari/537.36',
'origin': rhost,
'referer': f'{rhost}/'
}
def homeContent(self, filter):
result = {}
cateManual = {
"电影": "3",
"电视剧": "2",
"综艺": "1",
"动画": "50",
"少儿": "10",
"纪录片": "51",
"教育": "115"
}
classes = []
filters = {}
for k in cateManual:
classes.append({
'type_name': k,
'type_id': cateManual[k]
})
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
return result
def homeVideoContent(self):
data=self.fetch(f'{self.mhost}/dynamic/v1/channel/index/0/0/0/1000000/0/0/17/1354?type=17&version=5.0&t={str(int(time.time()*1000))}&_support=10000000', headers=self.headers).json()
videoList = []
for i in data['data']:
if i.get('DSLList') and len(i['DSLList']):
for j in i['DSLList']:
if j.get('data') and j['data'].get('items') and len(j['data']['items']):
for k in j['data']['items']:
videoList.append({
'vod_id': k["videoId"],
'vod_name': k['videoName'],
'vod_pic': k['img'],
'vod_year': k.get('cornerTitle'),
'vod_remarks': k.get('time') or k.get('desc'),
})
return {'list':videoList}
def categoryContent(self, tid, pg, filter, extend):
body={
'allowedRC': '1',
'platform': 'pcweb',
'channelId': tid,
'pn': pg,
'pc': '80',
'hudong': '1',
'_support': '10000000'
}
body.update(extend)
data=self.fetch(f'{self.host}/rider/list/pcweb/v3', params=body, headers=self.headers).json()
videoList = []
for i in data['data']['hitDocs']:
videoList.append({
'vod_id': i["playPartId"],
'vod_name': i['title'],
'vod_pic': i['img'],
'vod_year': (i.get('rightCorner',{}) or {}).get('text') or i.get('year'),
'vod_remarks': i['updateInfo']
})
result = {}
result['list'] = videoList
result['page'] = pg
result['pagecount'] = 9999
result['limit'] = 90
result['total'] = 999999
return result
def detailContent(self, ids):
vbody={'allowedRC': '1', 'vid': ids[0], 'type': 'b', '_support': '10000000'}
vdata=self.fetch(f'{self.vhost}/video/info', params=vbody, headers=self.headers).json()
d=vdata['data']['info']['detail']
vod = {
'vod_name': vdata['data']['info']['title'],
'type_name': d.get('kind'),
'vod_year': d.get('releaseTime'),
'vod_area': d.get('area'),
'vod_lang': d.get('language'),
'vod_remarks': d.get('updateInfo'),
'vod_actor': d.get('leader'),
'vod_director': d.get('director'),
'vod_content': d.get('story'),
'vod_play_from': '芒果TV',
'vod_play_url': ''
}
data,pdata=self.fetch_page_data('1', ids[0],True)
pagecount=data['data'].get('total_page') or 1
if int(pagecount)>1:
pages = list(range(2, pagecount+1))
page_results = {}
with ThreadPoolExecutor(max_workers=10) as executor:
future_to_page = {
executor.submit(self.fetch_page_data, page, ids[0]): page
for page in pages
}
for future in as_completed(future_to_page):
page = future_to_page[future]
try:
result = future.result()
page_results[page] = result
except Exception as e:
print(f"Error fetching page {page}: {e}")
for page in sorted(page_results.keys()):
pdata.extend(page_results[page])
vod['vod_play_url'] = '#'.join(pdata)
return {'list':[vod]}
def searchContent(self, key, quick, pg="1"):
data=self.fetch(f'{self.shost}/applet/search/v1?channelCode=mobile-wxap&q={key}&pn={pg}&pc=10&_support=10000000', headers=self.headers).json()
videoList = []
for i in data['data']['contents']:
if i.get('data') and len(i['data']):
k = i['data'][0]
if k.get('vid') and k.get('img'):
try:
videoList.append({
'vod_id': k['vid'],
'vod_name': k['title'],
'vod_pic': k['img'],
'vod_year': (i.get('rightTopCorner',{}) or {}).get('text') or i.get('year'),
'vod_remarks': '/'.join(i.get('desc',[])),
})
except:
print(k)
return {'list':videoList,'page':pg}
def playerContent(self, flag, id, vipFlags):
id=f'{self.rhost}{id}'
return {'jx':1,'parse': 1, 'url': id, 'header': ''}
def localProxy(self, param):
pass
def getf(self, body):
params = {
'allowedRC': '1',
'channelId': body['type_id'],
'platform': 'pcweb',
'_support': '10000000',
}
data = self.fetch(f'{self.host}/rider/config/channel/v1', params=params, headers=self.headers).json()
ft = []
for i in data['data']['listItems']:
try:
value_array = [{"n": value['tagName'], "v": value['tagId']} for value in i['items'] if
value.get('tagName')]
ft.append({"key": i['eName'], "name": i['typeName'], "value": value_array})
except:
print(i)
return body['type_id'], ft
def fetch_page_data(self, page, id, b=False):
body = {'version': '5.5.35', 'video_id': id, 'page': page, 'size': '30',
'platform': '4', 'src': 'mgtv', 'allowedRC': '1', '_support': '10000000'}
data = self.fetch(f'{self.vhost}/episode/list', params=body, headers=self.headers).json()
ldata = [f'{i["t3"]}${i["url"]}' for i in data['data']['list']]
if b:
return data, ldata
else:
return ldata
+463
View File
@@ -0,0 +1,463 @@
# -*- coding: utf-8 -*-
# @Author : Doubebly
# @Time : 2025/5/29 22:07
import sys
import hashlib
import time
import requests
import re
import json
sys.path.append('..')
from base.spider import Spider
class Spider(Spider):
def getName(self):
return "Aidianying"
def init(self, extend):
self.home_url = 'https://m.sdzhgt.com/'
self.ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
self.error_url = "https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-720p.mp4"
def getDependence(self):
return []
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def homeContent(self, filter):
return {
'class': [{'type_id': '1', 'type_name': '电影'},
{'type_id': '2', 'type_name': '电视剧'},
{'type_id': '3', 'type_name': '综艺'},
{'type_id': '4', 'type_name': '动漫'}],
'filters': {
'1': [
{'key': 'type',
'name': '类型',
'value': [{'n': '全部', 'v': ''},
{'n': '喜剧', 'v': '/type/22'},
{'n': '动作', 'v': '/type/23'},
{'n': '科幻', 'v': '/type/30'},
{'n': '爱情', 'v': '/type/26'},
{'n': '悬疑', 'v': '/type/27'},
{'n': '奇幻', 'v': '/type/87'},
{'n': '剧情', 'v': '/type/37'},
{'n': '恐怖', 'v': '/type/36'},
{'n': '犯罪', 'v': '/type/35'},
{'n': '动画', 'v': '/type/33'},
{'n': '惊悚', 'v': '/type/34'},
{'n': '战争', 'v': '/type/25'},
{'n': '冒险', 'v': '/type/31'},
{'n': '灾难', 'v': '/type/81'},
{'n': '伦理', 'v': '/type/83'},
{'n': '其他', 'v': '/type/43'}]},
{'key': 'area',
'name': '地区',
'value': [{'n': '全部', 'v': ''},
{'n': '中国大陆', 'v': '/area/中国大陆'},
{'n': '中国香港', 'v': '/area/中国香港'},
{'n': '中国台湾', 'v': '/area/中国台湾'},
{'n': '美国', 'v': '/area/美国'},
{'n': '日本', 'v': '/area/日本'},
{'n': '韩国', 'v': '/area/韩国'},
{'n': '印度', 'v': '/area/印度'},
{'n': '泰国', 'v': '/area/泰国'},
{'n': '其他', 'v': '/area/其他'}]},
{'key': 'year',
'name': '年份',
'value': [{'n': '全部', 'v': ''},
{'n': '2024', 'v': '/year/2024'},
{'n': '2023', 'v': '/year/2023'},
{'n': '2022', 'v': '/year/2022'},
{'n': '2021', 'v': '/year/2021'},
{'n': '2020', 'v': '/year/2020'},
{'n': '2019', 'v': '/year/2019'},
{'n': '2018', 'v': '/year/2018'},
{'n': '2017', 'v': '/year/2017'},
{'n': '2016', 'v': '/year/2016'},
{'n': '2015', 'v': '/year/2015'},
{'n': '2014', 'v': '/year/2014'},
{'n': '2013', 'v': '/year/2013'},
{'n': '2012', 'v': '/year/2012'},
{'n': '2011', 'v': '/year/2011'},
{'n': '2010', 'v': '/year/2010'},
{'n': '2009~2000', 'v': '/year/2009~2000'}]},
{'key': 'lang',
'name': '语言',
'value': [{'n': '全部', 'v': ''},
{'n': '国语', 'v': '/lang/国语'},
{'n': '英语', 'v': '/lang/英语'},
{'n': '粤语', 'v': '/lang/粤语'},
{'n': '韩语', 'v': '/lang/韩语'},
{'n': '日语', 'v': '/lang/日语'},
{'n': '其他', 'v': '/lang/其他'}]},
{'key': 'by',
'name': '排序',
'value': [{'n': '上映时间', 'v': '/sortType/1/sortOrder/0'},
{'n': '人气高低', 'v': '/sortType/3/sortOrder/0'},
{'n': '评分高低', 'v': '/sortType/4/sortOrder/0'}]}
],
'2': [
{'key': 'type',
'name': '类型',
'value': [{'n': '全部', 'v': ''},
{'n': '国产剧', 'v': '/type/14'},
{'n': '欧美剧', 'v': '/type/15'},
{'n': '港台剧', 'v': '/type/16'},
{'n': '日韩剧', 'v': '/type/62'},
{'n': '其他剧', 'v': '/type/68'}]},
{'key': 'class',
'name': '剧情',
'value': [{'n': '全部', 'v': ''},
{'n': '古装', 'v': '/class/古装'},
{'n': '战争', 'v': '/class/战争'},
{'n': '喜剧', 'v': '/class/喜剧'},
{'n': '家庭', 'v': '/class/家庭'},
{'n': '犯罪', 'v': '/class/犯罪'},
{'n': '动作', 'v': '/class/动作'},
{'n': '奇幻', 'v': '/class/奇幻'},
{'n': '剧情', 'v': '/class/剧情'},
{'n': '历史', 'v': '/class/历史'},
{'n': '短片', 'v': '/class/短片'}]},
{'key': 'area',
'name': '地区',
'value': [{'n': '全部', 'v': ''},
{'n': '中国大陆', 'v': '/area/中国大陆'},
{'n': '中国香港', 'v': '/area/中国香港'},
{'n': '中国台湾', 'v': '/area/中国台湾'},
{'n': '日本', 'v': '/area/日本'},
{'n': '韩国', 'v': '/area/韩国'},
{'n': '美国', 'v': '/area/美国'},
{'n': '泰国', 'v': '/area/泰国'},
{'n': '其他', 'v': '/area/其他'}]},
{'key': 'year',
'name': '时间',
'value': [{'n': '全部', 'v': ''},
{'n': '2024', 'v': '/year/2024'},
{'n': '2023', 'v': '/year/2023'},
{'n': '2022', 'v': '/year/2022'},
{'n': '2021', 'v': '/year/2021'},
{'n': '2020', 'v': '/year/2020'},
{'n': '2019', 'v': '/year/2019'},
{'n': '2018', 'v': '/year/2018'},
{'n': '2017', 'v': '/year/2017'},
{'n': '2016', 'v': '/year/2016'},
{'n': '2015', 'v': '/year/2015'},
{'n': '2014', 'v': '/year/2014'},
{'n': '2013', 'v': '/year/2013'},
{'n': '2012', 'v': '/year/2012'},
{'n': '2011', 'v': '/year/2011'},
{'n': '2010', 'v': '/year/2010'}]},
{'key': 'lang',
'name': '语言',
'value': [{'n': '全部', 'v': ''},
{'n': '普通话', 'v': '/lang/普通话'},
{'n': '英语', 'v': '/lang/英语'},
{'n': '粤语', 'v': '/lang/粤语'},
{'n': '韩语', 'v': '/lang/韩语'},
{'n': '日语', 'v': '/lang/日语'},
{'n': '泰语', 'v': '/lang/泰语'},
{'n': '其他', 'v': '/lang/其他'}, ]},
{'key': 'by',
'name': '排序',
'value': [{'n': '最近更新', 'v': '/sortType/1/sortOrder/0'},
{'n': '添加时间', 'v': '/sortType/2/sortOrder/0'},
{'n': '人气高低', 'v': '/sortType/3/sortOrder/0'},
{'n': '评分高低', 'v': '/sortType/4/sortOrder/0'}]}
],
'3': [
{'key': 'type',
'name': '类型',
'value': [{'n': '全部', 'v': ''},
{'n': '国产综艺', 'v': '/type/69'},
{'n': '港台综艺', 'v': '/type/70'},
{'n': '日韩综艺', 'v': '/type/72'},
{'n': '欧美综艺', 'v': '/type/73'}]},
{'key': 'class',
'name': '剧情',
'value': [{'n': '全部', 'v': ''},
{'n': '真人秀', 'v': '/class/真人秀'},
{'n': '音乐', 'v': '/class/音乐'},
{'n': '脱口秀', 'v': '/class/脱口秀'}]},
{'key': 'area',
'name': '地区',
'value': [{'n': '全部', 'v': ''},
{'n': '中国大陆', 'v': '/area/中国大陆'},
{'n': '中国香港', 'v': '/area/中国香港'},
{'n': '中国台湾', 'v': '/area/中国台湾'},
{'n': '日本', 'v': '/area/日本'},
{'n': '韩国', 'v': '/area/韩国'},
{'n': '美国', 'v': '/area/美国'},
{'n': '其他', 'v': '/area/其他'}]},
{'key': 'year',
'name': '时间',
'value': [{'n': '全部', 'v': ''},
{'n': '2024', 'v': '/year/2024'},
{'n': '2023', 'v': '/year/2023'},
{'n': '2022', 'v': '/year/2022'},
{'n': '2021', 'v': '/year/2021'},
{'n': '2020', 'v': '/year/2020'}]},
{'key': 'lang',
'name': '语言',
'value': [{'n': '全部', 'v': ''},
{'n': '国语', 'v': '/lang/国语'},
{'n': '英语', 'v': '/lang/英语'},
{'n': '粤语', 'v': '/lang/粤语'},
{'n': '韩语', 'v': '/lang/韩语'},
{'n': '日语', 'v': '/lang/日语'},
{'n': '其他', 'v': '/lang/其他'}, ]},
{'key': 'by',
'name': '排序',
'value': [{'n': '最近更新', 'v': '/sortType/1/sortOrder/0'},
{'n': '添加时间', 'v': '/sortType/2/sortOrder/0'},
{'n': '人气高低', 'v': '/sortType/3/sortOrder/0'},
{'n': '评分高低', 'v': '/sortType/4/sortOrder/0'}]}
],
'4': [
{'key': 'type',
'name': '类型',
'value': [{'n': '全部', 'v': ''},
{'n': '国产动漫', 'v': '/type/75'},
{'n': '日韩动漫', 'v': '/type/76'},
{'n': '欧美动漫', 'v': '/type/77'}]},
{'key': 'class',
'name': '剧情',
'value': [{'n': '全部', 'v': ''},
{'n': '喜剧', 'v': '/class/喜剧'},
{'n': '科幻', 'v': '/class/科幻'},
{'n': '热血', 'v': '/class/热血'},
{'n': '冒险', 'v': '/class/冒险'},
{'n': '动作', 'v': '/class/动作'},
{'n': '运动', 'v': '/class/运动'},
{'n': '战争', 'v': '/class/战争'},
{'n': '儿童', 'v': '/class/儿童'}]},
{'key': 'area',
'name': '地区',
'value': [{'n': '全部', 'v': ''},
{'n': '中国大陆', 'v': '/area/中国大陆'},
{'n': '日本', 'v': '/area/日本'},
{'n': '美国', 'v': '/area/美国'},
{'n': '其他', 'v': '/area/其他'}]},
{'key': 'year',
'name': '时间',
'value': [{'n': '全部', 'v': ''},
{'n': '2024', 'v': '/year/2024'},
{'n': '2023', 'v': '/year/2023'},
{'n': '2022', 'v': '/year/2022'},
{'n': '2021', 'v': '/year/2021'},
{'n': '2020', 'v': '/year/2020'},
{'n': '2019', 'v': '/year/2019'},
{'n': '2018', 'v': '/year/2018'},
{'n': '2017', 'v': '/year/2017'},
{'n': '2016', 'v': '/year/2016'},
{'n': '2015', 'v': '/year/2015'},
{'n': '2014', 'v': '/year/2014'},
{'n': '2013', 'v': '/year/2013'},
{'n': '2012', 'v': '/year/2012'},
{'n': '2011', 'v': '/year/2011'},
{'n': '2010', 'v': '/year/2010'}]},
{'key': 'lang',
'name': '语言',
'value': [{'n': '全部', 'v': ''},
{'n': '国语', 'v': '/lang/国语'},
{'n': '英语', 'v': '/lang/英语'},
{'n': '日语', 'v': '/lang/日语'},
{'n': '其他', 'v': '/lang/其他'}]},
{'key': 'by',
'name': '排序',
'value': [{'n': '最近更新', 'v': '/sortType/1/sortOrder/0'},
{'n': '添加时间', 'v': '/sortType/2/sortOrder/0'},
{'n': '人气高低', 'v': '/sortType/3/sortOrder/0'},
{'n': '评分高低', 'v': '/sortType/4/sortOrder/0'}]}
]
}
}
def homeVideoContent(self):
video_list = []
t = str(int(time.time() * 1000))
# t = '1723292093234'
data = f'key=cb808529bae6b6be45ecfab29a4889bc&t={t}'
data_md5 = hashlib.md5(data.encode()).hexdigest()
data_sha1 = hashlib.sha1(data_md5.encode()).hexdigest()
h = {
"User-Agent": self.ua,
'referer': self.home_url, 't': t, 'sign': data_sha1}
try:
res = requests.get(f'{self.home_url}/api/mw-movie/anonymous/home/hotSearch', headers=h)
data_list = res.json()['data']
for i in data_list:
video_list.append(
{
'vod_id': i['vodId'],
'vod_name': i['vodName'],
'vod_pic': i['vodPic'],
'vod_remarks': i['vodVersion'] if i['typeId1'] == 1 else i['vodRemarks']
}
)
except requests.RequestException as e:
return {
'list': [],
'parse': 0,
'jx': 0
}
return {
'list': video_list,
'parse': 0,
'jx': 0
}
def categoryContent(self, cid, page, filter, ext):
t = cid
_type = ext.get('type') if ext.get('type') else ''
__class = ext.get('class') if ext.get('class') else ''
_area = ext.get('area') if ext.get('area') else ''
_year = ext.get('year') if ext.get('year') else ''
_lang = ext.get('lang') if ext.get('lang') else ''
_by = ext.get('by') if ext.get('by') else ''
video_list = []
h = {
"User-Agent": self.ua,
'referer': self.home_url,
}
try:
res = requests.get(
f'{self.home_url}/vod/show/id/{t}{_type}{__class}{_area}{_year}{_lang}{_by}/page/{page}',
headers=h)
aa = re.findall(r'\\"list\\":(.*?)}}}]', res.text)
if not aa:
return {'list': [], 'parse': 0, 'jx': 0}
bb = aa[0].replace('\\"', '"')
data_list = json.loads(bb)
for i in data_list:
video_list.append(
{
'vod_id': i['vodId'],
'vod_name': i['vodName'],
'vod_pic': i['vodPic'],
'vod_remarks': i['vodVersion'] if i['typeId1'] == 1 else i['vodRemarks']
}
)
except requests.RequestException as e:
return {'list': [], 'msg': e}
return {'list': video_list, 'parse': 0, 'jx': 0}
def detailContent(self, did):
ids = did[0]
video_list = []
t = str(int(time.time() * 1000))
# t = '1723292093234'
data = f'id={ids}&key=cb808529bae6b6be45ecfab29a4889bc&t={t}'
data_md5 = hashlib.md5(data.encode()).hexdigest()
data_sha1 = hashlib.sha1(data_md5.encode()).hexdigest()
h = {
"User-Agent": self.ua,
'referer': self.home_url,
't': t, 'sign': data_sha1
}
try:
res = requests.get(f'{self.home_url}/api/mw-movie/anonymous/video/detail?id={ids}', headers=h)
data = res.json()['data']
play_list = data['episodeList']
vod_play_url = []
for i in play_list:
name = i['name']
url = ids + '/' + str(i['nid'])
vod_play_url.append(name + '$' + url)
video_list.append(
{
'type_name': data['typeName'],
'vod_id': ids,
'vod_name': data['vodName'],
'vod_remarks': data['vodRemarks'],
'vod_year': data['vodYear'],
'vod_area': data['vodArea'],
'vod_actor': data['vodActor'],
'vod_director': data['vodDirector'],
'vod_content': data['vodContent'],
'vod_play_from': '老僧酿酒',
'vod_play_url': '#'.join(vod_play_url)
}
)
except requests.RequestException as e:
return {'list': [], 'msg': e}
return {"list": video_list, 'parse': 0, 'jx': 0}
def searchContent(self, key, quick, page='1'):
wd = key
video_list = []
t = str(int(time.time() * 1000))
data = f'keyword={wd}&pageNum={page}&pageSize=12&key=cb808529bae6b6be45ecfab29a4889bc&t={t}'
data_md5 = hashlib.md5(data.encode()).hexdigest()
data_sha1 = hashlib.sha1(data_md5.encode()).hexdigest()
h = {
"User-Agent": self.ua,
'referer': self.home_url,
't': t, 'sign': data_sha1
}
try:
response = requests.get(
f'{self.home_url}/api/mw-movie/anonymous/video/searchByWord?keyword={wd}&pageNum={page}&pageSize=12',
headers=h,
)
data_list = response.json()['data']['result']['list']
for i in data_list:
video_list.append(
{
'vod_id': i['vodId'],
'vod_name': i['vodName'],
'vod_pic': i['vodPic'],
'vod_remarks': i['vodVersion'] if i['typeId1'] == 1 else i['vodRemarks']
}
)
except requests.RequestException as e:
return {'list': [], 'msg': e}
return {'list': video_list, 'parse': 0, 'jx': 0}
def playerContent(self, flag, pid, vipFlags):
url = pid
play_url = self.error_url
data = url.split('/')
_id = data[0]
_nid = data[1]
t = str(int(time.time() * 1000))
# t = '1723292093234'
data = f'id={_id}&nid={_nid}&key=cb808529bae6b6be45ecfab29a4889bc&t={t}'
data_md5 = hashlib.md5(data.encode()).hexdigest()
data_sha1 = hashlib.sha1(data_md5.encode()).hexdigest()
h = {
"User-Agent": self.ua,
'referer': self.home_url,
't': t, 'sign': data_sha1
}
h2 = {
"User-Agent": self.ua,
}
try:
res = requests.get(
f'{self.home_url}/api/mw-movie/anonymous/v2/video/episode/url?id={_id}&nid={_nid}',
headers=h)
play_url = res.json()['data']['list'][0]['url']
except requests.RequestException as e:
return {"url": play_url, "header": h2, "parse": 0, "jx": 0}
return {"url": play_url, "header": h2, "parse": 0, "jx": 0}
def localProxy(self, params):
pass
def destroy(self):
return '正在Destroy'
if __name__ == '__main__':
pass