fix: Add 'impressum' to DSI keywords for self-extraction
"impressum" was missing from DSI_KEYWORDS despite being listed in
the docstring. This caused /impressum URLs to skip self-extraction
and return linked datenschutz text instead.
Added: DE: impressum, anbieterkennzeichnung, kontakt
EN: imprint, legal notice, site notice, legal information
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
"""
|
||||
DSI Keywords — Legal document keywords in all 26 EU/EEA official languages.
|
||||
|
||||
Covers: DSI (privacy), AGB (terms), Widerruf (cancellation),
|
||||
Cookie-Richtlinie, Impressum, NB (Nutzungsbedingungen).
|
||||
"""
|
||||
|
||||
DSI_KEYWORDS: dict[str, list[str]] = {
|
||||
"de": [
|
||||
# Datenschutz
|
||||
"datenschutz", "datenschutzerklaerung", "datenschutzinformation",
|
||||
"datenschutzhinweis", "datenschutzrichtlinie", "dsgvo", "privatsphäre",
|
||||
"datenschutzbestimmung", "verarbeitung personenbezogener daten",
|
||||
# AGB / Nutzungsbedingungen
|
||||
"allgemeine geschäftsbedingungen", "agb", "nutzungsbedingungen",
|
||||
"nutzungsordnung", "geschäftsbedingungen",
|
||||
# Widerruf
|
||||
"widerrufsbelehrung", "widerrufsrecht", "widerrufsformular",
|
||||
"widerruf", "rücktrittsrecht",
|
||||
# Cookie
|
||||
"cookie-richtlinie", "cookie-policy", "cookie-hinweis",
|
||||
# Impressum
|
||||
"impressum", "anbieterkennzeichnung", "kontakt",
|
||||
],
|
||||
"en": [
|
||||
"privacy policy", "privacy notice", "data protection", "data policy",
|
||||
"privacy statement", "gdpr", "personal data", "cookie policy",
|
||||
"terms of service", "terms and conditions", "terms of use",
|
||||
"cancellation policy", "right of withdrawal", "refund policy",
|
||||
"cookie notice",
|
||||
"imprint", "legal notice", "site notice", "legal information",
|
||||
],
|
||||
"fr": [
|
||||
"politique de confidentialité", "protection des données",
|
||||
"données personnelles", "vie privée", "rgpd",
|
||||
"conditions générales", "conditions d'utilisation",
|
||||
"droit de rétractation", "politique de cookies",
|
||||
],
|
||||
"es": [
|
||||
"política de privacidad", "protección de datos",
|
||||
"datos personales", "aviso de privacidad",
|
||||
"términos y condiciones", "condiciones de uso",
|
||||
"derecho de desistimiento", "política de cookies",
|
||||
],
|
||||
"it": [
|
||||
"informativa sulla privacy", "protezione dei dati",
|
||||
"dati personali", "privacy policy",
|
||||
"termini e condizioni", "condizioni d'uso",
|
||||
"diritto di recesso", "politica dei cookie",
|
||||
],
|
||||
"nl": [
|
||||
"privacybeleid", "gegevensbescherming", "privacyverklaring",
|
||||
"persoonsgegevens", "avg",
|
||||
"algemene voorwaarden", "gebruiksvoorwaarden",
|
||||
"herroepingsrecht", "cookiebeleid",
|
||||
],
|
||||
"pl": [
|
||||
"polityka prywatności", "ochrona danych osobowych",
|
||||
"dane osobowe", "rodo",
|
||||
"regulamin", "warunki korzystania",
|
||||
"prawo odstąpienia", "polityka cookies",
|
||||
],
|
||||
"pt": [
|
||||
"política de privacidade", "proteção de dados",
|
||||
"dados pessoais", "lgpd",
|
||||
"termos e condições", "condições de utilização",
|
||||
"direito de resolução", "política de cookies",
|
||||
],
|
||||
"sv": [
|
||||
"integritetspolicy", "dataskydd", "personuppgifter",
|
||||
"sekretesspolicy",
|
||||
"allmänna villkor", "användarvillkor",
|
||||
"ångerrätt", "cookiepolicy",
|
||||
],
|
||||
"da": [
|
||||
"privatlivspolitik", "databeskyttelse", "personoplysninger",
|
||||
"persondatapolitik",
|
||||
"handelsbetingelser", "brugsbetingelser",
|
||||
"fortrydelsesret", "cookiepolitik",
|
||||
],
|
||||
"fi": [
|
||||
"tietosuojaseloste", "tietosuoja", "henkilötiedot",
|
||||
"rekisteriseloste",
|
||||
"yleiset ehdot", "käyttöehdot",
|
||||
"peruutusoikeus", "evästekäytäntö",
|
||||
],
|
||||
"cs": ["zásady ochrany osobních údajů", "ochrana osobních údajů",
|
||||
"zpracování osobních údajů", "obchodní podmínky", "zásady cookies"],
|
||||
"el": ["πολιτική απορρήτου", "προστασία δεδομένων",
|
||||
"προσωπικά δεδομένα", "όροι χρήσης", "πολιτική cookies"],
|
||||
"hu": ["adatvédelmi szabályzat", "adatvédelem", "személyes adatok",
|
||||
"általános szerződési feltételek", "cookie szabályzat"],
|
||||
"ro": ["politica de confidențialitate", "protecția datelor",
|
||||
"date cu caracter personal", "termeni și condiții", "politica cookies"],
|
||||
"bg": ["политика за поверителност", "защита на данните",
|
||||
"лични данни", "общи условия", "политика за бисквитки"],
|
||||
"hr": ["politika privatnosti", "zaštita podataka", "osobni podaci",
|
||||
"opći uvjeti", "politika kolačića"],
|
||||
"sk": ["zásady ochrany osobných údajov", "ochrana osobných údajov",
|
||||
"obchodné podmienky", "zásady cookies"],
|
||||
"sl": ["politika zasebnosti", "varstvo podatkov", "osebni podatki",
|
||||
"splošni pogoji", "politika piškotkov"],
|
||||
"et": ["privaatsuspoliitika", "andmekaitse", "isikuandmed",
|
||||
"kasutustingimused", "küpsiste poliitika"],
|
||||
"lt": ["privatumo politika", "duomenų apsauga", "asmens duomenys",
|
||||
"naudojimosi sąlygos", "slapukų politika"],
|
||||
"lv": ["privātuma politika", "datu aizsardzība", "personas dati",
|
||||
"lietošanas noteikumi", "sīkdatņu politika"],
|
||||
"mt": ["politika tal-privatezza", "protezzjoni tad-data",
|
||||
"termini u kundizzjonijiet"],
|
||||
"ga": ["polasaí príobháideachais", "cosaint sonraí",
|
||||
"téarmaí agus coinníollacha"],
|
||||
"is": ["persónuverndarstefna", "persónuvernd",
|
||||
"skilmálar og skilyrði"],
|
||||
"no": ["personvernerklæring", "personvern", "personopplysninger",
|
||||
"brukervilkår", "angrerett", "informasjonskapsler"],
|
||||
}
|
||||
|
||||
# Flatten all keywords for quick matching
|
||||
ALL_DSI_KEYWORDS: list[str] = []
|
||||
for _kw_list in DSI_KEYWORDS.values():
|
||||
ALL_DSI_KEYWORDS.extend(_kw_list)
|
||||
|
||||
|
||||
def matches_dsi_keyword(text: str) -> tuple[bool, str]:
|
||||
"""Check if text contains any DSI keyword. Returns (match, language)."""
|
||||
text_lower = text.lower().strip()
|
||||
for lang, keywords in DSI_KEYWORDS.items():
|
||||
for kw in keywords:
|
||||
if kw in text_lower:
|
||||
return True, lang
|
||||
return False, ""
|
||||
Reference in New Issue
Block a user