Generate _ value for 9anime.cloud too (#24)

9anime.cloud sometimes work without `_` parameter. Let's generate `_`, just to be safe.
master
Vishnunarayan K I 2018-06-23 12:45:55 +05:30 committed by GitHub
parent 70f36c5290
commit 2ed5da3750
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 10 deletions

View File

@ -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

View File

@ -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_