]> jfr.im git - yt-dlp.git/commitdiff
[cleanup] Minor fixes
authorpukkandan <redacted>
Mon, 3 Oct 2022 20:04:04 +0000 (01:34 +0530)
committerpukkandan <redacted>
Mon, 3 Oct 2022 20:18:14 +0000 (01:48 +0530)
Closes #5129, Closes #4982

Makefile
yt_dlp/YoutubeDL.py
yt_dlp/downloader/common.py
yt_dlp/extractor/common.py
yt_dlp/extractor/spotify.py
yt_dlp/extractor/youtube.py

index 19a377002bb0cd294e63e3ca827eede02eb90d44..3b97c7407938cdbea4c8e646f41718c705a8201d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -81,9 +81,9 @@ yt-dlp: yt_dlp/*.py yt_dlp/*/*.py
          mkdir -p zip/$$d ;\
          cp -pPR $$d/*.py zip/$$d/ ;\
        done
-       touch -t 200001010101 zip/yt_dlp/*.py zip/yt_dlp/*/*.py zip/yt_dlp/*/*/*.py
+       touch -t 200001010101 zip/yt_dlp/*.py zip/yt_dlp/*/*.py
        mv zip/yt_dlp/__main__.py zip/
-       cd zip ; zip -q ../yt-dlp yt_dlp/*.py yt_dlp/*/*.py yt_dlp/*/*/*.py __main__.py
+       cd zip ; zip -q ../yt-dlp yt_dlp/*.py yt_dlp/*/*.py __main__.py
        rm -rf zip
        echo '#!$(PYTHON)' > yt-dlp
        cat yt-dlp.zip >> yt-dlp
index bc6de49267fee317837bad19563ca5db67f55f24..53681149e1cde0e983fae435cbb3b07154ff0c77 100644 (file)
@@ -2426,6 +2426,8 @@ def _fill_common_fields(self, info_dict, is_video=True):
             for key in live_keys:
                 if info_dict.get(key) is None:
                     info_dict[key] = (live_status == key)
+        if live_status == 'post_live':
+            info_dict['was_live'] = True
 
         # Auto generate title fields corresponding to the *_number fields when missing
         # in order to always have clean titles. This is very common for TV series.
@@ -3683,6 +3685,8 @@ def print_debug_header(self):
         if not self.params.get('verbose'):
             return
 
+        from . import _IN_CLI  # Must be delayed import
+
         # These imports can be slow. So import them only as needed
         from .extractor.extractors import _LAZY_LOADER
         from .extractor.extractors import _PLUGIN_CLASSES as plugin_extractors
@@ -3719,6 +3723,7 @@ def get_encoding(stream):
             __version__,
             f'[{RELEASE_GIT_HEAD}]' if RELEASE_GIT_HEAD else '',
             '' if source == 'unknown' else f'({source})',
+            '' if _IN_CLI else 'API',
             delim=' '))
         if not _LAZY_LOADER:
             if os.environ.get('YTDLP_NO_LAZY_EXTRACTORS'):
index ab557a47aca2298a6687692fed646a7dd30ff8d6..221b3827c70cf1003402f9dd257cc3395e37866e 100644 (file)
@@ -24,6 +24,7 @@
     encodeFilename,
     format_bytes,
     join_nonempty,
+    remove_start,
     sanitize_open,
     shell_quote,
     timeconvert,
@@ -120,11 +121,11 @@ def format_seconds(seconds):
         time = timetuple_from_msec(seconds * 1000)
         if time.hours > 99:
             return '--:--:--'
-        if not time.hours:
-            return '   %02d:%02d' % time[1:-1]
         return '%02d:%02d:%02d' % time[:-1]
 
-    format_eta = format_seconds
+    @classmethod
+    def format_eta(cls, seconds):
+        return f'{remove_start(cls.format_seconds(seconds), "00:"):>8s}'
 
     @staticmethod
     def calc_percent(byte_counter, data_len):
@@ -332,6 +333,8 @@ def with_fields(*tups, default=''):
                     return tmpl
             return default
 
+        _formats_bytes = lambda k: f'{format_bytes(s.get(k)):>10s}'
+
         if s['status'] == 'finished':
             if self.params.get('noprogress'):
                 self.to_screen('[download] Download completed')
@@ -339,7 +342,7 @@ def with_fields(*tups, default=''):
             s.update({
                 'speed': speed,
                 '_speed_str': self.format_speed(speed).strip(),
-                '_total_bytes_str': format_bytes(s.get('total_bytes')),
+                '_total_bytes_str': _formats_bytes('total_bytes'),
                 '_elapsed_str': self.format_seconds(s.get('elapsed')),
                 '_percent_str': self.format_percent(100),
             })
@@ -354,15 +357,15 @@ def with_fields(*tups, default=''):
             return
 
         s.update({
-            '_eta_str': self.format_eta(s.get('eta')),
+            '_eta_str': self.format_eta(s.get('eta')).strip(),
             '_speed_str': self.format_speed(s.get('speed')),
             '_percent_str': self.format_percent(try_call(
                 lambda: 100 * s['downloaded_bytes'] / s['total_bytes'],
                 lambda: 100 * s['downloaded_bytes'] / s['total_bytes_estimate'],
                 lambda: s['downloaded_bytes'] == 0 and 0)),
-            '_total_bytes_str': format_bytes(s.get('total_bytes')),
-            '_total_bytes_estimate_str': format_bytes(s.get('total_bytes_estimate')),
-            '_downloaded_bytes_str': format_bytes(s.get('downloaded_bytes')),
+            '_total_bytes_str': _formats_bytes('total_bytes'),
+            '_total_bytes_estimate_str': _formats_bytes('total_bytes_estimate'),
+            '_downloaded_bytes_str': _formats_bytes('downloaded_bytes'),
             '_elapsed_str': self.format_seconds(s.get('elapsed')),
         })
 
index 0700b4767b07b5eec9096e23c8a7d73645b03c3d..944b196a118d6ea57db300ff0c57f4a7a83b2e1b 100644 (file)
@@ -1862,7 +1862,7 @@ def add_item(field, reverse, closest, limit_text):
                     alias, field = field, self._get_field_setting(field, 'field')
                     if self._get_field_setting(alias, 'deprecated'):
                         self.ydl.deprecated_feature(f'Format sorting alias {alias} is deprecated and may '
-                                                    'be removed in a future version. Please use {field} instead')
+                                                    f'be removed in a future version. Please use {field} instead')
                 reverse = match.group('reverse') is not None
                 closest = match.group('separator') == '~'
                 limit_text = match.group('limit')
index 4da24db9e9a0b50bd48937f8815454c560ced867..55ce36aeaaef9ec2fe53713967d9201f9bc5a90f 100644 (file)
@@ -16,6 +16,7 @@
 
 
 class SpotifyBaseIE(InfoExtractor):
+    _WORKING = False
     _ACCESS_TOKEN = None
     _OPERATION_HASHES = {
         'Episode': '8276d4423d709ae9b68ec1b74cc047ba0f7479059a37820be730f125189ac2bf',
index f73465ba4c55739ff7ed6f9488907d73e92347e1..6047f2864ae342f5d0123e2c3f23f3d7ea0b29c3 100644 (file)
@@ -390,6 +390,8 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
         'si', 'th', 'lo', 'my', 'ka', 'am', 'km', 'zh-CN', 'zh-TW', 'zh-HK', 'ja', 'ko'
     ]
 
+    _IGNORED_WARNINGS = {'Unavailable videos will be hidden during playback'}
+
     @functools.cached_property
     def _preferred_lang(self):
         """
@@ -692,12 +694,11 @@ def _extract_alerts(cls, data):
                     yield alert_type, message
 
     def _report_alerts(self, alerts, expected=True, fatal=True, only_once=False):
-        errors = []
-        warnings = []
+        errors, warnings = [], []
         for alert_type, alert_message in alerts:
             if alert_type.lower() == 'error' and fatal:
                 errors.append([alert_type, alert_message])
-            else:
+            elif alert_message not in self._IGNORED_WARNINGS:
                 warnings.append([alert_type, alert_message])
 
         for alert_type, alert_message in (warnings + errors[:-1]):