-
Notifications
You must be signed in to change notification settings - Fork 284
Expand file tree
/
Copy pathAppV2².py
More file actions
113 lines (95 loc) · 3.48 KB
/
AppV2².py
File metadata and controls
113 lines (95 loc) · 3.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
"""
@header({
searchable: 1,
filterable: 1,
quickSearch: 1,
title: 'AppV2²',
lang: 'hipy'
})
"""
# by @嗷呜
import json
import re
import sys
from Crypto.Util.Padding import unpad
sys.path.append('..')
try:
# from base.spider import Spider as BaseSpider
from base.spider import BaseSpider
except ImportError:
from t4.base.spider import BaseSpider
class Spider(BaseSpider):
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=self.extend.strip()
pass
def getName(self):
return 'AppV2²'
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