Introduce --skip-unavailable-fragments
authorSergey M․ <dstftw@gmail.com>
Fri, 26 Aug 2016 21:52:18 +0000 (04:52 +0700)
committerSergey M․ <dstftw@gmail.com>
Sat, 3 Sep 2016 10:51:48 +0000 (17:51 +0700)
youtube_dl/__init__.py
youtube_dl/downloader/fragment.py
youtube_dl/options.py

index a9730292cd6801c1bbd7f68b586e288bad7fe21d..42128272a723f94c2a528b906a08e8246b440bec 100644 (file)
@@ -318,6 +318,7 @@ def _real_main(argv=None):
         'nooverwrites': opts.nooverwrites,
         'retries': opts.retries,
         'fragment_retries': opts.fragment_retries,
+        'skip_unavailable_fragments': opts.skip_unavailable_fragments,
         'buffersize': opts.buffersize,
         'noresizebuffer': opts.noresizebuffer,
         'continuedl': opts.continue_dl,
index ba903ae103a7bc6817378389a34713d9a5550e19..b4a798f8f9b4e52987f10417fbe070f92f141382 100644 (file)
@@ -22,14 +22,20 @@ class FragmentFD(FileDownloader):
 
     Available options:
 
-    fragment_retries:   Number of times to retry a fragment for HTTP error (DASH only)
+    fragment_retries:   Number of times to retry a fragment for HTTP error (DASH
+                        and hlsnative only)
+    skip_unavailable_fragments:
+                        Skip unavailable fragments (DASH and hlsnative only)
     """
 
     def report_retry_fragment(self, fragment_name, count, retries):
         self.to_screen(
-            '[download] Got server HTTP error. Retrying fragment %s (attempt %d of %s)...'
+            '[download] Got server HTTP error: %s. Retrying fragment %s (attempt %d of %s)...'
             % (fragment_name, count, self.format_retries(retries)))
 
+    def report_skip_fragment(self, fragment_name):
+        self.to_screen('[download] Skipping fragment %s...' % fragment_name)
+
     def _prepare_and_start_frag_download(self, ctx):
         self._prepare_frag_download(ctx)
         self._start_frag_download(ctx)
index 5d62deef4dad48b124fa421253486a6014506a9f..56f312f57328deef859fb04c7f7e2859bfb83c0a 100644 (file)
@@ -423,7 +423,15 @@ def parseOpts(overrideArguments=None):
     downloader.add_option(
         '--fragment-retries',
         dest='fragment_retries', metavar='RETRIES', default=10,
-        help='Number of retries for a fragment (default is %default), or "infinite" (DASH only)')
+        help='Number of retries for a fragment (default is %default), or "infinite" (DASH and hlsnative only)')
+    downloader.add_option(
+        '--skip-unavailable-fragments',
+        action='store_true', dest='skip_unavailable_fragments', default=True,
+        help='Skip unavailable fragments (DASH and hlsnative only)')
+    general.add_option(
+        '--abort-on-unavailable-fragment',
+        action='store_false', dest='skip_unavailable_fragments',
+        help='Abort downloading when some fragment is not available')
     downloader.add_option(
         '--buffer-size',
         dest='buffersize', metavar='SIZE', default='1024',