]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/ndr.py
2 from __future__
import unicode_literals
6 from .common
import InfoExtractor
7 from ..utils
import ExtractorError
10 class NDRIE(InfoExtractor
):
12 IE_DESC
= 'NDR.de - Mediathek'
13 _VALID_URL
= r
'https?://www\.ndr\.de/.+?(?P<id>\d+)\.html'
17 'url': 'http://www.ndr.de/fernsehen/sendungen/markt/markt7959.html',
18 'md5': 'e7a6079ca39d3568f4996cb858dd6708',
23 'title': 'Markt - die ganze Sendung',
24 'description': 'md5:af9179cf07f67c5c12dc6d9997e05725',
29 'url': 'http://www.ndr.de/info/audio51535.html',
30 'md5': 'bb3cd38e24fbcc866d13b50ca59307b8',
35 'title': 'La Valette entgeht der Hinrichtung',
36 'description': 'md5:22f9541913a40fe50091d5cdd7c9f536',
42 def _real_extract(self
, url
):
43 mobj
= re
.match(self
._VALID
_URL
, url
)
44 video_id
= mobj
.group('id')
46 page
= self
._download
_webpage
(url
, video_id
, 'Downloading page')
48 title
= self
._og
_search
_title
(page
)
49 description
= self
._og
_search
_description
(page
)
52 r
'<div class="duration"><span class="min">(?P<minutes>\d+)</span>:<span class="sec">(?P<seconds>\d+)</span></div>',
54 duration
= int(mobj
.group('minutes')) * 60 + int(mobj
.group('seconds')) if mobj
else None
58 mp3_url
= re
.search(r
'''{src:'(?P<audio>[^']+)', type:"audio/mp3"},''', page
)
61 'url': mp3_url
.group('audio'),
67 video_url
= re
.search(r
'''3: {src:'(?P<video>.+?)\.hi\.mp4', type:"video/mp4"},''', page
)
69 thumbnail
= self
._html
_search
_regex
(r
'(?m)title: "NDR PLAYER",\s*poster: "([^"]+)",',
70 page
, 'thumbnail', fatal
=False)
72 thumbnail
= 'http://www.ndr.de' + thumbnail
73 for format_id
in ['lo', 'hi', 'hq']:
75 'url': '%s.%s.mp4' % (video_url
.group('video'), format_id
),
76 'format_id': format_id
,
80 raise ExtractorError('No media links available for %s' % video_id
)
85 'description': description
,
86 'thumbnail': thumbnail
,