diff --git a/anime_downloader/sites/shiro.py b/anime_downloader/sites/shiro.py index c9bce16..8e0fb38 100644 --- a/anime_downloader/sites/shiro.py +++ b/anime_downloader/sites/shiro.py @@ -13,6 +13,8 @@ def get_token(): token = re.search(r'token\:\"(.*?)\"', script)[1] return token +def get_api_url(): + return "https://tapi.shiro.is" class Shiro(Anime, sitename='shiro'): sitename = 'shiro' @@ -20,18 +22,20 @@ class Shiro(Anime, sitename='shiro'): @classmethod def search(cls, query): cls.token = get_token() + cls.api_url = get_api_url() + params = { 'search': query, 'token': cls.token } - results = helpers.get('https://ani.api-web.site/advanced', params=params).json()['data'] # noqa + results = helpers.get(f'{cls.api_url}/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'], + poster=f'{cls.api_url}/' + i['image'], meta={'year': i['year']}, meta_info={ 'version_key_dubbed': '(Sub)' if i['language'] == 'subbed' else '(Dub)' # noqa @@ -46,17 +50,19 @@ class Shiro(Anime, sitename='shiro'): def _scrape_episodes(self): self.token = get_token() + self.api_url = get_api_url() + slug = self.url.split('/')[-1] if 'episode' in slug: - api_link = 'https://ani.api-web.site/anime-episode/slug/' + slug + api_link = f'{self.api_url}/anime-episode/slug/' + slug r = helpers.get(api_link, params={'token': self.token}).json() slug = r['data']['anime_slug'] - api_link = 'https://ani.api-web.site/anime/slug/' + slug + api_link = f'{self.api_url}/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 + "https://cherry.subsplea.se/" + x['videos'][0]['video_id'] # noqa for x in episodes ] return episodes @@ -65,18 +71,21 @@ class Shiro(Anime, sitename='shiro'): def _scrape_metadata(self): self.token = get_token() + self.api_url = get_api_url() + + slug = self.url.split('/')[-1] if 'episode' in slug: - api_link = 'https://ani.api-web.site/anime-episode/slug/' + slug + api_link = f'{self.api_url}/anime-episode/slug/' + slug r = helpers.get(api_link, params={'token': self.token}).json() slug = r['data']['anime_slug'] - api_link = 'https://ani.api-web.site/anime/slug/' + slug + api_link = f'{self.api_url}/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): - r = helpers.get(self.url).text - link = re.search(r'\"file\"\:\"(.*?)\"', r)[1] + r = helpers.get(self.url, referer="https://shiro.is/").text + link = re.search(r'source\s+src=\"(.*?)\"', r)[1] return [('no_extractor', link)]