@@ -31,7 +31,10 @@ class Zimuku_Agent:
31
31
def __init__ (self , base_url , dl_location , logger , unpacker , settings ):
32
32
self .ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)'
33
33
self .ZIMUKU_BASE = base_url
34
- self .ZIMUKU_API = '%s/search?q=%%s&vertoken=%%s' % base_url
34
+ self .INIT_PAGE = base_url + '/?security_verify_data=313932302c31303830'
35
+ #self.ZIMUKU_API = '%s/search?q=%%s&vertoken=%%s' % base_url
36
+ self .TOKEN_PARAM = 'security_verify_data=313932302c31303830'
37
+ self .ZIMUKU_API = '%s/search?q=%%s' % base_url
35
38
self .DOWNLOAD_LOCATION = dl_location
36
39
self .FILE_MIN_SIZE = 1024
37
40
@@ -41,10 +44,22 @@ def __init__(self, base_url, dl_location, logger, unpacker, settings):
41
44
self .session = requests .Session ()
42
45
self .vertoken = ''
43
46
47
+ # 一次性调用,获取那个vertoken。目测这东西会过期,不过不管那么多了,感觉过两天验证机制又要变
48
+ # self.init_site()
49
+
44
50
def set_setting (self , settings ):
45
51
# for unittestting purpose
46
52
self .plugin_settings = settings
47
53
54
+ def init_site (self ):
55
+ self .session .cookies .set (
56
+ 'srcurl' , '68747470733a2f2f7a696d756b752e6f72672f' )
57
+ self .get_page (self .ZIMUKU_BASE )
58
+
59
+ self .get_page (self .INIT_PAGE )
60
+ _ , resp = self .get_page (self .ZIMUKU_BASE )
61
+ self .get_vertoken (resp )
62
+
48
63
def get_page (self , url , ** kwargs ):
49
64
"""
50
65
Get page with requests session.
@@ -68,20 +83,19 @@ def get_page(self, url, **kwargs):
68
83
69
84
a = requests .adapters .HTTPAdapter (max_retries = 3 )
70
85
s .mount ('http://' , a )
71
- self .logger .log (sys ._getframe ().f_code .co_name , 'requests GET [%s]' % (url ))
72
86
73
- url += '&' if '?' in url else '?'
74
- url += 'security_verify_data=313932302c31303830'
87
+ #url += '&' if '?' in url else '?'
88
+ #url += 'security_verify_data=313932302c31303830'
89
+
90
+ self .logger .log (sys ._getframe ().f_code .co_name ,
91
+ 'requests GET [%s]' % (url ), level = 3 )
75
92
76
- # https://github.com/pizzamx/zimuku_for_kodi/pull/5/commits/5d4ed2fbd87dc08682884c874018ac0f9f35b25c
77
- url1 = url + '&security_verify_data=313932302c31303830'
78
- url2 = url + '?security_verify_data=313932302c31303830'
79
- s .get (url , headers = request_headers )
80
- s .get (url1 , headers = request_headers )
81
93
http_response = s .get (url , headers = request_headers )
94
+ """
82
95
if http_response.status_code != 200:
83
96
s.get(url, headers=request_headers)
84
97
http_response = s.get(url, headers=request_headers)
98
+ """
85
99
86
100
headers = http_response .headers
87
101
http_body = http_response .content
@@ -181,22 +195,21 @@ def extract_sub_info(self, sub, lang_info_mode):
181
195
"lang" : langs
182
196
}
183
197
184
- def get_vertoken (self ):
198
+ def get_vertoken (self , resp ):
185
199
# get vertoken from home page and cache it for the session
186
- if self .vertoken :
187
- return self .vertoken
188
- else :
189
- self .logger .log (sys ._getframe ().f_code .co_name , "Fetching new vertoken form home page" )
190
- try :
191
- headers , data = self .get_page (self .ZIMUKU_BASE + '/' )
192
- hsoup = BeautifulSoup (data , 'html.parser' )
193
- vertoken = hsoup .find ('input' , attrs = {'name' : 'vertoken' }).attrs .get ('value' , '' )
194
- self .vertoken = vertoken
195
- return vertoken
196
- except Exception as e :
197
- self .logger .log (sys ._getframe ().f_code .co_name , 'ERROR GETTING vertoken, E=(%s: %s)' %
198
- (Exception , e ), level = 3 )
199
- return ''
200
+ self .logger .log (sys ._getframe ().f_code .co_name ,
201
+ "Fetching new vertoken form home page" )
202
+ try :
203
+ headers , data = self .get_page (self .ZIMUKU_BASE + '/' )
204
+ hsoup = BeautifulSoup (resp , 'html.parser' )
205
+ vertoken = hsoup .find (
206
+ 'input' , attrs = {'name' : 'vertoken' }).attrs .get ('value' , '' )
207
+ self .vertoken = vertoken
208
+ return vertoken
209
+ except Exception as e :
210
+ self .logger .log (sys ._getframe ().f_code .co_name , 'ERROR GETTING vertoken, E=(%s: %s)' %
211
+ (Exception , e ), level = 3 )
212
+ return ''
200
213
201
214
def search (self , title , item ):
202
215
"""
@@ -218,13 +231,19 @@ def search(self, title, item):
218
231
"""
219
232
subtitle_list = []
220
233
221
- vertoken = self .get_vertoken ()
234
+ # vertoken = self.get_vertoken()
222
235
223
- url = self . ZIMUKU_API % (urllib . parse . quote ( title ), vertoken )
224
- self . logger . log ( sys . _getframe (). f_code . co_name ,
225
- "Search API url: %s" % ( url ) )
236
+ get_cookie_url = '%s&%s' % (self . ZIMUKU_API %
237
+ ( urllib . parse . quote ( title )), self . TOKEN_PARAM )
238
+ url = self . ZIMUKU_API % urllib . parse . quote ( title )
226
239
try :
227
- # Search page.
240
+ # 10/10/22: 变成搜索要先拿 cookie
241
+ self .get_page (url )
242
+ self .get_page (get_cookie_url )
243
+
244
+ # 真正的搜索
245
+ self .logger .log (sys ._getframe ().f_code .co_name ,
246
+ "Search API url: %s" % (url ))
228
247
headers , data = self .get_page (url )
229
248
soup = BeautifulSoup (data , 'html.parser' )
230
249
except Exception as e :
@@ -565,4 +584,4 @@ def download_links(self, links, referer):
565
584
return '' , ''
566
585
567
586
def close (self ):
568
- self .session .close ()
587
+ self .session .close ()
0 commit comments