mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	Add new --default-search option (#2193)
This commit is contained in:
		| @@ -152,6 +152,8 @@ class YoutubeDL(object): | |||||||
|                        support, using fridibi |                        support, using fridibi | ||||||
|     debug_printtraffic:Print out sent and received HTTP traffic |     debug_printtraffic:Print out sent and received HTTP traffic | ||||||
|     include_ads:       Download ads as well |     include_ads:       Download ads as well | ||||||
|  |     default_search:    Prepend this string if an input url is not valid. | ||||||
|  |                        'auto' for elaborate guessing | ||||||
|  |  | ||||||
|     The following parameters are not used by YoutubeDL itself, they are used by |     The following parameters are not used by YoutubeDL itself, they are used by | ||||||
|     the FileDownloader: |     the FileDownloader: | ||||||
|   | |||||||
| @@ -199,7 +199,9 @@ def parseOpts(overrideArguments=None): | |||||||
|     general.add_option( |     general.add_option( | ||||||
|         '--bidi-workaround', dest='bidi_workaround', action='store_true', |         '--bidi-workaround', dest='bidi_workaround', action='store_true', | ||||||
|         help=u'Work around terminals that lack bidirectional text support. Requires bidiv or fribidi executable in PATH') |         help=u'Work around terminals that lack bidirectional text support. Requires bidiv or fribidi executable in PATH') | ||||||
|  |     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". By default (with value "auto") youtube-dl guesses.') | ||||||
|  |  | ||||||
|     selection.add_option( |     selection.add_option( | ||||||
|         '--playlist-start', |         '--playlist-start', | ||||||
| @@ -619,6 +621,8 @@ 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', None) and ':' not in opts.default_search: | ||||||
|  |         parser.error(u'--default-search invalid; did you forget a colon (:) at the end?') | ||||||
|  |  | ||||||
|     # --all-sub automatically sets --write-sub if --write-auto-sub is not given |     # --all-sub automatically sets --write-sub if --write-auto-sub is not given | ||||||
|     # this was the old behaviour if only --all-sub was given. |     # this was the old behaviour if only --all-sub was given. | ||||||
| @@ -720,6 +724,7 @@ def _real_main(argv=None): | |||||||
|         'debug_printtraffic': opts.debug_printtraffic, |         'debug_printtraffic': opts.debug_printtraffic, | ||||||
|         'prefer_ffmpeg': opts.prefer_ffmpeg, |         'prefer_ffmpeg': opts.prefer_ffmpeg, | ||||||
|         'include_ads': opts.include_ads, |         'include_ads': opts.include_ads, | ||||||
|  |         'default_search': opts.default_search, | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     with YoutubeDL(ydl_opts) as ydl: |     with YoutubeDL(ydl_opts) as ydl: | ||||||
|   | |||||||
| @@ -162,8 +162,19 @@ class GenericIE(InfoExtractor): | |||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
|         parsed_url = compat_urlparse.urlparse(url) |         parsed_url = compat_urlparse.urlparse(url) | ||||||
|         if not parsed_url.scheme: |         if not parsed_url.scheme: | ||||||
|             self._downloader.report_warning('The url doesn\'t specify the protocol, trying with http') |             default_search = self._downloader.params.get('default_search') | ||||||
|             return self.url_result('http://' + url) |             if default_search is None: | ||||||
|  |                 default_search = 'auto' | ||||||
|  |  | ||||||
|  |             if default_search == 'auto': | ||||||
|  |                 if '/' in url: | ||||||
|  |                     self._downloader.report_warning('The url doesn\'t specify the protocol, trying with http') | ||||||
|  |                     return self.url_result('http://' + url) | ||||||
|  |                 else: | ||||||
|  |                     return self.url_result('ytsearch:' + url) | ||||||
|  |             else: | ||||||
|  |                 assert ':' in default_search | ||||||
|  |                 return self.url_result(default_search + url) | ||||||
|         video_id = os.path.splitext(url.split('/')[-1])[0] |         video_id = os.path.splitext(url.split('/')[-1])[0] | ||||||
|  |  | ||||||
|         self.to_screen('%s: Requesting header' % video_id) |         self.to_screen('%s: Requesting header' % video_id) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister