mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2026-04-02 15:12:45 +00:00
parent
a5aae18945
commit
2d7b278666
@ -439,31 +439,27 @@ class BandcampWeeklyIE(BandcampIE): # XXX: Do not subclass from concrete IE
|
|||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
show_id = self._match_id(url)
|
show_id = self._match_id(url)
|
||||||
audio_data = self._download_json(
|
show_data = self._download_json(
|
||||||
'https://bandcamp.com/api/bcradio_api/1/get_show',
|
'https://bandcamp.com/api/bcradio_api/1/get_show',
|
||||||
show_id, 'Downloading radio show JSON',
|
show_id, 'Downloading radio show JSON',
|
||||||
data=json.dumps({'id': show_id}).encode(),
|
data=json.dumps({'id': show_id}).encode(),
|
||||||
headers={'Content-Type': 'application/json'})['radioShowAudio']
|
headers={'Content-Type': 'application/json'})
|
||||||
|
audio_data = show_data['compiledTrack']
|
||||||
|
|
||||||
stream_url = audio_data['streamUrl']
|
stream_url = audio_data['streamUrl']
|
||||||
format_id = traverse_obj(stream_url, ({parse_qs}, 'enc', -1))
|
format_id = traverse_obj(stream_url, ({parse_qs}, 'enc', -1))
|
||||||
encoding, _, bitrate_str = (format_id or '').partition('-')
|
encoding, _, bitrate_str = (format_id or '').partition('-')
|
||||||
|
|
||||||
webpage = self._download_webpage(url, show_id, fatal=False)
|
series_title = show_data.get('title')
|
||||||
metadata = traverse_obj(
|
release_timestamp = unified_timestamp(show_data.get('date'))
|
||||||
self._extract_data_attr(webpage, show_id, 'blob', fatal=False),
|
|
||||||
('appData', 'shows', lambda _, v: str(v['showId']) == show_id, any)) or {}
|
|
||||||
|
|
||||||
series_title = audio_data.get('title') or metadata.get('title')
|
|
||||||
release_timestamp = unified_timestamp(audio_data.get('date')) or unified_timestamp(metadata.get('date'))
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'id': show_id,
|
'id': show_id,
|
||||||
'episode_id': show_id,
|
'episode_id': show_id,
|
||||||
'title': join_nonempty(series_title, strftime_or_none(release_timestamp, '%Y-%m-%d'), delim=', '),
|
'title': join_nonempty(series_title, strftime_or_none(release_timestamp, '%Y-%m-%d'), delim=', '),
|
||||||
'series': series_title,
|
'series': series_title,
|
||||||
'thumbnail': format_field(metadata, 'imageId', 'https://f4.bcbits.com/img/%s_0.jpg', default=None),
|
'thumbnail': format_field(show_data, 'imageId', 'https://f4.bcbits.com/img/%s_0.jpg', default=None),
|
||||||
'description': metadata.get('desc') or metadata.get('short_desc'),
|
'description': show_data.get('description'),
|
||||||
'duration': float_or_none(audio_data.get('duration')),
|
'duration': float_or_none(audio_data.get('duration')),
|
||||||
'release_timestamp': release_timestamp,
|
'release_timestamp': release_timestamp,
|
||||||
'formats': [{
|
'formats': [{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user