youtube-dl

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

odatv.py (1497B)


      1 # coding: utf-8
      2 from __future__ import unicode_literals
      3 
      4 from .common import InfoExtractor
      5 from ..utils import (
      6     ExtractorError,
      7     NO_DEFAULT,
      8     remove_start
      9 )
     10 
     11 
     12 class OdaTVIE(InfoExtractor):
     13     _VALID_URL = r'https?://(?:www\.)?odatv\.com/(?:mob|vid)_video\.php\?.*\bid=(?P<id>[^&]+)'
     14     _TESTS = [{
     15         'url': 'http://odatv.com/vid_video.php?id=8E388',
     16         'md5': 'dc61d052f205c9bf2da3545691485154',
     17         'info_dict': {
     18             'id': '8E388',
     19             'ext': 'mp4',
     20             'title': 'Artık Davutoğlu ile devam edemeyiz'
     21         }
     22     }, {
     23         # mobile URL
     24         'url': 'http://odatv.com/mob_video.php?id=8E388',
     25         'only_matching': True,
     26     }, {
     27         # no video
     28         'url': 'http://odatv.com/mob_video.php?id=8E900',
     29         'only_matching': True,
     30     }]
     31 
     32     def _real_extract(self, url):
     33         video_id = self._match_id(url)
     34         webpage = self._download_webpage(url, video_id)
     35 
     36         no_video = 'NO VIDEO!' in webpage
     37 
     38         video_url = self._search_regex(
     39             r'mp4\s*:\s*(["\'])(?P<url>http.+?)\1', webpage, 'video url',
     40             default=None if no_video else NO_DEFAULT, group='url')
     41 
     42         if no_video:
     43             raise ExtractorError('Video %s does not exist' % video_id, expected=True)
     44 
     45         return {
     46             'id': video_id,
     47             'url': video_url,
     48             'title': remove_start(self._og_search_title(webpage), 'Video: '),
     49             'thumbnail': self._og_search_thumbnail(webpage),
     50         }