diff options
Diffstat (limited to 'youtube_dl/extractor/common.py')
| -rw-r--r-- | youtube_dl/extractor/common.py | 30 | 
1 files changed, 27 insertions, 3 deletions
diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index d3f86cf4a..87fce9cd8 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -150,8 +150,14 @@ class InfoExtractor(object):                      If not explicitly set, calculated from timestamp.      uploader_id:    Nickname or id of the video uploader.      location:       Physical location where the video was filmed. -    subtitles:      The subtitle file contents as a dictionary in the format -                    {language: subtitles}. +    subtitles:      The available subtitles as a dictionary in the format +                    {language: subformats}. "subformats" is a list sorted from +                    lower to higher preference, each element is a dictionary +                    with the "ext" entry and one of: +                        * "data": The subtitles file contents +                        * "url": A url pointing to the subtitles file +    automatic_captions: Like 'subtitles', used by the YoutubeIE for +                    automatically generated captions      duration:       Length of the video in seconds, as an integer.      view_count:     How many users have watched the video on the platform.      like_count:     Number of positive ratings of the video @@ -833,7 +839,7 @@ class InfoExtractor(object):              'url': m3u8_url,              'ext': ext,              'protocol': 'm3u8', -            'preference': -1, +            'preference': preference - 1 if preference else -1,              'resolution': 'multiple',              'format_note': 'Quality selection URL',          }] @@ -1011,6 +1017,24 @@ class InfoExtractor(object):              any_restricted = any_restricted or is_restricted          return not any_restricted +    def extract_subtitles(self, *args, **kwargs): +        if (self._downloader.params.get('writesubtitles', False) or +                self._downloader.params.get('listsubtitles')): +            return self._get_subtitles(*args, **kwargs) +        return {} + +    def _get_subtitles(self, *args, **kwargs): +        raise NotImplementedError("This method must be implemented by subclasses") + +    def extract_automatic_captions(self, *args, **kwargs): +        if (self._downloader.params.get('writeautomaticsub', False) or +                self._downloader.params.get('listsubtitles')): +            return self._get_automatic_captions(*args, **kwargs) +        return {} + +    def _get_automatic_captions(self, *args, **kwargs): +        raise NotImplementedError("This method must be implemented by subclasses") +  class SearchInfoExtractor(InfoExtractor):      """  | 
