From 5d6a549665cb3acae0ec2f9234f1fee442aa4f48 Mon Sep 17 00:00:00 2001 From: Prayag Jain Date: Fri, 18 Oct 2019 16:11:38 +0530 Subject: [PATCH] website addition: animeflix.io --- README.md | 1 + anime_downloader/sites/animeflix.py | 57 +++++++++++++++++++++++++++++ anime_downloader/sites/init.py | 1 + 3 files changed, 59 insertions(+) create mode 100644 anime_downloader/sites/animeflix.py diff --git a/README.md b/README.md index 9a8e81a..fdd8e89 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ Yeah. Me too! That's why this tool exists. - Animeflv (Latin) - itsaturday.com - Animefreak +- Animeflix - Masterani.me [cloudlfare] (site shut down** ## Installation diff --git a/anime_downloader/sites/animeflix.py b/anime_downloader/sites/animeflix.py new file mode 100644 index 0000000..33b98e5 --- /dev/null +++ b/anime_downloader/sites/animeflix.py @@ -0,0 +1,57 @@ +from anime_downloader.sites.anime import Anime, AnimeEpisode, SearchResult +from anime_downloader.sites import helpers + + +class AnimeFlix(Anime, sitename='animeflix'): + """ + Site :https://animeflix.io/ + + """ + sitename = 'animeflix' + search_url = 'https://www.animeflix.io/api/search' + anime_url = 'https://www.animeflix.io/shows' + episodeList_url = 'https://www.animeflix.io/api/anime-schema' + meta_url = 'https://animeflix.io/api/anime/detail' + QUALITIES = ['360p', '480p', '720p', '1080p'] + + @classmethod + def search(cls, query): + search_results = helpers.get(cls.search_url, + params={'q' : query}).json() + search_results = [ + SearchResult( + title=result['title'], + url=f'{cls.anime_url}/{result["slug"]}', + ) + for result in search_results.get('data',[]) + ] + + return search_results + + def _scrape_episodes(self): + # TODO: find a better way to do splits + # find a way to pass some values within the class + self.slug = self.url.strip('/').split('/')[-1] + episodes = helpers.get(self.episodeList_url, + params={'slug': self.slug}).json() + return [ self.anime_url + episode['url'] for episode in episodes['episodes'] ] + + def _scrape_metadata(self): + meta = helpers.get(self.meta_url, + params={'slug': self.slug}).json() + self.title = meta['data']['title'] + + + +class AnimeFlixEpisode(AnimeEpisode, sitename='animeflix'): + episodeId_url = 'https://animeflix.io/api/episode' + stream_url = 'https://animeflix.io/api/videos?episode_id' + anime_url = 'https://www.animeflix.io/shows' + + def _get_sources(self): + episode = helpers.get(self.episodeId_url, + params={'episode_num': self.ep_no, 'slug': self.url.strip('/').split('/')[-2]}).json() + id = episode['data']['current']['id'] + download_link = helpers.get( + f'{self.stream_url}={id}').json()[0]['file'] + return [('no_extractor',download_link)] diff --git a/anime_downloader/sites/init.py b/anime_downloader/sites/init.py index 3e98e08..dbc6050 100644 --- a/anime_downloader/sites/init.py +++ b/anime_downloader/sites/init.py @@ -12,6 +12,7 @@ ALL_ANIME_SITES = [ ('animeflv', 'animeflv', 'Animeflv'), ('itsaturday', 'itsaturday', 'Itsaturday'), ('animefreak', 'animefreak', 'AnimeFreak'), + ('animeflix', 'animeflix', 'AnimeFlix'), ]