Преглед на файлове

[YoutubeDL] Generalize best/worst format match behavior

Sergey M․ преди 10 години
родител
ревизия
e01c56f9e1
променени са 1 файла, в които са добавени 5 реда и са изтрити 11 реда
  1. 5 11
      youtube_dl/YoutubeDL.py

+ 5 - 11
youtube_dl/YoutubeDL.py

@@ -914,22 +914,16 @@ class YoutubeDL(object):
         if not available_formats:
         if not available_formats:
             return None
             return None
 
 
-        if format_spec == 'best' or format_spec is None:
+        if format_spec in ['best', 'worst', None]:
+            format_idx = 0 if format_spec == 'worst' else -1
             audiovideo_formats = [
             audiovideo_formats = [
                 f for f in available_formats
                 f for f in available_formats
                 if f.get('vcodec') != 'none' and f.get('acodec') != 'none']
                 if f.get('vcodec') != 'none' and f.get('acodec') != 'none']
             if audiovideo_formats:
             if audiovideo_formats:
-                return audiovideo_formats[-1]
-            # for audio only urls, 'best' selects the best audio format
+                return audiovideo_formats[format_idx]
+            # for audio only urls, select the best/worst audio format
             elif all(f.get('acodec') != 'none' for f in available_formats):
             elif all(f.get('acodec') != 'none' for f in available_formats):
-                return available_formats[-1]
-        elif format_spec == 'worst':
-            audiovideo_formats = [
-                f for f in available_formats
-                if f.get('vcodec') != 'none' and f.get('acodec') != 'none']
-            if audiovideo_formats:
-                return audiovideo_formats[0]
-            return available_formats[0]
+                return available_formats[format_idx]
         elif format_spec == 'bestaudio':
         elif format_spec == 'bestaudio':
             audio_formats = [
             audio_formats = [
                 f for f in available_formats
                 f for f in available_formats