diff options
| author | Naglis Jonaitis <njonaitis@gmail.com> | 2015-02-23 20:45:36 +0200 | 
|---|---|---|
| committer | Naglis Jonaitis <njonaitis@gmail.com> | 2015-02-23 20:45:52 +0200 | 
| commit | 3037b91e05e68a4ab3420cbbdb23cfb0739011d3 (patch) | |
| tree | 80e033a46762d73f4749c138bf5af9a9e81a9511 | |
| parent | ffdf972b9115d6d8c86439bf0828e945823bdcf8 (diff) | |
[laola1tv] Improve extraction and update test case (#3742)
| -rw-r--r-- | youtube_dl/extractor/laola1tv.py | 47 | 
1 files changed, 31 insertions, 16 deletions
| diff --git a/youtube_dl/extractor/laola1tv.py b/youtube_dl/extractor/laola1tv.py index 2fd3b4699..135421406 100644 --- a/youtube_dl/extractor/laola1tv.py +++ b/youtube_dl/extractor/laola1tv.py @@ -1,23 +1,26 @@ +# -*- coding: utf-8 -*-  from __future__ import unicode_literals  import random  import re  from .common import InfoExtractor -from ..utils import ExtractorError +from ..utils import ( +    ExtractorError, +    xpath_text, +)  class Laola1TvIE(InfoExtractor):      _VALID_URL = r'https?://(?:www\.)?laola1\.tv/(?P<lang>[a-z]+)-(?P<portal>[a-z]+)/.*?/(?P<id>[0-9]+)\.html'      _TEST = { -        'url': 'http://www.laola1.tv/de-de/live/bwf-bitburger-open-grand-prix-gold-court-1/250019.html', +        'url': 'http://www.laola1.tv/de-de/video/straubing-tigers-koelner-haie/227883.html',          'info_dict': { -            'id': '250019', +            'id': '227883',              'ext': 'mp4', -            'title': 'Bitburger Open Grand Prix Gold - Court 1', -            'categories': ['Badminton'], -            'uploader': 'BWF - Badminton World Federation', -            'is_live': True, +            'title': 'Straubing Tigers - Kölner Haie', +            'categories': ['Eishockey'], +            'is_live': False,          },          'params': {              'skip_download': True, @@ -43,15 +46,26 @@ class Laola1TvIE(InfoExtractor):              r'flashvars\.([_a-zA-Z0-9]+)\s*=\s*"([^"]*)";', iframe)          flashvars = dict((m[0], m[1]) for m in flashvars_m) +        partner_id = self._search_regex( +            'partnerid\s*:\s*"([^"]+)"', iframe, 'partner id') +          xml_url = ('http://www.laola1.tv/server/hd_video.php?' + -                   'play=%s&partner=1&portal=%s&v5ident=&lang=%s' % ( -                       video_id, portal, lang)) +                   'play=%s&partner=%s&portal=%s&v5ident=&lang=%s' % ( +                       video_id, partner_id, portal, lang))          hd_doc = self._download_xml(xml_url, video_id) -        title = hd_doc.find('.//video/title').text -        flash_url = hd_doc.find('.//video/url').text -        categories = hd_doc.find('.//video/meta_sports').text.split(',') -        uploader = hd_doc.find('.//video/meta_organistation').text +        title = xpath_text(hd_doc, './/video/title', fatal=True) +        flash_url = xpath_text(hd_doc, './/video/url', fatal=True) +        uploader = xpath_text(hd_doc, './/video/meta_organistation') + +        is_live = xpath_text(hd_doc, './/video/islive') == 'true' +        if is_live: +            raise ExtractorError( +                'Live streams are not supported by the f4m downloader.') + +        categories = xpath_text(hd_doc, './/video/meta_sports') +        if categories: +            categories = categories.split(',')          ident = random.randint(10000000, 99999999)          token_url = '%s&ident=%s&klub=0&unikey=0×tamp=%s&auth=%s' % ( @@ -60,15 +74,16 @@ class Laola1TvIE(InfoExtractor):          token_doc = self._download_xml(              token_url, video_id, note='Downloading token')          token_attrib = token_doc.find('.//token').attrib -        if token_attrib.get('auth') == 'blocked': -            raise ExtractorError('Token error: ' % token_attrib.get('comment')) +        if token_attrib.get('auth') in ('blocked', 'restricted'): +            raise ExtractorError( +                'Token error: %s' % token_attrib.get('comment'), expected=True)          video_url = '%s?hdnea=%s&hdcore=3.2.0' % (              token_attrib['url'], token_attrib['auth'])          return {              'id': video_id, -            'is_live': True, +            'is_live': is_live,              'title': title,              'url': video_url,              'uploader': uploader, | 
