Skip to content

Commit 03fcbee

Browse files
authored
Merge pull request #2333 from pizzamx/matrix
[script.subtitles.zimukux] 0.1.8
2 parents 0c251f6 + 39a5b41 commit 03fcbee

File tree

2 files changed

+56
-31
lines changed

2 files changed

+56
-31
lines changed

script.subtitles.zimukux/addon.xml

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2-
<addon id="script.subtitles.zimukux" name="ZiMuKuX" version="0.1.6" provider-name="pizzamx">
2+
<addon id="script.subtitles.zimukux" name="ZiMuKuX" version="0.1.8" provider-name="pizzamx">
33
<requires>
44
<import addon="xbmc.python" version="3.0.0"/>
55
<import addon="script.module.beautifulsoup4" version="4.6.2"/>
@@ -20,6 +20,12 @@
2020
<fanart>resources/fanart.png</fanart>
2121
</assets>
2222
<news>
23+
v0.1.8(2022/10/10)
24+
- zimuku.org captcha design changed again and this plugin works again
25+
26+
v0.1.7(2022/6/18)
27+
- zimuku.org code changed again, made adaptions
28+
2329
v0.1.6(2022/5/25)
2430
- Adaption made for Zimuku's latest "anti-spoofing" mechanism (contribute by @SaneBow)
2531
- Optimization to reduce the number of requests (contribute by @SaneBow)

script.subtitles.zimukux/resources/lib/zimuku_agent.py

+49-30
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ class Zimuku_Agent:
3131
def __init__(self, base_url, dl_location, logger, unpacker, settings):
3232
self.ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)'
3333
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
3538
self.DOWNLOAD_LOCATION = dl_location
3639
self.FILE_MIN_SIZE = 1024
3740

@@ -41,10 +44,22 @@ def __init__(self, base_url, dl_location, logger, unpacker, settings):
4144
self.session = requests.Session()
4245
self.vertoken = ''
4346

47+
# 一次性调用,获取那个vertoken。目测这东西会过期,不过不管那么多了,感觉过两天验证机制又要变
48+
# self.init_site()
49+
4450
def set_setting(self, settings):
4551
# for unittestting purpose
4652
self.plugin_settings = settings
4753

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+
4863
def get_page(self, url, **kwargs):
4964
"""
5065
Get page with requests session.
@@ -68,20 +83,19 @@ def get_page(self, url, **kwargs):
6883

6984
a = requests.adapters.HTTPAdapter(max_retries=3)
7085
s.mount('http://', a)
71-
self.logger.log(sys._getframe().f_code.co_name, 'requests GET [%s]' % (url))
7286

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)
7592

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)
8193
http_response = s.get(url, headers=request_headers)
94+
"""
8295
if http_response.status_code != 200:
8396
s.get(url, headers=request_headers)
8497
http_response = s.get(url, headers=request_headers)
98+
"""
8599

86100
headers = http_response.headers
87101
http_body = http_response.content
@@ -181,22 +195,21 @@ def extract_sub_info(self, sub, lang_info_mode):
181195
"lang": langs
182196
}
183197

184-
def get_vertoken(self):
198+
def get_vertoken(self, resp):
185199
# 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 ''
200213

201214
def search(self, title, item):
202215
"""
@@ -218,13 +231,19 @@ def search(self, title, item):
218231
"""
219232
subtitle_list = []
220233

221-
vertoken = self.get_vertoken()
234+
#vertoken = self.get_vertoken()
222235

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)
226239
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))
228247
headers, data = self.get_page(url)
229248
soup = BeautifulSoup(data, 'html.parser')
230249
except Exception as e:
@@ -565,4 +584,4 @@ def download_links(self, links, referer):
565584
return '', ''
566585

567586
def close(self):
568-
self.session.close()
587+
self.session.close()

0 commit comments

Comments
 (0)