]> jfr.im git - yt-dlp.git/blame - yt_dlp/extractor/magentamusik360.py
[ie/Rule34Video] Extract more metadata (#7416)
[yt-dlp.git] / yt_dlp / extractor / magentamusik360.py
CommitLineData
3d852568
AH
1from .common import InfoExtractor
2
3
4class MagentaMusik360IE(InfoExtractor):
5 _VALID_URL = r'https?://(?:www\.)?magenta-musik-360\.de/([a-z0-9-]+-(?P<id>[0-9]+)|festivals/.+)'
6 _TESTS = [{
7 'url': 'https://www.magenta-musik-360.de/within-temptation-wacken-2019-1-9208205928595185932',
8 'md5': '65b6f060b40d90276ec6fb9b992c1216',
9 'info_dict': {
10 'id': '9208205928595185932',
11 'ext': 'm3u8',
12 'title': 'WITHIN TEMPTATION',
13 'description': 'Robert Westerholt und Sharon Janny den Adel gründeten die Symphonic Metal-Band. Privat sind die Niederländer ein Paar und haben zwei Kinder. Die Single Ice Queen brachte ihnen Platin und Gold und verhalf 2002 zum internationalen Durchbruch. Charakteristisch für die Band war Anfangs der hohe Gesang von Frontfrau Sharon. Stilistisch fing die Band im Gothic Metal an. Mit neuem Sound, schnellen Gitarrenriffs und Gitarrensoli, avancierte Within Temptation zur erfolgreichen Rockband. Auch dieses Jahr wird die Band ihre Fangemeinde wieder mitreißen.',
14 }
15 }, {
16 'url': 'https://www.magenta-musik-360.de/festivals/wacken-world-wide-2020-body-count-feat-ice-t',
17 'md5': '81010d27d7cab3f7da0b0f681b983b7e',
18 'info_dict': {
19 'id': '9208205928595231363',
20 'ext': 'm3u8',
21 'title': 'Body Count feat. Ice-T',
22 'description': 'Body Count feat. Ice-T konnten bereits im vergangenen Jahr auf dem „Holy Ground“ in Wacken überzeugen. 2020 gehen die Crossover-Metaller aus einem Club in Los Angeles auf Sendung und bringen mit ihrer Mischung aus Metal und Hip-Hop Abwechslung und ordentlich Alarm zum WWW. Bereits seit 1990 stehen die beiden Gründer Ice-T (Gesang) und Ernie C (Gitarre) auf der Bühne. Sieben Studioalben hat die Gruppe bis jetzt veröffentlicht, darunter das Debüt „Body Count“ (1992) mit dem kontroversen Track „Cop Killer“.',
23 }
24 }]
25
26 def _real_extract(self, url):
27 video_id = self._match_id(url)
28 # _match_id casts to string, but since "None" is not a valid video_id for magenta
29 # there is no risk for confusion
30 if video_id == "None":
31 webpage = self._download_webpage(url, video_id)
32 video_id = self._html_search_regex(r'data-asset-id="([^"]+)"', webpage, 'video_id')
33 json = self._download_json("https://wcps.t-online.de/cvss/magentamusic/vodplayer/v3/player/58935/%s/Main%%20Movie" % video_id, video_id)
34 xml_url = json['content']['feature']['representations'][0]['contentPackages'][0]['media']['href']
35 metadata = json['content']['feature'].get('metadata')
36 title = None
37 description = None
38 duration = None
39 thumbnails = []
40 if metadata:
41 title = metadata.get('title')
42 description = metadata.get('fullDescription')
43 duration = metadata.get('runtimeInSeconds')
44 for img_key in ('teaserImageWide', 'smallCoverImage'):
45 if img_key in metadata:
46 thumbnails.append({'url': metadata[img_key].get('href')})
47
48 xml = self._download_xml(xml_url, video_id)
49 final_url = xml[0][0][0].attrib['src']
50
51 return {
52 'id': video_id,
53 'title': title,
54 'description': description,
55 'url': final_url,
56 'duration': duration,
57 'thumbnails': thumbnails
58 }