aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2016-05-04 22:45:01 +0600
committerSergey M․ <dstftw@gmail.com>2016-05-04 22:45:01 +0600
commit2a48e6f01a20545cd117cacb78463dba87d97b21 (patch)
tree4b4a77c89da353116c7216fd12f4d4642dec81a4
parent203a3c0e6a589627f9b0f0c4c6ec56e24c27272c (diff)
downloadyoutube-dl-2a48e6f01a20545cd117cacb78463dba87d97b21.tar.xz
[yandexmusic:playlist] Respect track order for long (>150) playlists
-rw-r--r--youtube_dl/extractor/yandexmusic.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/youtube_dl/extractor/yandexmusic.py b/youtube_dl/extractor/yandexmusic.py
index 6e7a23782..283b55a91 100644
--- a/youtube_dl/extractor/yandexmusic.py
+++ b/youtube_dl/extractor/yandexmusic.py
@@ -222,13 +222,17 @@ class YandexMusicPlaylistIE(YandexMusicPlaylistBaseIE):
'overembed': 'false',
})['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,
# missing tracks should be retrieved manually.
if len(tracks) < len(track_ids):
- present_track_ids = set([compat_str(track['id']) for track in tracks if track.get('id')])
- missing_track_ids = set(map(compat_str, track_ids)) - set(present_track_ids)
+ present_track_ids = set([
+ 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(
'https://music.yandex.%s/handlers/track-entries.jsx' % tld,
playlist_id, 'Downloading missing tracks JSON',