]> jfr.im git - yt-dlp.git/blob - yt_dlp/extractor/commonmistakes.py
[ie/commonmistakes] Raise error on blob URLs (#9897)
[yt-dlp.git] / yt_dlp / extractor / commonmistakes.py
1 from .common import InfoExtractor
2 from ..utils import ExtractorError
3
4
5 class CommonMistakesIE(InfoExtractor):
6 IE_DESC = False # Do not list
7 _VALID_URL = r'(?:url|URL|yt-dlp)$'
8
9 _TESTS = [{
10 'url': 'url',
11 'only_matching': True,
12 }, {
13 'url': 'URL',
14 'only_matching': True,
15 }]
16
17 def _real_extract(self, url):
18 msg = (
19 'You\'ve asked yt-dlp to download the URL "%s". '
20 'That doesn\'t make any sense. '
21 'Simply remove the parameter in your command or configuration.'
22 ) % url
23 if not self.get_param('verbose'):
24 msg += ' Add -v to the command line to see what arguments and configuration yt-dlp has'
25 raise ExtractorError(msg, expected=True)
26
27
28 class UnicodeBOMIE(InfoExtractor):
29 IE_DESC = False
30 _VALID_URL = r'(?P<bom>\ufeff)(?P<id>.*)$'
31
32 _TESTS = [{
33 'url': '\ufeffhttp://www.youtube.com/watch?v=BaW_jenozKc',
34 'only_matching': True,
35 }]
36
37 def _real_extract(self, url):
38 real_url = self._match_id(url)
39 self.report_warning(
40 'Your URL starts with a Byte Order Mark (BOM). '
41 'Removing the BOM and looking for "%s" ...' % real_url)
42 return self.url_result(real_url)
43
44
45 class BlobIE(InfoExtractor):
46 IE_DESC = False
47 _VALID_URL = r'blob:'
48
49 _TESTS = [{
50 'url': 'blob:https://www.youtube.com/4eb3d090-a761-46e6-8083-c32016a36e3b',
51 'only_matching': True,
52 }]
53
54 def _real_extract(self, url):
55 raise ExtractorError(
56 'You\'ve asked yt-dlp to download a blob URL. '
57 'A blob URL exists only locally in your browser. '
58 'It is not possible for yt-dlp to access it.', expected=True)