add scoring rules to config and add evaluate indexer query result function

This commit is contained in:
maxDorninger
2025-07-16 23:23:11 +02:00
parent 9264d74d51
commit d01e5f5ee2
2 changed files with 38 additions and 0 deletions

View File

@@ -13,7 +13,24 @@ class JackettConfig(BaseSettings):
url: str = "http://localhost:9696"
indexers: list[str] = ["all"]
class ScoringRule(BaseSettings):
name: str
score_modifier: int = 0
negate: bool = False
class TitleScoringRule(ScoringRule):
keywords: list[str]
class IndexerFlagScoringRule(ScoringRule):
flags: list[str]
class ScoringRuleSet(BaseSettings):
name: str
tags: list[str] = []
rule_names: list[str] = []
class IndexerConfig(BaseSettings):
prowlarr: ProwlarrConfig
jackett: JackettConfig
title_scoring_rules: list[TitleScoringRule] = []
indexer_flag_scoring_rules: list[IndexerFlagScoringRule] = []

View File

@@ -0,0 +1,21 @@
from media_manager.config import AllEncompassingConfig
from media_manager.indexer.config import ScoringRuleSet
from media_manager.indexer.schemas import IndexerQueryResult
def evaluate_indexer_query_result(query_result: IndexerQueryResult, ruleset: ScoringRuleSet) -> IndexerQueryResult|None:
title_rules = AllEncompassingConfig().indexers.title_scoring_rules
indexer_flag_rules = AllEncompassingConfig().indexers.indexer_flag_scoring_rules
for rule_name in ruleset.rule_names:
for rule in title_rules:
if rule.name == rule_name:
if any(keyword.lower() in query_result.title.lower() for keyword in rule.keywords) and not rule.negate:
query_result.score += rule.score_modifier
for rule in indexer_flag_rules:
if rule.name == rule_name:
if any(flag in query_result.flags for flag in rule.flags) and not rule.negate:
query_result.score += rule.score_modifier
if query_result.score <= 0:
return None
return query_result