3 from .common
import InfoExtractor
15 class SpringboardPlatformIE(InfoExtractor
):
18 cms\.springboardplatform\.com/
20 (?:previews|embed_iframe)/(?P<index>\d+)/video/(?P<id>\d+)|
21 xml_feeds_advanced/index/(?P<index_2>\d+)/rss3/(?P<id_2>\d+)
24 _EMBED_REGEX
= [r
'<iframe\b[^>]+\bsrc=(["\'])(?P
<url
>(?
:https?
:)?
//cms\
.springboardplatform\
.com
/embed_iframe
/\d
+/video
/\d
+.*?
)\
1']
26 'url
': 'http
://cms
.springboardplatform
.com
/previews
/159/video
/981017/0/0/1',
27 'md5
': '5c3cb7b5c55740d482561099e920f192
',
31 'title
': 'Redman
"BUD like YOU" "Usher Good Kisser" REMIX
',
32 'description
': 'Redman
"BUD like YOU" "Usher Good Kisser" REMIX
',
33 'thumbnail
': r're
:^https?
://.*\
.jpg$
',
34 'timestamp
': 1409132328,
35 'upload_date
': '20140827',
39 'url
': 'http
://cms
.springboardplatform
.com
/embed_iframe
/159/video
/981017/rab007
/rapbasement
.com
/1/1',
40 'only_matching
': True,
42 'url
': 'http
://cms
.springboardplatform
.com
/embed_iframe
/20/video
/1731611/ki055
/kidzworld
.com
/10',
43 'only_matching
': True,
45 'url
': 'http
://cms
.springboardplatform
.com
/xml_feeds_advanced
/index
/159/rss3
/981017/0/0/1/',
46 'only_matching
': True,
49 def _real_extract(self, url):
50 mobj = self._match_valid_url(url)
51 video_id = mobj.group('id') or mobj.group('id_2
')
52 index = mobj.group('index
') or mobj.group('index_2
')
54 video = self._download_xml(
55 f'http
://cms
.springboardplatform
.com
/xml_feeds_advanced
/index
/{index}
/rss3
/{video_id}
', video_id)
57 item = xpath_element(video, './/item
', 'item
', fatal=True)
59 content = xpath_element(
60 item, './{http
://search
.yahoo
.com
/mrss
/}content
', 'content
',
62 title = unescapeHTML(xpath_text(item, './title
', 'title
', fatal=True))
64 video_url = content.attrib['url
']
66 if 'error_video
.mp4
' in video_url:
68 f'Video {video_id} no longer exists
', expected=True)
70 duration = int_or_none(content.get('duration
'))
71 tbr = int_or_none(content.get('bitrate
'))
72 filesize = int_or_none(content.get('fileSize
'))
73 width = int_or_none(content.get('width
'))
74 height = int_or_none(content.get('height
'))
76 description = unescapeHTML(xpath_text(
77 item, './description
', 'description
'))
78 thumbnail = xpath_attr(
79 item, './{http
://search
.yahoo
.com
/mrss
/}thumbnail
', 'url
',
82 timestamp = unified_timestamp(xpath_text(
83 item, './{http
://cms
.springboardplatform
.com
/namespaces
.html
}created
',
95 m3u8_format = formats[0].copy()
97 'url
': re.sub(r'(https?
://)cdn\
.', r'\
1hls
.', video_url) + '.m3u8
',
100 'protocol
': 'm3u8_native
',
102 formats.append(m3u8_format)
107 'description
': description,
108 'thumbnail
': thumbnail,
109 'timestamp
': timestamp,
110 'duration
': duration,