improve _extract_ptmd

Authored by: bashonly
This commit is contained in:
bashonly 2025-04-30 02:46:47 -05:00
parent 1dfc0e9d49
commit 3839ec0b21
No known key found for this signature in database
GPG Key ID: 783F096F253D15B0

View File

@ -11,7 +11,6 @@ from ..utils import (
int_or_none,
join_nonempty,
make_archive_id,
merge_dicts,
parse_codecs,
parse_iso8601,
parse_qs,
@ -98,7 +97,7 @@ class ZDFBaseIE(InfoExtractor):
content_id = basename
if not duration:
duration = traverse_obj(ptmd, ('attributes', 'duration', 'value', {float_or_none(scale=1000)}))
src_captions += ptmd.get('captions') or []
src_captions += traverse_obj(ptmd, ('captions', ..., {dict}))
for stream in traverse_obj(ptmd, ('priorityList', ..., 'formitaeten', ..., {dict})):
for quality in traverse_obj(stream, ('qualities', ..., {dict})):
for variant in traverse_obj(quality, ('audio', 'tracks', lambda _, v: url_or_none(v['uri']))):
@ -125,12 +124,16 @@ class ZDFBaseIE(InfoExtractor):
'tbr': int_or_none(self._search_regex(r'_(\d+)k_', format_url, 'tbr', default=None)),
}]
f_class = variant.get('class')
formats.extend(merge_dicts(f, {
'format_note': join_nonempty(f_class, is_dgs and 'German Sign Language', delim=', '),
'language': variant.get('language'),
'preference': -2 if is_dgs else -1,
'language_preference': 10 if f_class == 'main' else -10 if f_class == 'ad' else -1,
}) for f in fmts)
for f in fmts:
formats.append({
**f,
'format_id': join_nonempty(f.get('format_id'), is_dgs and 'dgs'),
'format_note': join_nonempty(
f_class, is_dgs and 'German Sign Language', f.get('format_note'), delim=', '),
'language': variant.get('language') or f.get('language'),
'preference': -2 if is_dgs else -1,
'language_preference': 10 if f_class == 'main' else -10 if f_class == 'ad' else -1,
})
return {
'id': content_id,