-
Notifications
You must be signed in to change notification settings - Fork 283
Expand file tree
/
Copy pathAppV1.py
More file actions
116 lines (96 loc) · 3.52 KB
/
AppV1.py
File metadata and controls
116 lines (96 loc) · 3.52 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
113
114
115
116
"""
@header({
searchable: 1,
filterable: 1,
quickSearch: 1,
title: 'AppV1',
lang: 'hipy'
})
"""
# -*- coding: utf-8 -*-
# by @嗷呜
import sys
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, query_params=None, t4_api=None):
super().__init__(query_params=query_params, t4_api=t4_api)
def init(self, extend=""):
'''
example:
{
"key": "py_appV1",
"name": "xxx",
"type": 3,
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"api": "./py/APPV1.py",
"ext": "http://cmsyt.lyyytv.cn"
}
'''
self.host = self.extend.strip()
pass
def getName(self):
return 'AppV1'
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}/v1.vod/types", headers=self.headers).json()
keys = ["class", "area", "year"]
filters = {}
classes = []
for item in data['data']['typelist']:
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}/v1.vod", headers=self.headers).json()
videos = data['data']['list']
return {'list': videos}
def categoryContent(self, tid, pg, filter, extend):
params = {'type': tid, 'class': extend.get('class', ''), 'area': extend.get('area', ''),
'year': extend.get('year', ''), 'limit': '18', 'page': pg}
data = self.fetch(f"{self.host}/v1.vod", params=params, headers=self.headers).json()
videos = data['data']
return videos
def detailContent(self, ids):
data = self.fetch(f"{self.host}/v1.vod/detail?vod_id={ids[0]}", headers=self.headers).json()
return {'list': [data['data']]}
def searchContent(self, key, quick, pg="1"):
data = self.fetch(f"{self.host}/v1.vod?wd={key}&page={pg}", headers=self.headers).json()
videos = data['data']['list']
for item in data['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