[yandexmusic:playlist] Respect track order for long (>150) playlists

pull/9394/head
Sergey M․ 9 years ago
parent 203a3c0e6a
commit 2a48e6f01a
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D

@ -222,13 +222,17 @@ class YandexMusicPlaylistIE(YandexMusicPlaylistBaseIE):
'overembed': 'false', 'overembed': 'false',
})['playlist'] })['playlist']
tracks, track_ids = playlist['tracks'], playlist['trackIds'] tracks, track_ids = playlist['tracks'], map(compat_str, playlist['trackIds'])
# tracks dictionary shipped with playlist.jsx API is limited to 150 tracks, # tracks dictionary shipped with playlist.jsx API is limited to 150 tracks,
# missing tracks should be retrieved manually. # missing tracks should be retrieved manually.
if len(tracks) < len(track_ids): if len(tracks) < len(track_ids):
present_track_ids = set([compat_str(track['id']) for track in tracks if track.get('id')]) present_track_ids = set([
missing_track_ids = set(map(compat_str, track_ids)) - set(present_track_ids) compat_str(track['id'])
for track in tracks if track.get('id')])
missing_track_ids = [
track_id for track_id in track_ids
if track_id not in present_track_ids]
missing_tracks = self._download_json( missing_tracks = self._download_json(
'https://music.yandex.%s/handlers/track-entries.jsx' % tld, 'https://music.yandex.%s/handlers/track-entries.jsx' % tld,
playlist_id, 'Downloading missing tracks JSON', playlist_id, 'Downloading missing tracks JSON',

Loading…
Cancel
Save