123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- # SPDX-License-Identifier: AGPL-3.0-or-later
- """Processors for engine-type: ``online_url_search``
- """
- import re
- from .online import OnlineProcessor
- re_search_urls = {
- 'http': re.compile(r'https?:\/\/[^ ]*'),
- 'ftp': re.compile(r'ftps?:\/\/[^ ]*'),
- 'data:image': re.compile('data:image/[^; ]*;base64,[^ ]*'),
- }
- class OnlineUrlSearchProcessor(OnlineProcessor):
- """Processor class used by ``online_url_search`` engines."""
- engine_type = 'online_url_search'
- def get_params(self, search_query, engine_category):
- """Returns a set of :ref:`request params <engine request online>` or ``None`` if
- search query does not match to :py:obj:`re_search_urls`.
- """
- params = super().get_params(search_query, engine_category)
- if params is None:
- return None
- url_match = False
- search_urls = {}
- for k, v in re_search_urls.items():
- m = v.search(search_query.query)
- v = None
- if m:
- url_match = True
- v = m[0]
- search_urls[k] = v
- if not url_match:
- return None
- params['search_urls'] = search_urls
- return params
|