aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Schreiber <mark7@alumni.cmu.edu>2014-07-10 20:11:11 -0700
committerPhilipp Hagemeister <phihag@phihag.de>2014-12-12 16:56:29 +0100
commitff815fe65aab83db7e11251db5eafc76504adf05 (patch)
treeeea4f92a060d3efb0b370a0f364d39799e1f4f1a
parentda3a2d8137fa89051b011d90875827504a9a9373 (diff)
downloadyoutube-dl-ff815fe65aab83db7e11251db5eafc76504adf05.tar.xz
Download playlist items in reverse order
Series of videos are typically uploaded to YouTube playlists in chronological order. By default, these videos are downloaded latest-to-earliest; this is great for seeing the latest videos in a series, but prevents streaming video in the order that the videos were produced. Add an option to download videos in reverse order, earliest-to-latest. Conflicts: youtube_dl/YoutubeDL.py youtube_dl/__init__.py
-rw-r--r--README.md1
-rwxr-xr-xyoutube_dl/YoutubeDL.py4
-rw-r--r--youtube_dl/__init__.py1
-rw-r--r--youtube_dl/options.py4
4 files changed, 10 insertions, 0 deletions
diff --git a/README.md b/README.md
index b3af18912..e41ee8985 100644
--- a/README.md
+++ b/README.md
@@ -75,6 +75,7 @@ which means you can modify it, redistribute it or use it however you like.
## Video Selection:
--playlist-start NUMBER playlist video to start at (default is 1)
--playlist-end NUMBER playlist video to end at (default is last)
+ --playlist-reverse Download playlist videos in reverse order
--match-title REGEX download only matching titles (regex or
caseless sub-string)
--reject-title REGEX skip download for matching titles (regex or
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py
index e7abb7e0b..578c8daf2 100755
--- a/youtube_dl/YoutubeDL.py
+++ b/youtube_dl/YoutubeDL.py
@@ -124,6 +124,7 @@ class YoutubeDL(object):
nooverwrites: Prevent overwriting files.
playliststart: Playlist item to start at.
playlistend: Playlist item to end at.
+ playlistreverse: Download playlist items in reverse order.
matchtitle: Download only matching titles.
rejecttitle: Reject downloads for matching titles.
logger: Log messages to a logging.Logger instance.
@@ -670,6 +671,9 @@ class YoutubeDL(object):
"[%s] playlist %s: Downloading %d videos" %
(ie_result['extractor'], playlist, n_entries))
+ if self.params.get('playlistreverse', False):
+ entries = entries[::-1]
+
for i, entry in enumerate(entries, 1):
self.to_screen('[download] Downloading video #%s of %s' % (i, n_entries))
extra = {
diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py
index 77b3384a0..70c4f25b1 100644
--- a/youtube_dl/__init__.py
+++ b/youtube_dl/__init__.py
@@ -249,6 +249,7 @@ def _real_main(argv=None):
'progress_with_newline': opts.progress_with_newline,
'playliststart': opts.playliststart,
'playlistend': opts.playlistend,
+ 'playlistreverse': opts.playlist_reverse,
'noplaylist': opts.noplaylist,
'logtostderr': opts.outtmpl == '-',
'consoletitle': opts.consoletitle,
diff --git a/youtube_dl/options.py b/youtube_dl/options.py
index 041ca83d8..7654d1a4e 100644
--- a/youtube_dl/options.py
+++ b/youtube_dl/options.py
@@ -349,6 +349,10 @@ def parseOpts(overrideArguments=None):
'--test',
action='store_true', dest='test', default=False,
help=optparse.SUPPRESS_HELP)
+ downloader.add_option(
+ '--playlist-reverse',
+ action='store_true',
+ help='Download playlist videos in reverse order')
workarounds = optparse.OptionGroup(parser, 'Workarounds')
workarounds.add_option(