diff options
| -rw-r--r-- | youtube_dl/YoutubeDL.py | 12 | ||||
| -rw-r--r-- | youtube_dl/__init__.py | 28 | 
2 files changed, 18 insertions, 22 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 2a4ab674d..2fa34ebc9 100644 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -557,16 +557,16 @@ class YoutubeDL(object):              n_all_entries = len(ie_result['entries'])              playliststart = self.params.get('playliststart', 1) - 1 -            playlistend = self.params.get('playlistend', -1) - +            playlistend = self.params.get('playlistend', None) +            # For backwards compatibility, interpret -1 as whole list              if playlistend == -1: -                entries = ie_result['entries'][playliststart:] -            else: -                entries = ie_result['entries'][playliststart:playlistend] +                playlistend = None +            entries = ie_result['entries'][playliststart:playlistend]              n_entries = len(entries) -            self.to_screen(u"[%s] playlist '%s': Collected %d video ids (downloading %d of them)" % +            self.to_screen( +                u"[%s] playlist '%s': Collected %d video ids (downloading %d of them)" %                  (ie_result['extractor'], playlist, n_all_entries, n_entries))              for i, entry in enumerate(entries, 1): diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 0775b72fd..6df44020b 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -198,10 +198,14 @@ def parseOpts(overrideArguments=None):          help=u'Work around terminals that lack bidirectional text support. Requires fribidi executable in PATH') -    selection.add_option('--playlist-start', -            dest='playliststart', metavar='NUMBER', help='playlist video to start at (default is %default)', default=1) -    selection.add_option('--playlist-end', -            dest='playlistend', metavar='NUMBER', help='playlist video to end at (default is last)', default=-1) +    selection.add_option( +        '--playlist-start', +        dest='playliststart', metavar='NUMBER', default=1, type=int, +        help='playlist video to start at (default is %default)') +    selection.add_option( +        '--playlist-end', +        dest='playlistend', metavar='NUMBER', default=None, type=int, +        help='playlist video to end at (default is last)')      selection.add_option('--match-title', dest='matchtitle', metavar='REGEX',help='download only matching titles (regex or caseless sub-string)')      selection.add_option('--reject-title', dest='rejecttitle', metavar='REGEX',help='skip download for matching titles (regex or caseless sub-string)')      selection.add_option('--max-downloads', metavar='NUMBER', @@ -576,18 +580,10 @@ def _real_main(argv=None):          if numeric_buffersize is None:              parser.error(u'invalid buffer size specified')          opts.buffersize = numeric_buffersize -    try: -        opts.playliststart = int(opts.playliststart) -        if opts.playliststart <= 0: -            raise ValueError(u'Playlist start must be positive') -    except (TypeError, ValueError): -        parser.error(u'invalid playlist start number specified') -    try: -        opts.playlistend = int(opts.playlistend) -        if opts.playlistend != -1 and (opts.playlistend <= 0 or opts.playlistend < opts.playliststart): -            raise ValueError(u'Playlist end must be greater than playlist start') -    except (TypeError, ValueError): -        parser.error(u'invalid playlist end number specified') +    if opts.playliststart <= 0: +        raise ValueError(u'Playlist start must be positive') +    if opts.playlistend not in (-1, None) and opts.playlistend < opts.playliststart: +        raise ValueError(u'Playlist end must be greater than playlist start')      if opts.extractaudio:          if opts.audioformat not in ['best', 'aac', 'mp3', 'm4a', 'opus', 'vorbis', 'wav']:              parser.error(u'invalid audio format specified') | 
