New parameter --playlist-random to randomize playlist download order. Fixes #11889

This commit is contained in:
Thomas Christlieb 2017-01-31 10:03:31 +01:00
parent dadb836139
commit 75822ca790
3 changed files with 10 additions and 0 deletions

View file

@ -24,6 +24,7 @@ import sys
import time import time
import tokenize import tokenize
import traceback import traceback
import random
from .compat import ( from .compat import (
compat_basestring, compat_basestring,
@ -159,6 +160,7 @@ class YoutubeDL(object):
playlistend: Playlist item to end at. playlistend: Playlist item to end at.
playlist_items: Specific indices of playlist to download. playlist_items: Specific indices of playlist to download.
playlistreverse: Download playlist items in reverse order. playlistreverse: Download playlist items in reverse order.
playlistrandom: Download playlist items in random order.
matchtitle: Download only matching titles. matchtitle: Download only matching titles.
rejecttitle: Reject downloads for matching titles. rejecttitle: Reject downloads for matching titles.
logger: Log messages to a logging.Logger instance. logger: Log messages to a logging.Logger instance.
@ -842,6 +844,9 @@ class YoutubeDL(object):
if self.params.get('playlistreverse', False): if self.params.get('playlistreverse', False):
entries = entries[::-1] entries = entries[::-1]
if self.params.get('playlistrandom', False):
random.shuffle(entries)
for i, entry in enumerate(entries, 1): for i, entry in enumerate(entries, 1):
self.to_screen('[download] Downloading video %s of %s' % (i, n_entries)) self.to_screen('[download] Downloading video %s of %s' % (i, n_entries))
extra = { extra = {

View file

@ -344,6 +344,7 @@ def _real_main(argv=None):
'playliststart': opts.playliststart, 'playliststart': opts.playliststart,
'playlistend': opts.playlistend, 'playlistend': opts.playlistend,
'playlistreverse': opts.playlist_reverse, 'playlistreverse': opts.playlist_reverse,
'playlistrandom': opts.playlist_random,
'noplaylist': opts.noplaylist, 'noplaylist': opts.noplaylist,
'logtostderr': opts.outtmpl == '-', 'logtostderr': opts.outtmpl == '-',
'consoletitle': opts.consoletitle, 'consoletitle': opts.consoletitle,

View file

@ -470,6 +470,10 @@ def parseOpts(overrideArguments=None):
'--playlist-reverse', '--playlist-reverse',
action='store_true', action='store_true',
help='Download playlist videos in reverse order') help='Download playlist videos in reverse order')
downloader.add_option(
'--playlist-random',
action='store_true',
help='Download playlist videos in random order')
downloader.add_option( downloader.add_option(
'--xattr-set-filesize', '--xattr-set-filesize',
dest='xattr_set_filesize', action='store_true', dest='xattr_set_filesize', action='store_true',