From 63a57da39334291afa2ca331cb1e641c151c7858 Mon Sep 17 00:00:00 2001 From: andrewlef Date: Thu, 31 Oct 2019 08:20:21 -0400 Subject: [PATCH] Fixed Incorrect mp4upload Parsing & Animeflv downloading (#259) * Fixed Incorrect Parsing See Issue #258 * Fixed animeflv downloading See error #252 * Additional changes to animeflv, added error handling * revert config * Update animeflv.py * Update animeflv.py * Use exceptions.py for error handling --- anime_downloader/extractors/mp4upload.py | 2 +- anime_downloader/sites/animeflv.py | 43 ++++++++++++++++++++---- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/anime_downloader/extractors/mp4upload.py b/anime_downloader/extractors/mp4upload.py index 22899b2..52fdf46 100644 --- a/anime_downloader/extractors/mp4upload.py +++ b/anime_downloader/extractors/mp4upload.py @@ -19,7 +19,7 @@ class MP4Upload(BaseExtractor): # code I saw from github user py7hon in his/her mp4upload-direct # program as inspiration for this. Only with regex. source_parts_re = re.compile( - r'.*?100\|(.*?)\|.*?\|video\|(.*?)\|(\d+)\|.*?', + r'.*?false\|(.*?)\|.*?\|video\|(.*?)\|(\d+)\|.*?', re.DOTALL) mp4u_embed = helpers.get(self.url).text diff --git a/anime_downloader/sites/animeflv.py b/anime_downloader/sites/animeflv.py index ab088c8..4ef7c6b 100644 --- a/anime_downloader/sites/animeflv.py +++ b/anime_downloader/sites/animeflv.py @@ -1,8 +1,13 @@ from anime_downloader.sites.anime import Anime, AnimeEpisode, SearchResult from anime_downloader.sites import helpers +from anime_downloader.sites.exceptions import NotFoundError import re import json +import logging +import sys + +logger = logging.getLogger(__name__) class Animeflv(Anime, sitename='animeflv'): @@ -14,9 +19,9 @@ class Animeflv(Anime, sitename='animeflv'): version: subbed or latin subbed for subbed - latin for latin + latin for Spanish server: one of below - natsuki, streamango, rapidvideo + natsuki, streamango """ sitename = 'animeflv' @@ -56,10 +61,17 @@ class Animeflv(Anime, sitename='animeflv'): class AnimeflvEpisode(AnimeEpisode, sitename='animeflv'): + """ + + Natsuki and amus are the site's default servers, however amus is not yet implemented here. + + """ + # TODO: Implement support for amus and perhaps Zippyshare? + # Hint: https://github.com/Cartmanishere/zippyshare-scraper + SERVERS = [ 'streamango', - 'natsuki', - 'rapidvideo' + 'natsuki' ] def _get_sources(self): @@ -70,10 +82,29 @@ class AnimeflvEpisode(AnimeEpisode, sitename='animeflv'): videos = videos[lang[self.config.get('version', 'subbed')]] server = self.config['server'] + + # Trying preferred server from config first for video in videos: if video['server'] == server: - if server in ['streamango', 'rapidvideo']: + if server == 'streamango': return [(server, video['code'])] if server == 'natsuki': url = helpers.get(video['code'].replace('embed', 'check')).json()['file'] - return [('no_extractor', url)] + return [('no_extractor', url)] + + logger.debug('Preferred server %s not found. Trying all supported servers.', server) + + # Trying streamango and natsuki. The second for loop is not ideal. + for video in videos: + if video['server'] == 'streamango': + return [('streamango', video['code'])] + if video['server'] == 'natsuki': + url = helpers.get(video['code'].replace('embed', 'check')).json()['file'] + return [('no_extractor', url)] + + # No supported server found, exit. + err = 'No supported host server found. Try another site.' + args = [self.url] + raise NotFoundError(err, *args) + +