]>
jfr.im git - yt-dlp.git/blob - yt_dlp/extractor/rbmaradio.py
1 from __future__
import unicode_literals
4 from .common
import InfoExtractor
5 from ..compat
import compat_str
14 class RBMARadioIE(InfoExtractor
):
15 _VALID_URL
= r
'https?://(?:www\.)?(?:rbmaradio|redbullradio)\.com/shows/(?P<show_id>[^/]+)/episodes/(?P<id>[^/?#&]+)'
17 'url': 'https://www.rbmaradio.com/shows/main-stage/episodes/ford-lopatin-live-at-primavera-sound-2011',
18 'md5': '6bc6f9bcb18994b4c983bc3bf4384d95',
20 'id': 'ford-lopatin-live-at-primavera-sound-2011',
22 'title': 'Main Stage - Ford & Lopatin at Primavera Sound',
23 'description': 'md5:d41d8cd98f00b204e9800998ecf8427e',
24 'thumbnail': r
're:^https?://.*\.jpg',
26 'timestamp': 1307103164,
27 'upload_date': '20110603',
31 def _real_extract(self
, url
):
32 mobj
= self
._match
_valid
_url
(url
)
33 show_id
= mobj
.group('show_id')
34 episode_id
= mobj
.group('id')
36 webpage
= self
._download
_webpage
(url
, episode_id
)
38 episode
= self
._parse
_json
(
40 r
'__INITIAL_STATE__\s*=\s*({.+?})\s*</script>',
41 webpage
, 'json data'),
42 episode_id
)['episodes'][show_id
][episode_id
]
44 title
= episode
['title']
46 show_title
= episode
.get('showTitle')
48 title
= '%s - %s' % (show_title
, title
)
51 'url': update_url_query(episode
['audioURL'], query
={'cbr': abr}
),
52 'format_id': compat_str(abr
),
55 } for abr
in (96, 128, 192, 256)]
56 self
._check
_formats
(formats
, episode_id
)
58 description
= clean_html(episode
.get('longTeaser'))
59 thumbnail
= self
._proto
_relative
_url
(episode
.get('imageURL', {}).get('landscape'))
60 duration
= int_or_none(episode
.get('duration'))
61 timestamp
= unified_timestamp(episode
.get('publishedAt'))
66 'description': description
,
67 'thumbnail': thumbnail
,
69 'timestamp': timestamp
,