diff options
| -rw-r--r-- | youtube_dl/extractor/zdf.py | 70 | 
1 files changed, 34 insertions, 36 deletions
| diff --git a/youtube_dl/extractor/zdf.py b/youtube_dl/extractor/zdf.py index 829f002cf..3b1ac4e9f 100644 --- a/youtube_dl/extractor/zdf.py +++ b/youtube_dl/extractor/zdf.py @@ -1,4 +1,5 @@  # coding: utf-8 +from __future__ import unicode_literals  import re @@ -13,52 +14,42 @@ class ZDFIE(InfoExtractor):      _VALID_URL = r'^https?://www\.zdf\.de/ZDFmediathek(?P<hash>#)?/(.*beitrag/(?:video/)?)(?P<video_id>[0-9]+)(?:/[^/?]+)?(?:\?.*)?'      _TEST = { -        u"url": u"http://www.zdf.de/ZDFmediathek/beitrag/video/2037704/ZDFspezial---Ende-des-Machtpokers--?bc=sts;stt", -        u"file": u"2037704.webm", -        u"info_dict": { -            u"upload_date": u"20131127", -            u"description": u"Union und SPD haben sich auf einen Koalitionsvertrag geeinigt. Aber was bedeutet das für die Bürger? Sehen Sie hierzu das ZDFspezial \"Ende des Machtpokers - Große Koalition für Deutschland\".", -            u"uploader": u"spezial", -            u"title": u"ZDFspezial - Ende des Machtpokers" +        'url': 'http://www.zdf.de/ZDFmediathek/beitrag/video/2037704/ZDFspezial---Ende-des-Machtpokers--?bc=sts;stt', +        'info_dict': { +            'id': '2037704', +            'ext': 'webm', +            'title': 'ZDFspezial - Ende des Machtpokers', +            'description': 'Union und SPD haben sich auf einen Koalitionsvertrag geeinigt. Aber was bedeutet das für die Bürger? Sehen Sie hierzu das ZDFspezial "Ende des Machtpokers - Große Koalition für Deutschland".', +            'duration': 1022, +            'uploader': 'spezial', +            'uploader_id': '225948', +            'upload_date': '20131127',          }, -        u"skip": u"Videos on ZDF.de are depublicised in short order", +        'skip': 'Videos on ZDF.de are depublicised in short order',      }      def _real_extract(self, url):          mobj = re.match(self._VALID_URL, url)          video_id = mobj.group('video_id') -        xml_url = u'http://www.zdf.de/ZDFmediathek/xmlservice/web/beitragsDetails?ak=web&id=%s' % video_id +        xml_url = 'http://www.zdf.de/ZDFmediathek/xmlservice/web/beitragsDetails?ak=web&id=%s' % video_id          doc = self._download_xml(              xml_url, video_id, -            note=u'Downloading video info', -            errnote=u'Failed to download video info') +            note='Downloading video info', +            errnote='Failed to download video info')          title = doc.find('.//information/title').text          description = doc.find('.//information/detail').text +        duration = int(doc.find('.//details/lengthSec').text)          uploader_node = doc.find('.//details/originChannelTitle')          uploader = None if uploader_node is None else uploader_node.text -        duration_str = doc.find('.//details/length').text -        duration_m = re.match(r'''(?x)^ -            (?P<hours>[0-9]{2}) -            :(?P<minutes>[0-9]{2}) -            :(?P<seconds>[0-9]{2}) -            (?:\.(?P<ms>[0-9]+)?) -            ''', duration_str) -        duration = ( -            ( -                (int(duration_m.group('hours')) * 60 * 60) + -                (int(duration_m.group('minutes')) * 60) + -                int(duration_m.group('seconds')) -            ) -            if duration_m -            else None -        ) +        uploader_id_node = doc.find('.//details/originChannelId') +        uploader_id = None if uploader_id_node is None else uploader_id_node.text          upload_date = unified_strdate(doc.find('.//details/airtime').text)          def xml_to_format(fnode):              video_url = fnode.find('url').text -            is_available = u'http://www.metafilegenerator' not in video_url +            is_available = 'http://www.metafilegenerator' not in video_url              format_id = fnode.attrib['basetype']              format_m = re.match(r'''(?x) @@ -71,22 +62,28 @@ class ZDFIE(InfoExtractor):              quality = fnode.find('./quality').text              abr = int(fnode.find('./audioBitrate').text) // 1000 -            vbr = int(fnode.find('./videoBitrate').text) // 1000 +            vbr_node = fnode.find('./videoBitrate') +            vbr = None if vbr_node is None else int(vbr_node.text) // 1000 -            format_note = u'' +            width_node = fnode.find('./width') +            width = None if width_node is None else int_or_none(width_node.text) +            height_node = fnode.find('./height') +            height = None if height_node is None else int_or_none(height_node.text) + +            format_note = ''              if not format_note:                  format_note = None              return { -                'format_id': format_id + u'-' + quality, +                'format_id': format_id + '-' + quality,                  'url': video_url,                  'ext': ext,                  'acodec': format_m.group('acodec'),                  'vcodec': format_m.group('vcodec'),                  'abr': abr,                  'vbr': vbr, -                'width': int_or_none(fnode.find('./width').text), -                'height': int_or_none(fnode.find('./height').text), +                'width': width, +                'height': height,                  'filesize': int_or_none(fnode.find('./filesize').text),                  'format_note': format_note,                  'protocol': proto, @@ -103,9 +100,10 @@ class ZDFIE(InfoExtractor):          return {              'id': video_id,              'title': title, -            'formats': formats,              'description': description, -            'uploader': uploader,              'duration': duration, +            'uploader': uploader, +            'uploader_id': uploader_id,              'upload_date': upload_date, -        } +            'formats': formats, +        }
\ No newline at end of file | 
