]>
jfr.im git - yt-dlp.git/blob - youtube_dlc/extractor/megaphone.py
2 from __future__
import unicode_literals
6 from .common
import InfoExtractor
7 from ..utils
import js_to_json
10 class MegaphoneIE(InfoExtractor
):
11 IE_NAME
= 'megaphone.fm'
12 IE_DESC
= 'megaphone.fm embedded players'
13 _VALID_URL
= r
'https://player\.megaphone\.fm/(?P<id>[A-Z0-9]+)'
15 'url': 'https://player.megaphone.fm/GLT9749789991?"',
16 'md5': '4816a0de523eb3e972dc0dda2c191f96',
18 'id': 'GLT9749789991',
20 'title': '#97 What Kind Of Idiot Gets Phished?',
21 'thumbnail': r
're:^https://.*\.png.*$',
22 'duration': 1776.26375,
23 'author': 'Reply All',
27 def _real_extract(self
, url
):
28 video_id
= self
._match
_id
(url
)
29 webpage
= self
._download
_webpage
(url
, video_id
)
31 title
= self
._og
_search
_property
('audio:title', webpage
)
32 author
= self
._og
_search
_property
('audio:artist', webpage
)
33 thumbnail
= self
._og
_search
_thumbnail
(webpage
)
35 episode_json
= self
._search
_regex
(r
'(?s)var\s+episode\s*=\s*(\{.+?\});', webpage
, 'episode JSON')
36 episode_data
= self
._parse
_json
(episode_json
, video_id
, js_to_json
)
37 video_url
= self
._proto
_relative
_url
(episode_data
['mediaUrl'], 'https:')
45 'thumbnail': thumbnail
,
48 'duration': episode_data
['duration'],
53 def _extract_urls(cls
, webpage
):
54 return [m
[0] for m
in re
.findall(
55 r
'<iframe[^>]*?\ssrc=["\'](%s)' % cls._VALID_URL, webpage)]