98 lines
3.2 KiB
Python
98 lines
3.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
# by @嗷呜
|
|
import sys
|
|
sys.path.append('..')
|
|
from base.spider import Spider
|
|
|
|
class Spider(Spider):
|
|
|
|
def init(self, extend=""):
|
|
'''
|
|
example:
|
|
{
|
|
"key": "py_appV2",
|
|
"name": "xxx",
|
|
"type": 3,
|
|
"searchable": 1,
|
|
"quickSearch": 1,
|
|
"filterable": 1,
|
|
"api": "./py/APPV2.py",
|
|
"ext": "http://cmsyt.lyyytv.cn"
|
|
}
|
|
|
|
'''
|
|
self.host=extend
|
|
pass
|
|
|
|
def getName(self):
|
|
pass
|
|
|
|
def isVideoFormat(self, url):
|
|
pass
|
|
|
|
def manualVideoCheck(self):
|
|
pass
|
|
|
|
def destroy(self):
|
|
pass
|
|
|
|
headers = {
|
|
'User-Agent': 'okhttp/4.12.0',
|
|
}
|
|
|
|
def homeContent(self, filter):
|
|
data = self.fetch(f"{self.host}//api.php/app/nav?token=",headers=self.headers).json()
|
|
keys = ["class", "area", "lang", "year", "letter", "by", "sort"]
|
|
filters = {}
|
|
classes = []
|
|
for item in data['list']:
|
|
has_non_empty_field = False
|
|
jsontype_extend = item["type_extend"]
|
|
classes.append({"type_name": item["type_name"], "type_id": item["type_id"]})
|
|
for key in keys:
|
|
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 keys 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": dkey, "value": value_array})
|
|
result = {}
|
|
result["class"] = classes
|
|
result["filters"] = filters
|
|
return result
|
|
|
|
def homeVideoContent(self):
|
|
data=self.fetch(f"{self.host}/api.php/app/index_video?token=",headers=self.headers).json()
|
|
videos=[]
|
|
for item in data['list']:videos.extend(item['vlist'])
|
|
return {'list':videos}
|
|
|
|
def categoryContent(self, tid, pg, filter, extend):
|
|
params = {'tid':tid,'class':extend.get('class',''),'area':extend.get('area',''),'lang':extend.get('lang',''),'year':extend.get('year',''),'limit':'18','pg':pg}
|
|
data=self.fetch(f"{self.host}/api.php/app/video",params=params,headers=self.headers).json()
|
|
return data
|
|
|
|
def detailContent(self, ids):
|
|
data=self.fetch(f"{self.host}/api.php/app/video_detail?id={ids[0]}",headers=self.headers).json()
|
|
return {'list':[data['data']]}
|
|
|
|
def searchContent(self, key, quick, pg="1"):
|
|
data=self.fetch(f"{self.host}/api.php/app/search?text={key}&pg={pg}",headers=self.headers).json()
|
|
videos=data['list']
|
|
for item in data['list']:
|
|
item.pop('type', None)
|
|
return {'list':videos,'page':pg}
|
|
|
|
def playerContent(self, flag, id, vipFlags):
|
|
return {'jx':1,'playUrl':'','parse': 1, 'url': id, 'header': self.headers}
|
|
|
|
def localProxy(self, param):
|
|
pass
|
|
|
|
|