diff options
| -rw-r--r-- | youtube_dl/extractor/common.py | 3 | ||||
| -rw-r--r-- | youtube_dl/extractor/sportdeutschland.py | 57 | 
2 files changed, 41 insertions, 19 deletions
| diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index fc3e02663..cc0a77e1e 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -664,6 +664,9 @@ class InfoExtractor(object):              elif line.startswith('#') or not line.strip():                  continue              else: +                if last_info is none: +                    formats.append({'url': line}) +                    continue                  tbr = int_or_none(last_info.get('BANDWIDTH'), scale=1000)                  f = { diff --git a/youtube_dl/extractor/sportdeutschland.py b/youtube_dl/extractor/sportdeutschland.py index 9d54043e5..185353bef 100644 --- a/youtube_dl/extractor/sportdeutschland.py +++ b/youtube_dl/extractor/sportdeutschland.py @@ -12,7 +12,7 @@ from ..utils import (  class SportDeutschlandIE(InfoExtractor):      _VALID_URL = r'https?://sportdeutschland\.tv/(?P<sport>[^/?#]+)/(?P<id>[^?#/]+)(?:$|[?#])' -    _TEST = { +    _TESTS = [{          'url': 'http://sportdeutschland.tv/badminton/live-li-ning-badminton-weltmeisterschaft-2014-kopenhagen',          'info_dict': {              'id': 'live-li-ning-badminton-weltmeisterschaft-2014-kopenhagen', @@ -20,15 +20,28 @@ class SportDeutschlandIE(InfoExtractor):              'title': 'LIVE: Li-Ning Badminton Weltmeisterschaft 2014 Kopenhagen',              'categories': ['Badminton'],              'view_count': int, -            'thumbnail': 're:^https?://.*\.jpg', +            'thumbnail': 're:^https?://.*\.jpg$',              'description': 're:^Die Badminton-WM 2014 aus Kopenhagen LIVE', -            'timestamp': 1409043600, -            'upload_date': '20140826', +            'timestamp': int, +            'upload_date': 're:^201408[23][0-9]$',          },          'params': {              'skip_download': 'Live stream',          }, -    } +    }, { +        'url': 'http://sportdeutschland.tv/li-ning-badminton-wm-2014/lee-li-ning-badminton-weltmeisterschaft-2014-kopenhagen-herren-einzel-wei-vs', +        'info_dict': { +            'id': 'lee-li-ning-badminton-weltmeisterschaft-2014-kopenhagen-herren-einzel-wei-vs', +            'ext': 'mp4', +            'upload_date': '20140825', +            'description': 'md5:60a20536b57cee7d9a4ec005e8687504', +            'timestamp': 1408976060, +            'title': 'Li-Ning Badminton Weltmeisterschaft 2014 Kopenhagen: Herren Einzel, Wei Lee vs. Keun Lee', +            'thumbnail': 're:^https?://.*\.jpg$', +            'view_count': int, +            'categories': ['Li-Ning Badminton WM 2014'], +        } +    }]      def _real_extract(self, url):          mobj = re.match(self._VALID_URL, url) @@ -46,21 +59,27 @@ class SportDeutschlandIE(InfoExtractor):          categories = list(data.get('section', {}).get('tags', {}).values())          asset = data['asset'] +        formats = []          smil_url = asset['video'] -        m3u8_url = smil_url.replace('.smil', '.m3u8') -        formats = self._extract_m3u8_formats(m3u8_url, video_id, ext='mp4') +        if '.smil' in smil_url: +            m3u8_url = smil_url.replace('.smil', '.m3u8') +            formats.extend( +                self._extract_m3u8_formats(m3u8_url, video_id, ext='mp4')) + +            smil_doc = self._download_xml( +                smil_url, video_id, note='Downloading SMIL metadata') +            base_url = smil_doc.find('./head/meta').attrib['base'] +            formats.extend([{ +                'format_id': 'rmtp', +                'url': base_url, +                'play_path': n.attrib['src'], +                'ext': 'flv', +                'preference': -100, +                'format_note': 'Seems to fail at example stream', +            } for n in smil_doc.findall('./body/video')]) +        else: +            formats.append({'url': smil_url}) -        smil_doc = self._download_xml( -            smil_url, video_id, note='Downloading SMIL metadata') -        base_url = smil_doc.find('./head/meta').attrib['base'] -        formats.extend([{ -            'format_id': 'rmtp', -            'url': base_url, -            'play_path': n.attrib['src'], -            'ext': 'flv', -            'preference': -100, -            'format_note': 'Seems to fail at example stream', -        } for n in smil_doc.findall('./body/video')])          self._sort_formats(formats)          return { @@ -71,7 +90,7 @@ class SportDeutschlandIE(InfoExtractor):              'description': asset.get('teaser'),              'categories': categories,              'view_count': asset.get('views'), -            'rtmp_live': asset['live'], +            'rtmp_live': asset.get('live'),              'timestamp': parse_iso8601(asset.get('date')),          } | 
