This commit is contained in:
parent
646052e416
commit
a363fb5d28
1 changed files with 23 additions and 12 deletions
|
@ -1,8 +1,9 @@
|
|||
# coding: utf-8
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import re
|
||||
import hashlib
|
||||
import itertools
|
||||
import re
|
||||
|
||||
from .common import InfoExtractor
|
||||
from ..compat import compat_str
|
||||
|
@ -209,17 +210,27 @@ class YandexMusicPlaylistBaseIE(YandexMusicBaseIE):
|
|||
missing_track_ids = [
|
||||
track_id for track_id in track_ids
|
||||
if track_id not in present_track_ids]
|
||||
missing_tracks = self._call_api(
|
||||
'track-entries', tld, url, item_id,
|
||||
'Downloading missing tracks JSON', {
|
||||
'entries': ','.join(missing_track_ids),
|
||||
'lang': tld,
|
||||
'external-domain': 'music.yandex.%s' % tld,
|
||||
'overembed': 'false',
|
||||
'strict': 'true',
|
||||
})
|
||||
if missing_tracks:
|
||||
tracks.extend(missing_tracks)
|
||||
# Request missing tracks in chunks to avoid exceeding max HTTP header size,
|
||||
# see https://github.com/ytdl-org/youtube-dl/issues/27355
|
||||
_TRACKS_PER_CHUNK = 250
|
||||
for chunk_num in itertools.count(0):
|
||||
start = chunk_num * _TRACKS_PER_CHUNK
|
||||
end = start + _TRACKS_PER_CHUNK
|
||||
missing_track_ids_req = missing_track_ids[start:end]
|
||||
assert missing_track_ids_req
|
||||
missing_tracks = self._call_api(
|
||||
'track-entries', tld, url, item_id,
|
||||
'Downloading missing tracks JSON chunk %d' % (chunk_num + 1), {
|
||||
'entries': ','.join(missing_track_ids_req),
|
||||
'lang': tld,
|
||||
'external-domain': 'music.yandex.%s' % tld,
|
||||
'overembed': 'false',
|
||||
'strict': 'true',
|
||||
})
|
||||
if missing_tracks:
|
||||
tracks.extend(missing_tracks)
|
||||
if end >= len(missing_track_ids):
|
||||
break
|
||||
|
||||
return tracks
|
||||
|
||||
|
|
Loading…
Reference in a new issue