[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:
		
							parent
							
								
									c7b3209668
								
							
						
					
					
						commit
						1f7ccb9014
					
				@ -258,7 +258,7 @@ def parseOpts(overrideArguments=None):
 | 
				
			|||||||
    general.add_option(
 | 
					    general.add_option(
 | 
				
			||||||
        '--default-search',
 | 
					        '--default-search',
 | 
				
			||||||
        dest='default_search', metavar='PREFIX',
 | 
					        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(
 | 
					    general.add_option(
 | 
				
			||||||
        '--ignore-config',
 | 
					        '--ignore-config',
 | 
				
			||||||
        action='store_true',
 | 
					        action='store_true',
 | 
				
			||||||
@ -709,7 +709,7 @@ def _real_main(argv=None):
 | 
				
			|||||||
        date = DateRange.day(opts.date)
 | 
					        date = DateRange.day(opts.date)
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        date = DateRange(opts.dateafter, opts.datebefore)
 | 
					        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?')
 | 
					        parser.error(u'--default-search invalid; did you forget a colon (:) at the end?')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Do not download videos when there are audio-only formats
 | 
					    # Do not download videos when there are audio-only formats
 | 
				
			||||||
 | 
				
			|||||||
@ -383,13 +383,13 @@ class GenericIE(InfoExtractor):
 | 
				
			|||||||
        if not parsed_url.scheme:
 | 
					        if not parsed_url.scheme:
 | 
				
			||||||
            default_search = self._downloader.params.get('default_search')
 | 
					            default_search = self._downloader.params.get('default_search')
 | 
				
			||||||
            if default_search is None:
 | 
					            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:
 | 
					                if '/' in url:
 | 
				
			||||||
                    self._downloader.report_warning('The url doesn\'t specify the protocol, trying with http')
 | 
					                    self._downloader.report_warning('The url doesn\'t specify the protocol, trying with http')
 | 
				
			||||||
                    return self.url_result('http://' + url)
 | 
					                    return self.url_result('http://' + url)
 | 
				
			||||||
                else:
 | 
					                elif default_search != 'fixup_error':
 | 
				
			||||||
                    if default_search == 'auto_warning':
 | 
					                    if default_search == 'auto_warning':
 | 
				
			||||||
                        if re.match(r'^(?:url|URL)$', url):
 | 
					                        if re.match(r'^(?:url|URL)$', url):
 | 
				
			||||||
                            raise ExtractorError(
 | 
					                            raise ExtractorError(
 | 
				
			||||||
@ -399,7 +399,8 @@ class GenericIE(InfoExtractor):
 | 
				
			|||||||
                            self._downloader.report_warning(
 | 
					                            self._downloader.report_warning(
 | 
				
			||||||
                                'Falling back to youtube search for  %s . Set --default-search "auto" to suppress this warning.' % url)
 | 
					                                'Falling back to youtube search for  %s . Set --default-search "auto" to suppress this warning.' % url)
 | 
				
			||||||
                    return self.url_result('ytsearch:' + url)
 | 
					                    return self.url_result('ytsearch:' + url)
 | 
				
			||||||
            elif default_search == 'error':
 | 
					
 | 
				
			||||||
 | 
					            if default_search in ('error', 'fixup_error'):
 | 
				
			||||||
                raise ExtractorError(
 | 
					                raise ExtractorError(
 | 
				
			||||||
                    ('%r is not a valid URL. '
 | 
					                    ('%r is not a valid URL. '
 | 
				
			||||||
                     'Set --default-search "ytsearch" (or run  youtube-dl "ytsearch:%s" ) to search YouTube'
 | 
					                     'Set --default-search "ytsearch" (or run  youtube-dl "ytsearch:%s" ) to search YouTube'
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user