diff options
| -rw-r--r-- | youtube_dl/extractor/dailymotion.py | 13 | ||||
| -rw-r--r-- | youtube_dl/extractor/subtitles.py | 32 | ||||
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 7 | 
3 files changed, 26 insertions, 26 deletions
| diff --git a/youtube_dl/extractor/dailymotion.py b/youtube_dl/extractor/dailymotion.py index d73023b9e..abd6a36ee 100644 --- a/youtube_dl/extractor/dailymotion.py +++ b/youtube_dl/extractor/dailymotion.py @@ -4,7 +4,7 @@ import itertools  import socket  from .common import InfoExtractor -from .subtitles import NoAutoSubtitlesInfoExtractor +from .subtitles import SubtitlesInfoExtractor  from ..utils import (      compat_http_client, @@ -18,7 +18,7 @@ from ..utils import (  ) -class DailymotionIE(NoAutoSubtitlesInfoExtractor): +class DailymotionIE(SubtitlesInfoExtractor):      """Information Extractor for Dailymotion"""      _VALID_URL = r'(?i)(?:https?://)?(?:www\.)?dailymotion\.[a-z]{2,3}/(?:embed/)?video/([^/]+)' @@ -81,14 +81,7 @@ class DailymotionIE(NoAutoSubtitlesInfoExtractor):          video_url = info[max_quality]          # subtitles -        video_subtitles = None -        video_webpage = None - -        if self._downloader.params.get('writesubtitles', False) or self._downloader.params.get('allsubtitles', False): -            video_subtitles = self._extract_subtitles(video_id) -        elif self._downloader.params.get('writeautomaticsub', False): -            video_subtitles = self._request_automatic_caption(video_id, video_webpage) - +        video_subtitles = self.extract_subtitles(video_id)          if self._downloader.params.get('listsubtitles', False):              self._list_available_subtitles(video_id)              return diff --git a/youtube_dl/extractor/subtitles.py b/youtube_dl/extractor/subtitles.py index 8953d6789..5ae8b3b16 100644 --- a/youtube_dl/extractor/subtitles.py +++ b/youtube_dl/extractor/subtitles.py @@ -62,19 +62,31 @@ class SubtitlesInfoExtractor(InfoExtractor):          return sub      def _get_available_subtitles(self, video_id): -        """ returns {sub_lang: url} or {} if not available """ -        """ Must be redefined by the subclasses """ +        """ +        returns {sub_lang: url} or {} if not available +        Must be redefined by the subclasses +        """          pass      def _request_automatic_caption(self, video_id, webpage): -        """ returns {sub_lang: sub} or {} if not available """ -        """ Must be redefined by the subclasses """ -        pass +        """ +        returns {sub_lang: sub} or {} if not available +        Must be redefined by the subclasses that support automatic captions, +        otherwise it will return {} +        """ +        self._downloader.report_warning(u'Automatic Captions not supported by this server') +        return {} +    def extract_subtitles(self, video_id, video_webpage=None): +        """ +        Extract the subtitles and/or the automatic captions if requested. +        Returns None or a dictionary in the format {sub_lang: sub} +        """ +        video_subtitles = None +        if self._downloader.params.get('writesubtitles', False) or self._downloader.params.get('allsubtitles', False): +            video_subtitles = self._extract_subtitles(video_id) +        elif self._downloader.params.get('writeautomaticsub', False): +            video_subtitles = self._request_automatic_caption(video_id, video_webpage) +        return video_subtitles -class NoAutoSubtitlesInfoExtractor(SubtitlesInfoExtractor): -    """ A subtitle class for the servers that don't support auto-captions""" -    def _request_automatic_caption(self, video_id, webpage): -        self._downloader.report_warning(u'Automatic Captions not supported by this server') -        return {} diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 0476f113e..3bba45b79 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -707,12 +707,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor):                  video_description = u''          # subtitles -        video_subtitles = None - -        if self._downloader.params.get('writesubtitles', False) or self._downloader.params.get('allsubtitles', False): -            video_subtitles = self._extract_subtitles(video_id) -        elif self._downloader.params.get('writeautomaticsub', False): -            video_subtitles = self._request_automatic_caption(video_id, video_webpage) +        video_subtitles = self.extract_subtitles(video_id, video_webpage)          if self._downloader.params.get('listsubtitles', False):              self._list_available_subtitles(video_id) | 
