diff options
| author | Sergey M․ <dstftw@gmail.com> | 2016-05-04 22:45:01 +0600 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2016-05-04 22:45:01 +0600 | 
| commit | 2a48e6f01a20545cd117cacb78463dba87d97b21 (patch) | |
| tree | 4b4a77c89da353116c7216fd12f4d4642dec81a4 /youtube_dl/extractor/yandexmusic.py | |
| parent | 203a3c0e6a589627f9b0f0c4c6ec56e24c27272c (diff) | |
[yandexmusic:playlist] Respect track order for long (>150) playlists
Diffstat (limited to 'youtube_dl/extractor/yandexmusic.py')
| -rw-r--r-- | youtube_dl/extractor/yandexmusic.py | 10 | 
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',  | 
