diff options
| author | Philipp Hagemeister <phihag@phihag.de> | 2014-01-22 14:16:43 +0100 | 
|---|---|---|
| committer | Philipp Hagemeister <phihag@phihag.de> | 2014-01-22 14:16:43 +0100 | 
| commit | 04b4d394d92e325095fbf096f3f62bc4013fc785 (patch) | |
| tree | 933ad1fccd46aab59629d3a35e760326036e767e | |
| parent | 130f12985a9b44781680083d9bcc200a79e9395d (diff) | |
Add new --default-search option (#2193)
| -rw-r--r-- | youtube_dl/YoutubeDL.py | 2 | ||||
| -rw-r--r-- | youtube_dl/__init__.py | 7 | ||||
| -rw-r--r-- | youtube_dl/extractor/generic.py | 15 | 
3 files changed, 21 insertions, 3 deletions
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index dc8aa788c..c6430d367 100644 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -152,6 +152,8 @@ class YoutubeDL(object):                         support, using fridibi      debug_printtraffic:Print out sent and received HTTP traffic      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 FileDownloader: diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index a948b1d90..44047888d 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -199,7 +199,9 @@ def parseOpts(overrideArguments=None):      general.add_option(          '--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') - +    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(          '--playlist-start', @@ -619,6 +621,8 @@ def _real_main(argv=None):          date = DateRange.day(opts.date)      else:          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      # 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,          'prefer_ffmpeg': opts.prefer_ffmpeg,          'include_ads': opts.include_ads, +        'default_search': opts.default_search,      }      with YoutubeDL(ydl_opts) as ydl: diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 91536075d..e1933837d 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -162,8 +162,19 @@ class GenericIE(InfoExtractor):      def _real_extract(self, url):          parsed_url = compat_urlparse.urlparse(url)          if not parsed_url.scheme: -            self._downloader.report_warning('The url doesn\'t specify the protocol, trying with http') -            return self.url_result('http://' + url) +            default_search = self._downloader.params.get('default_search') +            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]          self.to_screen('%s: Requesting header' % video_id)  | 
