Add playlist-end option (courtesy of Nevar Angelo)
This commit is contained in:
		
							parent
							
								
									893a13df55
								
							
						
					
					
						commit
						8cc4434116
					
				
					 1 changed files with 23 additions and 14 deletions
				
			
		
							
								
								
									
										37
									
								
								youtube-dl
									
										
									
									
									
								
							
							
						
						
									
										37
									
								
								youtube-dl
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -204,6 +204,7 @@ class FileDownloader(object):
 | 
			
		|||
	continuedl:       Try to continue downloads if possible.
 | 
			
		||||
	noprogress:       Do not print the progress bar.
 | 
			
		||||
	playliststart:    Playlist item to start at.
 | 
			
		||||
	playlistend:      Playlist item to end at.
 | 
			
		||||
	logtostderr:      Log messages to stderr instead of stdout.
 | 
			
		||||
	"""
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1966,11 +1967,10 @@ class YoutubePlaylistIE(InfoExtractor):
 | 
			
		|||
				break
 | 
			
		||||
			pagenum = pagenum + 1
 | 
			
		||||
 | 
			
		||||
		playliststart = self._downloader.params.get('playliststart', 1)
 | 
			
		||||
		playliststart -= 1 #our arrays are zero-based but the playlist is 1-based
 | 
			
		||||
		if playliststart > 0:
 | 
			
		||||
			video_ids = video_ids[playliststart:]
 | 
			
		||||
			
 | 
			
		||||
		playliststart = self._downloader.params.get('playliststart', 1) - 1
 | 
			
		||||
		playlistend = self._downloader.params.get('playlistend', -1)
 | 
			
		||||
		video_ids = video_ids[playliststart:playlistend]
 | 
			
		||||
 | 
			
		||||
		for id in video_ids:
 | 
			
		||||
			self._youtube_ie.extract('http://www.youtube.com/watch?v=%s' % id)
 | 
			
		||||
		return
 | 
			
		||||
| 
						 | 
				
			
			@ -2026,10 +2026,9 @@ class YoutubeUserIE(InfoExtractor):
 | 
			
		|||
				ids_in_page.append(mobj.group(1))
 | 
			
		||||
		video_ids.extend(ids_in_page)
 | 
			
		||||
 | 
			
		||||
		playliststart = self._downloader.params.get('playliststart', 1)
 | 
			
		||||
		playliststart = playliststart-1 #our arrays are zero-based but the playlist is 1-based
 | 
			
		||||
		if playliststart > 0:
 | 
			
		||||
			video_ids = video_ids[playliststart:]	
 | 
			
		||||
		playliststart = self._downloader.params.get('playliststart', 1) - 1
 | 
			
		||||
		playlistend = self._downloader.params.get('playlistend', -1)
 | 
			
		||||
		video_ids = video_ids[playliststart:playlistend]
 | 
			
		||||
 | 
			
		||||
		for id in video_ids:
 | 
			
		||||
			self._youtube_ie.extract('http://www.youtube.com/watch?v=%s' % id)
 | 
			
		||||
| 
						 | 
				
			
			@ -2125,6 +2124,8 @@ if __name__ == '__main__':
 | 
			
		|||
				dest='retries', metavar='RETRIES', help='number of retries (default is 10)', default=10)
 | 
			
		||||
		parser.add_option('--playlist-start',
 | 
			
		||||
				dest='playliststart', metavar='NUMBER', help='playlist video to start at (default is 1)', default=1)
 | 
			
		||||
		parser.add_option('--playlist-end',
 | 
			
		||||
				dest='playlistend', metavar='NUMBER', help='playlist video to end at (default is last)', default=-1)
 | 
			
		||||
 | 
			
		||||
		authentication = optparse.OptionGroup(parser, 'Authentication Options')
 | 
			
		||||
		authentication.add_option('-u', '--username',
 | 
			
		||||
| 
						 | 
				
			
			@ -2239,11 +2240,18 @@ if __name__ == '__main__':
 | 
			
		|||
				opts.retries = long(opts.retries)
 | 
			
		||||
			except (TypeError, ValueError), err:
 | 
			
		||||
				parser.error(u'invalid retry count specified')
 | 
			
		||||
		if opts.playliststart is not None:
 | 
			
		||||
			try:
 | 
			
		||||
				opts.playliststart = long(opts.playliststart)
 | 
			
		||||
			except (TypeError, ValueError), err:
 | 
			
		||||
				parser.error(u'invalid playlist page specified')
 | 
			
		||||
		try:
 | 
			
		||||
			opts.playliststart = long(opts.playliststart)
 | 
			
		||||
			if opts.playliststart <= 0:
 | 
			
		||||
				raise ValueError
 | 
			
		||||
		except (TypeError, ValueError), err:
 | 
			
		||||
			parser.error(u'invalid playlist start number specified')
 | 
			
		||||
		try:
 | 
			
		||||
			opts.playlistend = long(opts.playlistend)
 | 
			
		||||
			if opts.playlistend != -1 and (opts.playlistend <= 0 or opts.playlistend < opts.playliststart):
 | 
			
		||||
				raise ValueError
 | 
			
		||||
		except (TypeError, ValueError), err:
 | 
			
		||||
			parser.error(u'invalid playlist end number specified')
 | 
			
		||||
 | 
			
		||||
		# Information extractors
 | 
			
		||||
		youtube_ie = YoutubeIE()
 | 
			
		||||
| 
						 | 
				
			
			@ -2286,6 +2294,7 @@ if __name__ == '__main__':
 | 
			
		|||
			'continuedl': opts.continue_dl,
 | 
			
		||||
			'noprogress': opts.noprogress,
 | 
			
		||||
			'playliststart': opts.playliststart,
 | 
			
		||||
			'playlistend': opts.playlistend,
 | 
			
		||||
			'logtostderr': opts.outtmpl == '-',
 | 
			
		||||
			})
 | 
			
		||||
		fd.add_info_extractor(youtube_search_ie)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue