youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

vesti.py (4383B)


      1 # coding: utf-8
      2 from __future__ import unicode_literals
      3 
      4 import re
      5 
      6 from .common import InfoExtractor
      7 from ..utils import ExtractorError
      8 from .rutv import RUTVIE
      9 
     10 
     11 class VestiIE(InfoExtractor):
     12     IE_DESC = 'Вести.Ru'
     13     _VALID_URL = r'https?://(?:.+?\.)?vesti\.ru/(?P<id>.+)'
     14 
     15     _TESTS = [
     16         {
     17             'url': 'http://www.vesti.ru/videos?vid=575582&cid=1',
     18             'info_dict': {
     19                 'id': '765035',
     20                 'ext': 'mp4',
     21                 'title': 'Вести.net: биткоины в России не являются законными',
     22                 'description': 'md5:d4bb3859dc1177b28a94c5014c35a36b',
     23                 'duration': 302,
     24             },
     25             'params': {
     26                 # m3u8 download
     27                 'skip_download': True,
     28             },
     29         },
     30         {
     31             'url': 'http://www.vesti.ru/doc.html?id=1349233',
     32             'info_dict': {
     33                 'id': '773865',
     34                 'ext': 'mp4',
     35                 'title': 'Участники митинга штурмуют Донецкую областную администрацию',
     36                 'description': 'md5:1a160e98b3195379b4c849f2f4958009',
     37                 'duration': 210,
     38             },
     39             'params': {
     40                 # m3u8 download
     41                 'skip_download': True,
     42             },
     43         },
     44         {
     45             'url': 'http://www.vesti.ru/only_video.html?vid=576180',
     46             'info_dict': {
     47                 'id': '766048',
     48                 'ext': 'mp4',
     49                 'title': 'США заморозило, Британию затопило',
     50                 'description': 'md5:f0ed0695ec05aed27c56a70a58dc4cc1',
     51                 'duration': 87,
     52             },
     53             'params': {
     54                 # m3u8 download
     55                 'skip_download': True,
     56             },
     57         },
     58         {
     59             'url': 'http://hitech.vesti.ru/news/view/id/4000',
     60             'info_dict': {
     61                 'id': '766888',
     62                 'ext': 'mp4',
     63                 'title': 'Вести.net: интернет-гиганты начали перетягивание программных "одеял"',
     64                 'description': 'md5:65ddd47f9830c4f42ed6475f8730c995',
     65                 'duration': 279,
     66             },
     67             'params': {
     68                 # m3u8 download
     69                 'skip_download': True,
     70             },
     71         },
     72         {
     73             'url': 'http://sochi2014.vesti.ru/video/index/video_id/766403',
     74             'info_dict': {
     75                 'id': '766403',
     76                 'ext': 'mp4',
     77                 'title': 'XXII зимние Олимпийские игры. Российские хоккеисты стартовали на Олимпиаде с победы',
     78                 'description': 'md5:55805dfd35763a890ff50fa9e35e31b3',
     79                 'duration': 271,
     80             },
     81             'params': {
     82                 # m3u8 download
     83                 'skip_download': True,
     84             },
     85             'skip': 'Blocked outside Russia',
     86         },
     87         {
     88             'url': 'http://sochi2014.vesti.ru/live/play/live_id/301',
     89             'info_dict': {
     90                 'id': '51499',
     91                 'ext': 'flv',
     92                 'title': 'Сочи-2014. Биатлон. Индивидуальная гонка. Мужчины ',
     93                 'description': 'md5:9e0ed5c9d2fa1efbfdfed90c9a6d179c',
     94             },
     95             'params': {
     96                 # rtmp download
     97                 'skip_download': True,
     98             },
     99             'skip': 'Translation has finished'
    100         },
    101     ]
    102 
    103     def _real_extract(self, url):
    104         mobj = re.match(self._VALID_URL, url)
    105         video_id = mobj.group('id')
    106 
    107         page = self._download_webpage(url, video_id, 'Downloading page')
    108 
    109         mobj = re.search(
    110             r'<meta[^>]+?property="og:video"[^>]+?content="http://www\.vesti\.ru/i/flvplayer_videoHost\.swf\?vid=(?P<id>\d+)',
    111             page)
    112         if mobj:
    113             video_id = mobj.group('id')
    114             page = self._download_webpage('http://www.vesti.ru/only_video.html?vid=%s' % video_id, video_id,
    115                                           'Downloading video page')
    116 
    117         rutv_url = RUTVIE._extract_url(page)
    118         if rutv_url:
    119             return self.url_result(rutv_url, 'RUTV')
    120 
    121         raise ExtractorError('No video found', expected=True)