X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=inline;f=youtube_dl%2FYoutubeDL.py;h=4968669002a8edd0297a5cc3ba1ddddd3d59df49;hb=bbcbf4d459fa4cbd489193bc9921d455438be047;hp=52ee8cedbc0ddbe4b3b78286132e8e813f363805;hpb=8222d8de88bd23c063500c246676ed028a9aa073;p=youtube-dl diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 52ee8cedb..496866900 100644 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -13,7 +13,7 @@ import time import traceback from .utils import * -from .extractor import get_info_extractor +from .extractor import get_info_extractor, gen_extractors from .FileDownloader import FileDownloader @@ -46,6 +46,7 @@ class YoutubeDL(object): username: Username for authentication purposes. password: Password for authentication purposes. + videopassword: Password for acces a video. usenetrc: Use netrc for authentication instead. verbose: Print additional info to stdout. quiet: Do not print messages to stdout. @@ -71,9 +72,10 @@ class YoutubeDL(object): writeinfojson: Write the video description to a .info.json file writethumbnail: Write the thumbnail image to a file writesubtitles: Write the video subtitles to a file + writeautomaticsub: Write the automatic subtitles to a file allsubtitles: Downloads all the subtitles of the video listsubtitles: Lists all available subtitles for the video - subtitlesformat: Subtitle format [sbv/srt] (default=srt) + subtitlesformat: Subtitle format [srt/sbv/vtt] (default=srt) subtitleslang: Language of the subtitles to download keepvideo: Keep the video file after post-processing daterange: A DateRange object, download only if the upload_date is in the range. @@ -111,6 +113,13 @@ class YoutubeDL(object): self._ies.append(ie) ie.set_downloader(self) + def add_default_info_extractors(self): + """ + Add the InfoExtractors returned by gen_extractors to the end of the list + """ + for ie in gen_extractors(): + self.add_info_extractor(ie) + def add_post_processor(self, pp): """Add a PostProcessor object to the end of the chain.""" self._pps.append(pp) @@ -339,6 +348,7 @@ class YoutubeDL(object): result_type = ie_result.get('_type', 'video') # If not given we suppose it's a video, support the default old system if result_type == 'video': + ie_result.update(extra_info) if 'playlist' not in ie_result: # It isn't part of a playlist ie_result['playlist'] = None @@ -473,7 +483,7 @@ class YoutubeDL(object): self.report_error(u'Cannot write description file ' + descfn) return - if self.params.get('writesubtitles', False) and 'subtitles' in info_dict and info_dict['subtitles']: + if (self.params.get('writesubtitles', False) or self.params.get('writeautomaticsub')) and 'subtitles' in info_dict and info_dict['subtitles']: # subtitles download errors are already managed as troubles in relevant IE # that way it will silently go on when used with unsupporting IE subtitle = info_dict['subtitles'][0] @@ -519,10 +529,8 @@ class YoutubeDL(object): return if self.params.get('writethumbnail', False): - if 'thumbnail' in info_dict: - thumb_format = info_dict['thumbnail'].rpartition(u'/')[2].rpartition(u'.')[2] - if not thumb_format: - thumb_format = 'jpg' + if info_dict.get('thumbnail') is not None: + thumb_format = determine_ext(info_dict['thumbnail'], u'jpg') thumb_filename = filename.rpartition('.')[0] + u'.' + thumb_format self.to_screen(u'[%s] %s: Downloading thumbnail ...' % (info_dict['extractor'], info_dict['id'])) @@ -586,7 +594,7 @@ class YoutubeDL(object): # No clear decision yet, let IE decide keep_video = keep_video_wish except PostProcessingError as e: - self.to_stderr(u'ERROR: ' + e.msg) + self.report_error(e.msg) if keep_video is False and not self.params.get('keepvideo', False): try: self.to_screen(u'Deleting original file %s (pass -k to keep)' % filename)