diff options
Diffstat (limited to 'youtube_dl/extractor/crunchyroll.py')
| -rw-r--r-- | youtube_dl/extractor/crunchyroll.py | 25 | 
1 files changed, 19 insertions, 6 deletions
| diff --git a/youtube_dl/extractor/crunchyroll.py b/youtube_dl/extractor/crunchyroll.py index 33a033a7f..ce123482e 100644 --- a/youtube_dl/extractor/crunchyroll.py +++ b/youtube_dl/extractor/crunchyroll.py @@ -20,9 +20,11 @@ from ..utils import (      ExtractorError,      bytes_to_intlist,      intlist_to_bytes, +    int_or_none,      remove_end,      unified_strdate,      urlencode_postdata, +    xpath_text,  )  from ..aes import (      aes_cbc_decrypt, @@ -237,7 +239,9 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text              webpage_url = 'http://www.' + mobj.group('url')          webpage = self._download_webpage(webpage_url, video_id, 'Downloading webpage') -        note_m = self._html_search_regex(r'<div class="showmedia-trailer-notice">(.+?)</div>', webpage, 'trailer-notice', default='') +        note_m = self._html_search_regex( +            r'<div class="showmedia-trailer-notice">(.+?)</div>', +            webpage, 'trailer-notice', default='')          if note_m:              raise ExtractorError(note_m) @@ -247,6 +251,9 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text              if msg.get('type') == 'error':                  raise ExtractorError('crunchyroll returned error: %s' % msg['message_body'], expected=True) +        if 'To view this, please log in to verify you are 18 or older.' in webpage: +            self.raise_login_required() +          video_title = self._html_search_regex(r'<h1[^>]*>(.+?)</h1>', webpage, 'video_title', flags=re.DOTALL)          video_title = re.sub(r' {2,}', ' ', video_title)          video_description = self._html_search_regex(r'"description":"([^"]+)', webpage, 'video_description', default='') @@ -281,6 +288,13 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text              stream_info = streamdata.find('./{default}preload/stream_info')              video_url = stream_info.find('./host').text              video_play_path = stream_info.find('./file').text +            metadata = stream_info.find('./metadata') +            format_info = { +                'format': video_format, +                'format_id': video_format, +                'height': int_or_none(xpath_text(metadata, './height')), +                'width': int_or_none(xpath_text(metadata, './width')), +            }              if '.fplive.net/' in video_url:                  video_url = re.sub(r'^rtmpe?://', 'http://', video_url.strip()) @@ -289,19 +303,18 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text                      netloc='v.lvlt.crcdn.net',                      path='%s/%s' % (remove_end(parsed_video_url.path, '/'), video_play_path.split(':')[-1])))                  if self._is_valid_url(direct_video_url, video_id, video_format): -                    formats.append({ +                    format_info.update({                          'url': direct_video_url, -                        'format_id': video_format,                      }) +                    formats.append(format_info)                      continue -            formats.append({ +            format_info.update({                  'url': video_url,                  'play_path': video_play_path,                  'ext': 'flv', -                'format': video_format, -                'format_id': video_format,              }) +            formats.append(format_info)          subtitles = self.extract_subtitles(video_id, webpage) | 
