mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-29 03:23:02 +00:00
Fix playlist_index
and add playlist_autonumber
(#302)
Now `playlist_index` is always the position of the video in the actual playlist and `playlist_autonumber` is the position of the item in the playlist queue
This commit is contained in:
parent
e8e738406a
commit
717297545b
1 changed files with 10 additions and 3 deletions
|
@ -1336,7 +1336,7 @@ def make_playlistitems_entries(list_ie_entries):
|
||||||
'playlist_title': ie_result.get('title'),
|
'playlist_title': ie_result.get('title'),
|
||||||
'playlist_uploader': ie_result.get('uploader'),
|
'playlist_uploader': ie_result.get('uploader'),
|
||||||
'playlist_uploader_id': ie_result.get('uploader_id'),
|
'playlist_uploader_id': ie_result.get('uploader_id'),
|
||||||
'playlist_index': 0
|
'playlist_index': 0,
|
||||||
}
|
}
|
||||||
ie_copy.update(dict(ie_result))
|
ie_copy.update(dict(ie_result))
|
||||||
|
|
||||||
|
@ -1370,6 +1370,11 @@ def make_playlistitems_entries(list_ie_entries):
|
||||||
self.report_error('Cannot write playlist description file ' + descfn)
|
self.report_error('Cannot write playlist description file ' + descfn)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Save playlist_index before re-ordering
|
||||||
|
entries = [
|
||||||
|
((playlistitems[i - 1] if playlistitems else i), entry)
|
||||||
|
for i, entry in enumerate(entries, 1)]
|
||||||
|
|
||||||
if self.params.get('playlistreverse', False):
|
if self.params.get('playlistreverse', False):
|
||||||
entries = entries[::-1]
|
entries = entries[::-1]
|
||||||
if self.params.get('playlistrandom', False):
|
if self.params.get('playlistrandom', False):
|
||||||
|
@ -1380,7 +1385,8 @@ def make_playlistitems_entries(list_ie_entries):
|
||||||
self.to_screen('[%s] playlist %s: %s' % (ie_result['extractor'], playlist, msg))
|
self.to_screen('[%s] playlist %s: %s' % (ie_result['extractor'], playlist, msg))
|
||||||
failures = 0
|
failures = 0
|
||||||
max_failures = self.params.get('skip_playlist_after_errors') or float('inf')
|
max_failures = self.params.get('skip_playlist_after_errors') or float('inf')
|
||||||
for i, entry in enumerate(entries, 1):
|
for i, entry_tuple in enumerate(entries, 1):
|
||||||
|
playlist_index, entry = entry_tuple
|
||||||
self.to_screen('[download] Downloading video %s of %s' % (i, n_entries))
|
self.to_screen('[download] Downloading video %s of %s' % (i, n_entries))
|
||||||
# This __x_forwarded_for_ip thing is a bit ugly but requires
|
# This __x_forwarded_for_ip thing is a bit ugly but requires
|
||||||
# minimal changes
|
# minimal changes
|
||||||
|
@ -1389,12 +1395,13 @@ def make_playlistitems_entries(list_ie_entries):
|
||||||
extra = {
|
extra = {
|
||||||
'n_entries': n_entries,
|
'n_entries': n_entries,
|
||||||
'_last_playlist_index': max(playlistitems) if playlistitems else (playlistend or n_entries),
|
'_last_playlist_index': max(playlistitems) if playlistitems else (playlistend or n_entries),
|
||||||
|
'playlist_index': playlist_index,
|
||||||
|
'playlist_autonumber': i,
|
||||||
'playlist': playlist,
|
'playlist': playlist,
|
||||||
'playlist_id': ie_result.get('id'),
|
'playlist_id': ie_result.get('id'),
|
||||||
'playlist_title': ie_result.get('title'),
|
'playlist_title': ie_result.get('title'),
|
||||||
'playlist_uploader': ie_result.get('uploader'),
|
'playlist_uploader': ie_result.get('uploader'),
|
||||||
'playlist_uploader_id': ie_result.get('uploader_id'),
|
'playlist_uploader_id': ie_result.get('uploader_id'),
|
||||||
'playlist_index': playlistitems[i - 1] if playlistitems else i,
|
|
||||||
'extractor': ie_result['extractor'],
|
'extractor': ie_result['extractor'],
|
||||||
'webpage_url': ie_result['webpage_url'],
|
'webpage_url': ie_result['webpage_url'],
|
||||||
'webpage_url_basename': url_basename(ie_result['webpage_url']),
|
'webpage_url_basename': url_basename(ie_result['webpage_url']),
|
||||||
|
|
Loading…
Reference in a new issue