]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/tv4.py
2 from __future__
import unicode_literals
6 from . common
import InfoExtractor
13 class TV4IE ( InfoExtractor
):
14 IE_DESC
= 'tv4.se and tv4play.se'
15 _VALID_URL
= r
'''(?x)https?://(?:www\.)?
17 tv4\.se/(?:[^/]+)/klipp/(?:.*)-|
20 (?:program|barn)/(?:[^/]+/|(?:[^\?]+)\?video_id=)|
26 _GEO_COUNTRIES
= [ 'SE' ]
29 'url' : 'http://www.tv4.se/kalla-fakta/klipp/kalla-fakta-5-english-subtitles-2491650' ,
30 'md5' : 'cb837212f342d77cec06e6dad190e96d' ,
34 'title' : 'Kalla Fakta 5 (english subtitles)' ,
35 'thumbnail' : r
're:^https?://.*\.jpg$' ,
37 'upload_date' : '20131125' ,
41 'url' : 'http://www.tv4play.se/iframe/video/3054113' ,
42 'md5' : 'cb837212f342d77cec06e6dad190e96d' ,
46 'title' : 'Så här jobbar ficktjuvarna - se avslöjande bilder' ,
47 'thumbnail' : r
're:^https?://.*\.jpg$' ,
48 'description' : 'Unika bilder avslöjar hur turisternas fickor vittjas mitt på Stockholms central. Två experter på ficktjuvarna avslöjar knepen du ska se upp för.' ,
50 'upload_date' : '20150130' ,
54 'url' : 'http://www.tv4play.se/sport/3060959' ,
55 'only_matching' : True ,
58 'url' : 'http://www.tv4play.se/film/2378136' ,
59 'only_matching' : True ,
62 'url' : 'http://www.tv4play.se/barn/looney-tunes?video_id=3062412' ,
63 'only_matching' : True ,
66 'url' : 'http://www.tv4play.se/program/farang/3922081' ,
67 'only_matching' : True ,
71 def _real_extract ( self
, url
):
72 video_id
= self
._ match
_ id
( url
)
74 info
= self
._ download
_ json
(
75 'http://www.tv4play.se/player/assets/ %s .json' % video_id
,
76 video_id
, 'Downloading video info JSON' )
80 manifest_url
= self
._ download
_ json
(
81 'https://playback-api.b17g.net/media/' + video_id
,
86 })[ 'playbackItem' ][ 'manifestUrl' ]
87 formats
= self
._ extract
_ m
3u8_ formats
(
88 manifest_url
, video_id
, 'mp4' ,
89 'm3u8_native' , m3u8_id
= 'hls' , fatal
= False )
90 formats
. extend ( self
._ extract
_ mpd
_ formats
(
91 manifest_url
. replace ( '.m3u8' , '.mpd' ),
92 video_id
, mpd_id
= 'dash' , fatal
= False ))
93 formats
. extend ( self
._ extract
_ f
4 m
_ formats
(
94 manifest_url
. replace ( '.m3u8' , '.f4m' ),
95 video_id
, f4m_id
= 'hds' , fatal
= False ))
96 formats
. extend ( self
._ extract
_ ism
_ formats
(
97 re
. sub ( r
'\.ism/.+?\.m3u8' , r
'.ism/Manifest' , manifest_url
),
98 video_id
, ism_id
= 'mss' , fatal
= False ))
100 if not formats
and info
. get ( 'is_geo_restricted' ):
101 self
. raise_geo_restricted ( countries
= self
._ GEO
_ COUNTRIES
)
103 self
._ sort
_ formats
( formats
)
109 # 'subtitles': subtitles,
110 'description' : info
. get ( 'description' ),
111 'timestamp' : parse_iso8601 ( info
. get ( 'broadcast_date_time' )),
112 'duration' : int_or_none ( info
. get ( 'duration' )),
113 'thumbnail' : info
. get ( 'image' ),
114 'is_live' : info
. get ( 'is_live' ) is True ,