mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 00:25:15 +00:00 
			
		
		
		
	Merge pull request #11901 from ThomasChr/randonplaylistorder
New parameter --playlist-random to randomize playlist download order. Fixes #11889
This commit is contained in:
		@@ -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 = {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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',
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user