mirror of
				https://github.com/searxng/searxng.git
				synced 2025-10-31 02:27:06 -04:00 
			
		
		
		
	- pyright configuration [1]_ - stub files: types-lxml [2]_ - addition of various type hints - enable use of new type system features on older Python versions [3]_ - ``.tool-versions`` - set python to lowest version we support (3.10.18) [4]_: Older versions typically lack some typing features found in newer Python versions. Therefore, for local type checking (before commit), it is necessary to use the older Python interpreter. .. [1] https://docs.basedpyright.com/v1.20.0/configuration/config-files/ .. [2] https://pypi.org/project/types-lxml/ .. [3] https://typing-extensions.readthedocs.io/en/latest/# .. [4] https://mise.jdx.dev/configuration.html#tool-versions Signed-off-by: Markus Heiser <markus.heiser@darmarit.de> Format: reST
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # SPDX-License-Identifier: AGPL-3.0-or-later
 | |
| # pylint: disable=missing-module-docstring, unused-argument
 | |
| 
 | |
| import logging
 | |
| import typing as t
 | |
| 
 | |
| from flask_babel import gettext  # pyright: ignore[reportUnknownVariableType]
 | |
| 
 | |
| from searx.data import TRACKER_PATTERNS
 | |
| 
 | |
| from . import Plugin, PluginInfo
 | |
| 
 | |
| if t.TYPE_CHECKING:
 | |
|     import flask
 | |
|     from searx.search import SearchWithPlugins
 | |
|     from searx.extended_types import SXNG_Request
 | |
|     from searx.result_types import Result, LegacyResult  # pyright: ignore[reportPrivateLocalImportUsage]
 | |
|     from searx.plugins import PluginCfg
 | |
| 
 | |
| 
 | |
| log = logging.getLogger("searx.plugins.tracker_url_remover")
 | |
| 
 | |
| 
 | |
| @t.final
 | |
| class SXNGPlugin(Plugin):
 | |
|     """Remove trackers arguments from the returned URL."""
 | |
| 
 | |
|     id = "tracker_url_remover"
 | |
| 
 | |
|     def __init__(self, plg_cfg: "PluginCfg") -> None:
 | |
| 
 | |
|         super().__init__(plg_cfg)
 | |
|         self.info = PluginInfo(
 | |
|             id=self.id,
 | |
|             name=gettext("Tracker URL remover"),
 | |
|             description=gettext("Remove trackers arguments from the returned URL"),
 | |
|             preference_section="privacy",
 | |
|         )
 | |
| 
 | |
|     def init(self, app: "flask.Flask") -> bool:
 | |
|         TRACKER_PATTERNS.init()
 | |
|         return True
 | |
| 
 | |
|     def on_result(self, request: "SXNG_Request", search: "SearchWithPlugins", result: "Result") -> bool:
 | |
| 
 | |
|         result.filter_urls(self.filter_url_field)
 | |
|         return True
 | |
| 
 | |
|     @classmethod
 | |
|     def filter_url_field(cls, result: "Result|LegacyResult", field_name: str, url_src: str) -> bool | str:
 | |
|         """Returns bool ``True`` to use URL unchanged (``False`` to ignore URL).
 | |
|         If URL should be modified, the returned string is the new URL to use."""
 | |
| 
 | |
|         if not url_src:
 | |
|             log.debug("missing a URL in field %s", field_name)
 | |
|             return True
 | |
| 
 | |
|         return TRACKER_PATTERNS.clean_url(url=url_src)
 |