diff options
| author | Markus Heiser <markus.heiser@darmarit.de> | 2025-09-24 19:34:03 +0200 |
|---|---|---|
| committer | Markus Heiser <markus.heiser@darmarIT.de> | 2025-09-28 07:32:41 +0200 |
| commit | 18a58943ccaa324b39232fa503462eb39f407399 (patch) | |
| tree | 04b355ad60c205b28ea1083ea97abdfabea857ff /searx/data/tracker_patterns.py | |
| parent | 4f4de3fc8743b3732834c5ffaa4a3e264d200e6c (diff) | |
[mod] ExpireCacheSQLite - implement .setmany() for bulk loading
[1] https://github.com/searxng/searxng/issues/5223#issuecomment-3328597147
Suggested-by: Ivan G <igabaldon@inetol.net> [1]
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/data/tracker_patterns.py')
| -rw-r--r-- | searx/data/tracker_patterns.py | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/searx/data/tracker_patterns.py b/searx/data/tracker_patterns.py index 2966c0f31..fd4746e5c 100644 --- a/searx/data/tracker_patterns.py +++ b/searx/data/tracker_patterns.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: AGPL-3.0-or-later """Simple implementation to store TrackerPatterns data in a SQL database.""" -import typing +import typing as t __all__ = ["TrackerPatternsDB"] @@ -14,9 +14,14 @@ from httpx import HTTPError from searx.data.core import get_cache, log from searx.network import get as http_get +if t.TYPE_CHECKING: + from searx.cache import CacheRowType + + RuleType = tuple[str, list[str], list[str]] +@t.final class TrackerPatternsDB: # pylint: disable=missing-class-docstring @@ -31,9 +36,9 @@ class TrackerPatternsDB: class Fields: # pylint: disable=too-few-public-methods, invalid-name - url_regexp: typing.Final = 0 # URL (regular expression) match condition of the link - url_ignore: typing.Final = 1 # URL (regular expression) to ignore - del_args: typing.Final = 2 # list of URL arguments (regular expression) to delete + url_regexp: t.Final = 0 # URL (regular expression) match condition of the link + url_ignore: t.Final = 1 # URL (regular expression) to ignore + del_args: t.Final = 2 # list of URL arguments (regular expression) to delete def __init__(self): self.cache = get_cache() @@ -49,19 +54,25 @@ class TrackerPatternsDB: def load(self): log.debug("init searx.data.TRACKER_PATTERNS") - for rule in self.iter_clear_list(): - self.add(rule) + rows: "list[CacheRowType]" = [] - def add(self, rule: RuleType): - self.cache.set( - key=rule[self.Fields.url_regexp], - value=( + for rule in self.iter_clear_list(): + key = rule[self.Fields.url_regexp] + value = ( rule[self.Fields.url_ignore], rule[self.Fields.del_args], - ), - ctx=self.ctx_name, - expire=None, + ) + rows.append((key, value, None)) + + self.cache.setmany(rows, ctx=self.ctx_name) + + def add(self, rule: RuleType): + key = rule[self.Fields.url_regexp] + value = ( + rule[self.Fields.url_ignore], + rule[self.Fields.del_args], ) + self.cache.set(key=key, value=value, ctx=self.ctx_name, expire=None) def rules(self) -> Iterator[RuleType]: self.init() |