mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:30:46 +00:00 
			
		
		
		
	[generic] Add --default-search fixup_error
This restores the ability to enter URLs without a scheme (and default to http), but still fail if the input is a search term.
This commit is contained in:
		@@ -258,7 +258,7 @@ def parseOpts(overrideArguments=None):
 | 
			
		||||
    general.add_option(
 | 
			
		||||
        '--default-search',
 | 
			
		||||
        dest='default_search', metavar='PREFIX',
 | 
			
		||||
        help='Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for  youtube-dl "large apple". Use the value "auto" to let youtube-dl guess. The default value "error" just throws an error.')
 | 
			
		||||
        help='Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for  youtube-dl "large apple". Use the value "auto" to let youtube-dl guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching.')
 | 
			
		||||
    general.add_option(
 | 
			
		||||
        '--ignore-config',
 | 
			
		||||
        action='store_true',
 | 
			
		||||
@@ -709,7 +709,7 @@ def _real_main(argv=None):
 | 
			
		||||
        date = DateRange.day(opts.date)
 | 
			
		||||
    else:
 | 
			
		||||
        date = DateRange(opts.dateafter, opts.datebefore)
 | 
			
		||||
    if opts.default_search not in ('auto', 'auto_warning', None) and ':' not in opts.default_search:
 | 
			
		||||
    if opts.default_search not in ('auto', 'auto_warning', 'error', 'fixup_error', None) and ':' not in opts.default_search:
 | 
			
		||||
        parser.error(u'--default-search invalid; did you forget a colon (:) at the end?')
 | 
			
		||||
 | 
			
		||||
    # Do not download videos when there are audio-only formats
 | 
			
		||||
 
 | 
			
		||||
@@ -383,13 +383,13 @@ class GenericIE(InfoExtractor):
 | 
			
		||||
        if not parsed_url.scheme:
 | 
			
		||||
            default_search = self._downloader.params.get('default_search')
 | 
			
		||||
            if default_search is None:
 | 
			
		||||
                default_search = 'error'
 | 
			
		||||
                default_search = 'fixup_error'
 | 
			
		||||
 | 
			
		||||
            if default_search in ('auto', 'auto_warning'):
 | 
			
		||||
            if default_search in ('auto', 'auto_warning', 'fixup_error'):
 | 
			
		||||
                if '/' in url:
 | 
			
		||||
                    self._downloader.report_warning('The url doesn\'t specify the protocol, trying with http')
 | 
			
		||||
                    return self.url_result('http://' + url)
 | 
			
		||||
                else:
 | 
			
		||||
                elif default_search != 'fixup_error':
 | 
			
		||||
                    if default_search == 'auto_warning':
 | 
			
		||||
                        if re.match(r'^(?:url|URL)$', url):
 | 
			
		||||
                            raise ExtractorError(
 | 
			
		||||
@@ -399,7 +399,8 @@ class GenericIE(InfoExtractor):
 | 
			
		||||
                            self._downloader.report_warning(
 | 
			
		||||
                                'Falling back to youtube search for  %s . Set --default-search "auto" to suppress this warning.' % url)
 | 
			
		||||
                    return self.url_result('ytsearch:' + url)
 | 
			
		||||
            elif default_search == 'error':
 | 
			
		||||
 | 
			
		||||
            if default_search in ('error', 'fixup_error'):
 | 
			
		||||
                raise ExtractorError(
 | 
			
		||||
                    ('%r is not a valid URL. '
 | 
			
		||||
                     'Set --default-search "ytsearch" (or run  youtube-dl "ytsearch:%s" ) to search YouTube'
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user