From cf32f573de3362631c27a79ca2027ea3b91ed020 Mon Sep 17 00:00:00 2001 From: Arjix <53124886+ArjixGamer@users.noreply.github.com> Date: Wed, 27 Jan 2021 16:12:35 +0200 Subject: [PATCH 1/5] Update init.py --- anime_downloader/sites/init.py | 1 + 1 file changed, 1 insertion(+) diff --git a/anime_downloader/sites/init.py b/anime_downloader/sites/init.py index e311118..affdd78 100644 --- a/anime_downloader/sites/init.py +++ b/anime_downloader/sites/init.py @@ -36,6 +36,7 @@ ALL_ANIME_SITES = [ ('nyaa', 'nyaa', 'Nyaa'), ('putlockers', 'putlockers', 'PutLockers'), ('ryuanime', 'ryuanime', 'RyuAnime'), + ('shiro', 'shiro', 'Shiro'), ('subsplease', 'subsplease', 'SubsPlease'), ('twistmoe', 'twist.moe', 'TwistMoe'), ('tenshimoe', 'tenshi.moe', 'TenshiMoe'), From cb90bafa169cdfae4db5fcfb59e9c3fd36cc4b1a Mon Sep 17 00:00:00 2001 From: Arjix <53124886+ArjixGamer@users.noreply.github.com> Date: Wed, 27 Jan 2021 16:13:18 +0200 Subject: [PATCH 2/5] Add files via upload --- anime_downloader/sites/shiro.py | 68 +++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 anime_downloader/sites/shiro.py diff --git a/anime_downloader/sites/shiro.py b/anime_downloader/sites/shiro.py new file mode 100644 index 0000000..6c8962b --- /dev/null +++ b/anime_downloader/sites/shiro.py @@ -0,0 +1,68 @@ +import re +from anime_downloader.sites.anime import Anime, AnimeEpisode, SearchResult +from anime_downloader.sites import helpers + +logger = logging.getLogger(__name__) + + +def get_token(): + r = helpers.get('https://shiro.is').text + script = 'https://shiro.is' + re.search(r'src\=\"(\/static\/js\/main\..*?)\"', r)[1] # noqa + script = helpers.get(script).text + token = re.search(r'token\:\"(.*?)\"', script)[1] + return token + + +class Shiro(Anime, sitename='shiro'): + sitename = 'shiro' + + @classmethod + def search(cls, query): + cls.token = get_token() + params = { + 'search': query, + 'token': cls.token + } + results = helpers.get('https://ani.api-web.site/advanced', params=params).json()['data'] # noqa + if 'nav' in results: + results = results['nav']['currentPage']['items'] + search_results = [ + SearchResult( + title=i['name'], + url='https://shiro.is/anime/' + i['slug'], + poster='https://ani-cdn.api-web.site/' + i['image'], + meta_info={ + 'version_key_dubbed': '(Sub)' if i['language'] == 'subbed' else '(Dub)' # noqa + } + ) + for i in results + ] + search_results = sorted(search_results, key=lambda x: len(x.title)) + return search_results + else: + return [] + + def _scrape_episodes(self): + slug = self.url.replace('https://shiro.is/anime/', '') + api_link = 'https://ani.api-web.site/anime/slug/' + slug + r = helpers.get(api_link, params={'token': self.token}).json() + if r['status'] == 'Found': + episodes = r['data']['episodes'] + episodes = [ + 'https://ani.googledrive.stream/vidstreaming/vid-ad/' + x['videos'][0]['video_id'] # noqa + for x in episodes + ] + return episodes + else: + return [] + + def _scrape_metadata(self): + slug = self.url.replace('https://shiro.is/anime/', '') + api_link = 'https://ani.api-web.site/anime/slug/' + slug + r = helpers.get(api_link, params={'token': self.token}).json() + self.title = r['data']['name'] + + +class ShiroEpisode(AnimeEpisode, sitename='shiro'): + def _get_sources(self): + return [('no_extractor', self.url)] From 6cfb3f30625a6072b8ca97f798ef42b53724489b Mon Sep 17 00:00:00 2001 From: Arjix <53124886+ArjixGamer@users.noreply.github.com> Date: Wed, 27 Jan 2021 16:27:49 +0200 Subject: [PATCH 3/5] Update shiro.py --- anime_downloader/sites/shiro.py | 1 + 1 file changed, 1 insertion(+) diff --git a/anime_downloader/sites/shiro.py b/anime_downloader/sites/shiro.py index 6c8962b..2fa8fb9 100644 --- a/anime_downloader/sites/shiro.py +++ b/anime_downloader/sites/shiro.py @@ -1,4 +1,5 @@ import re +import logging from anime_downloader.sites.anime import Anime, AnimeEpisode, SearchResult from anime_downloader.sites import helpers From 61b79272072154178bdedeba4c785dc56bcc5e64 Mon Sep 17 00:00:00 2001 From: Arjix <53124886+ArjixGamer@users.noreply.github.com> Date: Wed, 27 Jan 2021 16:33:05 +0200 Subject: [PATCH 4/5] fix --- anime_downloader/sites/shiro.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/anime_downloader/sites/shiro.py b/anime_downloader/sites/shiro.py index 2fa8fb9..e3eb534 100644 --- a/anime_downloader/sites/shiro.py +++ b/anime_downloader/sites/shiro.py @@ -66,4 +66,6 @@ class Shiro(Anime, sitename='shiro'): class ShiroEpisode(AnimeEpisode, sitename='shiro'): def _get_sources(self): - return [('no_extractor', self.url)] + r = helpers.get(self.url).text + link = re.search(r'\"file\"\:\"(.*?)\"', r)[1] + return [('no_extractor', link)] From 25cdd90726c2966ff98e21ff4dfa0bdae7ab20d2 Mon Sep 17 00:00:00 2001 From: AbdullahM0hamed <25087116+AbdullahM0hamed@users.noreply.github.com> Date: Wed, 27 Jan 2021 14:39:59 +0000 Subject: [PATCH 5/5] Add Shiro.is to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2cf1c59..3eb98f6 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,7 @@ Yeah. Me too! That's why this tool exists. - Nyaa.si - PutLockers - RyuAnime +- Shiro.is - SubsPlease - twist.moe - requires Node.js - tenshi.moe