diff options
Diffstat (limited to 'youtube_dl/extractor/ard.py')
| -rw-r--r-- | youtube_dl/extractor/ard.py | 44 | 
1 files changed, 33 insertions, 11 deletions
| diff --git a/youtube_dl/extractor/ard.py b/youtube_dl/extractor/ard.py index 6bf5b3f13..143fc51e9 100644 --- a/youtube_dl/extractor/ard.py +++ b/youtube_dl/extractor/ard.py @@ -284,20 +284,42 @@ class ARDIE(InfoExtractor):          formats = []          for a in video_node.findall('.//asset'): +            file_name = xpath_text(a, './fileName', default=None) +            if not file_name: +                continue +            format_type = a.attrib.get('type') +            format_url = url_or_none(file_name) +            if format_url: +                ext = determine_ext(file_name) +                if ext == 'm3u8': +                    formats.extend(self._extract_m3u8_formats( +                        format_url, display_id, 'mp4', entry_protocol='m3u8_native', +                        m3u8_id=format_type or 'hls', fatal=False)) +                    continue +                elif ext == 'f4m': +                    formats.extend(self._extract_f4m_formats( +                        update_url_query(format_url, {'hdcore': '3.7.0'}), +                        display_id, f4m_id=format_type or 'hds', fatal=False)) +                    continue              f = { -                'format_id': a.attrib['type'], -                'width': int_or_none(a.find('./frameWidth').text), -                'height': int_or_none(a.find('./frameHeight').text), -                'vbr': int_or_none(a.find('./bitrateVideo').text), -                'abr': int_or_none(a.find('./bitrateAudio').text), -                'vcodec': a.find('./codecVideo').text, -                'tbr': int_or_none(a.find('./totalBitrate').text), +                'format_id': format_type, +                'width': int_or_none(xpath_text(a, './frameWidth')), +                'height': int_or_none(xpath_text(a, './frameHeight')), +                'vbr': int_or_none(xpath_text(a, './bitrateVideo')), +                'abr': int_or_none(xpath_text(a, './bitrateAudio')), +                'vcodec': xpath_text(a, './codecVideo'), +                'tbr': int_or_none(xpath_text(a, './totalBitrate')),              } -            if a.find('./serverPrefix').text: -                f['url'] = a.find('./serverPrefix').text -                f['playpath'] = a.find('./fileName').text +            server_prefix = xpath_text(a, './serverPrefix', default=None) +            if server_prefix: +                f.update({ +                    'url': server_prefix, +                    'playpath': file_name, +                })              else: -                f['url'] = a.find('./fileName').text +                if not format_url: +                    continue +                f['url'] = format_url              formats.append(f)          self._sort_formats(formats) | 
