mirror of
https://codeberg.org/polarisfm/youtube-dl
synced 2025-02-17 01:17:54 +01:00
Fix yandex music extractor
Add track version (such as remix or edit) to title; avoid duplicates and http 414 error when downloading large playlists.
This commit is contained in:
parent
90634acfcf
commit
9bed0af915
@ -98,6 +98,7 @@ class YandexMusicTrackIE(YandexMusicBaseIE):
|
|||||||
'http://music.yandex.ru/handlers/track.jsx?track=%s:%s' % (track_id, album_id),
|
'http://music.yandex.ru/handlers/track.jsx?track=%s:%s' % (track_id, album_id),
|
||||||
track_id, 'Downloading track JSON')['track']
|
track_id, 'Downloading track JSON')['track']
|
||||||
track_title = track['title']
|
track_title = track['title']
|
||||||
|
if 'version' in track: track_title += ' (%s)' % track['version']
|
||||||
|
|
||||||
download_data = self._download_json(
|
download_data = self._download_json(
|
||||||
'https://music.yandex.ru/api/v2.1/handlers/track/%s:%s/web-album_track-track-track-main/download/m' % (track_id, album_id),
|
'https://music.yandex.ru/api/v2.1/handlers/track/%s:%s/web-album_track-track-track-main/download/m' % (track_id, album_id),
|
||||||
@ -288,8 +289,10 @@ class YandexMusicPlaylistIE(YandexMusicPlaylistBaseIE):
|
|||||||
for track in tracks if track.get('id')])
|
for track in tracks if track.get('id')])
|
||||||
missing_track_ids = [
|
missing_track_ids = [
|
||||||
track_id for track_id in track_ids
|
track_id for track_id in track_ids
|
||||||
if track_id not in present_track_ids]
|
if track_id.split(':')[0] not in present_track_ids]
|
||||||
missing_tracks = self._download_json(
|
missing_tracks = []
|
||||||
|
for i in range(0, len(missing_track_ids), 500):
|
||||||
|
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',
|
||||||
fatal=False,
|
fatal=False,
|
||||||
@ -298,7 +301,7 @@ class YandexMusicPlaylistIE(YandexMusicPlaylistBaseIE):
|
|||||||
'X-Requested-With': 'XMLHttpRequest',
|
'X-Requested-With': 'XMLHttpRequest',
|
||||||
},
|
},
|
||||||
query={
|
query={
|
||||||
'entries': ','.join(missing_track_ids),
|
'entries': ','.join(missing_track_ids[i:i+500]),
|
||||||
'lang': tld,
|
'lang': tld,
|
||||||
'external-domain': 'music.yandex.%s' % tld,
|
'external-domain': 'music.yandex.%s' % tld,
|
||||||
'overembed': 'false',
|
'overembed': 'false',
|
||||||
|
Loading…
Reference in New Issue
Block a user