youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

tonline.py (2093B)


      1 # coding: utf-8
      2 from __future__ import unicode_literals
      3 
      4 from .common import InfoExtractor
      5 from ..utils import int_or_none
      6 
      7 
      8 class TOnlineIE(InfoExtractor):
      9     IE_NAME = 't-online.de'
     10     _VALID_URL = r'https?://(?:www\.)?t-online\.de/tv/(?:[^/]+/)*id_(?P<id>\d+)'
     11     _TEST = {
     12         'url': 'http://www.t-online.de/tv/sport/fussball/id_79166266/drittes-remis-zidane-es-muss-etwas-passieren-.html',
     13         'md5': '7d94dbdde5f9d77c5accc73c39632c29',
     14         'info_dict': {
     15             'id': '79166266',
     16             'ext': 'mp4',
     17             'title': 'Drittes Remis! Zidane: "Es muss etwas passieren"',
     18             'description': 'Es läuft nicht rund bei Real Madrid. Das 1:1 gegen den SD Eibar war das dritte Unentschieden in Folge in der Liga.',
     19         }
     20     }
     21 
     22     def _real_extract(self, url):
     23         video_id = self._match_id(url)
     24         video_data = self._download_json(
     25             'http://www.t-online.de/tv/id_%s/tid_json_video' % video_id, video_id)
     26         title = video_data['subtitle']
     27 
     28         formats = []
     29         for asset in video_data.get('assets', []):
     30             asset_source = asset.get('source') or asset.get('source2')
     31             if not asset_source:
     32                 continue
     33             formats_id = []
     34             for field_key in ('type', 'profile'):
     35                 field_value = asset.get(field_key)
     36                 if field_value:
     37                     formats_id.append(field_value)
     38             formats.append({
     39                 'format_id': '-'.join(formats_id),
     40                 'url': asset_source,
     41             })
     42 
     43         thumbnails = []
     44         for image in video_data.get('images', []):
     45             image_source = image.get('source')
     46             if not image_source:
     47                 continue
     48             thumbnails.append({
     49                 'url': image_source,
     50             })
     51 
     52         return {
     53             'id': video_id,
     54             'title': title,
     55             'description': video_data.get('description'),
     56             'duration': int_or_none(video_data.get('duration')),
     57             'thumbnails': thumbnails,
     58             'formats': formats,
     59         }