diff --git a/src/fundus/parser/data.py b/src/fundus/parser/data.py index c4d1c38d1..9a5cabcb8 100644 --- a/src/fundus/parser/data.py +++ b/src/fundus/parser/data.py @@ -10,6 +10,7 @@ Optional, Sequence, Tuple, + TypeVar, Union, overload, ) @@ -20,6 +21,8 @@ _sentinel = object() +_T = TypeVar("_T") + class LinkedDataMapping: """ @@ -85,7 +88,7 @@ def get_value_by_key_path(self, key_path: List[str], default: Any = None) -> Opt tmp = nxt return tmp - def bf_search(self, key: str, depth: Optional[int] = None, default: Any = None) -> Optional[Any]: + def bf_search(self, key: str, depth: Optional[int] = None, default: Optional[_T] = None) -> Union[Any, _T]: """ This is a classic BF search on the nested dicts representing the JSON-LD. specifies the dict key to search, the depth level. If the depth level is set to None, this method will search through the whole diff --git a/src/fundus/publishers/de/braunschweiger_zeitung.py b/src/fundus/publishers/de/braunschweiger_zeitung.py index 00cf837ff..f42b5399a 100644 --- a/src/fundus/publishers/de/braunschweiger_zeitung.py +++ b/src/fundus/publishers/de/braunschweiger_zeitung.py @@ -8,7 +8,6 @@ from fundus.parser.utility import ( apply_substitution_pattern_over_list, extract_article_body_with_selector, - generic_author_parsing, generic_date_parsing, generic_topic_parsing, ) @@ -49,8 +48,12 @@ def topics(self) -> List[str]: @attribute def authors(self) -> List[str]: + authors = [] + for author in self.precomputed.ld.bf_search("author", default=[]): + name_string = author.get("name") + authors.extend(re.split(r"und|,", name_string)) return apply_substitution_pattern_over_list( - generic_author_parsing(self.precomputed.ld.bf_search("author")), self._author_substitution_pattern + [author.strip() for author in authors], self._author_substitution_pattern ) @attribute diff --git a/tests/resources/parser/test_data/de/BSZ.json b/tests/resources/parser/test_data/de/BSZ.json index 10feb3baf..b1d9bc6e8 100644 --- a/tests/resources/parser/test_data/de/BSZ.json +++ b/tests/resources/parser/test_data/de/BSZ.json @@ -1,36 +1,67 @@ { "V1": { "authors": [ - "Stefan Lienert" + "Felix Schröder", + "Jörg Soldwisch", + "dpa" ], "body": { "summary": [ - "Soltau. Erstes Geheimnis um „Katakomben-Tour“ gelüftet. Dann können Besucher die Attraktion erstmals ausprobieren. Und noch eine heißersehnte Info ist fix." + "Riad. Die Boxwelt fiebert auf die Schwergewichts-Show des Jahrhunderts hin. Der Brite Fury und der Ukrainer Usyk wollen „Undisputed Champion“ werden. Auch ein Deutscher kann am Abend groß auftrumpfen." ], "sections": [ { "headline": [], "paragraphs": [ - "Es ist aktuell noch eines der größten Geheimnisse im deutschen Freizeitpark-Sektor: Was passiert da momentan im Heide-Park in Soltau? Unweit des Fahrgeschäfts „Flug der Dämonen“ entsteht eine neue Attraktion. Doch noch hüllt sich der Park mit Details rund um den Neuzugang in Schweigen. Allerdings: Mittlerweile steht fest, ab wann die Freizeitpark-Besucher die neue Attraktion erleben können, die den Arbeitstitel „Katakomben-Tour“ bekommen hat. An Karfreitag, 29. März, also in exakt zwei Monaten, soll sie eröffnen, heißt es aus Soltau. Auf Nachfrage heißt es aus dem Park: „Die Holzachterbahn ‚Colossos‘ haben wir 2019 auch an Karfreitag eröffnet, den ‚Flug der Dämonen‘ ebenfalls am 29. März vor zehn Jahren.“ Also ein perfektes Datum für Zuwachs im Park.", - "Mit Videos und absolut kryptischen Texten halten die Freizeitpark-Macher auf Social Media die Fans seit Wochen bei Laune. „Die Indoor-Attraktion verspreche, das Leben der mutigen Gäste auf gruseligste Art und Weise zu verändern“, hieß es etwa bei der Ankündigung der neuen Attraktion im Oktober, die Teil des Themenbereichs „Transsilvanien“ werden soll. Ob es ein Darkride wird, wie ihn sich viele Heide-Park-Fans wünschen, ist noch immer unklar. Jedoch: Der Park möchte im Laufe des Februars bekanntgeben, um was es sich bei der Attraktion konkret handelt. Ein klein wenig gedulden müssen sich die Anhänger des größten Freizeitparks in Norddeutschland also noch." + "Der erste Gong im Jahrhundert-Kampf von Tyson Fury und Oleksandr Usyk ist noch gar nicht ertönt, doch Blut ist schon geflossen. Allerdings nicht bei den beiden Schwergewichts-Weltmeistern, sondern beim exzentrischen Vater des Briten Fury. Der hatte sich Anfang der Woche mit seinem Kopfstoß gegen ein Mitglied von Usyks Team eine blutige Wunde an der Stirn eingehandelt und damit für einen Eklat gesorgt hat.", + "Die Nerven vor dem mit Spannung erwartetet WM-Vereinigungskampf scheinen blank zu liegen. „Sein Vater ist nervös. Er versucht den kleinsten Typen in Usyks Team zu bekämpfen“, lästerte Usyks Promoter Alexander Krassyuk.", + "Bei der Schwergewichts-Show am Samstagabend (DAZN) in Riad steht sehr viel auf dem Spiel. Erstmals nach Lennox Lewis vor 25 Jahren kann der Sieger des Mega-Fights der sogenannte „Undisputed Champion“ werden. Er sichert sich alle vier bedeutenden WM-Titel der Verbände IBF, WBO, WBA und WBC - und damit einen viel beachteten Platz in der Box-Historie. Zusätzlich geht es auch noch um den IBO-Titel. Nicht nur Lewis erwartet ein „Fifty-Fifty-Ding“.", + "„Es ist großartig. Es ist gut für mich, aber auch sehr wichtig für mein Land“, sagte Usyk, der seinen Sieg den ukrainischen Soldaten im Kampf gegen Russland widmen will. „Das ist ein Kampf, auf den die Boxwelt seit einem Vierteljahrhundert wartet. Die ganze Welt schaut darauf, das ist Box-Historie“, sagte Experte Bernd Bönte der Deutschen Presse-Agentur. Promoter Frank Warren sprach vor einiger Zeit vom „größten Box-Ereignis des Jahrhunderts“.", + "„Es wird auf jeden Fall ein Spektakel“, sagte Agit Kabayel. Der aktuell beste deutsche Schwergewichtler wird im Vorprogramm vor dem Mega-Duell in den Ring steigen. Im sogenannten WBC-WM-Eliminator nimmt es der 31-Jährige mit dem Kubaner Frank Sanchez auf. Sollte der Bochumer gewinnen, ist er der nächste Pflichtherausforderer des WBC-Weltmeisters im Schwergewicht. Das ist aktuell Tyson Fury, Usyk hält die anderen Titel." ] }, { "headline": [ - "Saisonstart des Heide-Parks ist am 23. März" + "Kabayel: „Das ist die Champions League“" ], "paragraphs": [ - "Die Saison des Heide-Parks ist vom 23. März bis zum 2. November geplant. Tagestickets können sich Besucher aber schon jetzt online ab 37 Euro sichern, Jahreskarten gibt es ab 79 Euro. Neben der neuen Attraktion gibt es eine weitere Neuheit für den Park in diesem Jahr: Am 31. August und 1. September steigt das Heide-Park-Festival auf dem Gelände. The Chainsmokers, Don Diablo, Hardwell, Wincent Weiss und dutzende weitere Acts stehen bereits fest. Karten gibt es ab 99,99 Euro." + "Kabayel rechnet mit einem ausgeglichenen Kampf. „Wenn wir nach den letzten Leistungen gehen, stehen die Karten für Fury nicht so gut. Aber ich glaube trotzdem, dass es ein Kopf-an-Kopf-Rennen wird, die Tagesform und die mentale Stärke wird entscheiden“, sagte er: „Das ist die Champions League, da ist jeder wirklich brandgefährlich und für ein Spektakel bereit.“", + "Beide Box-Stars sind bislang noch unbesiegt. Der flinke Usyk (21 Siege) dürfte dem 15 Zentimeter größeren Fury (34 Siege) vor allem mit der Geschwindigkeit Probleme bereiten wollen. „Fury hat nie mit solch einem Speed umgehen müssen“, sagte Usyk-Promoter Krassyuk dem Portal „sport.de“. „Tyson hat Vorteile in Größe, Reichweite und Gewicht. Punkt. Usyk hat Vorteile in Geschwindigkeit, Box-IQ und Technik“, fügte Krassyuk hinzu.", + "Hier sieht auch Bönte Vorteile für den Ukrainer. „Usyks großes Plus ist seine Geschwindigkeit - sowohl die Schnelligkeit seiner Hände als auch seine exzellente Beinarbeit. Und er boxt sehr präzise“, sagte er.", + "Generell geht der frühere Manager der Klitschko-Brüder von einem „50/50-Kampf“ aus. „Beide stehen vor dem schwersten Kampf ihrer Karriere. Wenn ich wetten würde, dann sehe ich Usyk als leichten Favoriten. Ich tippe auf einen knappen Punktsieg Usyks.“" + ] + }, + { + "headline": [ + "Bönte: Fury muss Usyks Rhythmus brechen" + ], + "paragraphs": [ + "Es sei extrem schwer, für einen großen Mann wie Fury einen kleinen und schnellen Mann wie Usyk überhaupt zu stellen, meint Bönte, der für DAZN den Kampf als Experte begleiten wird. „Fury gewinnt diesen Kampf nur dann, wenn er den Rhythmus von Usyk brechen kann. Er muss ihn stellen, den Weg abschneiden, klammern, auch mal unsauber boxen und den Kampffluss in jeder Hinsicht brechen“, prognostizierte Bönte. „Usyk gewinnt ein Boxing-Match, Fury gewinnt einen „dreckigen Straßenkampf“.“", + "Usyk hatte seine WM-Titel 2021 Anthony Joshua abgeknöpft und 2022 gegen den Briten erfolgreich verteidigt. Bereits danach wurde der Kampf gegen Fury herbeigesehnt. 2015 hatte Fury überraschend Wladimir Klitschko bezwungen und war so Weltmeister geworden. Später verzichtete er auf alle Titel, kämpfte gegen Depressionen und Drogenkonsum. 2018 war er zurück - und schnappte sich den WBC-Titel." + ] + }, + { + "headline": [ + "Organisation des Kampfs war zäh" + ], + "paragraphs": [ + "Wie es sich für einen so großen Kampf wohl gehört, war die Ansetzung des Events ein zähes Ringen. Meinungsverschiedenheiten hinsichtlich der monetären Aufteilung führten fast zum Abbruch der Verhandlungen. Mehreren Medienberichten zufolge kassiert Fury mehr als 100 Millionen für den Fight, Usyk soll weniger bekommen.", + "„Jede Seite hat einen separaten Deal mit dem Veranstalter und Investor Turki AlalSheikh vor Ort abgeschlossen“, sagte Bönte. „Keine Seite weiß, wie viel Geld die andere bekommt. Beide sind somit zufriedengestellt. Und nur deshalb ist der Kampf zustande gekommen.“", + "Aber nicht nur Geld verzögerte den Zweikampf. Beide sollten am 23. Dezember gegeneinander antreten. Allerdings kassierte der damals untrainiert wirkende Fury einige Wochen zuvor einen Cut im Schaukampf gegen den früheren MMA-Champion Francis Ngannou - und musste anschließend pausieren. Kurze Zeit später zog sich Fury erneut einen Cut zu, als er sich im Sparring auf den Kampf im Februar gegen Usyk vorbereitete. Und wieder musste das Spektakel vertagt werden. Nun sollte dem Jahrhundertkampf aber nichts mehr im Weg stehen." ] } ] }, - "publishing_date": "2024-01-29 18:09:51+00:00", - "title": "Heide-Park: Eröffnungstermin für neue Attraktion steht fest", + "publishing_date": "2024-05-16 09:26:10+00:00", + "title": "Fury und Usyk kämpfen um Schwergewichts-Krone", "topics": [ - "Freizeitpark", - "Soltau", - "Heide-Park Soltau" + "Boxen", + "Tyson Fury", + "Wladimir Klitschko", + "Anthony Joshua", + "Frank Warren", + "Lennox Lewis", + "Russland" ] } } diff --git a/tests/resources/parser/test_data/de/BSZ_2024_01_29.html.gz b/tests/resources/parser/test_data/de/BSZ_2024_01_29.html.gz deleted file mode 100644 index d7db2a20f..000000000 Binary files a/tests/resources/parser/test_data/de/BSZ_2024_01_29.html.gz and /dev/null differ diff --git a/tests/resources/parser/test_data/de/BSZ_2024_05_16.html.gz b/tests/resources/parser/test_data/de/BSZ_2024_05_16.html.gz new file mode 100644 index 000000000..2b32d97e1 Binary files /dev/null and b/tests/resources/parser/test_data/de/BSZ_2024_05_16.html.gz differ diff --git a/tests/resources/parser/test_data/de/meta.info b/tests/resources/parser/test_data/de/meta.info index 072f77e35..3b234fde4 100644 --- a/tests/resources/parser/test_data/de/meta.info +++ b/tests/resources/parser/test_data/de/meta.info @@ -3,9 +3,9 @@ "url": "https://www.br.de/nachrichten/bayern/evangelische-kirche-landeskirche-will-missbrauch-aufarbeiten,UAf9GNd", "crawl_date": "2024-04-22 17:33:43.091856" }, - "BSZ_2024_01_29.html.gz": { - "url": "https://www.braunschweiger-zeitung.de/niedersachsen/article241536118/Heide-Park-Eroeffnungstermin-fuer-neue-Attraktion-steht-fest.html", - "crawl_date": "2024-01-29 19:29:19.952428" + "BSZ_2024_05_16.html.gz": { + "url": "https://www.braunschweiger-zeitung.de/sport/mehr-sport/article242348272/Fury-und-Usyk-kaempfen-um-Schwergewichts-Krone.html", + "crawl_date": "2024-05-16 13:25:13.687319" }, "BerlinerMorgenpost_2024_05_03.html.gz": { "url": "https://www.morgenpost.de/berlin/article242242744/feuer-brand-warnung-berlin-lichterfelde-brandgase-aktuell-news.html",