]>
Raphaƫl G. Git Repositories - youtubedl/blob - youtube_dl/extractor/promptfile.py
2 from __future__
import unicode_literals
6 from .common
import InfoExtractor
14 class PromptFileIE(InfoExtractor
):
15 _VALID_URL
= r
'https?://(?:www\.)?promptfile\.com/l/(?P<id>[0-9A-Z\-]+)'
17 'url': 'http://www.promptfile.com/l/86D1CE8462-576CAAE416',
18 'md5': '5a7e285a26e0d66d9a263fae91bc92ce',
20 'id': '86D1CE8462-576CAAE416',
22 'title': 'oceans.mp4',
23 'thumbnail': 're:^https?://.*\.jpg$',
27 def _real_extract(self
, url
):
28 video_id
= self
._match
_id
(url
)
29 webpage
= self
._download
_webpage
(url
, video_id
)
31 if re
.search(r
'<div.+id="not_found_msg".+>(?!We are).+</div>[^-]', webpage
) is not None:
32 raise ExtractorError('Video %s does not exist' % video_id
,
35 chash
= self
._search
_regex
(
36 r
'val\("([^"]*)"\s*\+\s*\$\("#chash"\)', webpage
, 'chash')
37 fields
= self
._hidden
_inputs
(webpage
)
38 keys
= list(fields
.keys())
39 chash_key
= keys
[0] if len(keys
) == 1 else next(
40 key
for key
in keys
if key
.startswith('cha'))
41 fields
[chash_key
] = chash
+ fields
[chash_key
]
43 webpage
= self
._download
_webpage
(
44 url
, video_id
, 'Downloading video page',
45 data
=urlencode_postdata(fields
),
46 headers
={'Content-type': 'application/x-www-form-urlencoded'})
48 video_url
= self
._search
_regex
(
49 (r
'<a[^>]+href=(["\'])(?P
<url
>(?
:(?
!\
1).)+)\
1[^
>]*>\s
*Download File
',
50 r'<a
[^
>]+href
=(["\'])(?P<url>https?://(?:www\.)?promptfile\.com/file/(?:(?!\1).)+)\1'),
51 webpage, 'video url', group='url')
52 title = self._html_search_regex(
53 r'<span.+title="([^
"]+)">', webpage, 'title
')
54 thumbnail = self._html_search_regex(
55 r'<div
id="player_overlay">.*button
>.*?
<img src
="([^"]+)"',
56 webpage, 'thumbnail', fatal=False, flags=re.DOTALL)
61 'ext': determine_ext(title),
63 self._sort_formats(formats)
68 'thumbnail': thumbnail,