]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/laola1tv.py
1 # -*- coding: utf-8 -*-
2 from __future__
import unicode_literals
7 from .common
import InfoExtractor
14 class Laola1TvIE(InfoExtractor
):
15 _VALID_URL
= r
'https?://(?:www\.)?laola1\.tv/(?P<lang>[a-z]+)-(?P<portal>[a-z]+)/.*?/(?P<id>[0-9]+)\.html'
17 'url': 'http://www.laola1.tv/de-de/video/straubing-tigers-koelner-haie/227883.html',
21 'title': 'Straubing Tigers - Kölner Haie',
22 'categories': ['Eishockey'],
26 'skip_download': True,
30 def _real_extract(self
, url
):
31 mobj
= re
.match(self
._VALID
_URL
, url
)
32 video_id
= mobj
.group('id')
33 lang
= mobj
.group('lang')
34 portal
= mobj
.group('portal')
36 webpage
= self
._download
_webpage
(url
, video_id
)
37 iframe_url
= self
._search
_regex
(
38 r
'<iframe[^>]*?class="main_tv_player"[^>]*?src="([^"]+)"',
39 webpage
, 'iframe URL')
41 iframe
= self
._download
_webpage
(
42 iframe_url
, video_id
, note
='Downloading iframe')
43 flashvars_m
= re
.findall(
44 r
'flashvars\.([_a-zA-Z0-9]+)\s*=\s*"([^"]*)";', iframe
)
45 flashvars
= dict((m
[0], m
[1]) for m
in flashvars_m
)
47 partner_id
= self
._search
_regex
(
48 r
'partnerid\s*:\s*"([^"]+)"', iframe
, 'partner id')
50 xml_url
= ('http://www.laola1.tv/server/hd_video.php?' +
51 'play=%s&partner=%s&portal=%s&v5ident=&lang=%s' % (
52 video_id
, partner_id
, portal
, lang
))
53 hd_doc
= self
._download
_xml
(xml_url
, video_id
)
55 title
= xpath_text(hd_doc
, './/video/title', fatal
=True)
56 flash_url
= xpath_text(hd_doc
, './/video/url', fatal
=True)
57 uploader
= xpath_text(hd_doc
, './/video/meta_organistation')
58 is_live
= xpath_text(hd_doc
, './/video/islive') == 'true'
60 categories
= xpath_text(hd_doc
, './/video/meta_sports')
62 categories
= categories
.split(',')
64 ident
= random
.randint(10000000, 99999999)
65 token_url
= '%s&ident=%s&klub=0&unikey=0×tamp=%s&auth=%s' % (
66 flash_url
, ident
, flashvars
['timestamp'], flashvars
['auth'])
68 token_doc
= self
._download
_xml
(
69 token_url
, video_id
, note
='Downloading token')
70 token_attrib
= token_doc
.find('.//token').attrib
71 if token_attrib
.get('auth') in ('blocked', 'restricted'):
73 'Token error: %s' % token_attrib
.get('comment'), expected
=True)
75 video_url
= '%s?hdnea=%s&hdcore=3.2.0' % (
76 token_attrib
['url'], token_attrib
['auth'])
84 'categories': categories
,