]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/ard.py
2 from __future__
import unicode_literals
6 from . common
import InfoExtractor
13 class ARDIE ( InfoExtractor
):
14 _VALID_URL
= r
'^https?://(?:(?:www\.)?ardmediathek\.de|mediathek\.daserste\.de)/(?:.*/)(?P<video_id>[^/\?]+)(?:\?.*)?'
17 'url' : 'http://www.ardmediathek.de/das-erste/guenther-jauch/edward-snowden-im-interview-held-oder-verraeter?documentId=19288786' ,
18 'file' : '19288786.mp4' ,
19 'md5' : '515bf47ce209fb3f5a61b7aad364634c' ,
21 'title' : 'Edward Snowden im Interview - Held oder Verräter?' ,
22 'description' : 'Edward Snowden hat alles aufs Spiel gesetzt, um die weltweite \xdc berwachung durch die Geheimdienste zu enttarnen. Nun stellt sich der ehemalige NSA-Mitarbeiter erstmals weltweit in einem TV-Interview den Fragen eines NDR-Journalisten. Die Sendung vom Sonntagabend.' ,
23 'thumbnail' : 'http://www.ardmediathek.de/ard/servlet/contentblob/19/28/87/90/19288790/bild/2250037' ,
25 'skip' : 'Blocked outside of Germany' ,
28 def _real_extract ( self
, url
):
29 # determine video id from url
30 m
= re
. match ( self
._ VALID
_U RL
, url
)
32 numid
= re
. search ( r
'documentId=([0-9]+)' , url
)
34 video_id
= numid
. group ( 1 )
36 video_id
= m
. group ( 'video_id' )
38 webpage
= self
._ download
_ webpage
( url
, video_id
)
40 title
= self
._ html
_ search
_ regex
(
41 [ r
'<h1(?:\s+class="boxTopHeadline")?>(.*?)</h1>' ,
42 r
'<meta name="dcterms.title" content="(.*?)"/>' ,
43 r
'<h4 class="headline">(.*?)</h4>' ],
45 description
= self
._ html
_ search
_ meta
(
46 'dcterms.abstract' , webpage
, 'description' )
47 thumbnail
= self
._ og
_ search
_ thumbnail
( webpage
)
50 media_info
= self
._ download
_ json
(
51 'http://www.ardmediathek.de/play/media/ %s ' % video_id
, video_id
)
52 # The second element of the _mediaArray contains the standard http urls
53 streams
= media_info
[ '_mediaArray' ][ 1 ][ '_mediaStreamArray' ]
55 if '"fsk"' in webpage
:
56 raise ExtractorError ( 'This video is only available after 20:00' )
61 if type ( s
[ '_stream' ]) == list :
62 for index
, url
in enumerate ( s
[ '_stream' ][::- 1 ]):
63 quality
= s
[ '_quality' ] + index
67 'format_id' : ' %s-%s ' % ( determine_ext ( url
), quality
)
72 'quality' : s
[ '_quality' ],
76 format
[ 'format_id' ] = ' %s-%s ' % (
77 determine_ext ( format
[ 'url' ]), format
[ 'quality' ])
79 formats
. append ( format
)
81 self
._ sort
_ formats
( formats
)
86 'description' : description
,
88 'thumbnail' : thumbnail
,