]>
jfr.im git - yt-dlp.git/blob - yt_dlp/extractor/tv2hu.py
2 from __future__
import unicode_literals
4 from .common
import InfoExtractor
11 class TV2HuIE(InfoExtractor
):
12 IE_NAME
= 'tv2play.hu'
13 _VALID_URL
= r
'https?://(?:www\.)?tv2play\.hu/(?!szalag/)(?P<id>[^#&?]+)'
15 'url': 'https://tv2play.hu/mintaapak/mintaapak_213_epizod_resz',
19 'title': 'Mintaapák - 213. epizód',
20 'series': 'Mintaapák',
22 'description': 'md5:7350147e75485a59598e806c47967b07',
23 'thumbnail': r
're:^https?://.*\.jpg$',
24 'release_date': '20210825',
25 'season_number': None,
26 'episode_number': 213,
29 'skip_download': True,
32 'url': 'https://tv2play.hu/taxi_2',
33 'md5': '585e58e2e090f34603804bb2c48e98d8',
40 'description': 'md5:47762155dc9a50241797ded101b1b08c',
41 'thumbnail': r
're:^https?://.*\.jpg$',
42 'release_date': '20210118',
43 'season_number': None,
44 'episode_number': None,
47 'skip_download': True,
51 def _real_extract(self
, url
):
52 id = self
._match
_id
(url
)
53 json_data
= self
._download
_json
(f
'https://tv2play.hu/api/search/{id}', id)
55 if json_data
['contentType'] == 'showpage':
56 ribbon_ids
= traverse_obj(json_data
, ('pages', ..., 'tabs', ..., 'ribbonIds'), get_all
=False, expected_type
=list)
57 entries
= [self
.url_result(f
'https://tv2play.hu/szalag/{ribbon_id}',
58 ie
=TV2HuSeriesIE
.ie_key(), video_id
=ribbon_id
) for ribbon_id
in ribbon_ids
]
59 return self
.playlist_result(entries
, playlist_id
=id)
60 elif json_data
['contentType'] != 'video':
61 raise UnsupportedError(url
)
63 video_id
= str(json_data
['id'])
64 player_id
= json_data
.get('playerId')
65 series_json
= json_data
.get('seriesInfo', {})
67 video_json_url
= self
._download
_json
(f
'https://tv2play.hu/api/streaming-url?playerId={player_id}', video_id
)['url']
68 video_json
= self
._download
_json
(video_json_url
, video_id
)
69 m3u8_url
= self
._proto
_relative
_url
(traverse_obj(video_json
, ('bitrates', 'hls')))
70 formats
, subtitles
= self
._extract
_m
3u8_formats
_and
_subtitles
(m3u8_url
, video_id
)
71 self
._sort
_formats
(formats
)
75 'title': json_data
['title'],
76 'series': json_data
.get('seriesTitle'),
77 'duration': json_data
.get('length'),
78 'description': json_data
.get('description'),
79 'thumbnail': 'https://tv2play.hu' + json_data
.get('thumbnailUrl'),
80 'release_date': json_data
.get('uploadedAt').replace('.', ''),
81 'season_number': series_json
.get('seasonNr'),
82 'episode_number': series_json
.get('episodeNr'),
84 'subtitles': subtitles
,
88 class TV2HuSeriesIE(InfoExtractor
):
89 IE_NAME
= 'tv2playseries.hu'
90 _VALID_URL
= r
'https?://(?:www\.)?tv2play\.hu/szalag/(?P<id>[^#&?]+)'
93 'url': 'https://tv2play.hu/szalag/59?rendezes=nepszeruseg',
94 'playlist_mincount': 284,
100 def _real_extract(self
, url
):
101 id = self
._match
_id
(url
)
102 json_data
= self
._download
_json
(f
'https://tv2play.hu/api/ribbons/{id}/0?size=100000', id)
104 for card
in json_data
.get('cards', []):
105 video_id
= card
.get('slug')
107 entries
.append(self
.url_result(f
'https://tv2play.hu/{video_id}',
108 ie
=TV2HuIE
.ie_key(), video_id
=video_id
))
110 return self
.playlist_result(entries
, playlist_id
=id)