]> jfr.im git - yt-dlp.git/commitdiff
[cleanup] Minor fixes
authorpukkandan <redacted>
Wed, 19 Jan 2022 22:57:36 +0000 (04:27 +0530)
committerpukkandan <redacted>
Fri, 21 Jan 2022 07:57:44 +0000 (13:27 +0530)
Closes #2334

12 files changed:
.gitignore
Makefile
test/helper.py
yt_dlp/YoutubeDL.py
yt_dlp/extractor/canalalpha.py
yt_dlp/extractor/common.py
yt_dlp/extractor/dispeak.py
yt_dlp/extractor/generic.py
yt_dlp/extractor/glomex.py
yt_dlp/extractor/youtube.py
yt_dlp/postprocessor/__init__.py
yt_dlp/postprocessor/ffmpeg.py

index 232096916ca07361cd44b76a11dd3234fa297d9f..ff00620f576b50d22fabf3b1312dac6773e8a6ea 100644 (file)
@@ -14,7 +14,10 @@ cookies
 *.frag.urls
 *.info.json
 *.live_chat.json
+*.meta
 *.part*
+*.tmp
+*.temp
 *.unknown_video
 *.ytdl
 .cache/
index 56ec509c06b1c91d362f5ef3856f1a23e8b9052d..32aabfbe670302ae0d8a4f667da3cf6cfd57fe46 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@ pypi-files: AUTHORS Changelog.md LICENSE README.md README.txt supportedsites com
 
 clean-test:
        rm -rf test/testdata/player-*.js tmp/ *.annotations.xml *.aria2 *.description *.dump *.frag \
-       *.frag.aria2 *.frag.urls *.info.json *.live_chat.json *.part* *.unknown_video *.ytdl \
+       *.frag.aria2 *.frag.urls *.info.json *.live_chat.json *.meta *.part* *.tmp *.temp *.unknown_video *.ytdl \
        *.3gp *.ape *.avi *.desktop *.flac *.flv *.jpeg *.jpg *.m4a *.m4v *.mhtml *.mkv *.mov *.mp3 \
        *.mp4 *.ogg *.opus *.png *.sbv *.srt *.swf *.swp *.ttml *.url *.vtt *.wav *.webloc *.webm *.webp
 clean-dist:
index c9293f81aef6a2ecaf0a3a3000773da292c383e0..ce751462e58fe59c724ae7c40248924cec691412 100644 (file)
@@ -235,7 +235,7 @@ def sanitize(key, value):
     }
 
     # display_id may be generated from id
-    if test_info_dict.get('display_id') == test_info_dict['id']:
+    if test_info_dict.get('display_id') == test_info_dict.get('id'):
         test_info_dict.pop('display_id')
 
     return test_info_dict
index 11708774e2b59ccd491574c947e337c88bebb062..baf54cd2e42da219c14d56b3f2a7990156ff19b7 100644 (file)
@@ -2682,7 +2682,7 @@ def process_subtitles(self, video_id, normal_subtitles, automatic_captions):
     def _forceprint(self, tmpl, info_dict):
         mobj = re.match(r'\w+(=?)$', tmpl)
         if mobj and mobj.group(1):
-            tmpl = f'{tmpl[:-1]} = %({tmpl[:-1]})s'
+            tmpl = f'{tmpl[:-1]} = %({tmpl[:-1]})r'
         elif mobj:
             tmpl = '%({})s'.format(tmpl)
 
@@ -3486,7 +3486,7 @@ def render_thumbnails_table(self, info_dict):
             return None
         return render_table(
             self._list_format_headers('ID', 'Width', 'Height', 'URL'),
-            [[t['id'], t.get('width', 'unknown'), t.get('height', 'unknown'), t['url']] for t in thumbnails])
+            [[t.get('id'), t.get('width', 'unknown'), t.get('height', 'unknown'), t['url']] for t in thumbnails])
 
     def render_subtitles_table(self, video_id, subtitles):
         def _row(lang, formats):
index 51d30a32139f3729504c553ca7c0616def0e04b4..0365cb2f6904d21cd180b0834d2d52ad8b47b475 100644 (file)
@@ -78,11 +78,11 @@ def _real_extract(self, url):
             'height': try_get(video, lambda x: x['res']['height'], expected_type=int),
         } for video in try_get(data_json, lambda x: x['video']['mp4'], expected_type=list) or [] if video.get('$url')]
         if manifests.get('hls'):
-            m3u8_frmts, m3u8_subs = self._parse_m3u8_formats_and_subtitles(manifests['hls'], id)
+            m3u8_frmts, m3u8_subs = self._parse_m3u8_formats_and_subtitles(manifests['hls'], video_id=id)
             formats.extend(m3u8_frmts)
             subtitles = self._merge_subtitles(subtitles, m3u8_subs)
         if manifests.get('dash'):
-            dash_frmts, dash_subs = self._parse_mpd_formats_and_subtitles(manifests['dash'], id)
+            dash_frmts, dash_subs = self._parse_mpd_formats_and_subtitles(manifests['dash'])
             formats.extend(dash_frmts)
             subtitles = self._merge_subtitles(subtitles, dash_subs)
         self._sort_formats(formats)
index e289a4ef82149782d10a3a1da7bd8df6f4eef0c2..74114e3558a5533d105ddec2a4fd73ca62f8396c 100644 (file)
@@ -3504,8 +3504,6 @@ def _live_title(self, name):
 
     def _int(self, v, name, fatal=False, **kwargs):
         res = int_or_none(v, **kwargs)
-        if 'get_attr' in kwargs:
-            print(getattr(v, kwargs['get_attr']))
         if res is None:
             msg = 'Failed to extract %s: Could not parse value %r' % (name, v)
             if fatal:
index be7ad1202bde2ef4df97b4d667458025c5c1679b..3d651f3abc85a1c831663132553d8992c141475e 100644 (file)
@@ -74,13 +74,11 @@ def _parse_mp4(self, metadata):
             tbr = int_or_none(bitrate)
             vbr = int_or_none(self._search_regex(
                 r'-(\d+)\.mp4', video_path, 'vbr', default=None))
-            abr = tbr - vbr if tbr and vbr else None
             video_formats.append({
                 'format_id': bitrate,
                 'url': url,
                 'tbr': tbr,
                 'vbr': vbr,
-                'abr': abr,
             })
         return video_formats
 
@@ -121,6 +119,7 @@ def _real_extract(self, url):
         video_formats = self._parse_mp4(metadata)
         if video_formats is None:
             video_formats = self._parse_flv(metadata)
+        self._sort_formats(video_formats)
 
         return {
             'id': video_id,
index 542902cafcb30883492aa8a8dc34724ca024a5f4..934b354a99c2faa0bcad239a3774772d745793f9 100644 (file)
@@ -3804,6 +3804,7 @@ def _real_extract(self, url):
                 json_ld['formats'], json_ld['subtitles'] = self._extract_m3u8_formats_and_subtitles(
                     json_ld['url'], video_id, 'mp4')
                 json_ld.pop('url')
+                self._sort_formats(json_ld['formats'])
             return merge_dicts(json_ld, info_dict)
 
         def check_video(vurl):
@@ -3858,7 +3859,7 @@ def filter_video(urls):
                     protocol, _, _ = url.partition('/')
                     thumbnail = protocol + thumbnail
 
-                url_keys = list(filter(re.compile(r'video_url|video_alt_url\d+').fullmatch, flashvars.keys()))
+                url_keys = list(filter(re.compile(r'video_url|video_alt_url\d*').fullmatch, flashvars.keys()))
                 formats = []
                 for key in url_keys:
                     if '/get_file/' not in flashvars[key]:
index ec3c35c6f5ae6297177ccd2f7685f9b871c7c104..1d387bdfd996319fb71b35b9f974fc50b7825cb0 100644 (file)
@@ -177,9 +177,6 @@ def build_player_url(cls, video_id, integration, origin_url=None):
 
     @classmethod
     def _extract_urls(cls, webpage, origin_url):
-        # in comparison with _VALID_URL:
-        # * make the scheme optional
-        # * simplify the query string part; after extracting iframe src, the URL will be matched again
         VALID_SRC = rf'(?:https?:)?{cls._BASE_PLAYER_URL_RE}\?(?:(?!(?P=_q1)).)+'
 
         # https://docs.glomex.com/publisher/video-player-integration/javascript-api/
index d8a63a3d2d95e1d1a736c419b594eff3e633746f..0d42c2a89555b9120cdbac5ebe989a610baea875 100644 (file)
@@ -257,7 +257,7 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
 
     _RESERVED_NAMES = (
         r'channel|c|user|playlist|watch|w|v|embed|e|watch_popup|clip|'
-        r'shorts|movies|results|shared|hashtag|trending|feed|feeds|'
+        r'shorts|movies|results|shared|hashtag|trending|explore|feed|feeds|'
         r'browse|oembed|get_video_info|iframe_api|s/player|'
         r'storefront|oops|index|account|reporthistory|t/terms|about|upload|signin|logout')
 
index e411cc145c4119460db3409fe15820145dcf752a..e47631eb66e8510df3d5e48a8b47f268608ab5f3 100644 (file)
@@ -7,6 +7,7 @@
 from .exec import ExecPP, ExecAfterDownloadPP
 from .ffmpeg import (
     FFmpegPostProcessor,
+    FFmpegCopyStreamPP,
     FFmpegConcatPP,
     FFmpegEmbedSubtitlePP,
     FFmpegExtractAudioPP,
index 213de0ecf3397bd759a8b5dfecc1b960ec3474d6..5b98c7d9764e996816106007732af6e8e6d50d42 100644 (file)
@@ -568,7 +568,7 @@ def run(self, info):
             else f'already is in target format {source_ext}' if source_ext == target_ext
             else None)
         if _skip_msg:
-            self.to_screen(f'Not {self._ACTION} media file {filename!r}; {_skip_msg}')
+            self.to_screen(f'Not {self._ACTION} media file "{filename}"; {_skip_msg}')
             return [], info
 
         outpath = replace_extension(filename, target_ext, source_ext)
@@ -917,7 +917,7 @@ def run(self, info):
         return [], info
 
 
-class FFmpegCopyStreamPostProcessor(FFmpegFixupPostProcessor):
+class FFmpegCopyStreamPP(FFmpegFixupPostProcessor):
     MESSAGE = 'Copying stream'
 
     @PostProcessor._restrict_to(images=False)
@@ -926,11 +926,11 @@ def run(self, info):
         return [], info
 
 
-class FFmpegFixupDurationPP(FFmpegCopyStreamPostProcessor):
+class FFmpegFixupDurationPP(FFmpegCopyStreamPP):
     MESSAGE = 'Fixing video duration'
 
 
-class FFmpegFixupDuplicateMoovPP(FFmpegCopyStreamPostProcessor):
+class FFmpegFixupDuplicateMoovPP(FFmpegCopyStreamPP):
     MESSAGE = 'Fixing duplicate MOOV atoms'
 
 
@@ -1132,15 +1132,20 @@ def __init__(self, downloader, only_multi_video=False):
 
     def concat_files(self, in_files, out_file):
         if len(in_files) == 1:
+            if os.path.realpath(in_files[0]) != os.path.realpath(out_file):
+                self.to_screen(f'Moving "{in_files[0]}" to "{out_file}"')
             os.replace(in_files[0], out_file)
-            return
+            return []
 
         codecs = [traverse_obj(self.get_metadata_object(file), ('streams', ..., 'codec_name')) for file in in_files]
         if len(set(map(tuple, codecs))) > 1:
             raise PostProcessingError(
                 'The files have different streams/codecs and cannot be concatenated. '
                 'Either select different formats or --recode-video them to a common format')
+
+        self.to_screen(f'Concatenating {len(in_files)} files; Destination: {out_file}')
         super().concat_files(in_files, out_file)
+        return in_files
 
     @PostProcessor._restrict_to(images=False)
     def run(self, info):
@@ -1161,10 +1166,10 @@ def run(self, info):
         ie_copy['ext'] = exts[0] if len(set(exts)) == 1 else 'mkv'
         out_file = self._downloader.prepare_filename(ie_copy, 'pl_video')
 
-        self.concat_files(in_files, out_file)
+        files_to_delete = self.concat_files(in_files, out_file)
 
         info['requested_downloads'] = [{
             'filepath': out_file,
             'ext': ie_copy['ext'],
         }]
-        return in_files, info
+        return files_to_delete, info