]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/tubitv.py
   2 from __future__ 
import unicode_literals
 
   6 from .common 
import InfoExtractor
 
  15 class TubiTvIE(InfoExtractor
): 
  16     _VALID_URL 
= r
'https?://(?:www\.)?tubitv\.com/(?:video|movies|tv-shows)/(?P<id>[0-9]+)' 
  17     _LOGIN_URL 
= 'http://tubitv.com/login' 
  18     _NETRC_MACHINE 
= 'tubitv' 
  19     _GEO_COUNTRIES 
= ['US'] 
  21         'url': 'http://tubitv.com/video/283829/the_comedian_at_the_friday', 
  22         'md5': '43ac06be9326f41912dc64ccf7a80320', 
  26             'title': 'The Comedian at The Friday', 
  27             'description': 'A stand up comedian is forced to look at the decisions in his life while on a one week trip to the west coast.', 
  28             'uploader_id': 'bc168bee0d18dd1cb3b86c68706ab434', 
  31         'url': 'http://tubitv.com/tv-shows/321886/s01_e01_on_nom_stories', 
  32         'only_matching': True, 
  34         'url': 'http://tubitv.com/movies/383676/tracker', 
  35         'only_matching': True, 
  39         username
, password 
= self
._get
_login
_info
() 
  47         payload 
= urlencode_postdata(form_data
) 
  48         request 
= sanitized_Request(self
._LOGIN
_URL
, payload
) 
  49         request
.add_header('Content-Type', 'application/x-www-form-urlencoded') 
  50         login_page 
= self
._download
_webpage
( 
  51             request
, None, False, 'Wrong login info') 
  52         if not re
.search(r
'id="tubi-logout"', login_page
): 
  54                 'Login failed (invalid username/password)', expected
=True) 
  56     def _real_initialize(self
): 
  59     def _real_extract(self
, url
): 
  60         video_id 
= self
._match
_id
(url
) 
  61         video_data 
= self
._download
_json
( 
  62             'http://tubitv.com/oz/videos/%s/content' % video_id
, video_id
) 
  63         title 
= video_data
['title'] 
  65         formats 
= self
._extract
_m
3u8_formats
( 
  66             self
._proto
_relative
_url
(video_data
['url']), 
  67             video_id
, 'mp4', 'm3u8_native') 
  68         self
._sort
_formats
(formats
) 
  71         for thumbnail_url 
in video_data
.get('thumbnails', []): 
  75                 'url': self
._proto
_relative
_url
(thumbnail_url
), 
  79         for sub 
in video_data
.get('subtitles', []): 
  80             sub_url 
= sub
.get('url') 
  83             subtitles
.setdefault(sub
.get('lang', 'English'), []).append({ 
  84                 'url': self
._proto
_relative
_url
(sub_url
), 
  91             'subtitles': subtitles
, 
  92             'thumbnails': thumbnails
, 
  93             'description': video_data
.get('description'), 
  94             'duration': int_or_none(video_data
.get('duration')), 
  95             'uploader_id': video_data
.get('publisher_id'),