[feat] hostname replace plugin: possibility to prioritize certain websites

Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
Bnyro 2024-05-05 20:43:45 +02:00 committed by Markus Heiser
parent d4c3d30995
commit 3bec04079c
7 changed files with 117 additions and 76 deletions

View file

@ -130,16 +130,25 @@ def merge_two_infoboxes(infobox1, infobox2): # pylint: disable=too-many-branche
infobox1['content'] = content2
def result_score(result):
def result_score(result, priority):
weight = 1.0
for result_engine in result['engines']:
if hasattr(engines[result_engine], 'weight'):
weight *= float(engines[result_engine].weight)
occurrences = len(result['positions'])
weight *= len(result['positions'])
score = 0
return sum((occurrences * weight) / position for position in result['positions'])
for position in result['positions']:
if priority == 'low':
continue
if priority == 'high':
score += weight
else:
score += weight / position
return score
class Timing(NamedTuple): # pylint: disable=missing-class-docstring
@ -354,9 +363,7 @@ class ResultContainer:
self._closed = True
for result in self._merged_results:
score = result_score(result)
result['score'] = score
result['score'] = result_score(result, result.get('priority'))
# removing html content and whitespace duplications
if result.get('content'):
result['content'] = utils.html_to_text(result['content']).strip()
@ -364,7 +371,7 @@ class ResultContainer:
result['title'] = ' '.join(utils.html_to_text(result['title']).strip().split())
for result_engine in result['engines']:
counter_add(score, 'engine', result_engine, 'score')
counter_add(result['score'], 'engine', result_engine, 'score')
results = sorted(self._merged_results, key=itemgetter('score'), reverse=True)