]> git.bitcoin.ninja Git - youtube-dl/blob - youtube_dl/extractor/extremetube.py
[utils] Correct octal/hexadecimal number detection in js_to_json
[youtube-dl] / youtube_dl / extractor / extremetube.py
1 from __future__ import unicode_literals
2
3 from ..utils import str_to_int
4 from .keezmovies import KeezMoviesIE
5
6
7 class ExtremeTubeIE(KeezMoviesIE):
8     _VALID_URL = r'https?://(?:www\.)?extremetube\.com/(?:[^/]+/)?video/(?P<id>[^/#?&]+)'
9     _TESTS = [{
10         'url': 'http://www.extremetube.com/video/music-video-14-british-euro-brit-european-cumshots-swallow-652431',
11         'md5': '1fb9228f5e3332ec8c057d6ac36f33e0',
12         'info_dict': {
13             'id': 'music-video-14-british-euro-brit-european-cumshots-swallow-652431',
14             'ext': 'mp4',
15             'title': 'Music Video 14 british euro brit european cumshots swallow',
16             'uploader': 'unknown',
17             'view_count': int,
18             'age_limit': 18,
19         }
20     }, {
21         'url': 'http://www.extremetube.com/gay/video/abcde-1234',
22         'only_matching': True,
23     }, {
24         'url': 'http://www.extremetube.com/video/latina-slut-fucked-by-fat-black-dick',
25         'only_matching': True,
26     }, {
27         'url': 'http://www.extremetube.com/video/652431',
28         'only_matching': True,
29     }]
30
31     def _real_extract(self, url):
32         webpage, info = self._extract_info(url)
33
34         if not info['title']:
35             info['title'] = self._search_regex(
36                 r'<h1[^>]+title="([^"]+)"[^>]*>', webpage, 'title')
37
38         uploader = self._html_search_regex(
39             r'Uploaded by:\s*</strong>\s*(.+?)\s*</div>',
40             webpage, 'uploader', fatal=False)
41         view_count = str_to_int(self._search_regex(
42             r'Views:\s*</strong>\s*<span>([\d,\.]+)</span>',
43             webpage, 'view count', fatal=False))
44
45         info.update({
46             'uploader': uploader,
47             'view_count': view_count,
48         })
49
50         return info