aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2018-11-02 23:46:56 +0700
committerSergey M․ <dstftw@gmail.com>2018-11-02 23:47:23 +0700
commit4b6aca17cc7d4df22e78501b4c00a9281c189ab3 (patch)
tree4f95c89b8b9140e8cabdc0b79d4f559a6f373b2c
parentc620694c97151396055108cd10d2a393036eb334 (diff)
downloadyoutube-dl-4b6aca17cc7d4df22e78501b4c00a9281c189ab3.tar.xz
[orf:tvthek] Improve extraction and remove unused code (closes #17956, closes #18024)
-rw-r--r--youtube_dl/extractor/orf.py24
1 files changed, 16 insertions, 8 deletions
diff --git a/youtube_dl/extractor/orf.py b/youtube_dl/extractor/orf.py
index da8031ad2..d432e3449 100644
--- a/youtube_dl/extractor/orf.py
+++ b/youtube_dl/extractor/orf.py
@@ -15,6 +15,7 @@ from ..utils import (
strip_jsonp,
unescapeHTML,
unified_strdate,
+ url_or_none,
)
@@ -68,12 +69,6 @@ class ORFTVthekIE(InfoExtractor):
webpage, 'playlist', group='json'),
playlist_id, transform_source=unescapeHTML)['playlist']['videos']
- def quality_to_int(s):
- m = re.search('([0-9]+)', s)
- if m is None:
- return -1
- return int(m.group(1))
-
entries = []
for sd in data_jsb:
video_id, title = sd.get('id'), sd.get('title')
@@ -82,14 +77,27 @@ class ORFTVthekIE(InfoExtractor):
video_id = compat_str(video_id)
formats = []
for fd in sd['sources']:
- format_id = '%s-%s-%s' % (
- fd['delivery'], fd['quality'], fd['quality_string'])
+ src = url_or_none(fd.get('src'))
+ if not src:
+ continue
+ format_id_list = []
+ for key in ('delivery', 'quality', 'quality_string'):
+ value = fd.get(key)
+ if value:
+ format_id_list.append(value)
+ format_id = '-'.join(format_id_list)
if determine_ext(fd['src']) == 'm3u8':
formats.extend(self._extract_m3u8_formats(
fd['src'], video_id, 'mp4', m3u8_id=format_id))
elif determine_ext(fd['src']) == 'f4m':
formats.extend(self._extract_f4m_formats(
fd['src'], video_id, f4m_id=format_id))
+ else:
+ formats.append({
+ 'format_id': format_id,
+ 'url': src,
+ 'protocol': fd.get('protocol'),
+ })
# Check for geoblocking.
# There is a property is_geoprotection, but that's always false