]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/dailymotion.py
5fd2221a798403ff4832bf6992b8724bdf74f964
   4 from .common 
import InfoExtractor
 
  11 class DailymotionIE(InfoExtractor
): 
  12     """Information Extractor for Dailymotion""" 
  14     _VALID_URL 
= r
'(?i)(?:https?://)?(?:www\.)?dailymotion\.[a-z]{2,3}/video/([^/]+)' 
  15     IE_NAME 
= u
'dailymotion' 
  17         u
'url': u
'http://www.dailymotion.com/video/x33vw9_tutoriel-de-youtubeur-dl-des-video_tech', 
  18         u
'file': u
'x33vw9.mp4', 
  19         u
'md5': u
'392c4b85a60a90dc4792da41ce3144eb', 
  21             u
"uploader": u
"Alex and Van .",  
  22             u
"title": u
"Tutoriel de Youtubeur\"DL DES VIDEO DE YOUTUBE\"" 
  26     def _real_extract(self
, url
): 
  27         # Extract id and simplified title from URL 
  28         mobj 
= re
.match(self
._VALID
_URL
, url
) 
  30         video_id 
= mobj
.group(1).split('_')[0].split('?')[0] 
  32         video_extension 
= 'mp4' 
  34         # Retrieve video webpage to extract further information 
  35         request 
= compat_urllib_request
.Request(url
) 
  36         request
.add_header('Cookie', 'family_filter=off') 
  37         webpage 
= self
._download
_webpage
(request
, video_id
) 
  39         # Extract URL, uploader and title from webpage 
  40         self
.report_extraction(video_id
) 
  42         video_title 
= self
._html
_search
_regex
(r
'<meta property="og:title" content="(.*?)" />', 
  45         video_uploader 
= self
._search
_regex
([r
'(?im)<span class="owner[^\"]+?">[^<]+?<a [^>]+?>([^<]+?)</a>', 
  46                                              # Looking for official user 
  47                                              r
'<(?:span|a) .*?rel="author".*?>([^<]+?)</'], 
  48                                             webpage
, 'video uploader') 
  50         video_upload_date 
= None 
  51         mobj 
= re
.search(r
'<div class="[^"]*uploaded_cont[^"]*" title="[^"]*">([0-9]{2})-([0-9]{2})-([0-9]{4})</div>', webpage
) 
  53             video_upload_date 
= mobj
.group(3) + mobj
.group(2) + mobj
.group(1) 
  55         embed_url 
= 'http://www.dailymotion.com/embed/video/%s' % video_id
 
  56         embed_page 
= self
._download
_webpage
(embed_url
, video_id
, 
  57                                             u
'Downloading embed page') 
  58         info 
= self
._search
_regex
(r
'var info = ({.*?}),', embed_page
, 'video info') 
  59         info 
= json
.loads(info
) 
  61         # TODO: support choosing qualities 
  63         for key 
in ['stream_h264_hd1080_url','stream_h264_hd_url', 
  64                     'stream_h264_hq_url','stream_h264_url', 
  65                     'stream_h264_ld_url']: 
  66             if info
.get(key
):#key in info and info[key]: 
  68                 self
.to_screen(u
'Using %s' % key
) 
  71             raise ExtractorError(u
'Unable to extract video URL') 
  72         video_url 
= info
[max_quality
] 
  77             'uploader': video_uploader
, 
  78             'upload_date':  video_upload_date
, 
  80             'ext':      video_extension
, 
  81             'thumbnail': info
['thumbnail_url']