Add the option "--write-auto-sub" to download automatic subtitles from Youtube
authorJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>
Tue, 25 Jun 2013 21:45:16 +0000 (23:45 +0200)
committerJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>
Tue, 25 Jun 2013 21:46:24 +0000 (23:46 +0200)
Now automatic subtitles are only downloaded if the option is given.
(closes #903)

test/test_youtube_subtitles.py
youtube_dl/YoutubeDL.py
youtube_dl/__init__.py
youtube_dl/extractor/youtube.py

index e8f5e4ae70a85e29c363dafe6417c614a409849e..dad15de374bbfe3564452fe4b1b5f307e89bc0d8 100644 (file)
@@ -100,7 +100,7 @@ class TestYoutubeSubtitles(unittest.TestCase):
         self.assertEqual(info_dict, None)
     def test_youtube_automatic_captions(self):
         DL = FakeYDL()
-        DL.params['writesubtitles'] = True
+        DL.params['writeautomaticsub'] = True
         DL.params['subtitleslang'] = 'it'
         IE = YoutubeIE(DL)
         info_dict = IE.extract('8YoUxe5ncPo')
index b4a966b7035d322173b8595b5a30141ae7299b34..e9a24a95aaaa0823e2ca8c437bcf3c865a152533 100644 (file)
@@ -72,6 +72,7 @@ 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)
@@ -474,7 +475,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]
index 2acaab66859c3a268083ee738fbf6ea9d8c518f0..42abb8358f52e416b1e51cf082226091f211c0c2 100644 (file)
@@ -191,6 +191,9 @@ def parseOpts(overrideArguments=None):
     video_format.add_option('--write-sub', '--write-srt',
             action='store_true', dest='writesubtitles',
             help='write subtitle file (currently youtube only)', default=False)
+    video_format.add_option('--write-auto-sub', '--write-automatic-sub',
+            action='store_true', dest='writeautomaticsub',
+            help='write automatic subtitle file (currently youtube only)', default=False)
     video_format.add_option('--only-sub',
             action='store_true', dest='skip_download',
             help='[deprecated] alias of --skip-download', default=False)
@@ -537,6 +540,7 @@ def _real_main(argv=None):
         'writeinfojson': opts.writeinfojson,
         'writethumbnail': opts.writethumbnail,
         'writesubtitles': opts.writesubtitles,
+        'writeautomaticsub': opts.writeautomaticsub,
         'allsubtitles': opts.allsubtitles,
         'listsubtitles': opts.listsubtitles,
         'subtitlesformat': opts.subtitlesformat,
index de653cb3d24e6318f157d5177b87c6b09b913bef..6728f54188674a8ed8e38293926dc1f6863f5994 100644 (file)
@@ -454,14 +454,13 @@ class YoutubeIE(InfoExtractor):
             if video_subtitles:
                 (sub_error, sub_lang, sub) = video_subtitles[0]
                 if sub_error:
-                    # We try with the automatic captions
-                    video_subtitles = self._request_automatic_caption(video_id, video_webpage)
-                    (sub_error_auto, sub_lang, sub) = video_subtitles[0]
-                    if sub is not None:
-                        pass
-                    else:
-                        # We report the original error
-                        self._downloader.report_warning(sub_error)
+                    self._downloader.report_warning(sub_error)
+        
+        if self._downloader.params.get('writeautomaticsub', False):
+            video_subtitles = self._request_automatic_caption(video_id, video_webpage)
+            (sub_error, sub_lang, sub) = video_subtitles[0]
+            if sub_error:
+                self._downloader.report_warning(sub_error)
 
         if self._downloader.params.get('allsubtitles', False):
             video_subtitles = self._extract_all_subtitles(video_id)