From d7d2d98dae218d4d2ac1d3cb3ea512e575456f56 Mon Sep 17 00:00:00 2001 From: Liav Rehana Date: Tue, 14 Apr 2020 18:05:49 +0300 Subject: [PATCH] Add --playlist-title-end option to end video selection at a given video's title. Signed-off-by: Liav Rehana --- youtube_dl/YoutubeDL.py | 5 +++++ youtube_dl/__init__.py | 1 + youtube_dl/options.py | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 19370f62b..d065839df 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -978,7 +978,12 @@ class YoutubeDL(object): x_forwarded_for = ie_result.get('__x_forwarded_for_ip') + playlist_title_end = self.params.get('playlisttitleend') for i, entry in enumerate(entries, 1): + if playlist_title_end is not None: + if entry['title'] == playlist_title_end: + self.to_screen('[download] Stopping at video %s' % (playlist_title_end)) + break self.to_screen('[download] Downloading video %s of %s' % (i, n_entries)) # This __x_forwarded_for_ip thing is a bit ugly but requires # minimal changes diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 9a659fc65..d3ad25316 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -359,6 +359,7 @@ def _real_main(argv=None): 'progress_with_newline': opts.progress_with_newline, 'playliststart': opts.playliststart, 'playlistend': opts.playlistend, + 'playlisttitleend': opts.playlisttitleend, 'playlistreverse': opts.playlist_reverse, 'playlistrandom': opts.playlist_random, 'noplaylist': opts.noplaylist, diff --git a/youtube_dl/options.py b/youtube_dl/options.py index 8826b382c..061cdf947 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -263,6 +263,10 @@ def parseOpts(overrideArguments=None): '--playlist-end', dest='playlistend', metavar='NUMBER', default=None, type=int, help='Playlist video to end at (default is last)') + selection.add_option( + '--playlist-title-end', + dest='playlisttitleend', metavar='STRING', default=None, type=str, + help='Playlist video title to end at (default is None)') selection.add_option( '--playlist-items', dest='playlist_items', metavar='ITEM_SPEC', default=None,