Generate _ value for 9anime.cloud too (#24)
9anime.cloud sometimes work without `_` parameter. Let's generate `_`, just to be safe.master
parent
70f36c5290
commit
2ed5da3750
|
@ -5,7 +5,7 @@
|
|||
[![PyPI pyversions](https://img.shields.io/badge/python-3.3%2B-blue.svg)](https://pypi.org/project/anime-downloader/)
|
||||
[![PyPI](https://img.shields.io/pypi/v/anime-downloader.svg)](https://pypi.org/project/anime-downloader/)
|
||||
|
||||
#### NOTE: **9anime support has been experiencing issues for the past week. Kissanime still works as expected.**
|
||||
#### NOTE: **9anime support has been experiencing issues for the past week. It might work but not 100% reliable. Kissanime still works as expected.**
|
||||
|
||||
Ever dreamt about watching anime for free effortlessly without all those unbearable ads? Ever dreamt of downloading your favourite anime for that long trip?
|
||||
|
||||
|
@ -26,7 +26,7 @@ Yeah. Me too! That's why this tool exists.
|
|||
|
||||
<!-- [![CircleCI](https://circleci.com/gh/vn-ki/anime-downloader/tree/master.svg?style=svg)](https://circleci.com/gh/vn-ki/anime-downloader/tree/master) -->
|
||||
|
||||
- 9anime (Temporarily not working)
|
||||
- 9anime
|
||||
- KissAnime [cloudflare]
|
||||
- KissCartoon [cloudflare]
|
||||
- Gogoanime
|
||||
|
|
|
@ -23,8 +23,8 @@ class NineAnimeEpisode(BaseEpisode):
|
|||
'ts': self.ts
|
||||
}
|
||||
|
||||
def get_stream_url(base_url, params):
|
||||
params['param_'] = int(generate_(params))
|
||||
def get_stream_url(base_url, params, DD=None):
|
||||
params['param_'] = int(generate_(params, DD=DD))
|
||||
logging.debug('API call params: {}'.format(params))
|
||||
url = base_url.format(**params)
|
||||
data = util.get_json(url)
|
||||
|
@ -36,12 +36,11 @@ class NineAnimeEpisode(BaseEpisode):
|
|||
except KeyError:
|
||||
try:
|
||||
del params['param_']
|
||||
del params['ts']
|
||||
# I don't know if this is reliable or not.
|
||||
# For now it works.
|
||||
url = get_stream_url(
|
||||
'http://9anime.cloud/ajax/episode/info?id={id}&server={server}',
|
||||
params)
|
||||
'http://9anime.cloud/ajax/episode/info?ts={ts}&_={param_}&id={id}&server={server}',
|
||||
params, DD="iQDWcsGqN")
|
||||
except Exception as e:
|
||||
raise AnimeDLError(
|
||||
'9anime probably changed their API again. Check the issues'
|
||||
|
@ -178,12 +177,24 @@ def a(t, e):
|
|||
return hex(n)[2:]
|
||||
|
||||
|
||||
def generate_(data):
|
||||
DD = "a29856fa"
|
||||
def a_old(t, e):
|
||||
n = 0
|
||||
for i in range(max(len(t), len(e))):
|
||||
n += ord(e[i]) if i < len(e) else 0
|
||||
n += ord(t[i]) if i < len(t) else 0
|
||||
return hex(n)[2:]
|
||||
|
||||
|
||||
def generate_(data, DD=None):
|
||||
if DD is None:
|
||||
DD = "a29856fa"
|
||||
param_ = s(DD)
|
||||
|
||||
for key, value in data.items():
|
||||
trans = a(DD + key, str(value))
|
||||
if DD is None:
|
||||
trans = a(DD + key, str(value))
|
||||
else:
|
||||
trans = a_old(DD + key, str(value))
|
||||
param_ += s(trans)
|
||||
|
||||
return param_
|
||||
|
|
Loading…
Reference in New Issue