summaryrefslogtreecommitdiffstats
path: root/yt_dlp/extractor/tubetugraz.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--yt_dlp/extractor/tubetugraz.py79
1 files changed, 42 insertions, 37 deletions
diff --git a/yt_dlp/extractor/tubetugraz.py b/yt_dlp/extractor/tubetugraz.py
index a351e4e..d5dbf00 100644
--- a/yt_dlp/extractor/tubetugraz.py
+++ b/yt_dlp/extractor/tubetugraz.py
@@ -21,16 +21,20 @@ class TubeTuGrazBaseIE(InfoExtractor):
if not urlh:
return
- content, urlh = self._download_webpage_handle(
+ response = self._download_webpage_handle(
urlh.url, None, fatal=False, headers={'referer': urlh.url},
note='logging in', errnote='unable to log in',
data=urlencode_postdata({
'lang': 'de',
'_eventId_proceed': '',
'j_username': username,
- 'j_password': password
+ 'j_password': password,
}))
- if not urlh or urlh.url == 'https://tube.tugraz.at/paella/ui/index.html':
+ if not response:
+ return
+
+ content, urlh = response
+ if urlh.url == 'https://tube.tugraz.at/paella/ui/index.html':
return
if not self._html_search_regex(
@@ -39,7 +43,7 @@ class TubeTuGrazBaseIE(InfoExtractor):
self.report_warning('unable to login: incorrect password')
return
- content, urlh = self._download_webpage_handle(
+ urlh = self._request_webpage(
urlh.url, None, fatal=False, headers={'referer': urlh.url},
note='logging in with TFA', errnote='unable to log in with TFA',
data=urlencode_postdata({
@@ -53,33 +57,33 @@ class TubeTuGrazBaseIE(InfoExtractor):
self.report_warning('unable to login: incorrect TFA code')
def _extract_episode(self, episode_info):
- id = episode_info.get('id')
+ video_id = episode_info.get('id')
formats = list(self._extract_formats(
- traverse_obj(episode_info, ('mediapackage', 'media', 'track')), id))
+ traverse_obj(episode_info, ('mediapackage', 'media', 'track')), video_id))
title = traverse_obj(episode_info, ('mediapackage', 'title'), 'dcTitle')
series_title = traverse_obj(episode_info, ('mediapackage', 'seriestitle'))
creator = ', '.join(variadic(traverse_obj(
episode_info, ('mediapackage', 'creators', 'creator'), 'dcCreator', default='')))
return {
- 'id': id,
+ 'id': video_id,
'title': title,
'creator': creator or None,
'duration': traverse_obj(episode_info, ('mediapackage', 'duration'), 'dcExtent'),
'series': series_title,
'series_id': traverse_obj(episode_info, ('mediapackage', 'series'), 'dcIsPartOf'),
'episode': series_title and title,
- 'formats': formats
+ 'formats': formats,
}
- def _set_format_type(self, formats, type):
+ def _set_format_type(self, formats, fmt_type):
for f in formats:
- f['format_note'] = type
- if not type.startswith(self._FORMAT_TYPES[0]):
+ f['format_note'] = fmt_type
+ if not fmt_type.startswith(self._FORMAT_TYPES[0]):
f['preference'] = -2
return formats
- def _extract_formats(self, format_list, id):
+ def _extract_formats(self, format_list, video_id):
has_hls, has_dash = False, False
for format_info in format_list or []:
@@ -87,7 +91,7 @@ class TubeTuGrazBaseIE(InfoExtractor):
if url is None:
continue
- type = format_info.get('type') or 'unknown'
+ fmt_type = format_info.get('type') or 'unknown'
transport = (format_info.get('transport') or 'https').lower()
if transport == 'https':
@@ -100,10 +104,10 @@ class TubeTuGrazBaseIE(InfoExtractor):
}]
elif transport == 'hls':
has_hls, formats = True, self._extract_m3u8_formats(
- url, id, 'mp4', fatal=False, note=f'downloading {type} HLS manifest')
+ url, video_id, 'mp4', fatal=False, note=f'downloading {fmt_type} HLS manifest')
elif transport == 'dash':
has_dash, formats = True, self._extract_mpd_formats(
- url, id, fatal=False, note=f'downloading {type} DASH manifest')
+ url, video_id, fatal=False, note=f'downloading {fmt_type} DASH manifest')
else:
# RTMP, HDS, SMOOTH, and unknown formats
# - RTMP url fails on every tested entry until now
@@ -111,21 +115,21 @@ class TubeTuGrazBaseIE(InfoExtractor):
# - SMOOTH url 404's on every tested entry until now
continue
- yield from self._set_format_type(formats, type)
+ yield from self._set_format_type(formats, fmt_type)
# TODO: Add test for these
- for type in self._FORMAT_TYPES:
+ for fmt_type in self._FORMAT_TYPES:
if not has_hls:
hls_formats = self._extract_m3u8_formats(
- f'https://wowza.tugraz.at/matterhorn_engage/smil:engage-player_{id}_{type}.smil/playlist.m3u8',
- id, 'mp4', fatal=False, note=f'Downloading {type} HLS manifest', errnote=False) or []
- yield from self._set_format_type(hls_formats, type)
+ f'https://wowza.tugraz.at/matterhorn_engage/smil:engage-player_{video_id}_{fmt_type}.smil/playlist.m3u8',
+ video_id, 'mp4', fatal=False, note=f'Downloading {fmt_type} HLS manifest', errnote=False) or []
+ yield from self._set_format_type(hls_formats, fmt_type)
if not has_dash:
dash_formats = self._extract_mpd_formats(
- f'https://wowza.tugraz.at/matterhorn_engage/smil:engage-player_{id}_{type}.smil/manifest_mpm4sav_mvlist.mpd',
- id, fatal=False, note=f'Downloading {type} DASH manifest', errnote=False)
- yield from self._set_format_type(dash_formats, type)
+ f'https://wowza.tugraz.at/matterhorn_engage/smil:engage-player_{video_id}_{fmt_type}.smil/manifest_mpm4sav_mvlist.mpd',
+ video_id, fatal=False, note=f'Downloading {fmt_type} DASH manifest', errnote=False)
+ yield from self._set_format_type(dash_formats, fmt_type)
class TubeTuGrazIE(TubeTuGrazBaseIE):
@@ -148,7 +152,7 @@ class TubeTuGrazIE(TubeTuGrazBaseIE):
'creator': 'Safran C',
'duration': 3295818,
'series_id': 'b1192fff-2aa7-4bf0-a5cf-7b15c3bd3b34',
- }
+ },
}, {
'url': 'https://tube.tugraz.at/paella/ui/watch.html?id=2df6d787-e56a-428d-8ef4-d57f07eef238',
'md5': 'de0d854a56bf7318d2b693fe1adb89a5',
@@ -158,7 +162,7 @@ class TubeTuGrazIE(TubeTuGrazBaseIE):
'ext': 'mp4',
},
'expected_warnings': ['Extractor failed to obtain "title"'],
- }
+ },
]
def _real_extract(self, url):
@@ -193,7 +197,7 @@ class TubeTuGrazSeriesIE(TubeTuGrazBaseIE):
'series': '[209351] Strassenwesen',
'creator': 'Neuhold R',
'duration': 6127024,
- }
+ },
},
{
'info_dict': {
@@ -205,7 +209,7 @@ class TubeTuGrazSeriesIE(TubeTuGrazBaseIE):
'series': '[209351] Strassenwesen',
'creator': 'Neuhold R',
'duration': 5374422,
- }
+ },
},
{
'info_dict': {
@@ -217,7 +221,7 @@ class TubeTuGrazSeriesIE(TubeTuGrazBaseIE):
'series': '[209351] Strassenwesen',
'creator': 'Neuhold R',
'duration': 5566404,
- }
+ },
},
{
'info_dict': {
@@ -229,24 +233,25 @@ class TubeTuGrazSeriesIE(TubeTuGrazBaseIE):
'series': '[209351] Strassenwesen',
'creator': 'Neuhold R',
'duration': 5420200,
- }
- }
+ },
+ },
],
- 'min_playlist_count': 4
+ 'min_playlist_count': 4,
}]
def _real_extract(self, url):
- id = self._match_id(url)
- episodes_data = self._download_json(self._API_EPISODE, id, query={'sid': id}, note='Downloading episode list')
+ playlist_id = self._match_id(url)
+ episodes_data = self._download_json(
+ self._API_EPISODE, playlist_id, query={'sid': playlist_id}, note='Downloading episode list')
series_data = self._download_json(
- 'https://tube.tugraz.at/series/series.json', id, fatal=False,
+ 'https://tube.tugraz.at/series/series.json', playlist_id, fatal=False,
note='downloading series metadata', errnote='failed to download series metadata',
query={
- 'seriesId': id,
+ 'seriesId': playlist_id,
'count': 1,
- 'sort': 'TITLE'
+ 'sort': 'TITLE',
})
return self.playlist_result(
- map(self._extract_episode, episodes_data['search-results']['result']), id,
+ map(self._extract_episode, episodes_data['search-results']['result']), playlist_id,
traverse_obj(series_data, ('catalogs', 0, 'http://purl.org/dc/terms/', 'title', 0, 'value')))