Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix author parsing for BSZ #518

Merged
merged 3 commits into from
May 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/fundus/parser/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
Optional,
Sequence,
Tuple,
TypeVar,
Union,
overload,
)
Expand All @@ -20,6 +21,8 @@

_sentinel = object()

_T = TypeVar("_T")


class LinkedDataMapping:
"""
Expand Down Expand Up @@ -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]:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does it make sense to update the return value to Union[Any, _T]?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So mypy does know that if a default is given, at least that type is returned.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah ok. I didn't know mypy was able to make that connection. Thanks

"""
This is a classic BF search on the nested dicts representing the JSON-LD. <key> specifies the dict key to
search, <depth> the depth level. If the depth level is set to None, this method will search through the whole
Expand Down
7 changes: 5 additions & 2 deletions src/fundus/publishers/de/braunschweiger_zeitung.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)
Expand Down Expand Up @@ -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
Expand Down
53 changes: 42 additions & 11 deletions tests/resources/parser/test_data/de/BSZ.json
Original file line number Diff line number Diff line change
@@ -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"
]
}
}
Binary file not shown.
Binary file not shown.
6 changes: 3 additions & 3 deletions tests/resources/parser/test_data/de/meta.info
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down