From 9ce8448185e0a40e00f85e4b6845117302444c3a Mon Sep 17 00:00:00 2001 From: MaxDall Date: Fri, 12 Jan 2024 17:26:30 +0100 Subject: [PATCH 01/13] add `body` to unit tests --- src/fundus/parser/data.py | 53 ++++++++++++++++++++++++++++++++++++++- tests/test_parser.py | 2 +- tests/utility.py | 23 +++++++++++------ 3 files changed, 69 insertions(+), 9 deletions(-) diff --git a/src/fundus/parser/data.py b/src/fundus/parser/data.py index 9503aee7f..d4023ed13 100644 --- a/src/fundus/parser/data.py +++ b/src/fundus/parser/data.py @@ -2,6 +2,8 @@ from dataclasses import dataclass, fields from typing import ( Any, + Callable, + ClassVar, Collection, Dict, Iterable, @@ -188,9 +190,33 @@ def __repr__(self) -> str: def __str__(self) -> str: return "\n".join(self) + def __eq__(self, other: object) -> bool: + if not isinstance(other, TextSequence): + return NotImplemented + return self._data == other._data + @dataclass class TextSequenceTree(ABC): + """Base class to traverse and build trees of TextSequence. + + The ClassVar __transformation__ is needed to serialize the tree. There must be an entry with type + Tuple[Callable, Callable] for each field with the first callable beeing the serialization and + the second the deserialization of that specific field. + + Examples: + >>> import datetime + >>> class Tree(TextSequenceTree): + >>> head: TextSequence + >>> tail: TextSequence + >>> + >>> __transformation__ = {"head": (list, TextSequence), "tail": (list, TextSequence)} + + + """ + + __transformation__: ClassVar[Dict[str, Tuple[Callable[[Any], Any], Callable[[Any], Any]]]] + def as_text_sequence(self) -> TextSequence: texts = [text for tl in self.df_traversal() for text in tl] return TextSequence(texts) @@ -215,7 +241,22 @@ def recursion(o: object): for value in self: yield from recursion(value) - def __iter__(self): + def serialize(self) -> Dict[str, Any]: + serialized = {} + for field in fields(self): + name = field.name + serialized[name] = self.__transformation__[name][0](getattr(self, name)) + return serialized + + @classmethod + def deserialize(cls, obj: Dict[str, Any]) -> "TextSequenceTree": + kwargs = {} + for name, value in obj.items(): + kwargs[name] = cls.__transformation__[name][1](value) + # noinspection PyArgumentList + return cls(**kwargs) + + def __iter__(self) -> Iterator[Any]: field_values = [getattr(self, f.name) for f in fields(self)] yield from field_values @@ -231,8 +272,18 @@ class ArticleSection(TextSequenceTree): headline: TextSequence paragraphs: TextSequence + __transformation__ = {"headline": (list, TextSequence), "paragraphs": (list, TextSequence)} + @dataclass class ArticleBody(TextSequenceTree): summary: TextSequence sections: List[ArticleSection] + + __transformation__ = { + "summary": (list, TextSequence), + "sections": ( + lambda sections: [section.serialize() for section in sections], + lambda sections: [ArticleSection.deserialize(section) for section in sections], + ), + } diff --git a/tests/test_parser.py b/tests/test_parser.py index 6b519b10a..d1ec61723 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -128,7 +128,7 @@ def test_mapping(self, proxy_with_two_versions_and_different_attrs): # enforce test coverage for test parsing # because this is also used for the generate_parser_test_files script we export it here -attributes_required_to_cover = {"title", "authors", "topics", "publishing_date"} +attributes_required_to_cover = {"title", "authors", "topics", "publishing_date", "body"} @pytest.mark.parametrize( diff --git a/tests/utility.py b/tests/utility.py index 2b50de145..0e7ceba12 100644 --- a/tests/utility.py +++ b/tests/utility.py @@ -1,6 +1,7 @@ import datetime import gzip import json +from abc import ABC from dataclasses import dataclass from pathlib import Path from typing import Any, Callable, Dict, Generic, Optional, Type, TypeVar @@ -8,7 +9,8 @@ from typing_extensions import Self from fundus import PublisherCollection -from fundus.parser import BaseParser +from fundus.parser import ArticleBody, BaseParser +from fundus.parser.data import TextSequenceTree from fundus.publishers.base_objects import PublisherEnum from scripts.generate_tables import supported_publishers_markdown_path from tests.resources.parser.test_data import __module_path__ as test_resource_path @@ -88,25 +90,32 @@ class ExtractionEncoder(json.JSONEncoder): def default(self, obj: object): if isinstance(obj, datetime.datetime): return str(obj) + if isinstance(obj, TextSequenceTree): + return obj.serialize() return json.JSONEncoder.default(self, obj) -class ExtractionDecoder(json.JSONDecoder): - transformations: Dict[str, Callable[[Any], Any]] = { - "crawl_date": lambda timestamp: datetime.datetime.fromisoformat(timestamp), - "publishing_date": lambda timestamp: datetime.datetime.fromisoformat(timestamp), - } +class CustomDecoder(json.JSONDecoder, ABC): + transformations: Dict[str, Callable[[Any], Any]] def __init__(self, *args, **kwargs): json.JSONDecoder.__init__(self, object_hook=self.object_hook, *args, **kwargs) def object_hook(self, obj_dict): for key, transformation in self.transformations.items(): - if serialized_value := obj_dict.get(key): + if (serialized_value := obj_dict.get(key)) is not None: obj_dict[key] = transformation(serialized_value) return obj_dict +class ExtractionDecoder(CustomDecoder): + transformations: Dict[str, Callable[[Any], Any]] = { + "crawl_date": lambda timestamp: datetime.datetime.fromisoformat(timestamp), + "publishing_date": lambda timestamp: datetime.datetime.fromisoformat(timestamp), + "body": lambda body: ArticleBody.deserialize(body), + } + + @dataclass class JSONFileWithExtractionDecoderEncoder(JSONFile[_T]): """Custom JSONFile using default ExtractionEncoder/ExtractionDecoder""" From b191ada9f7bc9ac052a849f53b9a58b7ed76092b Mon Sep 17 00:00:00 2001 From: MaxDall Date: Fri, 12 Jan 2024 17:28:26 +0100 Subject: [PATCH 02/13] add test cases --- tests/resources/parser/test_data/at/ORF.json | 14 ++- .../parser/test_data/de/BerlinerZeitung.json | 53 +++++++- tests/resources/parser/test_data/de/Bild.json | 18 ++- tests/resources/parser/test_data/de/DW.json | 116 +++++++++++++++++- .../parser/test_data/de/DieWelt.json | 33 ++++- .../parser/test_data/de/DieZeit.json | 26 +++- tests/resources/parser/test_data/de/FAZ.json | 39 +++++- .../resources/parser/test_data/de/Focus.json | 48 +++++++- tests/resources/parser/test_data/de/MDR.json | 92 +++++++++++++- .../resources/parser/test_data/de/Merkur.json | 33 ++++- tests/resources/parser/test_data/de/NDR.json | 41 ++++++- tests/resources/parser/test_data/de/NTV.json | 38 +++++- tests/resources/parser/test_data/de/SZ.json | 18 ++- .../parser/test_data/de/SpiegelOnline.json | 26 +++- .../resources/parser/test_data/de/Stern.json | 42 ++++++- .../parser/test_data/de/Tagesschau.json | 53 +++++++- tests/resources/parser/test_data/de/Taz.json | 28 ++++- tests/resources/parser/test_data/de/WAZ.json | 13 +- .../parser/test_data/fr/LeMonde.json | 17 ++- .../parser/test_data/na/TheNamibian.json | 25 +++- .../parser/test_data/uk/TheGuardian.json | 13 +- .../parser/test_data/uk/TheIndependent.json | 16 ++- .../parser/test_data/uk/TheTelegraph.json | 80 +++++++++++- .../resources/parser/test_data/uk/iNews.json | 40 +++++- .../resources/parser/test_data/us/APNews.json | 50 +++++++- tests/resources/parser/test_data/us/CNBC.json | 41 ++++++- .../parser/test_data/us/FoxNews.json | 33 ++++- .../parser/test_data/us/FreeBeacon.json | 21 +++- .../parser/test_data/us/LATimes.json | 44 ++++++- .../parser/test_data/us/OccupyDemocrats.json | 26 +++- .../parser/test_data/us/Reuters.json | 21 +++- .../parser/test_data/us/TheGatewayPundit.json | 30 ++++- .../parser/test_data/us/TheIntercept.json | 37 +++++- .../parser/test_data/us/TheNation.json | 56 ++++++++- .../parser/test_data/us/TheNewYorker.json | 46 ++++++- .../parser/test_data/us/WashingtonTimes.json | 33 ++++- .../parser/test_data/us/WorldTruth.json | 36 +++++- 37 files changed, 1357 insertions(+), 39 deletions(-) diff --git a/tests/resources/parser/test_data/at/ORF.json b/tests/resources/parser/test_data/at/ORF.json index 9abfdc6ea..76cad7bfd 100644 --- a/tests/resources/parser/test_data/at/ORF.json +++ b/tests/resources/parser/test_data/at/ORF.json @@ -4,6 +4,18 @@ "ORF.at" ], "publishing_date": "2023-04-28 18:03:46.463000+00:00", - "title": "Mädchen bei Straßenbahnunfall in Wien verletzt" + "title": "Mädchen bei Straßenbahnunfall in Wien verletzt", + "body": { + "summary": [], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Ein zwölfjähriges Mädchen ist heute bei einem Straßenbahnunfall in Wien-Favoriten schwer verletzt worden. Das Mädchen versuchte offenbar die Straße zu überqueren und wurde dabei von der Straßenbahn erfasst.", + "Mehr dazu in wien.ORF.at" + ] + } + ] + } } } diff --git a/tests/resources/parser/test_data/de/BerlinerZeitung.json b/tests/resources/parser/test_data/de/BerlinerZeitung.json index e4362bd96..b405ec7fe 100644 --- a/tests/resources/parser/test_data/de/BerlinerZeitung.json +++ b/tests/resources/parser/test_data/de/BerlinerZeitung.json @@ -8,6 +8,57 @@ "topics": [ "News", "Niederlande" - ] + ], + "body": { + "summary": [ + "Nach der Zeugung von mindestens 550 Kindern hat ein niederländisches Gericht einen übereifrigen Samenspender gestoppt. Das Gericht untersagte dem Mann am Freitag jede weitere Samenspende. Bei einem Verstoß muss er 100.000 Euro Strafe zahlen. Eine Frau, die durch eine Samenspende des Mannes ein Kind bekam, und die Stiftung Donorkind hatten den 41-Jährigen verklagt. Weil er in Online-Netzwerken weiter seine Dienste anbot, wurde er nun im Eilverfahren verurteilt." + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Nach der Zeugung von mindestens 550 Kindern hat ein niederländisches Gericht einen übereifrigen Samenspender gestoppt. Das Gericht untersagte dem Mann am Freitag jede weitere Samenspende. Bei einem Verstoß muss er 100.000 Euro Strafe zahlen. Eine Frau, die durch eine Samenspende des Mannes ein Kind bekam, und die Stiftung Donorkind hatten den 41-Jährigen verklagt. Weil er in Online-Netzwerken weiter seine Dienste anbot, wurde er nun im Eilverfahren verurteilt." + ] + }, + { + "headline": [ + "Der Mann hatte sein Sperma an mindestens zwölf Kliniken und über Internet-Plattformen auch privat an hunderte Paare gespendet. Die Klägerin, die ihn nach Angaben von Donorkind im Internet kennengelernt hatte, wirft ihm vor, sie über die Zahl der von ihm gezeugten Kinder getäuscht zu haben. Er gab demnach an, Vater von maximal 25 Kindern in zwölf Familien zu sein. Mehr ist in den Niederlanden zur Vermeidung von Inzest durch zu viele Halbgeschwister nicht erlaubt." + ], + "paragraphs": [ + "Der Mann hatte sein Sperma an mindestens zwölf Kliniken und über Internet-Plattformen auch privat an hunderte Paare gespendet. Die Klägerin, die ihn nach Angaben von Donorkind im Internet kennengelernt hatte, wirft ihm vor, sie über die Zahl der von ihm gezeugten Kinder getäuscht zu haben. Er gab demnach an, Vater von maximal 25 Kindern in zwölf Familien zu sein. Mehr ist in den Niederlanden zur Vermeidung von Inzest durch zu viele Halbgeschwister nicht erlaubt." + ] + }, + { + "headline": [ + "Samenbetrug: Kinder wachsen jetzt mit Hunderten Halbgeschwistern auf" + ], + "paragraphs": [ + "Dem Urteil zufolge ist der Mann Vater von allein hundert Kindern, die in niederländischen Kliniken gezeugt wurden. Hinzu kommt demnach eine nicht genau bezifferbare Zahl von Kindern, die über privat organisierte Samenspenden und eine dänische Klinik gezeugt wurden, die sein Sperma an Paare in verschiedenen Ländern weitergeleitet hatte. Insgesamt hat der Mann nach Auffassung der Gerichts seit 2007 mindestens 550 bis 600 Kinder gezeugt." + ] + }, + { + "headline": [ + "Dem Urteil zufolge ist der Mann Vater von allein hundert Kindern, die in niederländischen Kliniken gezeugt wurden. Hinzu kommt demnach eine nicht genau bezifferbare Zahl von Kindern, die über privat organisierte Samenspenden und eine dänische Klinik gezeugt wurden, die sein Sperma an Paare in verschiedenen Ländern weitergeleitet hatte. Insgesamt hat der Mann nach Auffassung der Gerichts seit 2007 mindestens 550 bis 600 Kinder gezeugt." + ], + "paragraphs": [ + "Der Mann habe die Paare „bewusst“ über die Zahl der von ihm gezeugten Kinder getäuscht, urteilte das Gericht in Den Haag. „All diese Eltern sind nun mit der Tatsache konfrontiert, dass ihre Kinder Teil eines riesigen Verwandtschaftsnetzwerkes mit Hunderten von Halbgeschwistern sind“, erklärte das Gericht. Negative Folgen für die Kinder, etwa psychische Probleme aufgrund von Identitätsfragen und Angst vor Inzest, hält das Gericht für „hinreichend plausibel“." + ] + }, + { + "headline": [ + "Der Mann habe die Paare „bewusst“ über die Zahl der von ihm gezeugten Kinder getäuscht, urteilte das Gericht in Den Haag. „All diese Eltern sind nun mit der Tatsache konfrontiert, dass ihre Kinder Teil eines riesigen Verwandtschaftsnetzwerkes mit Hunderten von Halbgeschwistern sind“, erklärte das Gericht. Negative Folgen für die Kinder, etwa psychische Probleme aufgrund von Identitätsfragen und Angst vor Inzest, hält das Gericht für „hinreichend plausibel“." + ], + "paragraphs": [ + "Der Fall ist nicht der erste Samenspende-Skandal in den Niederlanden. Im Jahr 2020 kam heraus, dass ein inzwischen gestorbener Gynäkologe bei der künstlichen Befruchtung von Patientinnen mindestens 17 Kinder gezeugt hatte. Er hatte sein eigenes Sperma benutzt, die Frauen aber in dem Glauben gelassen, es stamme von anonymen Spendern." + ] + }, + { + "headline": [ + "Der Fall ist nicht der erste Samenspende-Skandal in den Niederlanden. Im Jahr 2020 kam heraus, dass ein inzwischen gestorbener Gynäkologe bei der künstlichen Befruchtung von Patientinnen mindestens 17 Kinder gezeugt hatte. Er hatte sein eigenes Sperma benutzt, die Frauen aber in dem Glauben gelassen, es stamme von anonymen Spendern." + ], + "paragraphs": [] + } + ] + } } } diff --git a/tests/resources/parser/test_data/de/Bild.json b/tests/resources/parser/test_data/de/Bild.json index b431b5392..dbc72e90d 100644 --- a/tests/resources/parser/test_data/de/Bild.json +++ b/tests/resources/parser/test_data/de/Bild.json @@ -14,6 +14,22 @@ "Saison 2022-2023", "Sport – Leuchtturm Essen", "Niemiec Jona" - ] + ], + "body": { + "summary": [ + "Es war bereits der zwölfte Einsatz in der 2. Bundesliga von Fortuna Düsseldorfs Bubi Jona Niemiec (21). Kaum nach 67 Minuten eingewechselt, scheiterte der Stürmer nur an der Latte. Doch war er beim 0:0 auf Pauli eine Bereicherung." + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Endlich wieder – denn nach starken ersten Spielen mit seinem Tordebüt beim 3:1 über Braunschweig lief es nicht mehr ganz so rund.", + "Daniel Thioune (48) wundert es nicht: „Jeder Spieler hat seine Qualitäten, die letzten Partien haben ihm nicht so den Raum gegeben. Jetzt durch das hohe Pressing haben sich riesen Räume ergeben und er konnte sich zeigen.”", + "Der Trainer freut sich: „Ich bin froh, dass es wieder etwas mehr war. Wie müssen einfach deutlich geduldiger mit dem Jungen sein. Er muss sich anpassen, man sieht oft, dass er am durchschnaufen ist.”", + "Obwohl Niemiec mit seiner Schnelligkeit Fortuna guttun kann, muss er vor allem konditionell noch zulegen, um beständig so aufzutrumpfen wie die letzten 23 Minuten am Millerntor." + ] + } + ] + } } } diff --git a/tests/resources/parser/test_data/de/DW.json b/tests/resources/parser/test_data/de/DW.json index abbed534e..dcbaa6f7c 100644 --- a/tests/resources/parser/test_data/de/DW.json +++ b/tests/resources/parser/test_data/de/DW.json @@ -12,7 +12,60 @@ "Bachmut", "Waffenlieferungen", "Gegenoffensive" - ] + ], + "body": { + "summary": [ + "Die Ukraine bereitet sich auf eine womöglich entscheidende Gegenoffensive vor, um die von Russland besetzten Gebiete zu befreien. Je länger Kiew wartet, desto besser scheinen seine Chancen. " + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Eine Autobahn in Polen nahe der Grenze zur Ukraine. Eine Kolonne aus einem Dutzend olivgrüner Armee-Trucks fährt an einem Aprilmorgen aus Richtung Ukraine kommend. Ihre Tieflader sind leer. \"Ich habe sie vor einer Woche gesehen. Sie haben Panzer in die Ukraine gebracht\", sagt der Taxifahrer. \"Es waren sehr große Panzer.\"", + "Jeden dieser Panzer wird die Ukraine in den kommenden Wochen und Monaten brauchen. Die ukrainische Armee beendet gerade ihre Vorbereitungen auf eine vor Monaten angekündigte und mit Spannung erwartete Gegenoffensive. Sie soll eine Wende im bisherigen zermürbenden Stellungskrieg bringen. Und sie soll Russland aus den besetzten Gebieten vertreiben. Es könnte eine entscheidende Schlacht werden. Ein Befreiungsschlag. " + ] + }, + { + "headline": [ + "Kämpfe um Bachmut, um Zeit zu gewinnen " + ], + "paragraphs": [ + "Wer in diesen Tagen nach Kiew reist, erlebt die buchstäbliche Ruhe vor dem Sturm. Russische Raketenangriffe wie am Freitag, 28. April, waren zuletzt selten geworden. Auf gut gepflegten Straßen der Hauptstadt blühen Bäume und Blumen, Cafés sind voll, der Krieg scheint weit weg. Und doch wird man immer wieder daran erinnert. An jeder Ecke hängen Plakate mit Aufrufen, sich freiwillig zu melden oder für die Armee zu spenden. Auf dem Majdan, dem Platz der Unabhängigkeit, werden fast täglich Särge mit prominenten gefallenen Kämpfern aufgestellt.", + "Besonders viele sterben bei Bachmut. Die Stadt im Gebiet Donezk ist seit Monaten hart umkämpft und nun größenteils unter russischer Kontrolle. Doch die ukrainische Armee gibt nicht auf. Die Staats- und Armeeführung erklärt das mit dem Schutz anderer Städte in der Nähe. Doch Kiew will bei Bachmut nicht nur russische Kräfte binden, sondern auch Zeit für die Vorbereitung der Gegenoffensive gewinnen. Die ukrainische Armee hat ihre Reserven deshalb lange geschont und sehr hohe Verluste in Kauf genommen. Genaue Zahlen sind unbekannt. ", + "Auch Andrij und Maxym (Namen von der Redaktion geändert) haben bei Bachmut gekämpft. Derzeit sind sie wieder in Kiew - endlich Zeit zur Erholung. \"Ich hoffe sehr, dass es sich gelohnt hat\", sagt Andrij über die Entscheidung, Bachmut unbedingt zu halten. Er selbst scheint sich nicht sicher zu sein. Maxym erzählt von der zahlenmäßigen Überlegenheit russischer Kräfte, schlechter Vorbereitung und schwacher Ausrüstung seiner Einheit. Was die beiden von der Gegenoffensive erwarten? \"Endlich wieder befreite Gebiete\", sagt Maxym.      " + ] + }, + { + "headline": [ + "Darum wartet Kiew ab" + ], + "paragraphs": [ + "In ukrainischen Medien ist die Gegenoffensive ein Dauerthema, doch die Armeevertreter hüllen sich in Schweigen. Auf alle Anfragen heißt es: \"Abwarten.\" Das hat viele Gründe. So sind zum Beispiel noch nicht alle erwarteten westlichen Waffen eingetroffen. Seit Jahresbeginn hat die Ukraine von NATO-Partnern viel \"Heavy Metal\" bekommen, wie es umgangssprachlich heißt, vieles davon zum ersten Mal: dutzende moderne Kampf- und Schützenpanzer aus deutscher und britischer Produktion, US-amerikanische Patriot-Flugabwehrsysteme, sowjetische Kampfjets.", + "Für die Offensive haben die Armee und die Nationalgarde nach Schätzungen der Online-Zeitung \"Ukrajinska Prawda\" mindestens 16 neue Brigaden gegründet, insgesamt bis zu 50.000 Mann. Diese neuen Einheiten brauchen Zeit für die Vorbereitung, auch, um sich mit neuen Waffen vertraut zu machen. Zusätzliche Herausforderung ist der koordinierte Einsatz vieler Verbände, eine Großoffensive eben. Bisher hatte die Ukraine wenig Erfahrung damit. Mögliche Szenarien wurden auf Computern durchgespielt, heißt es in Kiewer Fachkreisen. ", + "Die Wetterbedingungen sind noch ungünstig. Regen hat viele Landstraßen für schwere Kriegstechnik kaum passierbar gemacht. Außerdem müssen die ukrainischen Soldaten warten, bis dichteres Laub auf den Bäumen gewachsen ist, um sich besser tarnen zu können. Bis es ausreichend trocken und grün ist, wird es noch einige Tage dauern." + ] + }, + { + "headline": [ + "Krim als strategische Stoßrichtung" + ], + "paragraphs": [ + "Wo, wann und wie die Ukraine zuschlagen wird, ist gerade eines der am besten gehüteten Geheimnisse. Es dürfte mindestens zwei Stoßrichtungen gebeten. So ist die Armee im Herbst 2022 bei Charkiw und Cherson vorgegangen - mit Erfolg.", + "Der Oberbefehlshaber der ukrainischen Armee, General Walerij Saluschnyj, skizzierte in seinem bisher einzigen programmatischen Artikel im September 2022 nur ansatzweise, wie solch eine ukrainische Gegenoffensive aussehen könnte. Er sprach von \"einigen konsequenten, im Idealfall gleichzeitigen Gegenschlägen\". Als ein strategisch wichtiges Ziel erwähnte Saluschnyj die 2014 von Russland annektierte Halbinsel Krim. Das ist die Hauptrichtung, in die die Ukraine vorzustoßen versuchen dürfte, sagen alle in Kiew. Überraschungen und Täuschungsmanöver sind auch zu erwarten. Viele bezweifeln jedoch, dass die Ukraine die Halbinsel jetzt schon erobern könnte. Dafür gebe es nicht genug Kräfte und Technik.", + "Als Hauptstoßrichtung gilt seit Langem das Gebiet Saporischschja im Süden der Ukraine. Von dort wollen die ukrainischen Streitkräfte weiter bis zur Krim gehen, um russische Truppen von der Versorgung über Land abzuschneiden. Wenn das gelingt, wäre das ein großer Erfolg für Kiew, heißt es. Leicht wird es nicht, denn Russland hat mehrere Verteidigungslinien aufgebaut. Außerdem dürfte Russland diesmal - anders als bei Charkiw oder Cherson - mit Gegenschlägen reagieren, was zu den Risiken der ukrainischen Offensive zählt. " + ] + }, + { + "headline": [ + "Gegenoffensive dürfte den Krieg nicht beenden" + ], + "paragraphs": [ + "Trotzdem ist die Stimmung in Kiew vorsichtig optimistisch. \"Diese Offensive kann gar nicht scheitern, es werden weitere Gebiete befreit\", sagt ein Militärexperte. \"Die Frage ist nur, wie viel und um welchen Preis\". Diesen Preis sieht der Soldat Andrij jedes Mal, wenn er auf die Kontaktliste auf seinem Handy schaut: \"Viele Kameraden sind gefallen. Ich schaffe es nicht, ihre Nummern zu löschen.\"    ", + "Auch die Frage, was nach der Gegenoffensive passiert, steht im Raum. Manche befürchten, dass, wenn sie weit hinter den Erwartungen zurück bleibt, der Westen die Ukraine zu einer Verhandlungslösung und zu schmerzhaften Zugeständnissen bewegen könnte. Die Militärführung hat sich klar dagegen ausgesprochen. \"Das wird nicht passieren\", sagt Andrij. Er und viele in Kiew gehen von einem langen Krieg aus, der auch nach der Gegenoffensive nicht zu Ende sein dürfte. Er hofft deshalb auf weitere Konvois mit schwerem Kriegsgerät aus dem Westen. " + ] + } + ] + } }, "V2": { "authors": [ @@ -24,6 +77,65 @@ "topics": [ "Long COVID", "Coronavirus" - ] + ], + "body": { + "summary": [ + "Müdigkeit und Muskelschmerzen: Jede Impfung kann Nebenwirkungen haben, auch die gegen COVID-19. Doch es ist sehr schwer das sogenannte Post-Vac-Syndrom zu diagnostizieren. Was wissen wir über diese Impfschäden? " + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Mehr als 13 Milliarden Impfdosen sind während der Corona-Pandemie weltweit verabreicht worden. Allein in Deutschland wurden 192 Millionen Dosen verimpft – noch nie haben so viele Menschen innerhalb so kurzer Zeit eine oder mehrere Spritzen gegen dieselbe Krankheit bekommen.", + "Nicht alle haben das gut verkraftet: Manche Menschen leiden seit der Impfung an einer Vielzahl teils schwerer Symptome, die ihnen ein normales Leben unmöglich machen. Einige Geschädigte wollen den Impfstoffhersteller BioNTech wegen angeblicher Impfschäden, auch bekannt als Post-Vac-Syndrom, verklagen." + ] + }, + { + "headline": [ + "Was ist das Post-Vac-Syndrom und wie viele Menschen leiden darunter?" + ], + "paragraphs": [ + "Was viele Menschen gespürt haben, sind Schmerzen an der Einstichstelle, Müdigkeit, Kopfschmerzen oder Schüttelfrost. Diese Symptome verschwinden nach kurzer Zeit wieder und gelten als normale Impfreaktion. ", + "Das Post-Vac-Syndrom ist mehr, viel mehr. Nur was genau, das weiß noch niemand so richtig. ", + "Ähnlich wie Long COVID meint auch das Post-Vac-Syndrom ein Sammelsurium an Symptomen und Krankheitsbildern, die denen von Long COVID an vielen Stellen gleichen: chronisches Erschöpfungssyndrom (CFS/ME), Migräne, Muskelschmerzen oder Herz-Kreislauferkrankungen.", + "So facettenreich die Symptome sein mögen, sie haben eines gemeinsam: Sie befallen die Betroffenen kurze Zeit nach der Corona-Impfung. Und weil Impfnebenwirkungen und -schäden immer in engem zeitlichen Zusammenhang mit der verabreichten Spritze stehen, liegt die Post-Vac-Vermutung natürlich nahe.", + "Aus Sicht der betroffenen Menschen sei das vollkommen verständlich, findet auch Harald Prüß von der Berliner Charité und dem Berliner Standort des Deutschen Zentrums für Neurodegenerative Erkrankungen (DZNE). Allerdings handelt es sich bei dieser zeitlichen Aufeinanderfolge erstmal nur um eine Korrelation, nicht um einen kausalen Zusammenhang.", + "Prüß sagt auch, dass das Post-Vac-Syndrom \"in seiner Dimension total überschätzt wird\".", + "Dem Paul-Ehrlich-Institut, der Bundesbehörde, die in Deutschland für Impfstoffe und Arzneimittel zuständig ist und auch zu den Corona-Impfstoffe regelmäßige Sicherheitsberichte verfasst hat, sind bis zum 31.10.2022 knapp 51.000 Verdachtsfälle schwerwiegender Nebenwirkung nach der Coronaimpfung gemeldet worden. Ein Verdacht ist allerdings erstmal nichts weiter als ein Verdacht. Nur bei einem Bruchteil der gemeldeten Fälle konnte bisher ein eindeutiger Zusammenhang mit der Impfung nachgewiesen werden." + ] + }, + { + "headline": [ + "Wie diagnostizieren Mediziner das Post-Vac-Syndrom?" + ], + "paragraphs": [ + "In der neurologischen Post-COVID-19-Sprechstunde an der Klinik für Neurologie an der Charité sieht Prüß viele Menschen, die glauben, unter dem Post-Vac-Syndrom zu leiden. ", + "Weder Prüß noch andere, die zum Thema forschen bestreiten, dass es schwere Impfschäden gibt und dass den Betroffenen geholfen werden muss.", + "Der erste Hinweis darauf, dass die Kopfschmerzen, das Erschöpfungsgefühl oder die Muskelschwäche tatsächlich etwas mit der Impfung zu tun haben könnten, ist der Zeitrahmen: Treten die Symptome wenige Tage bis Wochen nach der verabreichten Spritze auf, könnte ein Zusammenhang bestehen.  ", + "Ob das tatsächlich so ist, könne allerdings nur in seltenen Fällen sicher nachgewiesen werden, sagt der Neurologe. \"Es gibt keinen einzigen in der breiten Wissenschaft akzeptierten Biomarker.\"", + "Ein solcher Biomarker wäre beispielsweise ein bestimmter Antikörper, den der Körper als Reaktion auf die Impfung bildet. So entdeckten Forschende einen speziellen Antikörper im Blut von Personen, die nach der Impfung eine Herzmuskelentzündung (Myokarditis) entwickelt hatten. Die Myokarditis gilt als eine mögliche, seltene Nebenwirkung nach der Impfung mit den mRNA-Impfstoffen von BioNTech/Pfizer und Moderna.", + "Der Vektor-Impfstoff von Astrazeneca war verantwortlich für ein vermehrte Auftreten von Sinusvenenthrombosen nach einer COVID-19 Impfung.", + "\"Es kommt nur selten vor, aber es war klar, dass der Impfstoff ein sehr spezifisches Muster von Hirnvenenthrombosen verursacht hatte, das sonst nicht bekannt ist, weil es mit einer sehr spezifischen Art von Antikörpern verbunden war\", sagt Prüß.", + "Kopfschmerzen, das chronische Fatigue Syndrom oder Herz-Kreislaufbeschwerden machen Menschen nicht erst seit der Pandemie und der großen Impfkampagne das Leben schwer. \"Jeden Tag werden allein in Deutschland 30 neue Multiple-Sklerose-Diagnosen gestellt\", sagt Prüß. All diese Dinge ohne stichhaltige Beweise der Impfung zuzuschreiben, würde den Menschen kaum helfen. Denn ohne korrekte Diagnose sei auch eine hilfreiche Therapie kaum möglich.", + "Für Prüß und andere, die sich mit dem Thema Post-Vac-Syndrom beschäftigen, liegt deshalb ein Verdacht nahe: Viele Krankheitsbilder, mit denen Betroffene in die Sprechstunde der Charité kommen, haben andere Ursachen. Ein echtes Post-Vac-Syndrom hingegen ist wahrscheinlich sehr selten." + ] + }, + { + "headline": [ + "Was passiert im Körper eines Post-Vac-Patienten?" + ], + "paragraphs": [ + "Das menschliche Immunsystems ist hochkomplex und gesichertes Wissen darüber, was genau im Körper von Post-Vac-Betroffenen passiert, gibt es nicht.", + "Die Immunologin und Präsidentin der Deutschen Gesellschaft für Immunologie, Christine Falk, vermutet, dass der Kern des Problems eine Kreuzreaktion mit dem im Impfstoff enthaltenen oder durch den Impfstoff gebildeten Spike-Protein sein könnte.", + "Sowohl bei manchen Long-COVID- als auch manchen Post-Vac-Patienten kommt es neben der Bildung von Antikörpern gegen das Spike-Protein zu einer Art Kreuzreaktion, bei der sie auch sogenannte Autoantikörper bilden, die unbeabsichtigt körpereigene Strukturen erkennen und angreifen können. ", + "Es ist deshalb kein Wunder, dass sich die Symptome von Long COVID, also nach einer durchgemachten Infektion, mit denen nach einer Impfung gleichen können: Im Körper laufen ähnliche immunologische Prozesse ab.", + "Ähnliches beobachteten Forschende beim Impfstoff gegen die Schweinegrippe, genauer gegen den Erreger H1N1. Sowohl der Impfstoff als auch die Infektion lösten bei einer geringen Anzahl von Personen die sogenannte Narkolepsie aus. ", + "Diesem Impfschaden kamen Forschende vergleichsweise leicht auf die Schliche, weil die Betroffenen ähnliche genetische Faktoren aufwiesen, die die Krankheit begünstigten. Die schwere Nebenwirkung des Impfstoffs war auch deshalb leichter nachzuweisen, weil zur fraglichen Zeit nur wenige Menschen mit H1N1 infiziert waren.", + "Im Fall von COVID-19 hingegen wurden Millionen Menschen geimpft, während Millionen gleichzeitig infiziert waren. Aus diesem Grund könne in den seltensten Fällen sicher gesagt werden, so Falk, ob die als Post-Vac-Patienten behandelten Personen nicht auch zusätzlich eine Infektion kurz vor oder nach der Impfung durchgemacht haben, möglicherweise ohne es selbst zu wissen.", + "Um die vielfältigen Symptome der Betroffenen sicher auf die Impfung zurückführen zu können, müsste ausgeschlossenen werden, dass sie zu irgendeinem Zeitpunkt mit SARS-CoV-2 infiziert waren. Falk sagt, das sei in den seltensten Fällen möglich." + ] + } + ] + } } } diff --git a/tests/resources/parser/test_data/de/DieWelt.json b/tests/resources/parser/test_data/de/DieWelt.json index fe55dca77..4058fc88b 100644 --- a/tests/resources/parser/test_data/de/DieWelt.json +++ b/tests/resources/parser/test_data/de/DieWelt.json @@ -11,6 +11,37 @@ "Konjunkturpolitik", "Wachstum", "Bruttoinlandsprodukt (BIP)" - ] + ], + "body": { + "summary": [ + " Die deutsche Wirtschaft stagniert, während andere europäische Volkswirtschaften im ersten Quartal positiv überraschen. Experten prognostizieren, dass es keine Erholung geben wird. Deutschland ist das Schlusslicht in Europa – und die Rezession kommt immer näher. " + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Die Euphorie hielt nicht mal zwei Tage. Am Mittwochnachmittag hatte die Bundesregierung noch mit großem Tamtam die Wachstumsprognosen für das laufende Jahr mal eben auf 0,4 Prozent verdoppelt. Am Freitagvormittag war es mit dem Optimismus wieder vorbei.", + "Das Statistische Bundesamt musste verkünden, dass die deutsche Wirtschaft im ersten Quartal stagnierte. Zwischen Januar und März ist das Bruttoinlandsprodukt lediglich um 0,047 Prozent gestiegen. Experten hatten mit einem Zuwachs von 0,2 Prozent gerechnet. Schlimmer noch: Für das vierte Quartal 2022 wurde die Wirtschaftsleistung weiter gekürzt auf -0,5 Prozent von -0,4 Prozent. ", + "Ursprünglich hatte das Statistische Bundesamt auch mit einer Stagnation im Schlussquartal gerechnet und in Salami-Taktik immer weiter nach unten gekürzt. Insofern könnten auch die Zahlen für das erste Quartal nach unten revidiert werden. Und dann wäre Deutschland offiziell in einer Rezession, die laut Definition nach zwei Minusquartalen in Folge festgestellt wird.", + "„Wo ist der Wumms?“, fragt Alexander Krüger, Chefökonom beim Bankhaus Hauck Aufhäuser Lampe angesichts der veröffentlichten Zahlen. „Ein dynamischer Aufschwung ist weiter nicht in Sicht.“ Insbesondere der Vergleich mit den anderen großen Volkswirtschaften in Europa ist ernüchternd. ", + "Spanien und Italien überraschten im ersten Quartal positiv. Deren Wirtschaftsleistung ist um jeweils 0,5 Prozent expandiert, Frankreich hat mit einem Zuwachs von 0,2 Prozent solide geliefert. Die Wirtschaft der Euro-Zone insgesamt ist trotz der Schwäche hierzulande um 0,1 Prozent gewachsen. Deutschland ist in Europa inzwischen wieder Schlusslicht. ", + "Das ist auch insofern bemerkenswert, als die deutsche Ökonomie bereits im vierten Quartal im Vergleich zu den anderen Volkwirtschaften der Euro-Zone überdurchschnittlich stark geschrumpft war. Damit liegt die Wirtschaftsleistung hierzulande leicht unter dem Vor-Corona-Niveau. Unter den großen Volkswirtschaften ist das lediglich noch bei Spanien der Fall. In Italien liegt das BIP 2,4 Prozent über dem Niveau von Ende 2019, in Frankreich 1,4 Prozent darüber und für die gesamte Euro-Zone sogar 2,5 Prozent höher." + ] + }, + { + "headline": [ + "Privater Konsum wird sich nicht schnell genug erholen" + ], + "paragraphs": [ + "Und Deutschland dürfte weiter zurückfallen. Die Deutsche Bank fühlt sich nach den Zahlen zum ersten Quartal in ihrer Prognose bestätigt, dass die deutsche Wirtschaft im Gesamtjahr 2023 ein Nullwachstum hinlegen wird. Deutschbanker Stefan Schneider rechnet damit, dass sich die Industrieproduktion im Laufe des Jahres abschwächt und der Bau nach einer kleinen Jahresanfangskonjunktur ins Minus dreht. ", + "Gleichzeitig werde sich der schwache private Konsum nicht so schnell erholen, da die Inflation immer noch hoch ist und die Lohnerhöhungen noch kein ausreichendes Gegengewicht bieten. „Daher erwarten wir weiterhin eine flache Erholung, die durch die hohe Inflation, die erwartete US-Rezession im zweiten Halbjahr und die zunehmenden Bremseffekte der jüngsten und weiteren Zinserhöhungen der EZB belastet wird“, schreibt Schneider.", + "Auch Lampe-Banker Krüger macht auf Moll. Nach seinen Berechnungen bräuchte es von 2024–26 Zuwächse von etwa 2,5 Prozent pro Jahr, damit das BIP seinen Vor-Corona-Pfad erreicht. „Dass das Potenzialwachstum von rund 1,2 Prozent aber länger um das Doppelte übertroffen wird, halten wir wegen bestehender Strukturschwächen für wenig wahrscheinlich“, so Krüger.", + "Deutschland ist damit so etwas wie der kranke Mann in Europa. Die relative Wachstumsschwäche ist auch deshalb überraschend, weil auch andere Ökonomien der Euro-Zone die Inflation zu spüren bekommen und unter Konsumzurückhaltung leiden. Aber offensichtlich existieren dort noch andere Wachstumstreiber, die dazu führen, dass deren Ökonomien Deutschland enteilen.", + "Es gibt einen kleinen Trost für die schwachen BIP-Zahlen des ersten Quartals. In Irland ist die Wirtschaftsleistung zwischen Januar und April um 2,7 Prozent gegenüber dem Vorquartal eingekracht. Allerdings ist die irische Ökonomie von Hause aus volatil. Im Schlussquartal 2022 war sie um 0,3 Prozent expandiert. Und für das laufende Jahr rechnen die Experten mit einem BIP-Zuwachs von 3,2 Prozent. So optimistisch ist noch nicht mal der deutsche Wirtschaftsminister mit seiner Vorhersage von 0,4 Prozent.", + "„Alles auf Aktien“ ist der tägliche Börsen-Shot aus der WELT-Wirtschaftsredaktion. Jeden Morgen ab 7 Uhr mit unseren Finanzjournalisten. Für Börsenkenner und -einsteiger. Abonnieren Sie den Podcast bei Spotify, Apple Podcast, Amazon Music und Deezer. Oder direkt per RSS-Feed." + ] + } + ] + } } } diff --git a/tests/resources/parser/test_data/de/DieZeit.json b/tests/resources/parser/test_data/de/DieZeit.json index 5c4912fc3..68e5f85c8 100644 --- a/tests/resources/parser/test_data/de/DieZeit.json +++ b/tests/resources/parser/test_data/de/DieZeit.json @@ -12,6 +12,30 @@ "Real Madrid", "Partizan Belgrad", "Massenschlägerei" - ] + ], + "body": { + "summary": [], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Nach der Massenschlägerei beim Euroleague-Spiel zwischen Real Madrid und Partizan Belgrad hat ein Disziplinarrichter der kontinentalen Basketball-Liga strenge Sanktionen festgesetzt. Beide Clubs müssen ein Strafgeld von je 50.000 Euro zahlen. Vier Spieler wurden mit Sperren belegt.", + "Am härtesten traf es Guershon Yabusele von Real Madrid. Er hatte seinen Gegenspieler Dante Exum zu Boden geworfen und muss die nächsten fünf Spiele zuschauen. Kevin Punter - ebenfalls von den Königlichen - erhielt eine Sperre von zwei Spielen. Bei Partizan müssen Gabriel Deck und Matthias Lessort je ein Spiel aussetzen. Rechtsmittel gegen die Entscheidung wurden nicht zugelassen.", + "Der spanische Basketball-Star Sergio Llull bat unterdessen um Entschuldigung. «Was letzte Nacht passiert ist, sollte niemals auf einem Basketballplatz passieren», twitterte der 35 Jahre alte Aufbauspieler und Kapitän von Real. «Ich übernehme die Verantwortung für dieses harte Foul, das das nachfolgende Desaster auslöste. Ich entschuldige mich bei allen Basketballfans.»", + "Nach einem harten Foul von Llull 100 Sekunden vor Schluss waren Profis beider Teams auf dem Parkett aneinander geraten, es kam zu Schlägen. Yabusele schleuderte Exum derart heftig zu Boden, dass er sich spanischen Medienberichten zufolge am Fuß verletzte. Profis der Mannschaften mussten von Außenstehenden zurückgehalten werden." + ] + }, + { + "headline": [ + "Disqualifizierende Fouls gegen mehr als 20 Spieler" + ], + "paragraphs": [ + "Die Partie war dann beim Stand von 95:80 für Partizan abgebrochen und für die Gäste gewertet worden, weil keine der beiden Mannschaften mehr über die notwendige Anzahl von zwei Spielern für die Fortsetzung verfügte. Die Schiedsrichter sprachen gegen mehr als 20 Spieler disqualifizierende Fouls aus. Partizan führt in der Viertelfinal-Serie mit 2:0. Das Team, das zuerst drei Spiele gewinnt, kommt weiter.", + "Die Euroleague verurteilte die Geschehnisse in einer Mitteilung scharf. Sie verstießen gegen die Werte des Respekts, für die die Liga, die Clubs und der Basketball stünden.", + "© dpa-infocom, dpa:230428-99-483045/5" + ] + } + ] + } } } diff --git a/tests/resources/parser/test_data/de/FAZ.json b/tests/resources/parser/test_data/de/FAZ.json index e882235ec..6f06a8114 100644 --- a/tests/resources/parser/test_data/de/FAZ.json +++ b/tests/resources/parser/test_data/de/FAZ.json @@ -13,6 +13,43 @@ "Deutschlandticket", "Preissturz", "Pendler" - ] + ], + "body": { + "summary": [ + "\t\t\tAlles wird teurer, nur nicht der ÖPNV. Allein der Rhein-Main-Verkehrsverbund hat mehr als 120.000 Deutschlandtickets verkauft - mehr als ein Drittel davon an Kunden, die bislang selten oder nie Bus oder Bahn fahren.\n\t\t" + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Das von Montag an gültige Deutschlandticket für 49 Euro wird zwar nicht annähernd so erfolgreich wie das 9-Euro-Ticket im vergangenen Sommer, die sich abzeichnenden Verkaufszahlen sind allerdings dennoch beeindruckend. Mehr als jeder zehnte Erwachsene in Deutschland hat einer Umfrage zufolge bereits das Deutschlandticket erworben.", + "Die Deutsche Bahn rechnet damit, dass mit dem Ticket sechs Millionen neue Abo-Kunden gewonnen werden. Hinzu kämen rund elf Millionen Menschen, die bereits ein Abonnement hätten und nun voraussichtlich auf das 49-Euro-Ticket umsteigen würden. Schlussendlich würde dann jeder fünfte Bundesbürger das neue Ticket nutzen.", + "Allein der Rhein-Main-Verkehrsverbund (RMV) und seine Vertriebspartner haben seit Verkaufsbeginn am 3. April mehr als 120.000 Deutschlandtickets veräußert. Gut die Hälfte davon wurde nach RMV-Angaben von Menschen erworben, die bisher noch keine Stammkunden waren. Mehr als 21.000 Tickets gingen an Arbeitnehmer, die das 49-Euro-Ticket als Jobticket bekommen." + ] + }, + { + "headline": [ + "855 Euro pro Jahr günstiger" + ], + "paragraphs": [ + "Bei einer Marktbefragung des RMV hat sich gezeigt, dass 24 Prozent der bisherigen Seltenfahrer das Deutschlandticket erwerben wollen, darüber hinaus noch 15 Prozent derer, die bisher überhaupt nicht Bus oder Bahn gefahren sind. Der Kostendeckungsgrad des RMV – bisher mehr als 50 Prozent – könnte als Folge sinkender Einnahmen dennoch zurückgehen.", + "Für einen langfristigen Erfolg des neuen Angebots sind nach Ansicht von Geschäftsführer Ringat jedenfalls eine nachhaltige Finanzierung des ÖPNV und ein verbessertes Angebot unabdingbar. Zum einen müsse der Schienenverkehr modernisiert und ausgebaut werden, zum anderen könnten insbesondere im ländlichen Raum beispielsweise mit der Reaktivierung stillgelegter Strecken und On-Demand-Busangeboten noch mehr Kunden gewonnen werden.", + "Mit dem Deutschlandticket werde die Vision seiner Partei von einem günstigen Bürgerticket für Busse und Bahnen Wirklichkeit, äußerte der Fraktionsvorsitzende der Grünen im Landtag, Mathias Wagner. Pendler sparten durch das Ticket in Zeiten hoher Inflation enorm viel Geld, und für Autofahrer werde es deutlich attraktiver, auf den öffentlichen Nahverkehr umzusteigen. Wer mit dem Regionalverkehr regelmäßig zwischen Wiesbaden und Frankfurt unterwegs sei, zahle aktuell 1446 Euro für seine monatlich bezahlte Jahreskarte. Mit der Umstellung auf das Deutschlandticket ließen sich 855 Euro sparen, das seien etwa 60 Prozent der Fahrtkosten. Zudem sei das neue Ticket noch in ganz Deutschland gültig." + ] + }, + { + "headline": [ + "49-Euro-Ticket gilt nicht im Fernverkehr" + ], + "paragraphs": [ + "Das Urteil der AfD im Landtag fällt eher kritisch aus. Zwar vereinfache das 49-Euro-Ticket die Tarifstruktur und bedeute für hessische ÖPNV-Pendler eine Ersparnis. Was den Bürgern auf der einen Seite durch staatliche Subventionen gegeben werde, werde ihnen als Steuerzahler aber auf der anderen Seite wieder genommen, sagte der AfD-Abgeordnete Klaus Gagel. Die ausbleibenden Fahrgeldeinnahmen durch diese Art der Vergünstigung fehlten für Investitionen.", + "Das Deutschlandticket gilt vom 1. Mai an bundesweit im Nah- und Regionalverkehr. Für die Fernzüge wie den ICE, EC oder IC hingegen ist weiterhin ein eigenes Ticket erforderlich. Die neue Monatskarte gibt es an Schaltern der Deutschen Bahn und in den RMV-Vertriebsstellen auch in physischer Form als Chipkarte. Das Handy-Ticket (etwa über die App RMVgo) kann nach dem Erwerb direkt für Fahrten genutzt werden.", + "Der am 1. April begonnene Vorverkauf war daher vor allem für Kunden relevant, die das Deutschlandticket auf einer Chipkarte bevorzugen, denn bei der Bestellung in einer Vertriebsstelle gilt eine Bestellfrist bis zum 10. und beim E-Ticket-Kauf online (auf rmv.de) bis zum 20. des Monats vor Gültigkeitsbeginn. Das mit dem Kauf abgeschlossene Abonnement ist bis zum 10. eines Monats zum Ende des jeweiligen Monats schriftlich oder in der App kündbar und kann dann jederzeit wieder aufgenommen werden.", + "In Hessen soll es von August an einen zusätzlichen Rabatt für Geringverdiener geben. Personen, die Wohngeld, Bürgergeld oder Sozialgeld empfangen, können das Deutschlandticket dann für nur 31 Euro erwerben. Studenten in Hessen werden ein Deutschlandticket voraussichtlich vom Wintersemester an mit dem Preis ihres bisherigen Semestertickets verrechnen können. Eine landesweite Regelung wird dadurch erschwert, dass bisher jede Hochschule und Universität eigenständig die Tarife ihrer Semestertickets ausgehandelt hat. Diese können, je nach den Anforderungen und Bedingungen an den jeweiligen Standorten, recht unterschiedlich sein.", + "Die Verkehrsminister der Länder haben sich grundsätzlich darauf geeinigt, dass Studenten lediglich die Differenz zwischen dem Preis ihres Semestertickets und jenem des Deutschlandtickets zahlen müssen. Das wären im bundesweiten Durchschnitt etwa 25 Euro monatlich." + ] + } + ] + } } } diff --git a/tests/resources/parser/test_data/de/Focus.json b/tests/resources/parser/test_data/de/Focus.json index 3d9bf2861..72c3ad0d5 100644 --- a/tests/resources/parser/test_data/de/Focus.json +++ b/tests/resources/parser/test_data/de/Focus.json @@ -16,6 +16,52 @@ "Kalender", "Death Metal", "Jedi" - ] + ], + "body": { + "summary": [ + "Bald heißt es wieder „May the 4th be with you“! Lego wartet zum Star-Wars-Tag am 4. Mai schon im Vorfeld mit zahlreichen Angeboten auf, die sich vor allem an erwachsene Fans der Science-Fiction-Saga richten. Neben neuen Modellen gibt es im Online-Shop von Lego mehrere Gratiszugaben und sogar ein Gewinnspiel zu entdecken." + ], + "sections": [ + { + "headline": [ + "Startet am 1. Mai: Der „Star Wars Day“ bei Lego" + ], + "paragraphs": [ + "Viele Lego-Fans haben sich bereits den 1. Mai dick im Kalender angestrichen. Nicht etwa, weil das ein bundesweiter Feiertag ist, sondern vielmehr das Startdatum für \n \n \n Legos alljährlichen Star Wars Day. Der dänische Spielzeug-Gigant befeuert den nach eigenen Angaben „wichtigsten Termin in der Galaxis“ mit einer Reihe von Angeboten: Angefangen beim Verkaufsstart des neuen Klemmbaustein-Sets \n \n \n X-Wing Starfighter aus der „Ultimate Collector Series“ über Gratis-Beigaben bis hin zu doppelten VIP-Punkten auf ausgewählte Produkte.", + "Wirklich profitieren können davon aktuell nur \n \n \n VIP-Mitglieder, was allerdings mit wenigen Klicks erledigt ist (mehr über das kostenlose Treueprogramm erfahren Sie am Ende des Artikels). Denn neben den besagten Punkten, die immerhin bis zu zehn Prozent des Warenwerts ausmachen, dürfen sie sich ab 85 Euro Bestellwert über ein exklusives Geschenk in Form einer Sammelmünze mit Todesstern-Prägung freuen. Zudem findet ein Gewinnspiel für VIPs statt, bei dem es unter anderem einen R2-D2 aus Sterlingsilber sowie einen signierten Sternzerstörer zu gewinnen gibt.", + "Die \n \n \n Lego-Aktion läuft von Montag, den 1. Mai bis einschließlich Sonntag, den 7. Mai 2023 bzw. solange der Vorrat bei den Gratiszugaben reicht. Erfahrungsgemäß können diese ziemlich schnell vergriffen sein, ungeachtet des zum Teil hohen Mindestbestellwerts und der allgemein gesalzenen Preise. Da die sogenannten GWPs (Gift with Purchase) oftmals limitiert sind und seitens Lego nicht direkt verkauft werden, erfreuen sie sich vor allem bei Sammlern großer Beliebtheit.", + "Wer den Star-Wars-Tag am 4. Mai noch nicht kennt: „May the fourth be with you!“ ist ein Wortspiel zum berühmten Zitat aus den Star-Wars-Filmen „Möge die Macht mit Dir sein!“ oder eben im Englischen „May the force be with you“." + ] + }, + { + "headline": [ + "Neues Lego-Set startet durch !function(){var t=window.addEventListener?\"addEventListener\":\"attachEvent\";(0,window[t])(\"attachEvent\"==t?\"onmessage\":\"message\",function(t){if(\"string\"==typeof t.data&&t.data.indexOf(\"documentHeight:\")>-1){var e=t.data.split(\"documentHeight:\")[1],n=(e=t.data.split(\"documentHeight:\")[1],e=parseInt(e)+30,function(t){for(var e=document.getElementsByTagName(\"iframe\"),n=0,a=e.length;n-1){var e=t.data.split(\"documentHeight:\")[1],n=(e=t.data.split(\"documentHeight:\")[1],e=parseInt(e)+30,function(t){for(var e=document.getElementsByTagName(\"iframe\"),n=0,a=e.length;n Date: Mon, 12 Feb 2024 14:22:50 +0100 Subject: [PATCH 03/13] Rename `transformation` -> `deserialization_functions` for extraction encoder --- tests/utility.py | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/tests/utility.py b/tests/utility.py index 0e7ceba12..79b62bdf6 100644 --- a/tests/utility.py +++ b/tests/utility.py @@ -1,7 +1,6 @@ import datetime import gzip import json -from abc import ABC from dataclasses import dataclass from pathlib import Path from typing import Any, Callable, Dict, Generic, Optional, Type, TypeVar @@ -95,27 +94,23 @@ def default(self, obj: object): return json.JSONEncoder.default(self, obj) -class CustomDecoder(json.JSONDecoder, ABC): - transformations: Dict[str, Callable[[Any], Any]] +class ExtractionDecoder(json.JSONDecoder): + deserialization_functions: Dict[str, Callable[[Any], Any]] = { + "crawl_date": datetime.datetime.fromisoformat, + "publishing_date": datetime.datetime.fromisoformat, + "body": ArticleBody.deserialize, + } def __init__(self, *args, **kwargs): json.JSONDecoder.__init__(self, object_hook=self.object_hook, *args, **kwargs) def object_hook(self, obj_dict): - for key, transformation in self.transformations.items(): + for key, deserialization_function in self.deserialization_functions.items(): if (serialized_value := obj_dict.get(key)) is not None: - obj_dict[key] = transformation(serialized_value) + obj_dict[key] = deserialization_function(serialized_value) return obj_dict -class ExtractionDecoder(CustomDecoder): - transformations: Dict[str, Callable[[Any], Any]] = { - "crawl_date": lambda timestamp: datetime.datetime.fromisoformat(timestamp), - "publishing_date": lambda timestamp: datetime.datetime.fromisoformat(timestamp), - "body": lambda body: ArticleBody.deserialize(body), - } - - @dataclass class JSONFileWithExtractionDecoderEncoder(JSONFile[_T]): """Custom JSONFile using default ExtractionEncoder/ExtractionDecoder""" From 63a462d059b9120158f1a2ba9393f34fa80e3cbc Mon Sep 17 00:00:00 2001 From: Conrad Dobberstein <29147025+dobbersc@users.noreply.github.com> Date: Mon, 12 Feb 2024 14:23:52 +0100 Subject: [PATCH 04/13] Refactor `TextSequenceTree` (de)serialization from transformation dictionary to abstract functions --- src/fundus/parser/data.py | 70 ++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 41 deletions(-) diff --git a/src/fundus/parser/data.py b/src/fundus/parser/data.py index 0ee95c98d..543712ca5 100644 --- a/src/fundus/parser/data.py +++ b/src/fundus/parser/data.py @@ -1,9 +1,7 @@ -from abc import ABC +from abc import ABC, abstractmethod from dataclasses import dataclass, fields from typing import ( Any, - Callable, - ClassVar, Collection, Dict, Iterable, @@ -16,7 +14,7 @@ overload, ) -from typing_extensions import TypeAlias +from typing_extensions import Self, TypeAlias from fundus.logging import basic_logger @@ -202,24 +200,7 @@ def __eq__(self, other: object) -> bool: @dataclass class TextSequenceTree(ABC): - """Base class to traverse and build trees of TextSequence. - - The ClassVar __transformation__ is needed to serialize the tree. There must be an entry with type - Tuple[Callable, Callable] for each field with the first callable beeing the serialization and - the second the deserialization of that specific field. - - Examples: - >>> import datetime - >>> class Tree(TextSequenceTree): - >>> head: TextSequence - >>> tail: TextSequence - >>> - >>> __transformation__ = {"head": (list, TextSequence), "tail": (list, TextSequence)} - - - """ - - __transformation__: ClassVar[Dict[str, Tuple[Callable[[Any], Any], Callable[[Any], Any]]]] + """Base class to traverse and build trees of TextSequence.""" def as_text_sequence(self) -> TextSequence: texts = [text for tl in self.df_traversal() for text in tl] @@ -245,20 +226,14 @@ def recursion(o: object): for value in self: yield from recursion(value) + @abstractmethod def serialize(self) -> Dict[str, Any]: - serialized = {} - for field in fields(self): - name = field.name - serialized[name] = self.__transformation__[name][0](getattr(self, name)) - return serialized + pass @classmethod - def deserialize(cls, obj: Dict[str, Any]) -> "TextSequenceTree": - kwargs = {} - for name, value in obj.items(): - kwargs[name] = cls.__transformation__[name][1](value) - # noinspection PyArgumentList - return cls(**kwargs) + @abstractmethod + def deserialize(cls, serialized: Dict[str, Any]) -> Self: + pass def __iter__(self) -> Iterator[Any]: field_values = [getattr(self, f.name) for f in fields(self)] @@ -276,7 +251,15 @@ class ArticleSection(TextSequenceTree): headline: TextSequence paragraphs: TextSequence - __transformation__ = {"headline": (list, TextSequence), "paragraphs": (list, TextSequence)} + def serialize(self) -> Dict[str, Any]: + return { + "headline": list(self.headline), + "paragraphs": list(self.paragraphs), + } + + @classmethod + def deserialize(cls, serialized: Dict[str, Any]) -> Self: + return cls(headline=TextSequence(serialized["headline"]), paragraphs=TextSequence(serialized["paragraphs"])) @dataclass @@ -284,10 +267,15 @@ class ArticleBody(TextSequenceTree): summary: TextSequence sections: List[ArticleSection] - __transformation__ = { - "summary": (list, TextSequence), - "sections": ( - lambda sections: [section.serialize() for section in sections], - lambda sections: [ArticleSection.deserialize(section) for section in sections], - ), - } + def serialize(self) -> Dict[str, Any]: + return { + "summary": list(self.summary), + "sections": [section.serialize() for section in self.sections], + } + + @classmethod + def deserialize(cls, serialized: Dict[str, Any]) -> Self: + return cls( + summary=TextSequence(serialized["summary"]), + sections=[ArticleSection.deserialize(section) for section in serialized["sections"]], + ) From 493b734b269965c44810eb6173dbb8d9216e22e5 Mon Sep 17 00:00:00 2001 From: Max Dallabetta Date: Mon, 12 Feb 2024 16:39:18 +0100 Subject: [PATCH 05/13] sort parser test case attributes --- scripts/generate_parser_test_files.py | 2 +- tests/resources/parser/test_data/at/ORF.json | 6 +- .../parser/test_data/de/BerlinerZeitung.json | 14 ++-- tests/resources/parser/test_data/de/Bild.json | 26 +++---- .../parser/test_data/de/BusinessInsider.json | 32 +++++++++ tests/resources/parser/test_data/de/DW.json | 36 +++++----- .../parser/test_data/de/DieWelt.json | 20 +++--- .../parser/test_data/de/DieZeit.json | 22 +++--- tests/resources/parser/test_data/de/FAZ.json | 24 +++---- .../resources/parser/test_data/de/Focus.json | 30 ++++---- tests/resources/parser/test_data/de/MDR.json | 30 ++++---- .../resources/parser/test_data/de/Merkur.json | 6 +- tests/resources/parser/test_data/de/NDR.json | 30 ++++---- tests/resources/parser/test_data/de/NTV.json | 18 ++--- tests/resources/parser/test_data/de/SZ.json | 27 +++++++ .../parser/test_data/de/SpiegelOnline.json | 18 ++--- .../resources/parser/test_data/de/Stern.json | 40 +++++------ .../parser/test_data/de/Tagesschau.json | 16 ++--- tests/resources/parser/test_data/de/Taz.json | 24 +++---- tests/resources/parser/test_data/de/WAZ.json | 24 +++---- .../parser/test_data/fr/LeMonde.json | 24 +++---- .../parser/test_data/na/TheNamibian.json | 6 +- .../parser/test_data/uk/TheGuardian.json | 22 +++--- .../parser/test_data/uk/TheIndependent.json | 20 +++--- .../parser/test_data/uk/TheTelegraph.json | 26 +++---- .../resources/parser/test_data/uk/iNews.json | 22 +++--- .../resources/parser/test_data/us/APNews.json | 62 ++++++++-------- tests/resources/parser/test_data/us/CNBC.json | 27 +++---- .../parser/test_data/us/FoxNews.json | 22 +++--- .../parser/test_data/us/FreeBeacon.json | 34 ++++----- .../parser/test_data/us/LATimes.json | 6 +- .../parser/test_data/us/OccupyDemocrats.json | 22 +++--- .../parser/test_data/us/Reuters.json | 18 ++--- .../parser/test_data/us/TheGatewayPundit.json | 6 +- .../parser/test_data/us/TheIntercept.json | 14 ++-- .../parser/test_data/us/TheNation.json | 72 +++++++++++++++++++ .../parser/test_data/us/TheNewYorker.json | 20 +++--- .../parser/test_data/us/WashingtonTimes.json | 6 +- .../parser/test_data/us/WorldTruth.json | 6 +- 39 files changed, 501 insertions(+), 379 deletions(-) diff --git a/scripts/generate_parser_test_files.py b/scripts/generate_parser_test_files.py index 63037deb4..3e1545b44 100644 --- a/scripts/generate_parser_test_files.py +++ b/scripts/generate_parser_test_files.py @@ -51,7 +51,7 @@ def get_test_article(enum: PublisherEnum) -> Optional[Article]: args = parser.parse_args() # sort args.attributes for consistency - args.attributes = list(sorted(args.attributes)) or attributes_required_to_cover + args.attributes = sorted(set(args.attributes) or attributes_required_to_cover) basic_logger.setLevel(WARN) diff --git a/tests/resources/parser/test_data/at/ORF.json b/tests/resources/parser/test_data/at/ORF.json index 76cad7bfd..955b1af85 100644 --- a/tests/resources/parser/test_data/at/ORF.json +++ b/tests/resources/parser/test_data/at/ORF.json @@ -3,8 +3,6 @@ "authors": [ "ORF.at" ], - "publishing_date": "2023-04-28 18:03:46.463000+00:00", - "title": "Mädchen bei Straßenbahnunfall in Wien verletzt", "body": { "summary": [], "sections": [ @@ -16,6 +14,8 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 18:03:46.463000+00:00", + "title": "Mädchen bei Straßenbahnunfall in Wien verletzt" } } diff --git a/tests/resources/parser/test_data/de/BerlinerZeitung.json b/tests/resources/parser/test_data/de/BerlinerZeitung.json index b405ec7fe..a5a0bdf4e 100644 --- a/tests/resources/parser/test_data/de/BerlinerZeitung.json +++ b/tests/resources/parser/test_data/de/BerlinerZeitung.json @@ -3,12 +3,6 @@ "authors": [ "AFP" ], - "publishing_date": "2023-04-28 17:52:31.847000+00:00", - "title": "550 Kinder gezeugt: Gericht stoppt übereifrigen Samenspender", - "topics": [ - "News", - "Niederlande" - ], "body": { "summary": [ "Nach der Zeugung von mindestens 550 Kindern hat ein niederländisches Gericht einen übereifrigen Samenspender gestoppt. Das Gericht untersagte dem Mann am Freitag jede weitere Samenspende. Bei einem Verstoß muss er 100.000 Euro Strafe zahlen. Eine Frau, die durch eine Samenspende des Mannes ein Kind bekam, und die Stiftung Donorkind hatten den 41-Jährigen verklagt. Weil er in Online-Netzwerken weiter seine Dienste anbot, wurde er nun im Eilverfahren verurteilt." @@ -59,6 +53,12 @@ "paragraphs": [] } ] - } + }, + "publishing_date": "2023-04-28 17:52:31.847000+00:00", + "title": "550 Kinder gezeugt: Gericht stoppt übereifrigen Samenspender", + "topics": [ + "News", + "Niederlande" + ] } } diff --git a/tests/resources/parser/test_data/de/Bild.json b/tests/resources/parser/test_data/de/Bild.json index dbc72e90d..6ba73548b 100644 --- a/tests/resources/parser/test_data/de/Bild.json +++ b/tests/resources/parser/test_data/de/Bild.json @@ -3,18 +3,6 @@ "authors": [ "JÖRG ZSCHOCHE" ], - "publishing_date": "2023-05-15 11:52:09.860000+00:00", - "title": "Bubi-Bomber wieder da: Thioune fordert Geduld mit Niemiec", - "topics": [ - "Fortuna Düsseldorf", - "zweite Bundesliga", - "aufstieg", - "Jörg Zschoche", - "Thioune Daniel", - "Saison 2022-2023", - "Sport – Leuchtturm Essen", - "Niemiec Jona" - ], "body": { "summary": [ "Es war bereits der zwölfte Einsatz in der 2. Bundesliga von Fortuna Düsseldorfs Bubi Jona Niemiec (21). Kaum nach 67 Minuten eingewechselt, scheiterte der Stürmer nur an der Latte. Doch war er beim 0:0 auf Pauli eine Bereicherung." @@ -30,6 +18,18 @@ ] } ] - } + }, + "publishing_date": "2023-05-15 11:52:09.860000+00:00", + "title": "Bubi-Bomber wieder da: Thioune fordert Geduld mit Niemiec", + "topics": [ + "Fortuna Düsseldorf", + "zweite Bundesliga", + "aufstieg", + "Jörg Zschoche", + "Thioune Daniel", + "Saison 2022-2023", + "Sport – Leuchtturm Essen", + "Niemiec Jona" + ] } } diff --git a/tests/resources/parser/test_data/de/BusinessInsider.json b/tests/resources/parser/test_data/de/BusinessInsider.json index 229e73655..811ec6369 100644 --- a/tests/resources/parser/test_data/de/BusinessInsider.json +++ b/tests/resources/parser/test_data/de/BusinessInsider.json @@ -3,6 +3,38 @@ "authors": [ "Matthew Loh" ], + "body": { + "summary": [ + "Evergrande, einer der größten Immobilienentwickler Chinas, ist mit 300 Milliarden Dollar (277 Milliarden Euro) verschuldet.", + "Das ist die größte Schuldenlast, die ein Unternehmen derzeit weltweit hat.", + "Analysten befürchten, dass der Zusammenbruch von Evergrande Schockwellen durch die chinesische Wirtschaft schicken würde." + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Evergrande, einst der zweitgrößte Immobilienentwickler Chinas nach Umsatz, wird am Montag auf Anordnung eines Hongkonger Gerichts liquidiert.", + "Die Entscheidung markiert den Abschluss einer zweijährigen Krise des in Shenzhen ansässigen Bauträgers, der im September 2021 signalisierte, dass er Kredite in Höhe von 300 Milliarden Dollar (277 Milliarden Euro) an Hunderte von Banken und Finanzunternehmen nicht mehr zurückzahlen könne.", + "Analysten befürchten seit langem, dass der Zusammenbruch des umkämpften Immobiliengiganten Schockwellen über Chinas bereits ins Stocken geratene Wirtschaft aussenden und möglicherweise sogar ausländische Firmen destabilisieren würde. Experten sprachen damals von Chinas „Lehman Brothers Moment“.", + "Um euch das Ausmaß des ehemaligen chinesischen Immobilienlieblings zu verdeutlichen, haben wir einige Statistiken und Vergleiche zusammengestellt, die das Ganze ins rechte Licht rücken." + ] + }, + { + "headline": [ + "Statistiken, die die enorme Größe von Evergrande, Chinas sterbendem Immobilienriesen, verdeutlichen" + ], + "paragraphs": [ + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r" + ] + } + ] + }, "publishing_date": "2024-01-29 19:00:45+00:00", "title": "Wie groß ist Evergrande, Chinas strauchelnder Immobilienriese?", "topics": [ diff --git a/tests/resources/parser/test_data/de/DW.json b/tests/resources/parser/test_data/de/DW.json index dcbaa6f7c..b516edebd 100644 --- a/tests/resources/parser/test_data/de/DW.json +++ b/tests/resources/parser/test_data/de/DW.json @@ -3,16 +3,6 @@ "authors": [ "Roman Goncharenko" ], - "publishing_date": "2023-04-28 00:00:00", - "title": "Ukrainische Gegenoffensive: Ziele, Chancen, Risiken", - "topics": [ - "Ukrainekrieg", - "Ukraine", - "Russland", - "Bachmut", - "Waffenlieferungen", - "Gegenoffensive" - ], "body": { "summary": [ "Die Ukraine bereitet sich auf eine womöglich entscheidende Gegenoffensive vor, um die von Russland besetzten Gebiete zu befreien. Je länger Kiew wartet, desto besser scheinen seine Chancen. " @@ -65,19 +55,23 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 00:00:00", + "title": "Ukrainische Gegenoffensive: Ziele, Chancen, Risiken", + "topics": [ + "Ukrainekrieg", + "Ukraine", + "Russland", + "Bachmut", + "Waffenlieferungen", + "Gegenoffensive" + ] }, "V2": { "authors": [ "Julia Vergin", "Clare Roth" ], - "publishing_date": "2023-06-13 12:15:32.158000+00:00", - "title": "Post-Vac-Syndrom nach COVID-19-Impfung: Was wissen wir? ", - "topics": [ - "Long COVID", - "Coronavirus" - ], "body": { "summary": [ "Müdigkeit und Muskelschmerzen: Jede Impfung kann Nebenwirkungen haben, auch die gegen COVID-19. Doch es ist sehr schwer das sogenannte Post-Vac-Syndrom zu diagnostizieren. Was wissen wir über diese Impfschäden? " @@ -136,6 +130,12 @@ ] } ] - } + }, + "publishing_date": "2023-06-13 12:15:32.158000+00:00", + "title": "Post-Vac-Syndrom nach COVID-19-Impfung: Was wissen wir? ", + "topics": [ + "Long COVID", + "Coronavirus" + ] } } diff --git a/tests/resources/parser/test_data/de/DieWelt.json b/tests/resources/parser/test_data/de/DieWelt.json index 4058fc88b..f180ad2d7 100644 --- a/tests/resources/parser/test_data/de/DieWelt.json +++ b/tests/resources/parser/test_data/de/DieWelt.json @@ -3,15 +3,6 @@ "authors": [ "Holger Zschäpitz" ], - "publishing_date": "2023-04-28 18:03:06+00:00", - "title": "BIP: Diese Grafiken zeigen, wie schlecht es um Deutschlands Wirtschaft steht", - "topics": [ - "Zschaepitz-Holger", - "Rezession", - "Konjunkturpolitik", - "Wachstum", - "Bruttoinlandsprodukt (BIP)" - ], "body": { "summary": [ " Die deutsche Wirtschaft stagniert, während andere europäische Volkswirtschaften im ersten Quartal positiv überraschen. Experten prognostizieren, dass es keine Erholung geben wird. Deutschland ist das Schlusslicht in Europa – und die Rezession kommt immer näher. " @@ -42,6 +33,15 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 18:03:06+00:00", + "title": "BIP: Diese Grafiken zeigen, wie schlecht es um Deutschlands Wirtschaft steht", + "topics": [ + "Zschaepitz-Holger", + "Rezession", + "Konjunkturpolitik", + "Wachstum", + "Bruttoinlandsprodukt (BIP)" + ] } } diff --git a/tests/resources/parser/test_data/de/DieZeit.json b/tests/resources/parser/test_data/de/DieZeit.json index 68e5f85c8..b2f7ff55d 100644 --- a/tests/resources/parser/test_data/de/DieZeit.json +++ b/tests/resources/parser/test_data/de/DieZeit.json @@ -3,16 +3,6 @@ "authors": [ "dpa" ], - "publishing_date": "2023-04-28 20:22:00+02:00", - "title": "Basketball-Euroleague: Nach Massenschlägerei in Madrid: Sanktionen und Reue", - "topics": [ - "News", - "Basketball-Euroleague", - "Sergio Llull", - "Real Madrid", - "Partizan Belgrad", - "Massenschlägerei" - ], "body": { "summary": [], "sections": [ @@ -36,6 +26,16 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 20:22:00+02:00", + "title": "Basketball-Euroleague: Nach Massenschlägerei in Madrid: Sanktionen und Reue", + "topics": [ + "News", + "Basketball-Euroleague", + "Sergio Llull", + "Real Madrid", + "Partizan Belgrad", + "Massenschlägerei" + ] } } diff --git a/tests/resources/parser/test_data/de/FAZ.json b/tests/resources/parser/test_data/de/FAZ.json index 6f06a8114..a8de08ab8 100644 --- a/tests/resources/parser/test_data/de/FAZ.json +++ b/tests/resources/parser/test_data/de/FAZ.json @@ -3,17 +3,6 @@ "authors": [ "Ralf Euler" ], - "publishing_date": "2023-04-28 19:20:36+02:00", - "title": "49-Euro-Ticket: Pendler zahlen 60 Prozent weniger", - "topics": [ - "RMV", - "Rhein-Main-Verkehrsverbund", - "AfD", - "Deutsche Bahn", - "Deutschlandticket", - "Preissturz", - "Pendler" - ], "body": { "summary": [ "\t\t\tAlles wird teurer, nur nicht der ÖPNV. Allein der Rhein-Main-Verkehrsverbund hat mehr als 120.000 Deutschlandtickets verkauft - mehr als ein Drittel davon an Kunden, die bislang selten oder nie Bus oder Bahn fahren.\n\t\t" @@ -50,6 +39,17 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 19:20:36+02:00", + "title": "49-Euro-Ticket: Pendler zahlen 60 Prozent weniger", + "topics": [ + "RMV", + "Rhein-Main-Verkehrsverbund", + "AfD", + "Deutsche Bahn", + "Deutschlandticket", + "Preissturz", + "Pendler" + ] } } diff --git a/tests/resources/parser/test_data/de/Focus.json b/tests/resources/parser/test_data/de/Focus.json index 72c3ad0d5..f7ac6322a 100644 --- a/tests/resources/parser/test_data/de/Focus.json +++ b/tests/resources/parser/test_data/de/Focus.json @@ -3,20 +3,6 @@ "authors": [ "FOCUS online" ], - "publishing_date": "2023-04-28 17:25:31+00:00", - "title": "Lego feiert Star-Wars-Tag: Alle Angebote im Überblick", - "topics": [ - "Lego", - "Helm", - "Diorama", - "Prominenz", - "Star Wars Day", - "Rabatt", - "Provision", - "Kalender", - "Death Metal", - "Jedi" - ], "body": { "summary": [ "Bald heißt es wieder „May the 4th be with you“! Lego wartet zum Star-Wars-Tag am 4. Mai schon im Vorfeld mit zahlreichen Angeboten auf, die sich vor allem an erwachsene Fans der Science-Fiction-Saga richten. Neben neuen Modellen gibt es im Online-Shop von Lego mehrere Gratiszugaben und sogar ein Gewinnspiel zu entdecken." @@ -62,6 +48,20 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 17:25:31+00:00", + "title": "Lego feiert Star-Wars-Tag: Alle Angebote im Überblick", + "topics": [ + "Lego", + "Helm", + "Diorama", + "Prominenz", + "Star Wars Day", + "Rabatt", + "Provision", + "Kalender", + "Death Metal", + "Jedi" + ] } } diff --git a/tests/resources/parser/test_data/de/MDR.json b/tests/resources/parser/test_data/de/MDR.json index d83a8d40d..58d18090a 100644 --- a/tests/resources/parser/test_data/de/MDR.json +++ b/tests/resources/parser/test_data/de/MDR.json @@ -3,20 +3,6 @@ "authors": [ "David Straub" ], - "publishing_date": "2023-04-28 05:00:00+02:00", - "title": "Ist die Thüringer Bratwurst eine Illusion? Das harte Geschäft mit dem Tod", - "topics": [ - "Nachrichten", - "Fleisch", - "Schwein", - "Schlachtung", - "Landstolz", - "Schmalkalden", - "Holland-Moritz", - "Rinder", - "Grafik", - "Zahlen" - ], "body": { "summary": [ "Beim Fleischkonsum gehört Thüringen zu den Spitzenreitern - doch tatsächlich geschlachtet werden im Freistaat immer weniger Tiere. Naht das Ende der echten Thüringer Bratwurst? Zu Besuch beim mittelständischen Schlachtbetrieb \"Thüringer Landstolz\"." @@ -106,6 +92,20 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 05:00:00+02:00", + "title": "Ist die Thüringer Bratwurst eine Illusion? Das harte Geschäft mit dem Tod", + "topics": [ + "Nachrichten", + "Fleisch", + "Schwein", + "Schlachtung", + "Landstolz", + "Schmalkalden", + "Holland-Moritz", + "Rinder", + "Grafik", + "Zahlen" + ] } } diff --git a/tests/resources/parser/test_data/de/Merkur.json b/tests/resources/parser/test_data/de/Merkur.json index 3e58b3dcf..10f195183 100644 --- a/tests/resources/parser/test_data/de/Merkur.json +++ b/tests/resources/parser/test_data/de/Merkur.json @@ -3,8 +3,6 @@ "authors": [ "Nadja Zinsmeister" ], - "publishing_date": "2023-04-28 18:16:04+02:00", - "title": "Nostradamus-Vorhersage lässt Zweifel aufkommen: Ist König Charles III. gar nicht der richtige Thronfolger?", "body": { "summary": [ "In England findet bald die Krönungszeremonie von König Charles III. statt. Eine alte Prophezeiung behauptet, dass er schon bald wieder abdanken wird." @@ -35,6 +33,8 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 18:16:04+02:00", + "title": "Nostradamus-Vorhersage lässt Zweifel aufkommen: Ist König Charles III. gar nicht der richtige Thronfolger?" } } diff --git a/tests/resources/parser/test_data/de/NDR.json b/tests/resources/parser/test_data/de/NDR.json index 6774e0c9d..24253f953 100644 --- a/tests/resources/parser/test_data/de/NDR.json +++ b/tests/resources/parser/test_data/de/NDR.json @@ -3,20 +3,6 @@ "authors": [ "Oliver Kring" ], - "publishing_date": "2023-04-28 16:15:45.403000+02:00", - "title": "Einschlag in Elmshorn: Es war ein Meteorit ", - "topics": [ - "Meteorit", - "Elmshorn", - "Einschlag", - "Meteoritenregen", - "Wissenschaft", - "NDR", - "Norddeutscher Rundfunk", - "Norddeutschland", - "Radio", - "Fernsehen" - ], "body": { "summary": [ "Vor wenigen Tagen berichteten Anwohner in Elmshorn von einem Knall - das Dach eines Hauses wurde durchschlagen. Jetzt ist klar: Es waren Meteoriten, die über Elmshorn heruntergegangen sind." @@ -55,6 +41,20 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 16:15:45.403000+02:00", + "title": "Einschlag in Elmshorn: Es war ein Meteorit ", + "topics": [ + "Meteorit", + "Elmshorn", + "Einschlag", + "Meteoritenregen", + "Wissenschaft", + "NDR", + "Norddeutscher Rundfunk", + "Norddeutschland", + "Radio", + "Fernsehen" + ] } } diff --git a/tests/resources/parser/test_data/de/NTV.json b/tests/resources/parser/test_data/de/NTV.json index 12a037299..2fec83a46 100644 --- a/tests/resources/parser/test_data/de/NTV.json +++ b/tests/resources/parser/test_data/de/NTV.json @@ -3,14 +3,6 @@ "authors": [ "Juliane Rohr" ], - "publishing_date": "2023-04-28 18:11:01+02:00", - "title": "Judy Lybke, ganz und gar nicht eigenartig", - "topics": [ - "Leben", - "Kunst", - "Berlin", - "KunstKultur" - ], "body": { "summary": [], "sections": [ @@ -46,6 +38,14 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 18:11:01+02:00", + "title": "Judy Lybke, ganz und gar nicht eigenartig", + "topics": [ + "Leben", + "Kunst", + "Berlin", + "KunstKultur" + ] } } diff --git a/tests/resources/parser/test_data/de/SZ.json b/tests/resources/parser/test_data/de/SZ.json index b5bc19d80..767e4593f 100644 --- a/tests/resources/parser/test_data/de/SZ.json +++ b/tests/resources/parser/test_data/de/SZ.json @@ -3,6 +3,22 @@ "authors": [ "Lars Brunckhorst" ], + "body": { + "summary": [ + "Ob Radler oder Politiker - zwei Rankings lassen wieder tief blicken." + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Andere oder sich selbst mit anderen zu vergleichen, ist ein zutiefst menschliches Bedürfnis. Ob am Arbeitsplatz, in der Schule, im Sport oder bei Model-Casting-Shows - immer geht es darum: Wer ist schneller, größer, schöner, reicher oder geistreicher? Die Zahl der Rankings kennt keine Grenzen. Für alle, die von der Bundesligatabelle über die Forbes-Liste bis zu den Schlagern der Woche ein Faible für Hitlisten haben, waren die vergangenen Tage eine gute Zeit. Da verteilte zunächst der Allgemeine Deutsche Fahrradclub ADFC Noten an Deutschlands Städte und Gemeinden. Um es kurz machen: Das Münchner Umland - bei anderen Rankings wie Lebensqualität, Wirtschaftskraft und Immobilienpreisen sonst immer ganz vorne dabei - schneidet in puncto Fahrradfreundlichkeit eher nicht so gut ab. Allein Oberhaching schafft es mit einer 2,96 gerade noch aufs Treppchen. Grünwald dagegen: Mit einer 4,4 nahezu durchgefallen. Aber klar: Nirgendwo sonst ist die Sportwagen- und SUV-Dichte so groß.", + "An dieser Stelle soll aber die Rede sein von einer anderen Rangliste, wonach Marco Buschmann, der Bundesjustizminister von der FDP, der \"fleißigste deutsche Politiker\" ist, gefolgt von seiner weithin unbekannten Parteifreundin Bettina Stark-Watzinger (das ist die Bundesbildungsministerin) und - allerdings schon mit weitem Abstand - Außenministerin Annalena Baerbock von den Grünen. Bundeskanzler Olaf Scholz kommt dagegen, als erster SPDler, nur auf Platz 13 und Finanzminister Christian Lindner gar nur auf den 15. Platz. Ausgewertet wurden für die Erhebung sämtliche Aktivitäten aller Bundestagsabgeordneten, also Redezeiten, Anfragen, Anträge und dergleichen - Zwischenrufe und Handyzocken ausgenommen.", + "Das Ranking bricht nach Lindner ab, was rücksichtsvoll gegenüber den übrigen 721 Abgeordneten ist. Wer sich die Mühe machen will, kann aber selbst ausrechnen, auf welchen Plätzen etwa die Abgeordneten Florian Hahn, Anton Hofreiter und Gerold Otten gelandet sind, also jene drei, die in Berlin den Landkreis München vertreten. Investigativ, wie man uns kennt, haben wir nachgeschaut und siehe da: Grünen-Apologet Hofreiter ist, trotz oder gerade wegen seines Rauswurfs aus der ersten Reihe, mit gezählten 1922 Aktivitäten der unangefochtene Streber.", + "CSU-Mann Hahn kommt dagegen nur auf 257, aber der ist ja auch frisch verliebt. Damit ist Hahn aber immer noch weit fleißiger als drei andere Florians: etwa sein Parteifreund Florian Müller (52 Aktivitäten) und der Münchner Ex-Sozi Florian Post (74), vom rheinland-pfälzischen Florian Gerster (7!), dieser faulen Socke, ganz zu schweigen. Auf die 355 Aktivitäten von AfD-Mann Otten hätte man dagegen gerne verzichtet." + ] + } + ] + }, "publishing_date": "2023-04-28 19:50:30+02:00", "title": "Die Fleißigsten und Fahrradfreundlichsten im Landkreis München", "topics": [ @@ -17,6 +33,17 @@ "authors": [ "Süddeutsche Zeitung" ], + "body": { + "summary": [], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Nach Angaben chilenischer Medien ist der konservative Ex-Präsident Sebastian Piñera, 74, bei einem Hubschrauberunglück ums Leben gekommen. Wie die Zeitung La Nación am Dienstag unter Berufung auf diplomatische Kreise berichtete, stürzte der Helikopter in den Lago Ranco in der zentralchilenischen Region Los Ríos ab. Auch die chilenische Zeitung La Tercera berichtete kurz darauf vom Tod des Politikers, der Chile in zwei Amtszeiten von 2010 bis 2014 und von 2018 bis 2022 regiert hatte." + ] + } + ] + }, "publishing_date": "2024-02-06 21:19:20+01:00", "title": "Ex-Präsident stirbt bei Hubschrauberabsturz", "topics": [ diff --git a/tests/resources/parser/test_data/de/SpiegelOnline.json b/tests/resources/parser/test_data/de/SpiegelOnline.json index 0eb98c8cd..df3e8cdfd 100644 --- a/tests/resources/parser/test_data/de/SpiegelOnline.json +++ b/tests/resources/parser/test_data/de/SpiegelOnline.json @@ -3,14 +3,6 @@ "authors": [ "DER SPIEGEL" ], - "publishing_date": "2023-04-28 20:15:23+02:00", - "title": "Silicon Valley Bank: Federal Reserve räumt Versäumnisse bei Aufsicht ein", - "topics": [ - "Wirtschaft", - "Unternehmen", - "USA", - "Banken" - ], "body": { "summary": [ "Auf über 100 Seiten hat die Federal Reserve den Zusammenbruch der Silicon Valley Bank analysiert – und Mängel bei Überwachung und Regulierung festgestellt. Künftig müsse man schneller Risiken und Schwächen ausmachen können." @@ -34,6 +26,14 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 20:15:23+02:00", + "title": "Silicon Valley Bank: Federal Reserve räumt Versäumnisse bei Aufsicht ein", + "topics": [ + "Wirtschaft", + "Unternehmen", + "USA", + "Banken" + ] } } diff --git a/tests/resources/parser/test_data/de/Stern.json b/tests/resources/parser/test_data/de/Stern.json index 3172211d5..945f22ed9 100644 --- a/tests/resources/parser/test_data/de/Stern.json +++ b/tests/resources/parser/test_data/de/Stern.json @@ -3,25 +3,6 @@ "authors": [ "Laura Eßlinger" ], - "publishing_date": "2023-04-28 19:09:00+02:00", - "title": "Statt Paypal & Co.: So könnte Europas neues Bezahlsystem die US-Konkurrenz schlagen", - "topics": [ - "Europa", - "Apple", - "Zahlungssystem", - "PayPal", - "Bezahlsystem", - "Deutschland", - "EU", - "SEPA", - "Frankreich", - "Brühl", - "MasterCard Incorporated", - "Belgien", - "Handelsblatt", - "Unternehmensberatung", - "Universität Frankfurt" - ], "body": { "summary": [ " Europas Banken wollen beim Zahlungsverkehr unabhängiger von US-Firmen wie Paypal, Visa oder Apple werden. Mit EPI bringen sie bald ein neues Bezahlsystem an den Markt. Doch um mithalten zu können, muss es die Konkurrenz in drei Punkten schlagen.\n " @@ -61,6 +42,25 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 19:09:00+02:00", + "title": "Statt Paypal & Co.: So könnte Europas neues Bezahlsystem die US-Konkurrenz schlagen", + "topics": [ + "Europa", + "Apple", + "Zahlungssystem", + "PayPal", + "Bezahlsystem", + "Deutschland", + "EU", + "SEPA", + "Frankreich", + "Brühl", + "MasterCard Incorporated", + "Belgien", + "Handelsblatt", + "Unternehmensberatung", + "Universität Frankfurt" + ] } } diff --git a/tests/resources/parser/test_data/de/Tagesschau.json b/tests/resources/parser/test_data/de/Tagesschau.json index b80e8a19a..e61f78ccd 100644 --- a/tests/resources/parser/test_data/de/Tagesschau.json +++ b/tests/resources/parser/test_data/de/Tagesschau.json @@ -3,13 +3,6 @@ "authors": [ "Christin Jordan" ], - "publishing_date": "2023-04-28 17:23:42.981000+02:00", - "title": "Ausschuss zur Ahrtal-Flut: Zwei Rücktritte - und viele offene Fragen", - "topics": [ - "Ahrtal", - "Flut", - "Untersuchungsausschuss" - ], "body": { "summary": [ " Nach 42 Sitzungen hat der Untersuchungsausschuss zur Flutkatastrophe im Ahrtal die Beweisaufnahme beendet. Was bleibt - außer zwei Rücktritten und schweren Vorwürfen gegen Verantwortliche? \n " @@ -60,6 +53,13 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 17:23:42.981000+02:00", + "title": "Ausschuss zur Ahrtal-Flut: Zwei Rücktritte - und viele offene Fragen", + "topics": [ + "Ahrtal", + "Flut", + "Untersuchungsausschuss" + ] } } diff --git a/tests/resources/parser/test_data/de/Taz.json b/tests/resources/parser/test_data/de/Taz.json index 0b95540d4..744f603e2 100644 --- a/tests/resources/parser/test_data/de/Taz.json +++ b/tests/resources/parser/test_data/de/Taz.json @@ -3,17 +3,6 @@ "authors": [ "Nicole Opitz" ], - "publishing_date": "2023-04-28 18:41:00+02:00", - "title": "Entwurf des Selbstbestimmungsgesetzes: Ein bisschen Fortschritt", - "topics": [ - "Transgender", - "LGBTQIA-Community", - "Deutschland", - "Politik", - "Schwerpunkt", - "taz", - "tageszeitung" - ], "body": { "summary": [ "Das alte, diskriminierende Transsexuellengesetz ist endlich bald Geschichte. Das neue Gesetz sollte nicht weiter verwässert werden." @@ -39,6 +28,17 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 18:41:00+02:00", + "title": "Entwurf des Selbstbestimmungsgesetzes: Ein bisschen Fortschritt", + "topics": [ + "Transgender", + "LGBTQIA-Community", + "Deutschland", + "Politik", + "Schwerpunkt", + "taz", + "tageszeitung" + ] } } diff --git a/tests/resources/parser/test_data/de/WAZ.json b/tests/resources/parser/test_data/de/WAZ.json index 3e96aa530..3565d309f 100644 --- a/tests/resources/parser/test_data/de/WAZ.json +++ b/tests/resources/parser/test_data/de/WAZ.json @@ -3,6 +3,17 @@ "authors": [ "Florian Peters" ], + "body": { + "summary": [ + "\t\t\t\tWitten. \n\t\t\t\tZum zweiten Mal sind die Food-Trucks nach Witten gekommen. Die Besucher konnten sich über alle Kontinente schlemmen. Was gab es auf die Gabel?\n\t\t\t" + ], + "sections": [ + { + "headline": [], + "paragraphs": [] + } + ] + }, "publishing_date": "2023-06-19 12:52:00+02:00", "title": "Hitze dämpft den Appetit beim Street Food Festival in Witten", "topics": [ @@ -16,17 +27,6 @@ "Kultur", "Reise", "Fotostrecke" - ], - "body": { - "summary": [ - "\t\t\t\tWitten. \n\t\t\t\tZum zweiten Mal sind die Food-Trucks nach Witten gekommen. Die Besucher konnten sich über alle Kontinente schlemmen. Was gab es auf die Gabel?\n\t\t\t" - ], - "sections": [ - { - "headline": [], - "paragraphs": [] - } - ] - } + ] } } diff --git a/tests/resources/parser/test_data/fr/LeMonde.json b/tests/resources/parser/test_data/fr/LeMonde.json index 7e8e9a813..efc94f42e 100644 --- a/tests/resources/parser/test_data/fr/LeMonde.json +++ b/tests/resources/parser/test_data/fr/LeMonde.json @@ -3,17 +3,6 @@ "authors": [ "Le Monde" ], - "publishing_date": "2023-08-30 12:52:08+00:00", - "title": "Sophie Binet met en garde Emmanuel Macron sur la « gravité de la situation dans le pays »", - "topics": [ - "Économie", - "Politique", - "Emmanuel Macron", - "Syndicats", - "Social", - "Économie française", - "CGT" - ], "body": { "summary": [], "sections": [ @@ -28,6 +17,17 @@ ] } ] - } + }, + "publishing_date": "2023-08-30 12:52:08+00:00", + "title": "Sophie Binet met en garde Emmanuel Macron sur la « gravité de la situation dans le pays »", + "topics": [ + "Économie", + "Politique", + "Emmanuel Macron", + "Syndicats", + "Social", + "Économie française", + "CGT" + ] } } diff --git a/tests/resources/parser/test_data/na/TheNamibian.json b/tests/resources/parser/test_data/na/TheNamibian.json index dbc9711c8..c072f5c58 100644 --- a/tests/resources/parser/test_data/na/TheNamibian.json +++ b/tests/resources/parser/test_data/na/TheNamibian.json @@ -3,8 +3,6 @@ "authors": [ "admin" ], - "publishing_date": "1970-01-01 00:00:00+00:00", - "title": "Newborn baby's body found at coastal dump", "body": { "summary": [], "sections": [ @@ -27,6 +25,8 @@ ] } ] - } + }, + "publishing_date": "1970-01-01 00:00:00+00:00", + "title": "Newborn baby's body found at coastal dump" } } diff --git a/tests/resources/parser/test_data/uk/TheGuardian.json b/tests/resources/parser/test_data/uk/TheGuardian.json index 9d9e2e240..d45135185 100644 --- a/tests/resources/parser/test_data/uk/TheGuardian.json +++ b/tests/resources/parser/test_data/uk/TheGuardian.json @@ -7,16 +7,6 @@ "Jennifer Rankin", "Philip Oltermann" ], - "publishing_date": "2023-05-15 11:50:54+00:00", - "title": "Russia-Ukraine war live: Sunak tells Zelenskiy UK will train pilots but supplying fighter jets to Kyiv is not ‘straightforward’", - "topics": [ - "Ukraine", - "Russia", - "Europe", - "World news", - "Volodymyr Zelenskiy", - "Vladimir Putin" - ], "body": { "summary": [ "Ukraine president meets British prime minister in UK to discuss supply of fighter jets and other military aid" @@ -27,6 +17,16 @@ "paragraphs": [] } ] - } + }, + "publishing_date": "2023-05-15 11:50:54+00:00", + "title": "Russia-Ukraine war live: Sunak tells Zelenskiy UK will train pilots but supplying fighter jets to Kyiv is not ‘straightforward’", + "topics": [ + "Ukraine", + "Russia", + "Europe", + "World news", + "Volodymyr Zelenskiy", + "Vladimir Putin" + ] } } diff --git a/tests/resources/parser/test_data/uk/TheIndependent.json b/tests/resources/parser/test_data/uk/TheIndependent.json index c3fbf6d5f..08bccbbbc 100644 --- a/tests/resources/parser/test_data/uk/TheIndependent.json +++ b/tests/resources/parser/test_data/uk/TheIndependent.json @@ -3,15 +3,6 @@ "authors": [ "Jamie Braidwood" ], - "publishing_date": "2023-08-14 09:17:08+00:00", - "title": "Women’s World Cup LIVE: England news as Lionesses prepare for Australia semi-final", - "topics": [ - "Women's World Cup", - "Alessia Russo", - "England women", - "Lionesses", - "Internal" - ], "body": { "summary": [], "sections": [ @@ -25,6 +16,15 @@ ] } ] - } + }, + "publishing_date": "2023-08-14 09:17:08+00:00", + "title": "Women’s World Cup LIVE: England news as Lionesses prepare for Australia semi-final", + "topics": [ + "Women's World Cup", + "Alessia Russo", + "England women", + "Lionesses", + "Internal" + ] } } diff --git a/tests/resources/parser/test_data/uk/TheTelegraph.json b/tests/resources/parser/test_data/uk/TheTelegraph.json index 7e57c08c5..31cb43fa0 100644 --- a/tests/resources/parser/test_data/uk/TheTelegraph.json +++ b/tests/resources/parser/test_data/uk/TheTelegraph.json @@ -3,18 +3,6 @@ "authors": [ "Madeleine Howell" ], - "publishing_date": "2023-08-30 16:45:00+01:00", - "title": "The best heated clothes airers to save money and energy when drying laundry, from £40", - "topics": [ - "EG General", - "Clothes", - "Standard", - "Interiors", - "Special exclusion", - "telegraph reviews", - "Home", - "How to Save Money" - ], "body": { "summary": [ "\t\t\tThe best heated clothes airers are a space-saving alternative to tumble dryers or clothes lines\n\t\t" @@ -92,6 +80,18 @@ ] } ] - } + }, + "publishing_date": "2023-08-30 16:45:00+01:00", + "title": "The best heated clothes airers to save money and energy when drying laundry, from £40", + "topics": [ + "EG General", + "Clothes", + "Standard", + "Interiors", + "Special exclusion", + "telegraph reviews", + "Home", + "How to Save Money" + ] } } diff --git a/tests/resources/parser/test_data/uk/iNews.json b/tests/resources/parser/test_data/uk/iNews.json index 4c07703fd..88185f6af 100644 --- a/tests/resources/parser/test_data/uk/iNews.json +++ b/tests/resources/parser/test_data/uk/iNews.json @@ -3,16 +3,6 @@ "authors": [ "Michael Hincks" ], - "publishing_date": "2023-08-30 00:55:49+00:00", - "title": "US Open 2023 results: Andy Murray among six British players to record first-round wins without dropping a set", - "topics": [ - "Andy Murray", - "Cameron Norrie", - "Dan Evans", - "Jack Draper", - "Katie Boulter", - "US Open" - ], "body": { "summary": [ "Boulter, Burrage, Draper, Evans, Murray and Norrie all won to advance to the second round at the US Open" @@ -50,6 +40,16 @@ ] } ] - } + }, + "publishing_date": "2023-08-30 00:55:49+00:00", + "title": "US Open 2023 results: Andy Murray among six British players to record first-round wins without dropping a set", + "topics": [ + "Andy Murray", + "Cameron Norrie", + "Dan Evans", + "Jack Draper", + "Katie Boulter", + "US Open" + ] } } diff --git a/tests/resources/parser/test_data/us/APNews.json b/tests/resources/parser/test_data/us/APNews.json index e5c667f9a..22a780c09 100644 --- a/tests/resources/parser/test_data/us/APNews.json +++ b/tests/resources/parser/test_data/us/APNews.json @@ -3,13 +3,6 @@ "authors": [ "ociated Press" ], - "publishing_date": "2023-04-28 17:40:08+00:00", - "title": "Mexico's economy grew 1.1% in 1st quarter, 3.8% year on year", - "topics": [ - "Mexico", - "Mexico City", - "Latin America" - ], "body": { "summary": [], "sections": [ @@ -23,35 +16,20 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 17:40:08+00:00", + "title": "Mexico's economy grew 1.1% in 1st quarter, 3.8% year on year", + "topics": [ + "Mexico", + "Mexico City", + "Latin America" + ] }, "V1S1": { "authors": [ "MATT O’BRIEN", "AP Technology Writer" ], - "publishing_date": "2023-07-11 15:19:21+00:00", - "title": "Microsoft can move ahead with record $69 billion acquisition of Activision Blizzard, judge rules", - "topics": [ - "Microsoft Corp", - "Gaming", - "Activision Blizzard Inc", - "General news", - "n", - "United Kingdom", - "Satya Nadella", - "a", - "Business", - "U.S. news", - "San Francisco", - "f", - "Technology", - "Game consoles", - "Meta Platforms Inc", - "Sony Corp", - "Amazon.com Inc", - "U.S. News" - ], "body": { "summary": [], "sections": [ @@ -83,6 +61,28 @@ ] } ] - } + }, + "publishing_date": "2023-07-11 15:19:21+00:00", + "title": "Microsoft can move ahead with record $69 billion acquisition of Activision Blizzard, judge rules", + "topics": [ + "Microsoft Corp", + "Gaming", + "Activision Blizzard Inc", + "General news", + "n", + "United Kingdom", + "Satya Nadella", + "a", + "Business", + "U.S. news", + "San Francisco", + "f", + "Technology", + "Game consoles", + "Meta Platforms Inc", + "Sony Corp", + "Amazon.com Inc", + "U.S. News" + ] } } diff --git a/tests/resources/parser/test_data/us/CNBC.json b/tests/resources/parser/test_data/us/CNBC.json index 5c09f56a6..fe448121c 100644 --- a/tests/resources/parser/test_data/us/CNBC.json +++ b/tests/resources/parser/test_data/us/CNBC.json @@ -3,21 +3,6 @@ "authors": [ "Greg Iacurci" ], - "key_points": [ - "About a third of new crypto investors in 2022 used a friend's suggestion as their primary reason for buying, according to the FINRA Investor Education Foundation and NORC at the University of Chicago.", - "Buying bitcoin, ethereum and other digital assets just on the basis of a friend's recommendation may lead to trouble, experts say.", - "Investors may not understand the risk and volatility of cryptocurrency, or how it fits in a well-diversified investment portfolio." - ], - "publishing_date": "2023-04-28 18:23:00+00:00", - "title": "31% of new crypto buyers influenced by friends. Here’s why that can be 'a horrible idea,' advisor says", - "topics": [ - "Bitcoin", - "Personal finance", - "Bitcoin/USD Coin Metrics", - "Lee Baker", - "CFP", - "business news" - ], "body": { "summary": [], "sections": [ @@ -56,6 +41,16 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 18:23:00+00:00", + "title": "31% of new crypto buyers influenced by friends. Here’s why that can be 'a horrible idea,' advisor says", + "topics": [ + "Bitcoin", + "Personal finance", + "Bitcoin/USD Coin Metrics", + "Lee Baker", + "CFP", + "business news" + ] } } diff --git a/tests/resources/parser/test_data/us/FoxNews.json b/tests/resources/parser/test_data/us/FoxNews.json index e156a1bf5..023e7fd25 100644 --- a/tests/resources/parser/test_data/us/FoxNews.json +++ b/tests/resources/parser/test_data/us/FoxNews.json @@ -3,16 +3,6 @@ "authors": [ "Aaron Kliegman" ], - "publishing_date": "2023-04-26 14:20:55-04:00", - "title": "House China Committee demands answers from FBI on Chinese police stations in US", - "topics": [ - "china", - "houseofreps", - "congress", - "fbi", - "justice-department", - "newyorkcity" - ], "body": { "summary": [], "sections": [ @@ -43,6 +33,16 @@ ] } ] - } + }, + "publishing_date": "2023-04-26 14:20:55-04:00", + "title": "House China Committee demands answers from FBI on Chinese police stations in US", + "topics": [ + "china", + "houseofreps", + "congress", + "fbi", + "justice-department", + "newyorkcity" + ] } } diff --git a/tests/resources/parser/test_data/us/FreeBeacon.json b/tests/resources/parser/test_data/us/FreeBeacon.json index 8be973e41..ed78eb814 100644 --- a/tests/resources/parser/test_data/us/FreeBeacon.json +++ b/tests/resources/parser/test_data/us/FreeBeacon.json @@ -3,22 +3,6 @@ "authors": [ "Chuck Ross" ], - "publishing_date": "2023-04-28 18:01:37+00:00", - "title": "Soros Family Gives Early Financial Support to Montana 'Moderate' Jon Tester", - "topics": [ - "2024 Election", - "Bailout", - "Court-Packing", - "Defund the Police", - "Democratic Donors", - "George Soros", - "Hypocrisy", - "Jon Tester", - "Keystone Pipeline", - "Montana", - "Montana Senate", - "Second Amendment" - ], "body": { "summary": [], "sections": [ @@ -37,6 +21,22 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 18:01:37+00:00", + "title": "Soros Family Gives Early Financial Support to Montana 'Moderate' Jon Tester", + "topics": [ + "2024 Election", + "Bailout", + "Court-Packing", + "Defund the Police", + "Democratic Donors", + "George Soros", + "Hypocrisy", + "Jon Tester", + "Keystone Pipeline", + "Montana", + "Montana Senate", + "Second Amendment" + ] } } diff --git a/tests/resources/parser/test_data/us/LATimes.json b/tests/resources/parser/test_data/us/LATimes.json index eb5f011be..6bd2dd832 100644 --- a/tests/resources/parser/test_data/us/LATimes.json +++ b/tests/resources/parser/test_data/us/LATimes.json @@ -3,8 +3,6 @@ "authors": [ "Houston Mitchell" ], - "publishing_date": "2023-06-26 12:00:29.055000+00:00", - "title": "One hundred years at the Coliseum: Much more than a sports venue", "body": { "summary": [], "sections": [ @@ -46,6 +44,8 @@ ] } ] - } + }, + "publishing_date": "2023-06-26 12:00:29.055000+00:00", + "title": "One hundred years at the Coliseum: Much more than a sports venue" } } diff --git a/tests/resources/parser/test_data/us/OccupyDemocrats.json b/tests/resources/parser/test_data/us/OccupyDemocrats.json index 90d9ecfe0..f397306cb 100644 --- a/tests/resources/parser/test_data/us/OccupyDemocrats.json +++ b/tests/resources/parser/test_data/us/OccupyDemocrats.json @@ -3,16 +3,6 @@ "authors": [ "Stephanie Bazzle" ], - "publishing_date": "2023-06-19 23:48:21+00:00", - "title": "SCANDAL! GOP House Speaker in NC accused of blackmail and group sex", - "topics": [ - "Jamie Liles Lassiter", - "Right-wing hypocrisy", - "Scott Lassiter", - "sexual coercion", - "Tim Moore", - "Tricia Cotham" - ], "body": { "summary": [], "sections": [ @@ -36,6 +26,16 @@ ] } ] - } + }, + "publishing_date": "2023-06-19 23:48:21+00:00", + "title": "SCANDAL! GOP House Speaker in NC accused of blackmail and group sex", + "topics": [ + "Jamie Liles Lassiter", + "Right-wing hypocrisy", + "Scott Lassiter", + "sexual coercion", + "Tim Moore", + "Tricia Cotham" + ] } } diff --git a/tests/resources/parser/test_data/us/Reuters.json b/tests/resources/parser/test_data/us/Reuters.json index 30bc71dc8..24cfbf31a 100644 --- a/tests/resources/parser/test_data/us/Reuters.json +++ b/tests/resources/parser/test_data/us/Reuters.json @@ -3,14 +3,6 @@ "authors": [ "Gopal Sharma" ], - "publishing_date": "2023-04-25 12:26:15+00:00", - "title": "Nepal says 'no proof' flydubai plane suffered bird strike", - "topics": [ - "Aerospace & Defense", - "Business", - "Asia Pacific", - "World" - ], "body": { "summary": [ "KATHMANDU,\r\n April 25 (Reuters) - Nepal's civil aviation authority disputed on \r\nTuesday whether a flydubai plane had been hit by a bird strike in Nepali\r\n airspace, calling the United Arab Emirates carrier's account of the \r\nincident \"misleading\"." @@ -29,6 +21,14 @@ ] } ] - } + }, + "publishing_date": "2023-04-25 12:26:15+00:00", + "title": "Nepal says 'no proof' flydubai plane suffered bird strike", + "topics": [ + "Aerospace & Defense", + "Business", + "Asia Pacific", + "World" + ] } } diff --git a/tests/resources/parser/test_data/us/TheGatewayPundit.json b/tests/resources/parser/test_data/us/TheGatewayPundit.json index aad9cf33a..d3398a41c 100644 --- a/tests/resources/parser/test_data/us/TheGatewayPundit.json +++ b/tests/resources/parser/test_data/us/TheGatewayPundit.json @@ -3,8 +3,6 @@ "authors": [ "Cristina Laila" ], - "publishing_date": "2023-04-28 18:15:11+00:00", - "title": "New Plot Twist in Idaho Quadruple Murders Case: Surviving Roommate Agrees to Interview with Kohberger's Defense Lawyers | The Gateway Pundit | by Cristina Laila", "body": { "summary": [], "sections": [ @@ -32,6 +30,8 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 18:15:11+00:00", + "title": "New Plot Twist in Idaho Quadruple Murders Case: Surviving Roommate Agrees to Interview with Kohberger's Defense Lawyers | The Gateway Pundit | by Cristina Laila" } } diff --git a/tests/resources/parser/test_data/us/TheIntercept.json b/tests/resources/parser/test_data/us/TheIntercept.json index f0ce73fb0..775cde9aa 100644 --- a/tests/resources/parser/test_data/us/TheIntercept.json +++ b/tests/resources/parser/test_data/us/TheIntercept.json @@ -3,12 +3,6 @@ "authors": [ "Ryan Devereaux" ], - "publishing_date": "2023-04-28 15:54:24+00:00", - "title": "An Insider’s View of the Montana Legislature’s Attacks on Trans Rep. Zooey Zephyr", - "topics": [ - "Justice", - "Politics" - ], "body": { "summary": [ "The ACLU’s Keegan Medrano, a queer, Native advocate in Helena, said Zephyr’s expulsion was the culmination of months of attacks from Montana’s far right." @@ -43,6 +37,12 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 15:54:24+00:00", + "title": "An Insider’s View of the Montana Legislature’s Attacks on Trans Rep. Zooey Zephyr", + "topics": [ + "Justice", + "Politics" + ] } } diff --git a/tests/resources/parser/test_data/us/TheNation.json b/tests/resources/parser/test_data/us/TheNation.json index 494a7c090..fffbea229 100644 --- a/tests/resources/parser/test_data/us/TheNation.json +++ b/tests/resources/parser/test_data/us/TheNation.json @@ -3,6 +3,60 @@ "authors": [ "Sarah Lazare" ], + "body": { + "summary": [ + "In Des Moines, Iowa, the militant Local 90 is preparing for what could be the largest strike against a single company in US history." + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "In the early morning of April 12, members of International Brotherhood of Teamsters Local 90 rallied in the parking lot of the United Parcel Service distribution hub in Des Moines, Iowa, to prepare for what could be the largest strike against a single company in US history later this summer. The sun was shining as the union distributed “hot dogs for breakfast” to a crowd that started small but quickly ballooned to over 100, workers said. People were standing on trucks giving speeches to their coworkers. “We had workers talking about working six days a week, talking about getting written up for calling in sick,” said Tanner Fischer, the 26-year-old president of the local, who has been working for UPS since he was 18. ", + "Managers came outside to monitor the rally, Fischer said. “Some were standing 100 yards away, then moved to stand in the crowd and see what’s going on. They were making everyone uncomfortable.”", + "Surveillance is a common intimidation tactic used by management to make workers fearful about participating in protests. But instead of being cowed, Fischer fought back. “I filed an Unfair Labor Practice a few days later for them spying on our rally,” he told me with a smile, referring to a formal charge that an employer has violated the National Labor Relations Act. “It was easy. I did it myself. I wish I knew how to file a ULP when I was a steward.” (UPS corporate communications said of the incident, “We respect our employees’ rights to assemble and we comply with the NLRA.” The case is still ongoing.)", + "This episode illustrates the combative stance promised by Local 90’s new leadership, which hails from Teamsters for a Democratic Union (TDU), a movement within the union to build stronger democracy and militancy. That slate came to power in Local 90 at the beginning of this year, just in time to pick up the organizing for a nationwide UPS contract battle. The UPS contract with roughly 350,000 Teamsters is, according to the Teamsters, the biggest private-sector labor contract in North America, and it will expire on July 31. Negotiations are already underway. Beyond Des Moines, the new leadership of the international union came to power in March 2022 with the endorsement of the TDU, and has repeatedly declared, “We are not afraid” to strike.\t", + "Fischer doesn’t seem afraid either. We sat in the bar of a Hilton in downtown Chicago, where he had traveled for a regional grievance panel, part of the process for resolving deadlocked complaints that the employer violated the collective bargaining agreement. He looked young—he was carded when ordering a Bud Light—but he exuded confidence. Dressed in a gray Teamsters pullover, he had a trim beard and short light-brown hair, and politely repeated himself when I had trouble hearing him over the chatter of the establishment. But that polite demeanor gave way to exuberance—and increased volume—once we got going on the subject of workplace organizing.", + "There was much to discuss; the UPS contract isn’t his only battle. Local 90, based mostly in the Des Moines metro area, has six more contracts to negotiate in 2023, said Fischer, including one with a Pepsi bottling and distribution center, the local’s second-largest shop. And union leadership, he told me, is working through a backlog of hundreds of grievances, dating back to 2018. But out of 1,100 members, around 600 work at UPS, which guarantees that their fight will be a focal point in the months to come.", + "Iowa is a “right to work” state, which means that a worker can reap the benefits of a union contract without paying dues or being a member. While right-to-work status was designed to—and often does—obliterate union power, Local 90 has pushed back by aggressively organizing workers. According to Fischer, around 90 percent of UPS workers in the area are in the union. \n\t\t\t\n\t\t\tvar magazine_text_444984 = '';\n\t\t\tvar magazine_button_text_444984 = '';\n\t\t\tvar magazine_button_url_444984 = '';\n\t\t\tvar magazine_button_bg_color_444984 = '';\n\t\t\t\n\t\t\tvar is_user_logged_in = getCookie('SESSname');\t\t\t\tif( is_user_logged_in != null ){\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tmagazine_text_444984 = '

If you like this article, please give today to help fund The Nation’s work.

';\t\n\t\t\t\t\t\t\t\t\t\t\t\tmagazine_button_text_444984 = '';\t\n\t\t\t\t\t\t\t\t\t\t\t\tmagazine_button_url_444984 = 'https://www.thenation.com/email-signup-module-donate/';\n\t\t\t\t\t\t\t\t\t\t\t\tmagazine_button_bg_color_444984 = '#ffcf0d';\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t}else{\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tmagazine_text_444984 = '

Subscribe today and Save up to $129.

';\t\n\t\t\t\t\t\t\t\t\t\t\t\tmagazine_button_text_444984 = '';\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tmagazine_button_url_444984 = 'https://subscriptions.thenation.com/Nation_index?pk=G2A1CLT';\n\t\t\t\t\t\t\t\t\t\t\t\tmagazine_button_bg_color_444984 = '#dd3333';\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\n\t\t\t\t\t\t\n\t\t\tif( magazine_text_444984 !='' ){\t\t\t\t\n\t\t\t\tjQuery(\"#magazine_text_444984\").html(magazine_text_444984);\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif( magazine_button_text_444984 !='' ){\t\t\t\t\n\t\t\t\tjQuery(\"#magazine_button_444984\").html(magazine_button_text_444984);\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif( magazine_button_url_444984 !='' ){\t\t\t\t\n\t\t\t\tjQuery(\"#magazine_button_444984 a\").attr(\"href\",magazine_button_url_444984);\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tif( magazine_button_bg_color_444984 !='' ){\t\t\t\n\t\t\t\tjQuery(\"#magazine_button_444984 a input\").css(\"background\",magazine_button_bg_color_444984);\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t", + "Alano De La Rosa holds the top office in Local 90 as the secretary-treasurer and is also a member of TDU. He told me over the phone that he attributes the success of the recent organizing drive “in large part to the fact people are activated by the potential of a nationwide work stoppage. We’ve even picked up members who were longtime nonmembers.”", + "In 2015, it was De La Rosa who first signed up Fischer, then a teenage UPS loader making $10.50 an hour, to be in the union. It helped that Fischer, who grew up in the Des Moines area, had some familiarity with the concept. “My uncle was in unions as a firefighter and an electrician, and I know he has done well with his life because he’s in a union,” Fischer said. But despite union protection, Fischer told me that at the beginning, “pay was very low. I always had to have another job while working there.”", + "In February 2018, before the current contract, Fischer became a full-time driver, which meant higher pay: $18.75 an hour, he said. But the switch also had its challenges: He recalled the terror of “qualifying” when, during the first 30 days, a driver is tested on their ability to deliver a truck’s load within rigid time standards. “That was one of the most stressful things I’ve ever done,” he said. “On any given day you could be fired. It’s snowing, and I’m driving a truck, and I have to be done by five.”\t", + "Like any UPS driver, Fischer has a trove of stories about misadventures and warm interactions with the public. “I’ve been chased by more dogs more times than I can count,” he said. “I’ve been stuck in snow and had the whole neighborhood dig me out. I had a customer buy me a portable air conditioner thing to keep me from overheating—probably the best customer gift I’ve ever gotten in my life.”", + "Jody Gelner, who has been working at UPS for 35 years and became a member of TDU around two years ago, serves on the executive board of Local 90. He said that he still “gets pretty emotional” about the interactions he has had with customers.", + "One holiday season, early in his role as a full-time driver in the early 2000s, he had to deliver a kid-sized jeep with power wheels, “the type of toy that you give a little kid to ride around in with a battery,” he said. Gelner knew what was in the box because there was a picture on the side. ", + "He was delivering it to a house with a big window. “I got out the back door and grabbed this big box with the picture of the toy,” he said. “And as I’m coming up to the door, I can see the kid jumping up and down and yelling with excitement. He was maybe 5 years old. And here comes the mom saying you just ruined the surprise for my kid’s Christmas.”", + "“She was furious,” he remembered with a laugh. “She tore into me. Now I’ve kind of learned that if the picture is on them, you hide them a little bit.”", + "But Gelner said the job also has its nasty side. “For upper management, it’s all down to seconds. You have 19 seconds to stop the truck. You have 18 or 19 seconds to get a box and get out of the truck. It’s so micromanaged.”", + "“Back in the day, I could run like a gazelle,” Gelner, who is 60 years old, said. “But now my knees hurt. I’ve been doing it so long. It wears on you.”", + "UPS has multiple mechanisms to track workers’ progress throughout the day: The company knows when a worker opens their door, how long the door is open, when a package is scanned, and where a worker is driving. But it is the union’s position that workers are under no obligation to follow the company’s time parameters. “The company can have their standards of what they think we should do, but we as a union do not acknowledge their production standards,” Fischer said. “There’s nothing in our contract that says we have to work for their numbers.” ", + "But there is plenty in the workers’ national contract that is distasteful. The 2018 contract that UPS employees are currently working under garnered a “no” vote of 54 percent. But the union’s leadership at the time—helmed by longtime President James Hoffa, whose father, Jimmy, led the union from 1957 to 1971—invoked a constitutional loophole that says union negotiators can impose a contract if fewer than half of the membership votes, unless that vote is two-thirds “no.”", + "That loophole had been vociferously opposed for years by TDU and other Teamsters, and in June 2021, delegates overturned it at the union’s national convention. And then, around five months later, the opposition slate headed by now–General President Sean O’Brien and General Secretary-Treasurer Fred Zuckerman won. Alexandra Bradbury wrote in Labor Notes about the election outcome, “It’s the first time in almost a quarter-century that a coalition backed by TDU has taken the driver’s seat in the international union.”", + "Now, under that leadership, Teamsters across the country are looking to overturn some of that contract’s biggest disappointments. Paramount is the 22.4 position, which was created in the 2018 contract. This designation creates a second—or lower—tier of drivers, justified by the fact that these positions “may include inside jobs.” But in reality, 22.4 workers often perform tasks that are nearly identical to that of regular full-time drivers, except they work on the weekend and receive lower pay. These 22.4 workers are also excluded from the already meager protections from excessive forced overtime that exist for regular full-time drivers. (Only 25 percent of drivers per center can be 22.4s, per the contract.)", + "The demand to eliminate the 22.4 position has emerged as a rallying call, and O’Brien and Zuckerman have both said they are willing to strike to scrap this designation. (O’Brien split with Hoffa over the 2018 contract and has since built an alliance with TDU.)", + "But life isn’t easy for regular full-time drivers either. Fischer said that these workers in Local 90 are frustrated with forced overtime and the lack of paid sick days. “[Regular] full-time drivers have overtime protections against working over nine and a half hours a day more than two days in a given week,” Fischer said. “But the company can violate it—they just have to pay a penalty.”", + "Regular full-time drivers in Local 90 frequently work six days a week and are often forced to power through sickness, Fischer said. They don’t, after all, get paid sick days, and the state of Iowa does not have a guarantee for these either. (Some regional supplementary agreements in other locations do include paid sick days, but the central region supplement—which is the largest supplement and includes Iowa—doesn’t.) Vacation days have to be scheduled at the beginning of the year, which means that these workers have few opportunities to get an urgently needed day off. While management’s flexibility on this requirement varies from shop to shop, Fischer described local bosses as punitive: “If you were to get sick or need the day off, you end up with attendance issues.”", + "“It’s a little bit like the rail workers,” Fischer said. Rail workers have been vocal about brutal work conditions created by precision-scheduled railroading, in which they are denied time off to be at the bedside of dying family members, see their children born, or attend to urgent medical issues.", + "When asked about these conditions at Local 90, Matthew O’Connor from UPS corporate communications said, “We don’t want any of our employees to work six days in a row unless they want to.”", + "“In 2018, no one could have predicted the rapid increase in volume due to Covid-19 and changing customer demands for weekend service,” he continued. O’Connor stated that the 25 percent cap on 22.4 drivers has functioned to “prevent us from hiring enough Tuesday-Saturday drivers in some locations.”", + "But Fischer said that UPS can’t dodge responsibility. “If they didn’t want to have the six-day work week, they wouldn’t have it. They have the power to stop that immediately. It’s like driving a car and saying, ‘I don’t want to keep driving,’ but not pulling over and stopping. They’re the ones behind the wheel.”", + "UPS made record profits in 2022, bringing in $100 billion in revenue. But pay inequalities extend well beyond the 22.4 positions, something workers would like to rectify. The starting rate at UPS for both part-time and full-time jobs working inside—unloading, bagging, and sorting—is significantly lower than the rate for drivers. And then there is the issue of subcontracting—or, as Fischer put it, “giving away good union jobs.”", + "Workers want more full-time inside jobs, and they are fed up with the company’s efforts to impose monitoring systems, like cameras and sensors. This investment in surveillance is especially offensive, workers say, given the lack of measures to keep workers cool, as temperatures climb in a changing climate and, in some cases, place their lives in danger. Workers, too, are watching with concern as UPS pursues automation at some facilities.", + "Fischer’s mother, Adrianne Fischer, is a part-time air package driver; she picks up packages early in the morning from the airport and delivers them to customers. Her son encouraged her to get a job at UPS almost five years ago after her divorce. “I was working three jobs at the time, and had two little boys at home,” she said. “Health insurance is so expensive. He knew I needed benefits.”", + "She has complaints related to Article 40 of the national contract, which says that, unlike regular part-time workers, she doesn’t get extra pay if she works six days in a row when hours are beneath a certain threshold. She is also only guaranteed three hours a day. This is despite the fact that air package workers are often delivering and moving highly valuable products, or even medically urgent items, like corneas for transplant.", + "While the job gave her health insurance, Article 40 puts a cap on her quality of life, she said. “I’ve prepared myself financially for a potential strike. If this is what we need to do to have our voices heard, then we’ll do it.”\t", + "Fischer joined TDU around the forced passage of the 2018 contract. He said he remembers “being at a TDU conference in a room with people who were really pissed off. I was not totally understanding what was going on, but knowing we were getting screwed.”", + "Todd Hartsell, a senior steward in his building at the time, was the one who first pointed Fischer toward TDU, which was formed in 1976 to advance union democracy and root out corruption and mob influence (then an issue) from the union. Now a retired UPS worker, Hartsell has been a member of TDU for almost 40 years and was president of Local 90 in the mid-to-late ’90s. For three months, he said, he was on the national negotiating committee for the contract fight that resulted in the last nationwide UPS strike in 1997, which took place under the leadership of Ron Carey, who won the presidency with the support of TDU. The strike involved 185,000 workers and lasted for 15 days. Labor journalist Alex Press noted this year in Jacobin, “The United States has not seen a strike of that magnitude since.”", + "Hartsell said of Fischer, “Other people planted the seeds in me, the seeds of knowledge and information, and I shared it with him.”", + "During his presidential campaign, Fischer got married in September to Jacob Sales, who works as a server while going to school. They now live together in Bondurant, a suburb of Des Moines. “It’s stressful to plan a wedding and run for president at the same time,” said Fischer. “I would be doing 4 am shifts at Pepsi talking to Teamsters, then sleeping in my car for maybe an hour, then going to work all day.” Luckily, Fischer says, his now-husband did “most of the wedding planning.”", + "A handful of Teamster coworkers came to their wedding, and now Fischer is a union leader alongside them, at a juncture with huge implications for the labor movement. As rank-and-file reform movements win power in the United Auto Workers and rise up in the United Food and Commercial Workers, major contract battles become an opportunity to showcase a more aggressive approach that—many hope—will result in stronger contracts and internal democracy, as well as new organizing campaigns. While union enthusiasm is resurging, density is low in relative historical terms.", + "There are signs, meanwhile, that UPS is feeling the heat from workers. On a January 31 UPS earnings call, Amit Mehrotra, an analyst for Deutsche Bank, expressed concern about the negative press attention the contract battle is generating: “It seems like every day we wake up, there’s a new big article about it.” On that same earnings call, UPS CEO Carol Tomé sought to assure investors that UPS and Teamsters are “not far apart on the issues.”", + "But Local 90 members are readying themselves for a fight. De La Rosa said, “There is a lot of positive buzz. They are asking how it’s going. We connect people with the Teamsters app. We try to be at the gates as much as possible, try to be at the building leafleting. People seem thirsty for information.”", + "Fischer isn’t sure when he’s going to get a break from organizing, and it doesn’t seem like he wants one. The national UPS contract says top officers get an unpaid leave from UPS during their tenure (Local 90 member dues pay their salaries), and can return with all of their seniority intact once their term is finished. When asked what he does in his free time, he told me, “This is it,” gesturing with his hands toward the conversation we are having. He does enjoy bike riding, he said, and Packers football, though he acknowledged he should not admit the latter too loudly in a Chicago bar. He’s been thinking a lot, he said, about how “servers are a marginalized group of workers, and making less than minimum wage is insane.”", + "“Maybe when I have some time, we can stir up some trouble at Jacob’s work.”" + ] + } + ] + }, "publishing_date": "2023-05-15 09:00:37+00:00", "title": "Inside a Teamster Rebellion: This Is What Union Democracy Looks Like", "topics": [ @@ -13,6 +67,24 @@ "authors": [ "John Nichols" ], + "body": { + "summary": [ + "He told the truth about the threat posed by Trump. DeSantis and Haley will never do that." + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Chris Christie quit his longshot bid for the 2024 Republican presidential nomination on Wednesday with all the political theater and rhetorical bombast that has historically characterized the grasping political career of this former federal prosecutor and governor of New Jersey. Yet, for all his foibles over the years, and for all the failings of his latest bid to position himself as a credible alternative to Donald Trump, Christie’s exit from the race still deals a blow both to his party and to the broader body politic.", + "Christie was the last high-profile GOP contender who was fighting for whatever remains of the soul of a Republican Party that, for all intents and purposes, has evolved into an authoritarian cult of personality with Trump as its center—posing what the former governor described as a real and present threat to democracy and national security.", + "Christie, a longtime Trump backer who ultimately came to his senses after Trump tried to overturn the 2020 election, mounted a 2024 campaign that aggressively challenged his party’s alarming deference to Trump, identified the former president as “a one-man crime wave,” and asserted that Trump had “earned every one” of his 91 criminal indictments. He argued that the other prominent contenders for the nomination—Florida Governor Ron DeSantis and former United Nations ambassador Nikki Haley—were unwilling to make an issue of the Republican front-runner’s criminality because they were “afraid to offend Donald Trump.” More importantly, Christie had the courage to demand that Republican voters answer the essential question: “Is this the type of conduct that we want from someone who wants to be president of the United States?”", + "An energetic and often masterful communicator—the only serious Republican rival, in this regard, to Trump—Christie made himself heard during a seven-month campaign that often put him on debate stages but that rarely earned him much applause. The cold shoulder was the answer to his question. Polls now show that almost two-thirds of Republicans accept Trump’s “type of conduct” and want him to be the party’s nominee for the third time in a row. ", + "Christie—unlike, say, DeSantis—recognized the reality that his campaign could not overcome Trump’s dominance of the party. So, with just a few days to go before the first Republican caucuses in Iowa, and just a few more days to go before the first Republican primary in New Hampshire, Christie quit—telling a previously scheduled town hall meeting in Windham, N.H., “I’ve always said that there came a point in time in this race where I couldn’t see a path to accomplishing that goal that I would get out. And it’s clear to me tonight that there isn’t a path for me to win the nomination, which is why I’m suspending my campaign tonight for president.”", + "Christie, a relatively mainstream conservative, was under pressure to back the far more extreme Haley in the New Hampshire primary, where fresh polling suggests she is closing the gap on Trump. A CNN poll this week has Trump at 39 percent to 32 percent for Haley in the Granite State. That poll was one of several that had Christie running third in New Hampshire, pulling 12 percent. That relative show of strength inspired New Hampshire Governor Chris Sununu, a Haley backer, to urge Christie to “be a hero” and endorse the former UN ambassador." + ] + } + ] + }, "publishing_date": "2024-01-11 16:10:50+00:00", "title": "Chris Christie’s Exit Marks the End of the Fight for the Soul of the GOP", "topics": [ diff --git a/tests/resources/parser/test_data/us/TheNewYorker.json b/tests/resources/parser/test_data/us/TheNewYorker.json index c2fa973ee..2aa863df2 100644 --- a/tests/resources/parser/test_data/us/TheNewYorker.json +++ b/tests/resources/parser/test_data/us/TheNewYorker.json @@ -1,19 +1,8 @@ { "V1": { - "alternative_description": "Rachel Riederer writes about geoengineering and the idea of using glass bubbles to deflect light away from Arctic ice to slow climate change.", - "alternative_title": "Rachel Riederer writes about geoengineering and the idea of using glass bubbles to deflect light away from Arctic ice to slow climate change.", "authors": [ "Rachel Riederer" ], - "description": "Engineers might be able to protect Arctic ice by coating it with tiny glass bubbles. Should they?", - "publishing_date": "2023-04-25 06:00:00-04:00", - "section": "the control of nature", - "title": "A Heat Shield for the Most Important Ice on Earth", - "topics": [ - "the arctic", - "ice", - "climate change" - ], "body": { "summary": [], "sections": [ @@ -57,6 +46,13 @@ ] } ] - } + }, + "publishing_date": "2023-04-25 06:00:00-04:00", + "title": "A Heat Shield for the Most Important Ice on Earth", + "topics": [ + "the arctic", + "ice", + "climate change" + ] } } diff --git a/tests/resources/parser/test_data/us/WashingtonTimes.json b/tests/resources/parser/test_data/us/WashingtonTimes.json index b95836913..1d413a101 100644 --- a/tests/resources/parser/test_data/us/WashingtonTimes.json +++ b/tests/resources/parser/test_data/us/WashingtonTimes.json @@ -3,8 +3,6 @@ "authors": [ "Tom Davies" ], - "publishing_date": "2023-04-28 13:53:25", - "title": "Indiana governor endorses revised GOP state budget package", "body": { "summary": [], "sections": [ @@ -35,6 +33,8 @@ ] } ] - } + }, + "publishing_date": "2023-04-28 13:53:25", + "title": "Indiana governor endorses revised GOP state budget package" } } diff --git a/tests/resources/parser/test_data/us/WorldTruth.json b/tests/resources/parser/test_data/us/WorldTruth.json index b40aabb1a..9494a5e6d 100644 --- a/tests/resources/parser/test_data/us/WorldTruth.json +++ b/tests/resources/parser/test_data/us/WorldTruth.json @@ -1,7 +1,5 @@ { "V1": { - "publishing_date": "2021-12-25 13:46:00-04:00", - "title": "The Mother of All Antioxidants", "body": { "summary": [], "sections": [ @@ -35,6 +33,8 @@ ] } ] - } + }, + "publishing_date": "2021-12-25 13:46:00-04:00", + "title": "The Mother of All Antioxidants" } } From 49d9a6c094d7efca1190c8ec8b11300a9d278708 Mon Sep 17 00:00:00 2001 From: Max Dallabetta Date: Mon, 12 Feb 2024 20:59:08 +0100 Subject: [PATCH 06/13] update test files to cover attribute order --- tests/test_parser.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/test_parser.py b/tests/test_parser.py index d1ec61723..0245573a0 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -167,7 +167,13 @@ def test_parsing(self, publisher: PublisherEnum) -> None: # test coverage supported_attrs = set(versioned_parser.attributes().names) missing_attrs = attributes_required_to_cover & supported_attrs - set(version_data.keys()) - assert not missing_attrs, f"Test JSON does not cover the following attribute(s): {missing_attrs}" + assert ( + not missing_attrs + ), f"Test JSON for {version_name} does not cover the following attribute(s): {missing_attrs}" + + assert list(version_data.keys()) == sorted( + attributes_required_to_cover & supported_attrs + ), f"Test JSON for {version_name} is not in alphabetical order" assert (html := html_mapping.get(versioned_parser)), f"Missing test HTML for parser version {version_name}" # compare data From 996d8b298453a4ed630672170ca369db4b8f1535 Mon Sep 17 00:00:00 2001 From: Max Dallabetta Date: Mon, 12 Feb 2024 21:24:07 +0100 Subject: [PATCH 07/13] sort test case keys after insert and don't overwrite unless specified --- scripts/generate_parser_test_files.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/generate_parser_test_files.py b/scripts/generate_parser_test_files.py index 3e1545b44..181eb03fa 100644 --- a/scripts/generate_parser_test_files.py +++ b/scripts/generate_parser_test_files.py @@ -91,11 +91,13 @@ def get_test_article(enum: PublisherEnum) -> Optional[Article]: for html in html_mapping.values(): versioned_parser = html.publisher.parser(html.crawl_date) extraction = versioned_parser.parse(html.content) - new = {attr: value for attr, value in extraction.items() if attr in args.attributes} + missing_attributes = set(args.attributes) - set(test_data.get(type(versioned_parser).__name__) or {}) + new = {attr: value for attr, value in extraction.items() if attr in missing_attributes} if not (entry := test_data.get(type(versioned_parser).__name__)): test_data[type(versioned_parser).__name__] = new else: entry.update(new) + test_data[type(versioned_parser).__name__] = dict(sorted(entry.items())) test_data_file.write(test_data) bar.update() From d885e01d8ff3fd517d1fceb0853fcd090c1288ab Mon Sep 17 00:00:00 2001 From: Max Dallabetta Date: Mon, 12 Feb 2024 21:24:37 +0100 Subject: [PATCH 08/13] add missing test cases --- tests/resources/parser/test_data/de/BSZ.json | 22 ++++++++ tests/resources/parser/test_data/de/DW.json | 53 ++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/tests/resources/parser/test_data/de/BSZ.json b/tests/resources/parser/test_data/de/BSZ.json index b4b242ff7..10feb3baf 100644 --- a/tests/resources/parser/test_data/de/BSZ.json +++ b/tests/resources/parser/test_data/de/BSZ.json @@ -3,6 +3,28 @@ "authors": [ "Stefan Lienert" ], + "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." + ], + "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." + ] + }, + { + "headline": [ + "Saisonstart des Heide-Parks ist am 23. März" + ], + "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." + ] + } + ] + }, "publishing_date": "2024-01-29 18:09:51+00:00", "title": "Heide-Park: Eröffnungstermin für neue Attraktion steht fest", "topics": [ diff --git a/tests/resources/parser/test_data/de/DW.json b/tests/resources/parser/test_data/de/DW.json index a27b14e00..2c0e8482e 100644 --- a/tests/resources/parser/test_data/de/DW.json +++ b/tests/resources/parser/test_data/de/DW.json @@ -142,6 +142,59 @@ "authors": [ "Jennifer Pahlke" ], + "body": { + "summary": [ + "Tausende standen für ihn stundenlang in der Kälte: Boris Nadeschdin will bei der Präsidentschaftswahl am 17. März gegen Wladimir Putin antreten. Doch wer sind seine Wähler? Und hat der Kriegsgegner überhaupt eine Chance?" + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Die erste Hürde hat er gemeistert: Boris Nadeschdin darf 100.000 Unterschriften sammeln. Unterschriften, die er braucht, um bei der russischen Präsidentschaftswahl im März gegen Amtsinhaber Wladimir Putin antreten zu dürfen. Nach eigenen Angaben hat er sogar schon 200.000 zusammen - mehr als genug, um sie bei der Zentralen Wahlkommission der Russischen Föderation einzureichen, selbst wenn diese einige nicht anerkennen sollte. Erst nach Prüfung durch die Wahlkommission kann Nadeschdin als Präsidentschaftskandidat registriert werden. In der Vergangenheit waren bereits mehrfach Kandidaten wegen angeblicher \"Formfehler\" nicht zugelassen worden - etwa, weil Wahlhelfer angeblich teilweise Unterschriften nicht korrekt erfasst haben.", + "Nadeschdins Helfer aber fühlen sich gut vorbereitet. \"Wir sammeln Unterschriften aus 200 Städten, 65 Regionen Russlands und von russischen Wahlberechtigten in 30 anderen Ländern, darunter Deutschland\", erklärt Boris Nadeschdin im DW-Interview. Sollte die Zentrale Wahlkommission sich weigern, ihn zur Wahl zuzulassen, will er Massenkundgebungen in 150 Städten des Landes beantragen. Das hatte er bei einem Treffen mit seinen Anhängern in Moskau verkündet. Aber wer ist dieser Mann, der es wagt, Wladimir Putin politisch die Stirn zu bieten?" + ] + }, + { + "headline": [ + "Wer ist Boris Nadeschdin?" + ], + "paragraphs": [ + "Politisch gesehen ist der heute 60-jährige Nadeschdin kein unbeschriebenes Blatt. Seine politische Karriere begann in den 1990er Jahren als Berater des damaligen Vizepremierministers Boris Nemzow und Assistent von Ministerpräsident Sergej Kirijenko. Auch stand er mit Wladimir Putin nach dessen erster Wahl zum Präsidenten im Jahre 2000 in engem Kontakt. Dieser brach jedoch nach der Festnahme des Oligarchen Michail Chodorkowski im Jahr 2003 ab. Schon damals festigte Putin seine Macht und begann rücksichtslos gegen seine Gegner vorzugehen.", + "Heute ist Nadeschdin der einzige Antikriegskandidat, der zur Wahl zugelassen werden könnte. \"Putin hat einen fatalen Fehler begangen, als er die Spezielle Militäroperation ins Leben rief. Keines der erklärten Ziele ist erfüllt worden. Und es ist unwahrscheinlich, dass sie erfüllt werden, ohne der Wirtschaft großen Schaden zuzufügen und Russlands Demographie einen irreparablen Schlag zu versetzen\", schreibt Nadeschdin auf seiner Website. Für ihn ist das Russland der Zukunft eines, in das freie und gebildete Menschen zurückkehren wollen und das den Krieg in der Ukraine beendet. Nadeschdin zeichnet damit ein völlig anderes Bild seines Landes als Putin." + ] + }, + { + "headline": [ + "Vor allem junge Menschen unterstützen Nadeschdin" + ], + "paragraphs": [ + "Vor Nadeschdins Wahlbüro haben sich schon mehrfach lange Schlangen gebildet. Tausende, meist junge Menschen harren stundenlang in bitterer Kälte aus, um für ihn zu unterschreiben. \"Die meisten meiner Unterstützer sind ziemlich jung, zwischen 20 und 30. Aber es gibt auch Ältere, die mich unterstützen. Die älteste Person, die für mich unterschrieben hat, ist eine Frau aus Orjol, die 1936 geboren wurde\", erzählt Nadeschdin der DW.", + "Vor allem der jungen Generation ist es wichtig, sich zu positionieren, zu demonstrieren und nicht in den Krieg ziehen zu müssen. Sie sind die potenziellen Wähler Nadeschdins.", + "Der Politologe Dmitri Oreschkin kann sich vorstellen, dass Nadeschdin besonders junge Menschen mobilisieren kann: \"20 bis 25 Prozent der Bevölkerung unterstützen Putin nicht. Das Problem ist, dass sie nicht wählen gehen.\" Sie hätten weder für den russischen Präsidenten noch für das politische System insgesamt etwas übrig und verachteten das Wahlverfahren. Daraus erwachse die wichtigste Ressource für Putins Sieg, erläutert Oreschkin. \"Wenn Nadeschdin also nicht gestört würde - und er wird gestört werden, daran besteht kein Zweifel! - könnte er zehn oder fünfzehn Prozent der Stimmen bekommen.\"" + ] + }, + { + "headline": [ + "Unterstützung durch die Opposition" + ], + "paragraphs": [ + "Ekaterina Duntzowa hat als erste die Nominierung von Boris Nadeschdin unterstützt, nachdem sie selbst von der Zentralen Wahlkommission wegen angeblicher \"zahlreicher Fehler\" von der Kandidatur ausgeschlossen worden war. Er sei der einzige Antikriegskandidat, betont sie. Selbst die üblichen Oppositionskandidaten, die selten einer Meinung ist, haben sich bereit erklärt, Nadeschdin zu unterstützen: Maxim Katz, Michail Chodorkowski, das Korruptionsbekämpfungsteam (FBK) des inhaftierten Kremlkritikers Alexej Nawalny sowie dessen Ehefrau Julia Nawalnaja.", + "\"Ich habe weder mit Chodorkowski noch mit jemand anderem kommuniziert. Ich habe sie weder um Geld noch um Unterstützung gebeten. Aber ich bin jedem russischen Bürger dankbar, der mich in legaler Form unterstützt\", erklärt Nadeschdin der DW.", + "Boris Nadeschdin sei ein eher schwacher Politiker, der nur zur richtigen Zeit am richtigen Ort ist, so Nikolai Petrow, Gastwissenschaftler bei der Stiftung Wissenschaft und Politik in Berlin. In der Vergangenheit galt er eher als Pragmatiker, der auch schon mal mit dem Kreml kooperierte, wenn es seinen eigenen Zwecken dienlich schien. Dass sich die in vielen Fragen grundsätzlich gespaltenen Oppositionskräfte in diesem Fall auf ihn einigen konnten, erklärt Petrow wie folgt: \"Natürlich kann man Nadeschdin nicht als eine einigende Figur der Opposition bezeichnen. Er ist einfach der einzige Kandidat, der sich in irgendeiner Weise gegen den Krieg stellt.\"" + ] + }, + { + "headline": [ + "Wie realistisch ist ein Sieg Nadeschdins?" + ], + "paragraphs": [ + "Es gilt als sehr wahrscheinlich, dass Wladimir Putin am 17. März zum fünften Mal zum Präsidenten gewählt wird. Wie gering die Chancen für einen Sieg Nadeschdins gesehen werden, lässt sich an einer Antwort von Kremlsprecher Dmitri Peskov auf Fragen von Journalisten ablesen: \"Wir betrachten ihn nicht als Konkurrenten.\"", + "Auch für Dmitri Oreschkin ist klar, dass Boris Nadeschdin keine ernsthafte Gefahr für Putin darstellt. Im Gegenteil: Er könnte für den Kreml von Nutzen sein, zumindest um den Anschein legitimer und freier Wahlen zu bewahren. \"Für den Kreml ist es sicherlich günstig, bequeme oder akzeptable Kandidaten auf der Kandidatenliste zu haben. Ich denke, Boris Nadeschdin fällt in die Kategorie der akzeptablen Kandidaten. Allerdings nur, solange er nicht mehr als fünf Prozent der Stimmen erhält. Im Idealfall sollte Putin 80 Prozent bekommen, der zweite Platz sollte an Leonid Slutsky gehen\", sagt Oreschkin im DW-Interview. Slutsky ist der Vorsitzende der rechtsextremen Partei LDPR, ist aber kein Oppositioneller und unterstützt auch den Krieg in der Ukraine.", + "Sollte Nadeschdin mehr als fünf Prozent der Stimmen bekommen oder sogar Zweiter werden, wäre es, wenn auch kein politischer, so doch zumindest ein ideologischer Sieg: Denn das Bild des Zusammenhalts der russischen Bevölkerung gegen die Ukraine und den Westen, welches der Kreml nur zu gerne nutzt, würde sichtbare Kratzer bekommen." + ] + } + ] + }, "publishing_date": "2024-01-30 14:13:12.269000+00:00", "title": "Russland-Wahl: Nadeschdin setzt auf ein Ende der Putin-Ära", "topics": [ From f561af8b134e315d32a05f67a15d2c40337ec765 Mon Sep 17 00:00:00 2001 From: Max Dallabetta Date: Mon, 25 Mar 2024 14:01:35 +0100 Subject: [PATCH 09/13] update test cases --- .../parser/test_data/de/BerlinerZeitung.json | 35 +--- tests/resources/parser/test_data/de/Bild.json | 2 +- .../parser/test_data/de/BusinessInsider.json | 14 +- tests/resources/parser/test_data/de/DW.json | 78 ++++----- .../parser/test_data/de/DieWelt.json | 10 +- .../parser/test_data/de/DieZeit.json | 3 +- tests/resources/parser/test_data/de/FAZ.json | 2 +- .../resources/parser/test_data/de/Focus.json | 16 +- tests/resources/parser/test_data/de/MDR.json | 18 +-- tests/resources/parser/test_data/de/NDR.json | 3 +- tests/resources/parser/test_data/de/NTV.json | 8 +- tests/resources/parser/test_data/de/SZ.json | 10 +- .../parser/test_data/de/SpiegelOnline.json | 2 +- .../resources/parser/test_data/de/Stern.json | 34 ++-- .../parser/test_data/de/Tagesschau.json | 14 +- tests/resources/parser/test_data/de/WAZ.json | 2 +- .../parser/test_data/fr/LeMonde.json | 21 ++- .../parser/test_data/na/TheNamibian.json | 86 ++++++++-- .../parser/test_data/uk/TheGuardian.json | 19 +++ .../parser/test_data/uk/TheTelegraph.json | 151 +++++++++++++++--- .../resources/parser/test_data/us/APNews.json | 10 +- tests/resources/parser/test_data/us/CNBC.json | 3 +- .../parser/test_data/us/FoxNews.json | 10 +- .../parser/test_data/us/FreeBeacon.json | 10 +- .../parser/test_data/us/LATimes.json | 65 ++++++-- .../parser/test_data/us/Reuters.json | 71 +++++++- .../parser/test_data/us/TheGatewayPundit.json | 5 - .../parser/test_data/us/TheIntercept.json | 39 +++++ .../parser/test_data/us/TheNation.json | 27 ++-- .../parser/test_data/us/TheNewYorker.json | 8 +- .../parser/test_data/us/WorldTruth.json | 24 +-- 31 files changed, 542 insertions(+), 258 deletions(-) diff --git a/tests/resources/parser/test_data/de/BerlinerZeitung.json b/tests/resources/parser/test_data/de/BerlinerZeitung.json index a5a0bdf4e..290ad7086 100644 --- a/tests/resources/parser/test_data/de/BerlinerZeitung.json +++ b/tests/resources/parser/test_data/de/BerlinerZeitung.json @@ -5,20 +5,13 @@ ], "body": { "summary": [ - "Nach der Zeugung von mindestens 550 Kindern hat ein niederländisches Gericht einen übereifrigen Samenspender gestoppt. Das Gericht untersagte dem Mann am Freitag jede weitere Samenspende. Bei einem Verstoß muss er 100.000 Euro Strafe zahlen. Eine Frau, die durch eine Samenspende des Mannes ein Kind bekam, und die Stiftung Donorkind hatten den 41-Jährigen verklagt. Weil er in Online-Netzwerken weiter seine Dienste anbot, wurde er nun im Eilverfahren verurteilt." + "Ein Mann bot sein Sperma mindestens zwölf Kliniken, über Internetplattformen und privat an. Er gab vor, bisher nur wenige Kinder gezeugt zu haben, was nicht stimmte." ], "sections": [ { "headline": [], "paragraphs": [ - "Nach der Zeugung von mindestens 550 Kindern hat ein niederländisches Gericht einen übereifrigen Samenspender gestoppt. Das Gericht untersagte dem Mann am Freitag jede weitere Samenspende. Bei einem Verstoß muss er 100.000 Euro Strafe zahlen. Eine Frau, die durch eine Samenspende des Mannes ein Kind bekam, und die Stiftung Donorkind hatten den 41-Jährigen verklagt. Weil er in Online-Netzwerken weiter seine Dienste anbot, wurde er nun im Eilverfahren verurteilt." - ] - }, - { - "headline": [ - "Der Mann hatte sein Sperma an mindestens zwölf Kliniken und über Internet-Plattformen auch privat an hunderte Paare gespendet. Die Klägerin, die ihn nach Angaben von Donorkind im Internet kennengelernt hatte, wirft ihm vor, sie über die Zahl der von ihm gezeugten Kinder getäuscht zu haben. Er gab demnach an, Vater von maximal 25 Kindern in zwölf Familien zu sein. Mehr ist in den Niederlanden zur Vermeidung von Inzest durch zu viele Halbgeschwister nicht erlaubt." - ], - "paragraphs": [ + "Nach der Zeugung von mindestens 550 Kindern hat ein niederländisches Gericht einen übereifrigen Samenspender gestoppt. Das Gericht untersagte dem Mann am Freitag jede weitere Samenspende. Bei einem Verstoß muss er 100.000 Euro Strafe zahlen. Eine Frau, die durch eine Samenspende des Mannes ein Kind bekam, und die Stiftung Donorkind hatten den 41-Jährigen verklagt. Weil er in Online-Netzwerken weiter seine Dienste anbot, wurde er nun im Eilverfahren verurteilt.", "Der Mann hatte sein Sperma an mindestens zwölf Kliniken und über Internet-Plattformen auch privat an hunderte Paare gespendet. Die Klägerin, die ihn nach Angaben von Donorkind im Internet kennengelernt hatte, wirft ihm vor, sie über die Zahl der von ihm gezeugten Kinder getäuscht zu haben. Er gab demnach an, Vater von maximal 25 Kindern in zwölf Familien zu sein. Mehr ist in den Niederlanden zur Vermeidung von Inzest durch zu viele Halbgeschwister nicht erlaubt." ] }, @@ -27,30 +20,10 @@ "Samenbetrug: Kinder wachsen jetzt mit Hunderten Halbgeschwistern auf" ], "paragraphs": [ - "Dem Urteil zufolge ist der Mann Vater von allein hundert Kindern, die in niederländischen Kliniken gezeugt wurden. Hinzu kommt demnach eine nicht genau bezifferbare Zahl von Kindern, die über privat organisierte Samenspenden und eine dänische Klinik gezeugt wurden, die sein Sperma an Paare in verschiedenen Ländern weitergeleitet hatte. Insgesamt hat der Mann nach Auffassung der Gerichts seit 2007 mindestens 550 bis 600 Kinder gezeugt." - ] - }, - { - "headline": [ - "Dem Urteil zufolge ist der Mann Vater von allein hundert Kindern, die in niederländischen Kliniken gezeugt wurden. Hinzu kommt demnach eine nicht genau bezifferbare Zahl von Kindern, die über privat organisierte Samenspenden und eine dänische Klinik gezeugt wurden, die sein Sperma an Paare in verschiedenen Ländern weitergeleitet hatte. Insgesamt hat der Mann nach Auffassung der Gerichts seit 2007 mindestens 550 bis 600 Kinder gezeugt." - ], - "paragraphs": [ - "Der Mann habe die Paare „bewusst“ über die Zahl der von ihm gezeugten Kinder getäuscht, urteilte das Gericht in Den Haag. „All diese Eltern sind nun mit der Tatsache konfrontiert, dass ihre Kinder Teil eines riesigen Verwandtschaftsnetzwerkes mit Hunderten von Halbgeschwistern sind“, erklärte das Gericht. Negative Folgen für die Kinder, etwa psychische Probleme aufgrund von Identitätsfragen und Angst vor Inzest, hält das Gericht für „hinreichend plausibel“." - ] - }, - { - "headline": [ - "Der Mann habe die Paare „bewusst“ über die Zahl der von ihm gezeugten Kinder getäuscht, urteilte das Gericht in Den Haag. „All diese Eltern sind nun mit der Tatsache konfrontiert, dass ihre Kinder Teil eines riesigen Verwandtschaftsnetzwerkes mit Hunderten von Halbgeschwistern sind“, erklärte das Gericht. Negative Folgen für die Kinder, etwa psychische Probleme aufgrund von Identitätsfragen und Angst vor Inzest, hält das Gericht für „hinreichend plausibel“." - ], - "paragraphs": [ + "Dem Urteil zufolge ist der Mann Vater von allein hundert Kindern, die in niederländischen Kliniken gezeugt wurden. Hinzu kommt demnach eine nicht genau bezifferbare Zahl von Kindern, die über privat organisierte Samenspenden und eine dänische Klinik gezeugt wurden, die sein Sperma an Paare in verschiedenen Ländern weitergeleitet hatte. Insgesamt hat der Mann nach Auffassung der Gerichts seit 2007 mindestens 550 bis 600 Kinder gezeugt.", + "Der Mann habe die Paare „bewusst“ über die Zahl der von ihm gezeugten Kinder getäuscht, urteilte das Gericht in Den Haag. „All diese Eltern sind nun mit der Tatsache konfrontiert, dass ihre Kinder Teil eines riesigen Verwandtschaftsnetzwerkes mit Hunderten von Halbgeschwistern sind“, erklärte das Gericht. Negative Folgen für die Kinder, etwa psychische Probleme aufgrund von Identitätsfragen und Angst vor Inzest, hält das Gericht für „hinreichend plausibel“.", "Der Fall ist nicht der erste Samenspende-Skandal in den Niederlanden. Im Jahr 2020 kam heraus, dass ein inzwischen gestorbener Gynäkologe bei der künstlichen Befruchtung von Patientinnen mindestens 17 Kinder gezeugt hatte. Er hatte sein eigenes Sperma benutzt, die Frauen aber in dem Glauben gelassen, es stamme von anonymen Spendern." ] - }, - { - "headline": [ - "Der Fall ist nicht der erste Samenspende-Skandal in den Niederlanden. Im Jahr 2020 kam heraus, dass ein inzwischen gestorbener Gynäkologe bei der künstlichen Befruchtung von Patientinnen mindestens 17 Kinder gezeugt hatte. Er hatte sein eigenes Sperma benutzt, die Frauen aber in dem Glauben gelassen, es stamme von anonymen Spendern." - ], - "paragraphs": [] } ] }, diff --git a/tests/resources/parser/test_data/de/Bild.json b/tests/resources/parser/test_data/de/Bild.json index 6ba73548b..22b6ad89e 100644 --- a/tests/resources/parser/test_data/de/Bild.json +++ b/tests/resources/parser/test_data/de/Bild.json @@ -5,7 +5,7 @@ ], "body": { "summary": [ - "Es war bereits der zwölfte Einsatz in der 2. Bundesliga von Fortuna Düsseldorfs Bubi Jona Niemiec (21). Kaum nach 67 Minuten eingewechselt, scheiterte der Stürmer nur an der Latte. Doch war er beim 0:0 auf Pauli eine Bereicherung." + "Es war bereits der zwölfte Einsatz in der 2. Bundesliga von Fortuna Düsseldorfs Bubi Jona Niemiec (21). Kaum nach 67 Minuten eingewechselt, scheiterte der Stürmer nur an der Latte. Doch war er beim 0:0 auf Pauli eine Bereicherung." ], "sections": [ { diff --git a/tests/resources/parser/test_data/de/BusinessInsider.json b/tests/resources/parser/test_data/de/BusinessInsider.json index 811ec6369..c720ebf15 100644 --- a/tests/resources/parser/test_data/de/BusinessInsider.json +++ b/tests/resources/parser/test_data/de/BusinessInsider.json @@ -24,13 +24,13 @@ "Statistiken, die die enorme Größe von Evergrande, Chinas sterbendem Immobilienriesen, verdeutlichen" ], "paragraphs": [ - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) \r\n\r\nZur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.\r\n\r" + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", + "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen." ] } ] diff --git a/tests/resources/parser/test_data/de/DW.json b/tests/resources/parser/test_data/de/DW.json index 2c0e8482e..a45b0041e 100644 --- a/tests/resources/parser/test_data/de/DW.json +++ b/tests/resources/parser/test_data/de/DW.json @@ -5,24 +5,24 @@ ], "body": { "summary": [ - "Die Ukraine bereitet sich auf eine womöglich entscheidende Gegenoffensive vor, um die von Russland besetzten Gebiete zu befreien. Je länger Kiew wartet, desto besser scheinen seine Chancen. " + "Die Ukraine bereitet sich auf eine womöglich entscheidende Gegenoffensive vor, um die von Russland besetzten Gebiete zu befreien. Je länger Kiew wartet, desto besser scheinen seine Chancen." ], "sections": [ { "headline": [], "paragraphs": [ "Eine Autobahn in Polen nahe der Grenze zur Ukraine. Eine Kolonne aus einem Dutzend olivgrüner Armee-Trucks fährt an einem Aprilmorgen aus Richtung Ukraine kommend. Ihre Tieflader sind leer. \"Ich habe sie vor einer Woche gesehen. Sie haben Panzer in die Ukraine gebracht\", sagt der Taxifahrer. \"Es waren sehr große Panzer.\"", - "Jeden dieser Panzer wird die Ukraine in den kommenden Wochen und Monaten brauchen. Die ukrainische Armee beendet gerade ihre Vorbereitungen auf eine vor Monaten angekündigte und mit Spannung erwartete Gegenoffensive. Sie soll eine Wende im bisherigen zermürbenden Stellungskrieg bringen. Und sie soll Russland aus den besetzten Gebieten vertreiben. Es könnte eine entscheidende Schlacht werden. Ein Befreiungsschlag. " + "Jeden dieser Panzer wird die Ukraine in den kommenden Wochen und Monaten brauchen. Die ukrainische Armee beendet gerade ihre Vorbereitungen auf eine vor Monaten angekündigte und mit Spannung erwartete Gegenoffensive. Sie soll eine Wende im bisherigen zermürbenden Stellungskrieg bringen. Und sie soll Russland aus den besetzten Gebieten vertreiben. Es könnte eine entscheidende Schlacht werden. Ein Befreiungsschlag." ] }, { "headline": [ - "Kämpfe um Bachmut, um Zeit zu gewinnen " + "Kämpfe um Bachmut, um Zeit zu gewinnen" ], "paragraphs": [ - "Wer in diesen Tagen nach Kiew reist, erlebt die buchstäbliche Ruhe vor dem Sturm. Russische Raketenangriffe wie am Freitag, 28. April, waren zuletzt selten geworden. Auf gut gepflegten Straßen der Hauptstadt blühen Bäume und Blumen, Cafés sind voll, der Krieg scheint weit weg. Und doch wird man immer wieder daran erinnert. An jeder Ecke hängen Plakate mit Aufrufen, sich freiwillig zu melden oder für die Armee zu spenden. Auf dem Majdan, dem Platz der Unabhängigkeit, werden fast täglich Särge mit prominenten gefallenen Kämpfern aufgestellt.", - "Besonders viele sterben bei Bachmut. Die Stadt im Gebiet Donezk ist seit Monaten hart umkämpft und nun größenteils unter russischer Kontrolle. Doch die ukrainische Armee gibt nicht auf. Die Staats- und Armeeführung erklärt das mit dem Schutz anderer Städte in der Nähe. Doch Kiew will bei Bachmut nicht nur russische Kräfte binden, sondern auch Zeit für die Vorbereitung der Gegenoffensive gewinnen. Die ukrainische Armee hat ihre Reserven deshalb lange geschont und sehr hohe Verluste in Kauf genommen. Genaue Zahlen sind unbekannt. ", - "Auch Andrij und Maxym (Namen von der Redaktion geändert) haben bei Bachmut gekämpft. Derzeit sind sie wieder in Kiew - endlich Zeit zur Erholung. \"Ich hoffe sehr, dass es sich gelohnt hat\", sagt Andrij über die Entscheidung, Bachmut unbedingt zu halten. Er selbst scheint sich nicht sicher zu sein. Maxym erzählt von der zahlenmäßigen Überlegenheit russischer Kräfte, schlechter Vorbereitung und schwacher Ausrüstung seiner Einheit. Was die beiden von der Gegenoffensive erwarten? \"Endlich wieder befreite Gebiete\", sagt Maxym.      " + "Wer in diesen Tagen nach Kiew reist, erlebt die buchstäbliche Ruhe vor dem Sturm. Russische Raketenangriffe wie am Freitag, 28. April, waren zuletzt selten geworden. Auf gut gepflegten Straßen der Hauptstadt blühen Bäume und Blumen, Cafés sind voll, der Krieg scheint weit weg. Und doch wird man immer wieder daran erinnert. An jeder Ecke hängen Plakate mit Aufrufen, sich freiwillig zu melden oder für die Armee zu spenden. Auf dem Majdan, dem Platz der Unabhängigkeit, werden fast täglich Särge mit prominenten gefallenen Kämpfern aufgestellt.", + "Besonders viele sterben bei Bachmut. Die Stadt im Gebiet Donezk ist seit Monaten hart umkämpft und nun größenteils unter russischer Kontrolle. Doch die ukrainische Armee gibt nicht auf. Die Staats- und Armeeführung erklärt das mit dem Schutz anderer Städte in der Nähe. Doch Kiew will bei Bachmut nicht nur russische Kräfte binden, sondern auch Zeit für die Vorbereitung der Gegenoffensive gewinnen. Die ukrainische Armee hat ihre Reserven deshalb lange geschont und sehr hohe Verluste in Kauf genommen. Genaue Zahlen sind unbekannt.", + "Auch Andrij und Maxym (Namen von der Redaktion geändert) haben bei Bachmut gekämpft. Derzeit sind sie wieder in Kiew - endlich Zeit zur Erholung. \"Ich hoffe sehr, dass es sich gelohnt hat\", sagt Andrij über die Entscheidung, Bachmut unbedingt zu halten. Er selbst scheint sich nicht sicher zu sein. Maxym erzählt von der zahlenmäßigen Überlegenheit russischer Kräfte, schlechter Vorbereitung und schwacher Ausrüstung seiner Einheit. Was die beiden von der Gegenoffensive erwarten? \"Endlich wieder befreite Gebiete\", sagt Maxym." ] }, { @@ -31,8 +31,8 @@ ], "paragraphs": [ "In ukrainischen Medien ist die Gegenoffensive ein Dauerthema, doch die Armeevertreter hüllen sich in Schweigen. Auf alle Anfragen heißt es: \"Abwarten.\" Das hat viele Gründe. So sind zum Beispiel noch nicht alle erwarteten westlichen Waffen eingetroffen. Seit Jahresbeginn hat die Ukraine von NATO-Partnern viel \"Heavy Metal\" bekommen, wie es umgangssprachlich heißt, vieles davon zum ersten Mal: dutzende moderne Kampf- und Schützenpanzer aus deutscher und britischer Produktion, US-amerikanische Patriot-Flugabwehrsysteme, sowjetische Kampfjets.", - "Für die Offensive haben die Armee und die Nationalgarde nach Schätzungen der Online-Zeitung \"Ukrajinska Prawda\" mindestens 16 neue Brigaden gegründet, insgesamt bis zu 50.000 Mann. Diese neuen Einheiten brauchen Zeit für die Vorbereitung, auch, um sich mit neuen Waffen vertraut zu machen. Zusätzliche Herausforderung ist der koordinierte Einsatz vieler Verbände, eine Großoffensive eben. Bisher hatte die Ukraine wenig Erfahrung damit. Mögliche Szenarien wurden auf Computern durchgespielt, heißt es in Kiewer Fachkreisen. ", - "Die Wetterbedingungen sind noch ungünstig. Regen hat viele Landstraßen für schwere Kriegstechnik kaum passierbar gemacht. Außerdem müssen die ukrainischen Soldaten warten, bis dichteres Laub auf den Bäumen gewachsen ist, um sich besser tarnen zu können. Bis es ausreichend trocken und grün ist, wird es noch einige Tage dauern." + "Für die Offensive haben die Armee und die Nationalgarde nach Schätzungen der Online-Zeitung \"Ukrajinska Prawda\" mindestens 16 neue Brigaden gegründet, insgesamt bis zu 50.000 Mann. Diese neuen Einheiten brauchen Zeit für die Vorbereitung, auch, um sich mit neuen Waffen vertraut zu machen. Zusätzliche Herausforderung ist der koordinierte Einsatz vieler Verbände, eine Großoffensive eben. Bisher hatte die Ukraine wenig Erfahrung damit. Mögliche Szenarien wurden auf Computern durchgespielt, heißt es in Kiewer Fachkreisen.", + "Die Wetterbedingungen sind noch ungünstig. Regen hat viele Landstraßen für schwere Kriegstechnik kaum passierbar gemacht. Außerdem müssen die ukrainischen Soldaten warten, bis dichteres Laub auf den Bäumen gewachsen ist, um sich besser tarnen zu können. Bis es ausreichend trocken und grün ist, wird es noch einige Tage dauern." ] }, { @@ -40,9 +40,9 @@ "Krim als strategische Stoßrichtung" ], "paragraphs": [ - "Wo, wann und wie die Ukraine zuschlagen wird, ist gerade eines der am besten gehüteten Geheimnisse. Es dürfte mindestens zwei Stoßrichtungen gebeten. So ist die Armee im Herbst 2022 bei Charkiw und Cherson vorgegangen - mit Erfolg.", + "Wo, wann und wie die Ukraine zuschlagen wird, ist gerade eines der am besten gehüteten Geheimnisse. Es dürfte mindestens zwei Stoßrichtungen gebeten. So ist die Armee im Herbst 2022 bei Charkiw und Cherson vorgegangen - mit Erfolg.", "Der Oberbefehlshaber der ukrainischen Armee, General Walerij Saluschnyj, skizzierte in seinem bisher einzigen programmatischen Artikel im September 2022 nur ansatzweise, wie solch eine ukrainische Gegenoffensive aussehen könnte. Er sprach von \"einigen konsequenten, im Idealfall gleichzeitigen Gegenschlägen\". Als ein strategisch wichtiges Ziel erwähnte Saluschnyj die 2014 von Russland annektierte Halbinsel Krim. Das ist die Hauptrichtung, in die die Ukraine vorzustoßen versuchen dürfte, sagen alle in Kiew. Überraschungen und Täuschungsmanöver sind auch zu erwarten. Viele bezweifeln jedoch, dass die Ukraine die Halbinsel jetzt schon erobern könnte. Dafür gebe es nicht genug Kräfte und Technik.", - "Als Hauptstoßrichtung gilt seit Langem das Gebiet Saporischschja im Süden der Ukraine. Von dort wollen die ukrainischen Streitkräfte weiter bis zur Krim gehen, um russische Truppen von der Versorgung über Land abzuschneiden. Wenn das gelingt, wäre das ein großer Erfolg für Kiew, heißt es. Leicht wird es nicht, denn Russland hat mehrere Verteidigungslinien aufgebaut. Außerdem dürfte Russland diesmal - anders als bei Charkiw oder Cherson - mit Gegenschlägen reagieren, was zu den Risiken der ukrainischen Offensive zählt. " + "Als Hauptstoßrichtung gilt seit Langem das Gebiet Saporischschja im Süden der Ukraine. Von dort wollen die ukrainischen Streitkräfte weiter bis zur Krim gehen, um russische Truppen von der Versorgung über Land abzuschneiden. Wenn das gelingt, wäre das ein großer Erfolg für Kiew, heißt es. Leicht wird es nicht, denn Russland hat mehrere Verteidigungslinien aufgebaut. Außerdem dürfte Russland diesmal - anders als bei Charkiw oder Cherson - mit Gegenschlägen reagieren, was zu den Risiken der ukrainischen Offensive zählt." ] }, { @@ -50,8 +50,8 @@ "Gegenoffensive dürfte den Krieg nicht beenden" ], "paragraphs": [ - "Trotzdem ist die Stimmung in Kiew vorsichtig optimistisch. \"Diese Offensive kann gar nicht scheitern, es werden weitere Gebiete befreit\", sagt ein Militärexperte. \"Die Frage ist nur, wie viel und um welchen Preis\". Diesen Preis sieht der Soldat Andrij jedes Mal, wenn er auf die Kontaktliste auf seinem Handy schaut: \"Viele Kameraden sind gefallen. Ich schaffe es nicht, ihre Nummern zu löschen.\"    ", - "Auch die Frage, was nach der Gegenoffensive passiert, steht im Raum. Manche befürchten, dass, wenn sie weit hinter den Erwartungen zurück bleibt, der Westen die Ukraine zu einer Verhandlungslösung und zu schmerzhaften Zugeständnissen bewegen könnte. Die Militärführung hat sich klar dagegen ausgesprochen. \"Das wird nicht passieren\", sagt Andrij. Er und viele in Kiew gehen von einem langen Krieg aus, der auch nach der Gegenoffensive nicht zu Ende sein dürfte. Er hofft deshalb auf weitere Konvois mit schwerem Kriegsgerät aus dem Westen. " + "Trotzdem ist die Stimmung in Kiew vorsichtig optimistisch. \"Diese Offensive kann gar nicht scheitern, es werden weitere Gebiete befreit\", sagt ein Militärexperte. \"Die Frage ist nur, wie viel und um welchen Preis\". Diesen Preis sieht der Soldat Andrij jedes Mal, wenn er auf die Kontaktliste auf seinem Handy schaut: \"Viele Kameraden sind gefallen. Ich schaffe es nicht, ihre Nummern zu löschen.\"", + "Auch die Frage, was nach der Gegenoffensive passiert, steht im Raum. Manche befürchten, dass, wenn sie weit hinter den Erwartungen zurück bleibt, der Westen die Ukraine zu einer Verhandlungslösung und zu schmerzhaften Zugeständnissen bewegen könnte. Die Militärführung hat sich klar dagegen ausgesprochen. \"Das wird nicht passieren\", sagt Andrij. Er und viele in Kiew gehen von einem langen Krieg aus, der auch nach der Gegenoffensive nicht zu Ende sein dürfte. Er hofft deshalb auf weitere Konvois mit schwerem Kriegsgerät aus dem Westen." ] } ] @@ -74,14 +74,14 @@ ], "body": { "summary": [ - "Müdigkeit und Muskelschmerzen: Jede Impfung kann Nebenwirkungen haben, auch die gegen COVID-19. Doch es ist sehr schwer das sogenannte Post-Vac-Syndrom zu diagnostizieren. Was wissen wir über diese Impfschäden? " + "Müdigkeit und Muskelschmerzen: Jede Impfung kann Nebenwirkungen haben, auch die gegen COVID-19. Doch es ist sehr schwer das sogenannte Post-Vac-Syndrom zu diagnostizieren. Was wissen wir über diese Impfschäden?" ], "sections": [ { "headline": [], "paragraphs": [ "Mehr als 13 Milliarden Impfdosen sind während der Corona-Pandemie weltweit verabreicht worden. Allein in Deutschland wurden 192 Millionen Dosen verimpft – noch nie haben so viele Menschen innerhalb so kurzer Zeit eine oder mehrere Spritzen gegen dieselbe Krankheit bekommen.", - "Nicht alle haben das gut verkraftet: Manche Menschen leiden seit der Impfung an einer Vielzahl teils schwerer Symptome, die ihnen ein normales Leben unmöglich machen. Einige Geschädigte wollen den Impfstoffhersteller BioNTech wegen angeblicher Impfschäden, auch bekannt als Post-Vac-Syndrom, verklagen." + "Nicht alle haben das gut verkraftet: Manche Menschen leiden seit der Impfung an einer Vielzahl teils schwerer Symptome, die ihnen ein normales Leben unmöglich machen. Einige Geschädigte wollen den Impfstoffhersteller BioNTech wegen angeblicher Impfschäden, auch bekannt als Post-Vac-Syndrom, verklagen." ] }, { @@ -89,12 +89,12 @@ "Was ist das Post-Vac-Syndrom und wie viele Menschen leiden darunter?" ], "paragraphs": [ - "Was viele Menschen gespürt haben, sind Schmerzen an der Einstichstelle, Müdigkeit, Kopfschmerzen oder Schüttelfrost. Diese Symptome verschwinden nach kurzer Zeit wieder und gelten als normale Impfreaktion. ", - "Das Post-Vac-Syndrom ist mehr, viel mehr. Nur was genau, das weiß noch niemand so richtig. ", + "Was viele Menschen gespürt haben, sind Schmerzen an der Einstichstelle, Müdigkeit, Kopfschmerzen oder Schüttelfrost. Diese Symptome verschwinden nach kurzer Zeit wieder und gelten als normale Impfreaktion.", + "Das Post-Vac-Syndrom ist mehr, viel mehr. Nur was genau, das weiß noch niemand so richtig.", "Ähnlich wie Long COVID meint auch das Post-Vac-Syndrom ein Sammelsurium an Symptomen und Krankheitsbildern, die denen von Long COVID an vielen Stellen gleichen: chronisches Erschöpfungssyndrom (CFS/ME), Migräne, Muskelschmerzen oder Herz-Kreislauferkrankungen.", "So facettenreich die Symptome sein mögen, sie haben eines gemeinsam: Sie befallen die Betroffenen kurze Zeit nach der Corona-Impfung. Und weil Impfnebenwirkungen und -schäden immer in engem zeitlichen Zusammenhang mit der verabreichten Spritze stehen, liegt die Post-Vac-Vermutung natürlich nahe.", - "Aus Sicht der betroffenen Menschen sei das vollkommen verständlich, findet auch Harald Prüß von der Berliner Charité und dem Berliner Standort des Deutschen Zentrums für Neurodegenerative Erkrankungen (DZNE). Allerdings handelt es sich bei dieser zeitlichen Aufeinanderfolge erstmal nur um eine Korrelation, nicht um einen kausalen Zusammenhang.", - "Prüß sagt auch, dass das Post-Vac-Syndrom \"in seiner Dimension total überschätzt wird\".", + "Aus Sicht der betroffenen Menschen sei das vollkommen verständlich, findet auch Harald Prüß von der Berliner Charité und dem Berliner Standort des Deutschen Zentrums für Neurodegenerative Erkrankungen (DZNE). Allerdings handelt es sich bei dieser zeitlichen Aufeinanderfolge erstmal nur um eine Korrelation, nicht um einen kausalen Zusammenhang.", + "Prüß sagt auch, dass das Post-Vac-Syndrom \"in seiner Dimension total überschätzt wird\".", "Dem Paul-Ehrlich-Institut, der Bundesbehörde, die in Deutschland für Impfstoffe und Arzneimittel zuständig ist und auch zu den Corona-Impfstoffe regelmäßige Sicherheitsberichte verfasst hat, sind bis zum 31.10.2022 knapp 51.000 Verdachtsfälle schwerwiegender Nebenwirkung nach der Coronaimpfung gemeldet worden. Ein Verdacht ist allerdings erstmal nichts weiter als ein Verdacht. Nur bei einem Bruchteil der gemeldeten Fälle konnte bisher ein eindeutiger Zusammenhang mit der Impfung nachgewiesen werden." ] }, @@ -103,14 +103,14 @@ "Wie diagnostizieren Mediziner das Post-Vac-Syndrom?" ], "paragraphs": [ - "In der neurologischen Post-COVID-19-Sprechstunde an der Klinik für Neurologie an der Charité sieht Prüß viele Menschen, die glauben, unter dem Post-Vac-Syndrom zu leiden. ", + "In der neurologischen Post-COVID-19-Sprechstunde an der Klinik für Neurologie an der Charité sieht Prüß viele Menschen, die glauben, unter dem Post-Vac-Syndrom zu leiden.", "Weder Prüß noch andere, die zum Thema forschen bestreiten, dass es schwere Impfschäden gibt und dass den Betroffenen geholfen werden muss.", - "Der erste Hinweis darauf, dass die Kopfschmerzen, das Erschöpfungsgefühl oder die Muskelschwäche tatsächlich etwas mit der Impfung zu tun haben könnten, ist der Zeitrahmen: Treten die Symptome wenige Tage bis Wochen nach der verabreichten Spritze auf, könnte ein Zusammenhang bestehen.  ", + "Der erste Hinweis darauf, dass die Kopfschmerzen, das Erschöpfungsgefühl oder die Muskelschwäche tatsächlich etwas mit der Impfung zu tun haben könnten, ist der Zeitrahmen: Treten die Symptome wenige Tage bis Wochen nach der verabreichten Spritze auf, könnte ein Zusammenhang bestehen.", "Ob das tatsächlich so ist, könne allerdings nur in seltenen Fällen sicher nachgewiesen werden, sagt der Neurologe. \"Es gibt keinen einzigen in der breiten Wissenschaft akzeptierten Biomarker.\"", - "Ein solcher Biomarker wäre beispielsweise ein bestimmter Antikörper, den der Körper als Reaktion auf die Impfung bildet. So entdeckten Forschende einen speziellen Antikörper im Blut von Personen, die nach der Impfung eine Herzmuskelentzündung (Myokarditis) entwickelt hatten. Die Myokarditis gilt als eine mögliche, seltene Nebenwirkung nach der Impfung mit den mRNA-Impfstoffen von BioNTech/Pfizer und Moderna.", - "Der Vektor-Impfstoff von Astrazeneca war verantwortlich für ein vermehrte Auftreten von Sinusvenenthrombosen nach einer COVID-19 Impfung.", + "Ein solcher Biomarker wäre beispielsweise ein bestimmter Antikörper, den der Körper als Reaktion auf die Impfung bildet. So entdeckten Forschende einen speziellen Antikörper im Blut von Personen, die nach der Impfung eine Herzmuskelentzündung (Myokarditis) entwickelt hatten. Die Myokarditis gilt als eine mögliche, seltene Nebenwirkung nach der Impfung mit den mRNA-Impfstoffen von BioNTech/Pfizer und Moderna.", + "Der Vektor-Impfstoff von Astrazeneca war verantwortlich für ein vermehrte Auftreten von Sinusvenenthrombosen nach einer COVID-19 Impfung.", "\"Es kommt nur selten vor, aber es war klar, dass der Impfstoff ein sehr spezifisches Muster von Hirnvenenthrombosen verursacht hatte, das sonst nicht bekannt ist, weil es mit einer sehr spezifischen Art von Antikörpern verbunden war\", sagt Prüß.", - "Kopfschmerzen, das chronische Fatigue Syndrom oder Herz-Kreislaufbeschwerden machen Menschen nicht erst seit der Pandemie und der großen Impfkampagne das Leben schwer. \"Jeden Tag werden allein in Deutschland 30 neue Multiple-Sklerose-Diagnosen gestellt\", sagt Prüß. All diese Dinge ohne stichhaltige Beweise der Impfung zuzuschreiben, würde den Menschen kaum helfen. Denn ohne korrekte Diagnose sei auch eine hilfreiche Therapie kaum möglich.", + "Kopfschmerzen, das chronische Fatigue Syndrom oder Herz-Kreislaufbeschwerden machen Menschen nicht erst seit der Pandemie und der großen Impfkampagne das Leben schwer. \"Jeden Tag werden allein in Deutschland 30 neue Multiple-Sklerose-Diagnosen gestellt\", sagt Prüß. All diese Dinge ohne stichhaltige Beweise der Impfung zuzuschreiben, würde den Menschen kaum helfen. Denn ohne korrekte Diagnose sei auch eine hilfreiche Therapie kaum möglich.", "Für Prüß und andere, die sich mit dem Thema Post-Vac-Syndrom beschäftigen, liegt deshalb ein Verdacht nahe: Viele Krankheitsbilder, mit denen Betroffene in die Sprechstunde der Charité kommen, haben andere Ursachen. Ein echtes Post-Vac-Syndrom hingegen ist wahrscheinlich sehr selten." ] }, @@ -120,12 +120,12 @@ ], "paragraphs": [ "Das menschliche Immunsystems ist hochkomplex und gesichertes Wissen darüber, was genau im Körper von Post-Vac-Betroffenen passiert, gibt es nicht.", - "Die Immunologin und Präsidentin der Deutschen Gesellschaft für Immunologie, Christine Falk, vermutet, dass der Kern des Problems eine Kreuzreaktion mit dem im Impfstoff enthaltenen oder durch den Impfstoff gebildeten Spike-Protein sein könnte.", - "Sowohl bei manchen Long-COVID- als auch manchen Post-Vac-Patienten kommt es neben der Bildung von Antikörpern gegen das Spike-Protein zu einer Art Kreuzreaktion, bei der sie auch sogenannte Autoantikörper bilden, die unbeabsichtigt körpereigene Strukturen erkennen und angreifen können. ", + "Die Immunologin und Präsidentin der Deutschen Gesellschaft für Immunologie, Christine Falk, vermutet, dass der Kern des Problems eine Kreuzreaktion mit dem im Impfstoff enthaltenen oder durch den Impfstoff gebildeten Spike-Protein sein könnte.", + "Sowohl bei manchen Long-COVID- als auch manchen Post-Vac-Patienten kommt es neben der Bildung von Antikörpern gegen das Spike-Protein zu einer Art Kreuzreaktion, bei der sie auch sogenannte Autoantikörper bilden, die unbeabsichtigt körpereigene Strukturen erkennen und angreifen können.", "Es ist deshalb kein Wunder, dass sich die Symptome von Long COVID, also nach einer durchgemachten Infektion, mit denen nach einer Impfung gleichen können: Im Körper laufen ähnliche immunologische Prozesse ab.", - "Ähnliches beobachteten Forschende beim Impfstoff gegen die Schweinegrippe, genauer gegen den Erreger H1N1. Sowohl der Impfstoff als auch die Infektion lösten bei einer geringen Anzahl von Personen die sogenannte Narkolepsie aus. ", - "Diesem Impfschaden kamen Forschende vergleichsweise leicht auf die Schliche, weil die Betroffenen ähnliche genetische Faktoren aufwiesen, die die Krankheit begünstigten. Die schwere Nebenwirkung des Impfstoffs war auch deshalb leichter nachzuweisen, weil zur fraglichen Zeit nur wenige Menschen mit H1N1 infiziert waren.", - "Im Fall von COVID-19 hingegen wurden Millionen Menschen geimpft, während Millionen gleichzeitig infiziert waren. Aus diesem Grund könne in den seltensten Fällen sicher gesagt werden, so Falk, ob die als Post-Vac-Patienten behandelten Personen nicht auch zusätzlich eine Infektion kurz vor oder nach der Impfung durchgemacht haben, möglicherweise ohne es selbst zu wissen.", + "Ähnliches beobachteten Forschende beim Impfstoff gegen die Schweinegrippe, genauer gegen den Erreger H1N1. Sowohl der Impfstoff als auch die Infektion lösten bei einer geringen Anzahl von Personen die sogenannte Narkolepsie aus.", + "Diesem Impfschaden kamen Forschende vergleichsweise leicht auf die Schliche, weil die Betroffenen ähnliche genetische Faktoren aufwiesen, die die Krankheit begünstigten. Die schwere Nebenwirkung des Impfstoffs war auch deshalb leichter nachzuweisen, weil zur fraglichen Zeit nur wenige Menschen mit H1N1 infiziert waren.", + "Im Fall von COVID-19 hingegen wurden Millionen Menschen geimpft, während Millionen gleichzeitig infiziert waren. Aus diesem Grund könne in den seltensten Fällen sicher gesagt werden, so Falk, ob die als Post-Vac-Patienten behandelten Personen nicht auch zusätzlich eine Infektion kurz vor oder nach der Impfung durchgemacht haben, möglicherweise ohne es selbst zu wissen.", "Um die vielfältigen Symptome der Betroffenen sicher auf die Impfung zurückführen zu können, müsste ausgeschlossenen werden, dass sie zu irgendeinem Zeitpunkt mit SARS-CoV-2 infiziert waren. Falk sagt, das sei in den seltensten Fällen möglich." ] } @@ -150,8 +150,8 @@ { "headline": [], "paragraphs": [ - "Die erste Hürde hat er gemeistert: Boris Nadeschdin darf 100.000 Unterschriften sammeln. Unterschriften, die er braucht, um bei der russischen Präsidentschaftswahl im März gegen Amtsinhaber Wladimir Putin antreten zu dürfen. Nach eigenen Angaben hat er sogar schon 200.000 zusammen - mehr als genug, um sie bei der Zentralen Wahlkommission der Russischen Föderation einzureichen, selbst wenn diese einige nicht anerkennen sollte. Erst nach Prüfung durch die Wahlkommission kann Nadeschdin als Präsidentschaftskandidat registriert werden. In der Vergangenheit waren bereits mehrfach Kandidaten wegen angeblicher \"Formfehler\" nicht zugelassen worden - etwa, weil Wahlhelfer angeblich teilweise Unterschriften nicht korrekt erfasst haben.", - "Nadeschdins Helfer aber fühlen sich gut vorbereitet. \"Wir sammeln Unterschriften aus 200 Städten, 65 Regionen Russlands und von russischen Wahlberechtigten in 30 anderen Ländern, darunter Deutschland\", erklärt Boris Nadeschdin im DW-Interview. Sollte die Zentrale Wahlkommission sich weigern, ihn zur Wahl zuzulassen, will er Massenkundgebungen in 150 Städten des Landes beantragen. Das hatte er bei einem Treffen mit seinen Anhängern in Moskau verkündet. Aber wer ist dieser Mann, der es wagt, Wladimir Putin politisch die Stirn zu bieten?" + "Die erste Hürde hat er gemeistert: Boris Nadeschdin darf 100.000 Unterschriften sammeln. Unterschriften, die er braucht, um bei der russischen Präsidentschaftswahl im März gegen Amtsinhaber Wladimir Putin antreten zu dürfen. Nach eigenen Angaben hat er sogar schon 200.000 zusammen - mehr als genug, um sie bei der Zentralen Wahlkommission der Russischen Föderation einzureichen, selbst wenn diese einige nicht anerkennen sollte. Erst nach Prüfung durch die Wahlkommission kann Nadeschdin als Präsidentschaftskandidat registriert werden. In der Vergangenheit waren bereits mehrfach Kandidaten wegen angeblicher \"Formfehler\" nicht zugelassen worden - etwa, weil Wahlhelfer angeblich teilweise Unterschriften nicht korrekt erfasst haben.", + "Nadeschdins Helfer aber fühlen sich gut vorbereitet. \"Wir sammeln Unterschriften aus 200 Städten, 65 Regionen Russlands und von russischen Wahlberechtigten in 30 anderen Ländern, darunter Deutschland\", erklärt Boris Nadeschdin im DW-Interview. Sollte die Zentrale Wahlkommission sich weigern, ihn zur Wahl zuzulassen, will er Massenkundgebungen in 150 Städten des Landes beantragen. Das hatte er bei einem Treffen mit seinen Anhängern in Moskau verkündet. Aber wer ist dieser Mann, der es wagt, Wladimir Putin politisch die Stirn zu bieten?" ] }, { @@ -159,8 +159,8 @@ "Wer ist Boris Nadeschdin?" ], "paragraphs": [ - "Politisch gesehen ist der heute 60-jährige Nadeschdin kein unbeschriebenes Blatt. Seine politische Karriere begann in den 1990er Jahren als Berater des damaligen Vizepremierministers Boris Nemzow und Assistent von Ministerpräsident Sergej Kirijenko. Auch stand er mit Wladimir Putin nach dessen erster Wahl zum Präsidenten im Jahre 2000 in engem Kontakt. Dieser brach jedoch nach der Festnahme des Oligarchen Michail Chodorkowski im Jahr 2003 ab. Schon damals festigte Putin seine Macht und begann rücksichtslos gegen seine Gegner vorzugehen.", - "Heute ist Nadeschdin der einzige Antikriegskandidat, der zur Wahl zugelassen werden könnte. \"Putin hat einen fatalen Fehler begangen, als er die Spezielle Militäroperation ins Leben rief. Keines der erklärten Ziele ist erfüllt worden. Und es ist unwahrscheinlich, dass sie erfüllt werden, ohne der Wirtschaft großen Schaden zuzufügen und Russlands Demographie einen irreparablen Schlag zu versetzen\", schreibt Nadeschdin auf seiner Website. Für ihn ist das Russland der Zukunft eines, in das freie und gebildete Menschen zurückkehren wollen und das den Krieg in der Ukraine beendet. Nadeschdin zeichnet damit ein völlig anderes Bild seines Landes als Putin." + "Politisch gesehen ist der heute 60-jährige Nadeschdin kein unbeschriebenes Blatt. Seine politische Karriere begann in den 1990er Jahren als Berater des damaligen Vizepremierministers Boris Nemzow und Assistent von Ministerpräsident Sergej Kirijenko. Auch stand er mit Wladimir Putin nach dessen erster Wahl zum Präsidenten im Jahre 2000 in engem Kontakt. Dieser brach jedoch nach der Festnahme des Oligarchen Michail Chodorkowski im Jahr 2003 ab. Schon damals festigte Putin seine Macht und begann rücksichtslos gegen seine Gegner vorzugehen.", + "Heute ist Nadeschdin der einzige Antikriegskandidat, der zur Wahl zugelassen werden könnte. \"Putin hat einen fatalen Fehler begangen, als er die Spezielle Militäroperation ins Leben rief. Keines der erklärten Ziele ist erfüllt worden. Und es ist unwahrscheinlich, dass sie erfüllt werden, ohne der Wirtschaft großen Schaden zuzufügen und Russlands Demographie einen irreparablen Schlag zu versetzen\", schreibt Nadeschdin auf seiner Website. Für ihn ist das Russland der Zukunft eines, in das freie und gebildete Menschen zurückkehren wollen und das den Krieg in der Ukraine beendet. Nadeschdin zeichnet damit ein völlig anderes Bild seines Landes als Putin." ] }, { @@ -168,9 +168,9 @@ "Vor allem junge Menschen unterstützen Nadeschdin" ], "paragraphs": [ - "Vor Nadeschdins Wahlbüro haben sich schon mehrfach lange Schlangen gebildet. Tausende, meist junge Menschen harren stundenlang in bitterer Kälte aus, um für ihn zu unterschreiben. \"Die meisten meiner Unterstützer sind ziemlich jung, zwischen 20 und 30. Aber es gibt auch Ältere, die mich unterstützen. Die älteste Person, die für mich unterschrieben hat, ist eine Frau aus Orjol, die 1936 geboren wurde\", erzählt Nadeschdin der DW.", + "Vor Nadeschdins Wahlbüro haben sich schon mehrfach lange Schlangen gebildet. Tausende, meist junge Menschen harren stundenlang in bitterer Kälte aus, um für ihn zu unterschreiben. \"Die meisten meiner Unterstützer sind ziemlich jung, zwischen 20 und 30. Aber es gibt auch Ältere, die mich unterstützen. Die älteste Person, die für mich unterschrieben hat, ist eine Frau aus Orjol, die 1936 geboren wurde\", erzählt Nadeschdin der DW.", "Vor allem der jungen Generation ist es wichtig, sich zu positionieren, zu demonstrieren und nicht in den Krieg ziehen zu müssen. Sie sind die potenziellen Wähler Nadeschdins.", - "Der Politologe Dmitri Oreschkin kann sich vorstellen, dass Nadeschdin besonders junge Menschen mobilisieren kann: \"20 bis 25 Prozent der Bevölkerung unterstützen Putin nicht. Das Problem ist, dass sie nicht wählen gehen.\" Sie hätten weder für den russischen Präsidenten noch für das politische System insgesamt etwas übrig und verachteten das Wahlverfahren. Daraus erwachse die wichtigste Ressource für Putins Sieg, erläutert Oreschkin. \"Wenn Nadeschdin also nicht gestört würde - und er wird gestört werden, daran besteht kein Zweifel! - könnte er zehn oder fünfzehn Prozent der Stimmen bekommen.\"" + "Der Politologe Dmitri Oreschkin kann sich vorstellen, dass Nadeschdin besonders junge Menschen mobilisieren kann: \"20 bis 25 Prozent der Bevölkerung unterstützen Putin nicht. Das Problem ist, dass sie nicht wählen gehen.\" Sie hätten weder für den russischen Präsidenten noch für das politische System insgesamt etwas übrig und verachteten das Wahlverfahren. Daraus erwachse die wichtigste Ressource für Putins Sieg, erläutert Oreschkin. \"Wenn Nadeschdin also nicht gestört würde - und er wird gestört werden, daran besteht kein Zweifel! - könnte er zehn oder fünfzehn Prozent der Stimmen bekommen.\"" ] }, { @@ -178,9 +178,9 @@ "Unterstützung durch die Opposition" ], "paragraphs": [ - "Ekaterina Duntzowa hat als erste die Nominierung von Boris Nadeschdin unterstützt, nachdem sie selbst von der Zentralen Wahlkommission wegen angeblicher \"zahlreicher Fehler\" von der Kandidatur ausgeschlossen worden war. Er sei der einzige Antikriegskandidat, betont sie. Selbst die üblichen Oppositionskandidaten, die selten einer Meinung ist, haben sich bereit erklärt, Nadeschdin zu unterstützen: Maxim Katz, Michail Chodorkowski, das Korruptionsbekämpfungsteam (FBK) des inhaftierten Kremlkritikers Alexej Nawalny sowie dessen Ehefrau Julia Nawalnaja.", + "Ekaterina Duntzowa hat als erste die Nominierung von Boris Nadeschdin unterstützt, nachdem sie selbst von der Zentralen Wahlkommission wegen angeblicher \"zahlreicher Fehler\" von der Kandidatur ausgeschlossen worden war. Er sei der einzige Antikriegskandidat, betont sie. Selbst die üblichen Oppositionskandidaten, die selten einer Meinung ist, haben sich bereit erklärt, Nadeschdin zu unterstützen: Maxim Katz, Michail Chodorkowski, das Korruptionsbekämpfungsteam (FBK) des inhaftierten Kremlkritikers Alexej Nawalny sowie dessen Ehefrau Julia Nawalnaja.", "\"Ich habe weder mit Chodorkowski noch mit jemand anderem kommuniziert. Ich habe sie weder um Geld noch um Unterstützung gebeten. Aber ich bin jedem russischen Bürger dankbar, der mich in legaler Form unterstützt\", erklärt Nadeschdin der DW.", - "Boris Nadeschdin sei ein eher schwacher Politiker, der nur zur richtigen Zeit am richtigen Ort ist, so Nikolai Petrow, Gastwissenschaftler bei der Stiftung Wissenschaft und Politik in Berlin. In der Vergangenheit galt er eher als Pragmatiker, der auch schon mal mit dem Kreml kooperierte, wenn es seinen eigenen Zwecken dienlich schien. Dass sich die in vielen Fragen grundsätzlich gespaltenen Oppositionskräfte in diesem Fall auf ihn einigen konnten, erklärt Petrow wie folgt: \"Natürlich kann man Nadeschdin nicht als eine einigende Figur der Opposition bezeichnen. Er ist einfach der einzige Kandidat, der sich in irgendeiner Weise gegen den Krieg stellt.\"" + "Boris Nadeschdin sei ein eher schwacher Politiker, der nur zur richtigen Zeit am richtigen Ort ist, so Nikolai Petrow, Gastwissenschaftler bei der Stiftung Wissenschaft und Politik in Berlin. In der Vergangenheit galt er eher als Pragmatiker, der auch schon mal mit dem Kreml kooperierte, wenn es seinen eigenen Zwecken dienlich schien. Dass sich die in vielen Fragen grundsätzlich gespaltenen Oppositionskräfte in diesem Fall auf ihn einigen konnten, erklärt Petrow wie folgt: \"Natürlich kann man Nadeschdin nicht als eine einigende Figur der Opposition bezeichnen. Er ist einfach der einzige Kandidat, der sich in irgendeiner Weise gegen den Krieg stellt.\"" ] }, { @@ -188,9 +188,9 @@ "Wie realistisch ist ein Sieg Nadeschdins?" ], "paragraphs": [ - "Es gilt als sehr wahrscheinlich, dass Wladimir Putin am 17. März zum fünften Mal zum Präsidenten gewählt wird. Wie gering die Chancen für einen Sieg Nadeschdins gesehen werden, lässt sich an einer Antwort von Kremlsprecher Dmitri Peskov auf Fragen von Journalisten ablesen: \"Wir betrachten ihn nicht als Konkurrenten.\"", - "Auch für Dmitri Oreschkin ist klar, dass Boris Nadeschdin keine ernsthafte Gefahr für Putin darstellt. Im Gegenteil: Er könnte für den Kreml von Nutzen sein, zumindest um den Anschein legitimer und freier Wahlen zu bewahren. \"Für den Kreml ist es sicherlich günstig, bequeme oder akzeptable Kandidaten auf der Kandidatenliste zu haben. Ich denke, Boris Nadeschdin fällt in die Kategorie der akzeptablen Kandidaten. Allerdings nur, solange er nicht mehr als fünf Prozent der Stimmen erhält. Im Idealfall sollte Putin 80 Prozent bekommen, der zweite Platz sollte an Leonid Slutsky gehen\", sagt Oreschkin im DW-Interview. Slutsky ist der Vorsitzende der rechtsextremen Partei LDPR, ist aber kein Oppositioneller und unterstützt auch den Krieg in der Ukraine.", - "Sollte Nadeschdin mehr als fünf Prozent der Stimmen bekommen oder sogar Zweiter werden, wäre es, wenn auch kein politischer, so doch zumindest ein ideologischer Sieg: Denn das Bild des Zusammenhalts der russischen Bevölkerung gegen die Ukraine und den Westen, welches der Kreml nur zu gerne nutzt, würde sichtbare Kratzer bekommen." + "Es gilt als sehr wahrscheinlich, dass Wladimir Putin am 17. März zum fünften Mal zum Präsidenten gewählt wird. Wie gering die Chancen für einen Sieg Nadeschdins gesehen werden, lässt sich an einer Antwort von Kremlsprecher Dmitri Peskov auf Fragen von Journalisten ablesen: \"Wir betrachten ihn nicht als Konkurrenten.\"", + "Auch für Dmitri Oreschkin ist klar, dass Boris Nadeschdin keine ernsthafte Gefahr für Putin darstellt. Im Gegenteil: Er könnte für den Kreml von Nutzen sein, zumindest um den Anschein legitimer und freier Wahlen zu bewahren. \"Für den Kreml ist es sicherlich günstig, bequeme oder akzeptable Kandidaten auf der Kandidatenliste zu haben. Ich denke, Boris Nadeschdin fällt in die Kategorie der akzeptablen Kandidaten. Allerdings nur, solange er nicht mehr als fünf Prozent der Stimmen erhält. Im Idealfall sollte Putin 80 Prozent bekommen, der zweite Platz sollte an Leonid Slutsky gehen\", sagt Oreschkin im DW-Interview. Slutsky ist der Vorsitzende der rechtsextremen Partei LDPR, ist aber kein Oppositioneller und unterstützt auch den Krieg in der Ukraine.", + "Sollte Nadeschdin mehr als fünf Prozent der Stimmen bekommen oder sogar Zweiter werden, wäre es, wenn auch kein politischer, so doch zumindest ein ideologischer Sieg: Denn das Bild des Zusammenhalts der russischen Bevölkerung gegen die Ukraine und den Westen, welches der Kreml nur zu gerne nutzt, würde sichtbare Kratzer bekommen." ] } ] diff --git a/tests/resources/parser/test_data/de/DieWelt.json b/tests/resources/parser/test_data/de/DieWelt.json index f180ad2d7..12a26ab98 100644 --- a/tests/resources/parser/test_data/de/DieWelt.json +++ b/tests/resources/parser/test_data/de/DieWelt.json @@ -5,17 +5,17 @@ ], "body": { "summary": [ - " Die deutsche Wirtschaft stagniert, während andere europäische Volkswirtschaften im ersten Quartal positiv überraschen. Experten prognostizieren, dass es keine Erholung geben wird. Deutschland ist das Schlusslicht in Europa – und die Rezession kommt immer näher. " + "Die deutsche Wirtschaft stagniert, während andere europäische Volkswirtschaften im ersten Quartal positiv überraschen. Experten prognostizieren, dass es keine Erholung geben wird. Deutschland ist das Schlusslicht in Europa – und die Rezession kommt immer näher." ], "sections": [ { "headline": [], "paragraphs": [ "Die Euphorie hielt nicht mal zwei Tage. Am Mittwochnachmittag hatte die Bundesregierung noch mit großem Tamtam die Wachstumsprognosen für das laufende Jahr mal eben auf 0,4 Prozent verdoppelt. Am Freitagvormittag war es mit dem Optimismus wieder vorbei.", - "Das Statistische Bundesamt musste verkünden, dass die deutsche Wirtschaft im ersten Quartal stagnierte. Zwischen Januar und März ist das Bruttoinlandsprodukt lediglich um 0,047 Prozent gestiegen. Experten hatten mit einem Zuwachs von 0,2 Prozent gerechnet. Schlimmer noch: Für das vierte Quartal 2022 wurde die Wirtschaftsleistung weiter gekürzt auf -0,5 Prozent von -0,4 Prozent. ", + "Das Statistische Bundesamt musste verkünden, dass die deutsche Wirtschaft im ersten Quartal stagnierte. Zwischen Januar und März ist das Bruttoinlandsprodukt lediglich um 0,047 Prozent gestiegen. Experten hatten mit einem Zuwachs von 0,2 Prozent gerechnet. Schlimmer noch: Für das vierte Quartal 2022 wurde die Wirtschaftsleistung weiter gekürzt auf -0,5 Prozent von -0,4 Prozent.", "Ursprünglich hatte das Statistische Bundesamt auch mit einer Stagnation im Schlussquartal gerechnet und in Salami-Taktik immer weiter nach unten gekürzt. Insofern könnten auch die Zahlen für das erste Quartal nach unten revidiert werden. Und dann wäre Deutschland offiziell in einer Rezession, die laut Definition nach zwei Minusquartalen in Folge festgestellt wird.", - "„Wo ist der Wumms?“, fragt Alexander Krüger, Chefökonom beim Bankhaus Hauck Aufhäuser Lampe angesichts der veröffentlichten Zahlen. „Ein dynamischer Aufschwung ist weiter nicht in Sicht.“ Insbesondere der Vergleich mit den anderen großen Volkswirtschaften in Europa ist ernüchternd. ", - "Spanien und Italien überraschten im ersten Quartal positiv. Deren Wirtschaftsleistung ist um jeweils 0,5 Prozent expandiert, Frankreich hat mit einem Zuwachs von 0,2 Prozent solide geliefert. Die Wirtschaft der Euro-Zone insgesamt ist trotz der Schwäche hierzulande um 0,1 Prozent gewachsen. Deutschland ist in Europa inzwischen wieder Schlusslicht. ", + "„Wo ist der Wumms?“, fragt Alexander Krüger, Chefökonom beim Bankhaus Hauck Aufhäuser Lampe angesichts der veröffentlichten Zahlen. „Ein dynamischer Aufschwung ist weiter nicht in Sicht.“ Insbesondere der Vergleich mit den anderen großen Volkswirtschaften in Europa ist ernüchternd.", + "Spanien und Italien überraschten im ersten Quartal positiv. Deren Wirtschaftsleistung ist um jeweils 0,5 Prozent expandiert, Frankreich hat mit einem Zuwachs von 0,2 Prozent solide geliefert. Die Wirtschaft der Euro-Zone insgesamt ist trotz der Schwäche hierzulande um 0,1 Prozent gewachsen. Deutschland ist in Europa inzwischen wieder Schlusslicht.", "Das ist auch insofern bemerkenswert, als die deutsche Ökonomie bereits im vierten Quartal im Vergleich zu den anderen Volkwirtschaften der Euro-Zone überdurchschnittlich stark geschrumpft war. Damit liegt die Wirtschaftsleistung hierzulande leicht unter dem Vor-Corona-Niveau. Unter den großen Volkswirtschaften ist das lediglich noch bei Spanien der Fall. In Italien liegt das BIP 2,4 Prozent über dem Niveau von Ende 2019, in Frankreich 1,4 Prozent darüber und für die gesamte Euro-Zone sogar 2,5 Prozent höher." ] }, @@ -24,7 +24,7 @@ "Privater Konsum wird sich nicht schnell genug erholen" ], "paragraphs": [ - "Und Deutschland dürfte weiter zurückfallen. Die Deutsche Bank fühlt sich nach den Zahlen zum ersten Quartal in ihrer Prognose bestätigt, dass die deutsche Wirtschaft im Gesamtjahr 2023 ein Nullwachstum hinlegen wird. Deutschbanker Stefan Schneider rechnet damit, dass sich die Industrieproduktion im Laufe des Jahres abschwächt und der Bau nach einer kleinen Jahresanfangskonjunktur ins Minus dreht. ", + "Und Deutschland dürfte weiter zurückfallen. Die Deutsche Bank fühlt sich nach den Zahlen zum ersten Quartal in ihrer Prognose bestätigt, dass die deutsche Wirtschaft im Gesamtjahr 2023 ein Nullwachstum hinlegen wird. Deutschbanker Stefan Schneider rechnet damit, dass sich die Industrieproduktion im Laufe des Jahres abschwächt und der Bau nach einer kleinen Jahresanfangskonjunktur ins Minus dreht.", "Gleichzeitig werde sich der schwache private Konsum nicht so schnell erholen, da die Inflation immer noch hoch ist und die Lohnerhöhungen noch kein ausreichendes Gegengewicht bieten. „Daher erwarten wir weiterhin eine flache Erholung, die durch die hohe Inflation, die erwartete US-Rezession im zweiten Halbjahr und die zunehmenden Bremseffekte der jüngsten und weiteren Zinserhöhungen der EZB belastet wird“, schreibt Schneider.", "Auch Lampe-Banker Krüger macht auf Moll. Nach seinen Berechnungen bräuchte es von 2024–26 Zuwächse von etwa 2,5 Prozent pro Jahr, damit das BIP seinen Vor-Corona-Pfad erreicht. „Dass das Potenzialwachstum von rund 1,2 Prozent aber länger um das Doppelte übertroffen wird, halten wir wegen bestehender Strukturschwächen für wenig wahrscheinlich“, so Krüger.", "Deutschland ist damit so etwas wie der kranke Mann in Europa. Die relative Wachstumsschwäche ist auch deshalb überraschend, weil auch andere Ökonomien der Euro-Zone die Inflation zu spüren bekommen und unter Konsumzurückhaltung leiden. Aber offensichtlich existieren dort noch andere Wachstumstreiber, die dazu führen, dass deren Ökonomien Deutschland enteilen.", diff --git a/tests/resources/parser/test_data/de/DieZeit.json b/tests/resources/parser/test_data/de/DieZeit.json index b2f7ff55d..037a98230 100644 --- a/tests/resources/parser/test_data/de/DieZeit.json +++ b/tests/resources/parser/test_data/de/DieZeit.json @@ -21,8 +21,7 @@ ], "paragraphs": [ "Die Partie war dann beim Stand von 95:80 für Partizan abgebrochen und für die Gäste gewertet worden, weil keine der beiden Mannschaften mehr über die notwendige Anzahl von zwei Spielern für die Fortsetzung verfügte. Die Schiedsrichter sprachen gegen mehr als 20 Spieler disqualifizierende Fouls aus. Partizan führt in der Viertelfinal-Serie mit 2:0. Das Team, das zuerst drei Spiele gewinnt, kommt weiter.", - "Die Euroleague verurteilte die Geschehnisse in einer Mitteilung scharf. Sie verstießen gegen die Werte des Respekts, für die die Liga, die Clubs und der Basketball stünden.", - "© dpa-infocom, dpa:230428-99-483045/5" + "Die Euroleague verurteilte die Geschehnisse in einer Mitteilung scharf. Sie verstießen gegen die Werte des Respekts, für die die Liga, die Clubs und der Basketball stünden." ] } ] diff --git a/tests/resources/parser/test_data/de/FAZ.json b/tests/resources/parser/test_data/de/FAZ.json index a8de08ab8..3b61eeb09 100644 --- a/tests/resources/parser/test_data/de/FAZ.json +++ b/tests/resources/parser/test_data/de/FAZ.json @@ -5,7 +5,7 @@ ], "body": { "summary": [ - "\t\t\tAlles wird teurer, nur nicht der ÖPNV. Allein der Rhein-Main-Verkehrsverbund hat mehr als 120.000 Deutschlandtickets verkauft - mehr als ein Drittel davon an Kunden, die bislang selten oder nie Bus oder Bahn fahren.\n\t\t" + "Alles wird teurer, nur nicht der ÖPNV. Allein der Rhein-Main-Verkehrsverbund hat mehr als 120.000 Deutschlandtickets verkauft - mehr als ein Drittel davon an Kunden, die bislang selten oder nie Bus oder Bahn fahren." ], "sections": [ { diff --git a/tests/resources/parser/test_data/de/Focus.json b/tests/resources/parser/test_data/de/Focus.json index f7ac6322a..1c36b9c91 100644 --- a/tests/resources/parser/test_data/de/Focus.json +++ b/tests/resources/parser/test_data/de/Focus.json @@ -13,20 +13,20 @@ "Startet am 1. Mai: Der „Star Wars Day“ bei Lego" ], "paragraphs": [ - "Viele Lego-Fans haben sich bereits den 1. Mai dick im Kalender angestrichen. Nicht etwa, weil das ein bundesweiter Feiertag ist, sondern vielmehr das Startdatum für \n \n \n Legos alljährlichen Star Wars Day. Der dänische Spielzeug-Gigant befeuert den nach eigenen Angaben „wichtigsten Termin in der Galaxis“ mit einer Reihe von Angeboten: Angefangen beim Verkaufsstart des neuen Klemmbaustein-Sets \n \n \n X-Wing Starfighter aus der „Ultimate Collector Series“ über Gratis-Beigaben bis hin zu doppelten VIP-Punkten auf ausgewählte Produkte.", - "Wirklich profitieren können davon aktuell nur \n \n \n VIP-Mitglieder, was allerdings mit wenigen Klicks erledigt ist (mehr über das kostenlose Treueprogramm erfahren Sie am Ende des Artikels). Denn neben den besagten Punkten, die immerhin bis zu zehn Prozent des Warenwerts ausmachen, dürfen sie sich ab 85 Euro Bestellwert über ein exklusives Geschenk in Form einer Sammelmünze mit Todesstern-Prägung freuen. Zudem findet ein Gewinnspiel für VIPs statt, bei dem es unter anderem einen R2-D2 aus Sterlingsilber sowie einen signierten Sternzerstörer zu gewinnen gibt.", - "Die \n \n \n Lego-Aktion läuft von Montag, den 1. Mai bis einschließlich Sonntag, den 7. Mai 2023 bzw. solange der Vorrat bei den Gratiszugaben reicht. Erfahrungsgemäß können diese ziemlich schnell vergriffen sein, ungeachtet des zum Teil hohen Mindestbestellwerts und der allgemein gesalzenen Preise. Da die sogenannten GWPs (Gift with Purchase) oftmals limitiert sind und seitens Lego nicht direkt verkauft werden, erfreuen sie sich vor allem bei Sammlern großer Beliebtheit.", + "Viele Lego-Fans haben sich bereits den 1. Mai dick im Kalender angestrichen. Nicht etwa, weil das ein bundesweiter Feiertag ist, sondern vielmehr das Startdatum für Legos alljährlichen Star Wars Day. Der dänische Spielzeug-Gigant befeuert den nach eigenen Angaben „wichtigsten Termin in der Galaxis“ mit einer Reihe von Angeboten: Angefangen beim Verkaufsstart des neuen Klemmbaustein-Sets X-Wing Starfighter aus der „Ultimate Collector Series“ über Gratis-Beigaben bis hin zu doppelten VIP-Punkten auf ausgewählte Produkte.", + "Wirklich profitieren können davon aktuell nur VIP-Mitglieder, was allerdings mit wenigen Klicks erledigt ist (mehr über das kostenlose Treueprogramm erfahren Sie am Ende des Artikels). Denn neben den besagten Punkten, die immerhin bis zu zehn Prozent des Warenwerts ausmachen, dürfen sie sich ab 85 Euro Bestellwert über ein exklusives Geschenk in Form einer Sammelmünze mit Todesstern-Prägung freuen. Zudem findet ein Gewinnspiel für VIPs statt, bei dem es unter anderem einen R2-D2 aus Sterlingsilber sowie einen signierten Sternzerstörer zu gewinnen gibt.", + "Die Lego-Aktion läuft von Montag, den 1. Mai bis einschließlich Sonntag, den 7. Mai 2023 bzw. solange der Vorrat bei den Gratiszugaben reicht. Erfahrungsgemäß können diese ziemlich schnell vergriffen sein, ungeachtet des zum Teil hohen Mindestbestellwerts und der allgemein gesalzenen Preise. Da die sogenannten GWPs (Gift with Purchase) oftmals limitiert sind und seitens Lego nicht direkt verkauft werden, erfreuen sie sich vor allem bei Sammlern großer Beliebtheit.", "Wer den Star-Wars-Tag am 4. Mai noch nicht kennt: „May the fourth be with you!“ ist ein Wortspiel zum berühmten Zitat aus den Star-Wars-Filmen „Möge die Macht mit Dir sein!“ oder eben im Englischen „May the force be with you“." ] }, { "headline": [ - "Neues Lego-Set startet durch !function(){var t=window.addEventListener?\"addEventListener\":\"attachEvent\";(0,window[t])(\"attachEvent\"==t?\"onmessage\":\"message\",function(t){if(\"string\"==typeof t.data&&t.data.indexOf(\"documentHeight:\")>-1){var e=t.data.split(\"documentHeight:\")[1],n=(e=t.data.split(\"documentHeight:\")[1],e=parseInt(e)+30,function(t){for(var e=document.getElementsByTagName(\"iframe\"),n=0,a=e.length;n-1){var e=t.data.split(\"documentHeight:\")[1],n=(e=t.data.split(\"documentHeight:\")[1],e=parseInt(e)+30,function(t){for(var e=document.getElementsByTagName(\"iframe\"),n=0,a=e.length;n Date: Mon, 25 Mar 2024 14:06:50 +0100 Subject: [PATCH 10/13] black --- scripts/generate_parser_test_files.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/generate_parser_test_files.py b/scripts/generate_parser_test_files.py index 0e65d813d..9f8098395 100644 --- a/scripts/generate_parser_test_files.py +++ b/scripts/generate_parser_test_files.py @@ -123,7 +123,9 @@ def main() -> None: for html in html_mapping.values(): versioned_parser = html.publisher.parser(html.crawl_date) extraction = versioned_parser.parse(html.content) - missing_attributes = set(arguments.attributes) - set(test_data.get(type(versioned_parser).__name__) or {}) + missing_attributes = set(arguments.attributes) - set( + test_data.get(type(versioned_parser).__name__) or {} + ) new = {attr: value for attr, value in extraction.items() if attr in missing_attributes} if not (entry := test_data.get(type(versioned_parser).__name__)): test_data[type(versioned_parser).__name__] = new From bab5b3d7c1fec38233476ef77cc7729418739acb Mon Sep 17 00:00:00 2001 From: Max Dallabetta Date: Fri, 19 Apr 2024 19:17:19 +0200 Subject: [PATCH 11/13] update test cases and `WAZ` --- src/fundus/publishers/de/waz.py | 4 +- tests/resources/parser/test_data/ch/SRF.json | 21 +++++++++ .../test_data/de/BusinessInsiderDE.json | 19 ++++---- tests/resources/parser/test_data/de/FAZ.json | 47 +++++++++++++++++++ tests/resources/parser/test_data/de/WAZ.json | 26 ++++++++++ tests/resources/parser/test_data/lt/LRT.json | 26 ++++++++++ .../parser/test_data/us/BusinessInsider.json | 27 +++++++++++ 7 files changed, 158 insertions(+), 12 deletions(-) diff --git a/src/fundus/publishers/de/waz.py b/src/fundus/publishers/de/waz.py index b7596c18a..b731b46fc 100644 --- a/src/fundus/publishers/de/waz.py +++ b/src/fundus/publishers/de/waz.py @@ -18,7 +18,7 @@ class V1(BaseParser): VALID_UNTIL = datetime.date(2024, 2, 21) _paragraph_selector: XPath = CSSSelector(".article__body > p") _summary_selector: XPath = CSSSelector(".article__header__intro__text") - _subheadline_selector = CSSSelector(".article__body > h3") + _subheadline_selector: XPath = CSSSelector(".article__body > h3") @attribute def body(self) -> ArticleBody: @@ -55,4 +55,4 @@ class V1_1(V1): namespaces={"re": "http://exslt.org/regular-expressions"}, ) _summary_selector = XPath("//div[@class='article-body'] /p[position()=1]") - _subheadline_selector = CSSSelector(".article-body > h3") + _subheadline_selector = XPath("//div[@class='article-body'] / h3[not(text()='Auch interessant')]") diff --git a/tests/resources/parser/test_data/ch/SRF.json b/tests/resources/parser/test_data/ch/SRF.json index c6312a9c4..97c4148fb 100644 --- a/tests/resources/parser/test_data/ch/SRF.json +++ b/tests/resources/parser/test_data/ch/SRF.json @@ -4,6 +4,27 @@ "srf/hosb", "kesm" ], + "body": { + "summary": [], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Iran hat seine Drohung wahr gemacht und Israel direkt angegriffen. Mehr als 300 Drohnen und Raketen sind gemäss israelischem Militär auf Israel abgefeuert worden; der grösste Teil davon konnte abgefangen werden, auch dank der Hilfe anderer Staaten wie Frankreich, Grossbritannien, Jordanien und den USA. Wie zentral der Konflikt für die USA und die Biden-Regierung ist, weiss USA-Kenner Thomas Jäger.", + "SRF News: Mehrere Staaten haben Israel unterstützt und Drohnen und Raketen abgefangen. Wie wichtig war dabei die Unterstützung der USA?", + "Thomas Jäger: Diese war ausschlaggebend. Man wusste, dass ein solcher Angriff bevorsteht. Die amerikanischen Dienste hatten festgestellt, dass der Iran ballistische Raketen in Stellung gebracht hatte.", + "In den USA interessiert sich nur eine kleine Zahl von Wählerinnen und Wählern für die Kriege im Nahen Osten und der Ukraine. Aber diese Kreise haben insbesondere bei den Demokraten ein erhebliches Gewicht.", + "Israel hat noch nicht auf den iranischen Angriff reagiert. Wie viel hat diese Zurückhaltung mit den USA und ihrem Einfluss auf Israel zu tun?", + "Sehr viel. In der israelischen Regierung ist es vor allem die religiöse Rechte, die Druck macht, dass man hart zurückschlagen müsste. Die rechten israelischen Parteien könnten als einzige Netanjahu zu Fall bringen, wenn sie die Koalition verlassen. Die Regierung aber ist in einer komfortablen Lage: Sie hat den Angriff aus Iran abgewehrt und möchte auf der anderen Seite den Krieg in Gaza weiterführen. Auch Joe Biden hat Interesse daran, dass ein wenig Ruhe einkehrt und der Krieg nicht weiter eskaliert, damit er seine Unterstützung für Israel in den USA besser vertreten kann. Wenn der Krieg nicht nur in Gaza, sondern mit dem Iran geführt wird, dann braucht Israel die Unterstützung der USA.", + "Für die USA geht es einerseits darum, eine grosse Eskalation zwischen Iran und Israel zu verhindern, und andererseits darum, den Gazakrieg nicht weiter ausarten zu lassen. Wie kann die Biden-Regierung damit umgehen?", + "Sie wird auf der einen Seite weiter dafür sorgen, dass die humanitäre Unterstützung in Gaza intensiviert wird. Auf der anderen Seite wird man die Streitkräfte in der Region behalten, um den Iran abzuschrecken. Denn auch wenn der Iran nun sagt, man habe Vergeltung geübt, so hat letztlich die Abschreckung der Vereinigten Staaten seit Oktober 2023 mit dazu geführt, den Krieg dort einzuhegen, weil jeder weiss, dass die Vereinigten Staaten, wenn es dazu kommt, Israel unterstützen würden. Ebenfalls muss Biden berücksichtigen, dass der Ölpreis einigermassen im Rahmen bleibt. Denn der Ölpreis und letztlich der Benzinpreis sind wichtige Faktoren, wenn in den Vereinigten Staaten im Spätherbst gewählt wird.", + "Welchen Einfluss hat die aktuelle Situation auf den Wahlkampf von Joe Biden?", + "In den USA interessiert sich nur eine kleine Zahl von Wählerinnen und Wählern für die Kriege im Nahen Osten und der Ukraine. Aber diese Kreise haben insbesondere bei den Demokraten ein erhebliches Gewicht. In diesem Zusammenhang ist interessant, was Donald Trump gemacht hat: Man könnte meinen, die entsprechenden Wählerinnen und Wähler entscheiden sich sowieso für Biden, weil Trump eng vertraut ist mit Netanjahu. Trump aber hat Netanjahu unter Druck gesetzt und gesagt, dass der israelische Ministerpräsident die Situation im Gazastreifen beenden müsse, um diesen linken Wählern den Impuls zu geben: Meinetwegen braucht ihr Biden nicht zu wählen, bleibt zu Hause. Das wäre für Biden ein ernstes Problem.", + "Das Gespräch führte Peter Hanselmann." + ] + } + ] + }, "publishing_date": "2024-04-15 13:38:00+02:00", "title": "«Die israelische Zurückhaltung hat viel mit den USA zu tun»" } diff --git a/tests/resources/parser/test_data/de/BusinessInsiderDE.json b/tests/resources/parser/test_data/de/BusinessInsiderDE.json index dccf6c2c4..68a07324e 100644 --- a/tests/resources/parser/test_data/de/BusinessInsiderDE.json +++ b/tests/resources/parser/test_data/de/BusinessInsiderDE.json @@ -21,17 +21,16 @@ }, { "headline": [ - "Statistiken, die die enorme Größe von Evergrande, Chinas sterbendem Immobilienriesen, verdeutlichen" + "Statistiken, die die enorme Größe von Evergrande, Chinas sterbendem Immobilienriesen, verdeutlichen", + "1. Evergrande besaß mehr als 1300 Immobilienprojekte in China.", + "2. Evergrande war mit 300 Milliarden Dollar (277 Milliarden Euro) verschuldet, so hoch wie kein anderes Unternehmen der Welt.", + "3. Mindestens zwölf Millionen Hausbesitzer lebten in Immobilien, die von Evergrande gebaut wurden.", + "4. Evergrande verfügt über genügend Land, um die gesamte Fläche von Manhattan zu bebauen.", + "5. Evergrande war indirekt für 3,8 Millionen Arbeitsplätze verantwortlich, was genug ist, um ganz Los Angeles zu beschäftigen.", + "6. Die Schuldenlast von Evergrande entsprach 1,6 Prozent des chinesischen BIP.", + "Evergrande wurde von den Hausbesitzern verunglimpft und fiel vor zwei Jahren in China in Ungnade." ], - "paragraphs": [ - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen.", - "Deine Privatsphäre-Einstellungen verhindern das Laden und Anzeigen aller externen Inhalte (z.B. Grafiken, Tabellen, Abo-Login) und Sozialen Netzwerke (z.B. Youtube, Twitter, Facebook, Instagram etc.) Zur Anzeige aktiviere bitte die Einstellungen in den Privatsphäre-Einstellungen." - ] + "paragraphs": [] } ] }, diff --git a/tests/resources/parser/test_data/de/FAZ.json b/tests/resources/parser/test_data/de/FAZ.json index 3db892d55..153ec5e6b 100644 --- a/tests/resources/parser/test_data/de/FAZ.json +++ b/tests/resources/parser/test_data/de/FAZ.json @@ -56,6 +56,53 @@ "authors": [ "Johannes Ritter" ], + "body": { + "summary": [ + "Russlands Geheimdienste nutzen Genf als Drehscheibe für Attentate in Europa. Die Regierung in Bern schaut tatenlos zu. Parteiübergreifend schlagen Sicherheitspolitiker Alarm." + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Zwei Jahre nach Beginn des russischen Angriffskriegs gegen die Ukraine ist die Schweiz weiterhin ein großer Tummelplatz für russische Spione. Während andere westliche Länder mittlerweile mehr als 600 als Diplomaten getarnte Geheimdienstmitarbeiter zurück nach Russland geschickt haben, legte die Schweizer Regierung die Hände in den Schoß.", + "Nach Angaben des Schweizer Nachrichtendienstes (NDB) arbeiten in den diplomatischen und konsularischen Vertretungen in Genf und Bern nach wie vor rund 220 Russen. Davon sei mindestens ein Drittel für russische Nachrichtendienste tätig, schreibt der NDB in seinem Lagebericht „Sicherheit Schweiz 2023“.", + "„Europaweit gehört die Schweiz unter anderem aufgrund ihrer Rolle als Gaststaat internationaler Organisationen zu den Staaten, in denen am meisten russische Nachrichtendienstangehörige unter diplomatischer Tarnung eingesetzt werden“, heißt es in dem Bericht. Dieser stammt zwar aus dem vergangenen Jahr, ist aber immer noch hochaktuell." + ] + }, + { + "headline": [ + "Genf wurde zur Spionagedrehscheibe in Europa" + ], + "paragraphs": [ + "Die größte aktuelle Bedrohung durch Spionage gehe von russischen Nachrichtendiensten aus, erklärte eine NDB-Sprecherin gegenüber der F.A.Z. Neben Cyberspionage erfolge ein erheblicher Teil der Informationsbeschaffung mit menschlichen Quellen. „Für diese Aktivitäten werden vor allem die russischen diplomatischen Vertretungen genutzt.“ Die Frage, ob die Schweiz in den vergangenen zwei Jahren enttarnte russische Spione ausgewiesen hat, ließen der NDB und das Schweizer Außenministerium unbeantwortet. Hinweise darauf gibt es bisher nicht.", + "Nach Einschätzung des Schweizer Historikers und Geheimdienstexperten Adrian Hänni, Forscher am Austrian Center for Intelligence, Propaganda and Security Studies (ACIPSS), könnten die russischen Geheimdienste ihre Aktivitäten in der Schweiz sogar ausgebaut haben. Viele andere Länder haben den russischen Spionen die Tür gewiesen – allein Deutschland dürfte inzwischen 170 bis 180 als Diplomaten getarnte Mitarbeiter verschiedener russischer Geheimdienste losgeworden sein. Deshalb liegt es aus Hännis Sicht nah, dass die Russen ihre Spionagetätigkeit nun an jenen Orten verstärken, wo sie nicht sonderlich behelligt werden. Dazu zählt neben Wien vor allem Genf.", + "Als UN-Sitz sowie als Standort Dutzender internationaler Institutionen, darunter der Welthandelsorganisation (WTO) und der Weltgesundheitsorganisation (WHO), habe sich die westschweizerische Stadt zu einer Spionagedrehscheibe in Europa entwickelt. Dazu trage auch deren günstige Lage im Herzen Europas bei. „Von Genf aus kann man sich mit Flügen im gesamten Schengenraum bewegen, ohne dass Pässe kontrolliert werden“, sagt Hänni im Gespräch mit der F.A.Z." + ] + }, + { + "headline": [ + "Havanna-Syndrom-Fälle in der amerikanischen UN-Vertretung in Genf" + ], + "paragraphs": [ + "Hänni erinnert daran, dass die Schweiz auch im Zusammenhang mit dem Giftanschlag auf Sergej Skripal im Jahr 2018 eine Rolle spielte: Die mutmaßlichen Attentäter Alexander Mischkin und Anatolij Tschepiga hielten sich vor ihrem Angriff mehrmals in Genf auf. Zwei Agenten des russischen Militärnachrichtendienstes GRU sollten hernach die Spuren verwischen, wurden aber selbst ertappt, nachdem sie ein Auto voller Überwachungstechnik vor dem Hauptquartier der Organisation für das Verbot chemischer Waffen (OPCW) im schweizerischen Spiez geparkt hatten.", + "Auch in den jüngsten Enthüllungen zur Arbeit der russischen Dienste taucht Genf auf. Ein Rechercheverbund unter Führung des exilrussischen Investigativportals „The Insider“ will herausgefunden haben, dass russische Spezialagenten hinter den verdeckten Angriffen auf die zentralen Nervensysteme westlicher Diplomaten mittels Mikrowellen oder elektromagnetischer Energie stecken. Die darauf zurückzuführenden Symptome wie stechende Kopfschmerzen, Hörverlust, Schwindel und Übelkeit laufen unter dem Begriff „Havanna-Syndrom“, weil die ersten Fälle im Jahr 2016 in der kubanischen Hauptstadt auftraten.", + "Den Recherchen zufolge bereiteten die Agenten ihre Anschläge in Europa regelmäßig in Genf vor, getarnt als Englisch-Sprachschüler oder als Mitarbeiter der Ständigen Vertretung der Russischen Föderation bei den Vereinten Nationen, einem streng abgeschirmten, riesigen Komplex mit einem halben Dutzend Gebäuden. Eine Schlüsselfigur der auf Sabotage und Mordanschläge spezialisierten Kommandoeinheit mit der Nummer 29155 war demnach Egor Gordienko. Der GRU-Oberst war bis 2020 als Diplomat bei der WTO akkreditiert.", + "Auch in der amerikanischen UN-Vertretung in Genf hat es angeblich Havanna-Syndrom-Fälle gegeben. Auf diese Thematik angesprochen, zeigt sich die Sprecherin des Schweizer Nachrichtendienstes zugeknöpft: „Der NDB hat Kenntnis vom Havanna-Syndrom, kommentiert aber keine Medienberichte.“" + ] + }, + { + "headline": [ + "Ist eine schwache Spionageabwehr politisch gewollt?" + ], + "paragraphs": [ + "Dass russische Agenten nach wie vor sehr stark in Genf vertreten sind, führt der Geheimdienstexperte Hänni auf die traditionell zurückhaltende Spionageabwehr der Schweiz zurück. „Der NDB ist ein kleiner und relativ schwacher Nachrichtendienst.“ Die nur 420 Mitarbeiter seien neben der Spionageabwehr auch mit der Bekämpfung von Terrorismus und Extremismus beschäftigt. Die Schwäche sei politisch gewollt. „Ein aktiveres Vorgehen gegen ausländische Geheimdienstmitarbeiter läuft dem Ziel der Regierung zuwider, als Vermittler in internationalen Konflikten zu agieren.“ Tatsächlich will der Außenminister Ignazio Cassis (FDP) im Einvernehmen mit dem ukrainischen Präsidenten Wolodymyr Selenskyj einen Friedensgipfel in der Schweiz organisieren. Doch der russische Außenminister Sergej Lawrow sieht das Land als „Spielball Kiews“ und erklärte Anfang März: „Wir zählen nicht auf die Dienste der Schweiz.“", + "Hänni hält das politisch gewollte „Laissez-faire“ der Schweiz gegenüber den zahlreichen russischen Spionen für falsch und rät zu einem Kurswechsel. Dass russische Agenten aus der Schweiz heraus Anschläge vorbereiteten, werfe sicherheitspolitische Fragen auf und schade dem Ruf des Landes im westlichen Ausland. Die Passivität der Regierung gefährde zudem die Sicherheit der in der Schweiz lebenden Kritiker des russischen Regimes, die der Kreml von Genf aus elektronisch und mittels Agenten überwachen lasse. Dass es in der Schweiz zu Tötungsoperationen kommt, erwartet Hänni indes nicht: „Die Russen wollen das Fass nicht zum Überlaufen bringen.“ Sonst gefährdeten sie ihre wichtige Operationsbasis in der Schweiz. Gerade weil die russischen Geheimdienste in Europa stärker denn je auf Genf als Standort angewiesen seien, könnte die Schweiz nach Hännis Ansicht offensiver vorgehen und enttarnte russische Spione des Landes verweisen.", + "Auch der ehemalige russische Diplomat Boris Bondarew kritisiert das Verhalten der Schweizer Regierung. Diese wolle Russland nicht verärgern. „Die Schweiz ist bereit für den Moment, in dem es wieder opportun ist, auch ranghohe Russen auf ihrem Boden willkommen zu heißen“, sagte Bondarew dem Züricher „Tages-Anzeiger“. Doch diese Haltung werde dem Charakter dieses Krieges und der Politik Putins nicht gerecht. Aus Protest gegen den russischen Angriffskrieg gegen die Ukraine war Bondarew im Mai 2022 von seinem Diplomatenposten in Genf zurückgetreten. Seither lebt er unter Polizeischutz an einem unbekannten Ort in der Schweiz.", + "Nach den jüngsten Enthüllungen über das Havanna-Syndrom und die Rolle Genfs als Drehkreuz für Attentäter haben Schweizer Sicherheitspolitiker parteiübergreifend Gegenmaßnahmen verlangt. Die russischen Machenschaften in der Schweiz seien nicht zu akzeptieren, hieß es von der Schweizerischen Volkspartei (SVP). Identifizierte Spione müssten ausgewiesen werden, forderte die Partei „Die Mitte“. Und die Sozialdemokraten mahnten an, dem Schweizer Nachrichtendienst mehr Kompetenzen und Ressourcen zu geben. Wenn die Schweiz nicht zu einem immer größeren Sicherheitsrisiko für ihre engsten Verbündeten und Partner werden solle, müsse sie jetzt handeln." + ] + } + ] + }, "publishing_date": "2024-04-17 10:24:31+00:00", "title": "Die Schweiz ist ein großer Tummelplatz für russische Spione", "topics": [ diff --git a/tests/resources/parser/test_data/de/WAZ.json b/tests/resources/parser/test_data/de/WAZ.json index f73c6c43b..ffbceccbd 100644 --- a/tests/resources/parser/test_data/de/WAZ.json +++ b/tests/resources/parser/test_data/de/WAZ.json @@ -33,6 +33,32 @@ "authors": [ "Philipp Wahl" ], + "body": { + "summary": [ + "Duisburg. Erste Visualisierungen zeigen, wie die Seilbahn in Duisburg aussehen könnten. Ebenfalls zu sehen: eine Haltestelle am Technologiequartier Wedau." + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Zum Start der Immobilienmesse Mipim in Cannes startet Duisburgs städtische Entwicklungsgesellschaft Gebag am Montag eine neue Projekt-Internetseite zum Technologiequartier Wedau. Ein Hingucker der Seite, der viele Duisburgerinnen und Duisburger interessieren dürfte, ist eine erste Visualisierung der geplanten Seilbahn.", + "Die noch nicht finanzierte und noch nicht beschlossene „Urbane Seilbahn“ würden Stadtplaner und städtische Gesellschaften gerne umsetzen. Sie soll vom Duisburger Hauptbahnhof bis zur Fläche des Stadtentwicklungsprojekts 6-Seen-Wedau „fliegen“. Die Gebag hatte im Herbst eine Konzeptstudie zum Seilbahnbau vorgestellt, die für Aufsehen und Diskussionen über das Für und Wider sorgte." + ] + }, + { + "headline": [ + "Seilbahn Duisburg: Haltestelle an der ehemaligen Richthalle und Trassenverlauf" + ], + "paragraphs": [ + "Die nun von der Gebag veröffentlichte Visualisierung zeigt, wie ein möglicher Haltepunkt am zukünftigen Technologie-Quartier-Wedau (TQW) aussehen könnte. Demnach sei es „denkbar, dass sich die Seilbahn-Haltestelle über dem Dach der ehemaligen Richthalle im Herzen der Projektfläche wiederfinden wird“, so die Gebag.", + "Neben allgemeinen Informationen zum Projekt TQW illustriert die Webseite auch den aktuell vorgesehenen Trassenverlauf vom Hauptbahnhof an den „Duisburger Dünen“ entlang über den Sportpark Duisburg bis hin zum Bahnhof Wedau, direkt an der Projektfläche 6-Seen-Wedau.", + "Auf www.technologie-quartier-wedau.de geht‘s aber vor allem um das geplante Technologiequartier, etwa in Visualisierungen und Erläuterungen zum Entwurf.", + "Auf der rund 30 Hektar großen Fläche des ehemaligen Ausbesserungswerks Wedau, die sich unmittelbar nördlich an das Stadtentwicklungsprojekt 6-Seen-Wedau anschließt, soll ein Technologie-Quartier geschaffen werden, das Impulse für die Gesamtentwicklung der Stadt und der Region setzen soll.", + "Dort sollen etwa Campus-Flächen für eine mögliche Ansiedlung der Ingenieurwissenschaftlichen Fakultät der Universität Duisburg-Essen (UDE) und ein „Wissens-Campus“ geschaffen werden, wo sich beispielsweise Forschungs- und Entwicklungsfirmen oder Start-ups ansiedeln können." + ] + } + ] + }, "publishing_date": "2024-03-08 17:59:39+00:00", "title": "Erstes Bild: So könnte die Duisburger Seilbahn aussehen", "topics": [ diff --git a/tests/resources/parser/test_data/lt/LRT.json b/tests/resources/parser/test_data/lt/LRT.json index 353bb9474..b18242385 100644 --- a/tests/resources/parser/test_data/lt/LRT.json +++ b/tests/resources/parser/test_data/lt/LRT.json @@ -3,6 +3,32 @@ "authors": [ "Povilas Aleksandravičius" ], + "body": { + "summary": [ + "Judo išdavystė atrodo keistai. Įprastai išdavystės taip nevyksta. Esame pripratę prie minties, kad Judas išdavė Jėzų dėl pinigų. Evangelijos pabrėžia Judo Iskarioto gobšumą. Jų autoriai pasakoja, kad būtent Judas piktinosi moterimi, kuri ant Jėzaus galvos išpylė brangius kvepalus: esą juos buvo galima parduoti ir gautus pinigus išdalinti vargšams." + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Galbūt neatsitiktinai Judui buvo patikėta bendruomenės kasa. Bet Jonas su pasišlykštėjimu teigia, kad Judas iš tos kasos grobstė pinigus ir vargšai jam nerūpėjo (Jn 12, 6).", + "Vis dėlto egzegetai sutaria, kad 30 sidabrinių negalėjo būti Judo motyvas kaip tik dėl jo gobšumo: suma yra per menka, buvo kur kas daugiau galimybių pralobti, jei Jėzus liktų laisvėje. Išduoti dėl gobšumo neapsimokėjo. O ir Mato evangelijoje aprašyti Judo veiksmai, pasmerkus Jėzų, atrodo psichologiškai neadekvatūs banalaus gobšuolio mąstymui: „Kai išdavikas Judas pamatė, jog Jėzus pasmerktas, gailesčio pagautas, nunešė atgal auštiesiems kunigams ir seniūnams trisdešimt sidabrinių ir tarė: „Nusidėjau, išduodamas nekaltą kraują.“", + "Nusviedęs šventykloje pinigus, jis išbėgo ir pasikorė“ (Mt 27, 3–5). Kodėl pasielgta taip desperatiškai, reiktų ieškoti kitokių motyvų. 30 sidabrinių buvo simbolinis užmokestis, po juo slepiasi kita prasmė.", + "Keista ir tai, kad tuoj po išdavystės Judas prapuola. Juk jis, jei siekė grynai savanaudiškos naudos, būtų galėjęs išlošti labai daug tęsdamas išdavystę iki galo – aktyviai dalyvauti Jėzaus teismo procese, liudyti Kajafo ir Poncijaus Piloto akivaizdoje, įsiteikti miniai. Judas to nedarė. Jo planas buvo kitas.", + "Keistas yra Judo išdavystės ženklas – pabučiavimas (Mt 26, 49; Lk 22, 48). Taip neišduodama. Būtų užtekę ir atsainaus parodymo ranka. Tais laikais, panašiai kaip ir mūsų, pabučiavimas reiškė ypatingą prielankumą ir meilę, bučiuojama buvo ypatingomis progomis, siekiant parodyti ištikimybę ir atsidavimą, ryžtą niekada nepalikti. Pabučiuodamas Jėzų, Judas jam lyg norėjo pasakyti, kad atlieka meilės veiksmą, kažką svarbaus, intymaus, ypatingo, už ką Jėzus galiausiai bus dėkingas. Visa tai labai keista. Kokia to prasmė?", + "Kai kurie autoriai (pavyzdžiui, religijotyrininkas ir evangelijų tyrinėtojas Armandas Abécassis, parašęs intriguojančią knygą „Judas ir Jėzus: pavojingas ryšys“) teigia, kad Judą ir Jėzų siejo problemiškas, bet stiprus ryšys. Judas buvo labiausiai užsispyręs Jėzaus mokinys, konkrečiais veiksmais bandęs realizuoti jo mokymą, o kiti mokiniai nebuvo tokie ryžtingi. Tik Judas buvo nepajėgus suprasti tikrosios šio mokymo prasmės. Atkreipkime dėmesį, kad kitiems apaštalams Jėzų vadinant „Viešpačiu“ ir „Mesiju“, Judas į jį kreipiasi „rabi“ (Mt 26, 25.49), vadinasi, vertina jį tik kaip eilinį mokytoją. Vaikščiodamas su Jėzumi, Judas kažko nesuprato, kažko nepajuto.", + "Judas buvo aktyvus žmogus. Evangelistai jį vadina „Iskariotu“, o tai reiškia, kad jis priklausė politiniam sikarijų judėjimui. Šis judėjimas siekė pašalinti romėnų valdžią, atkurti Izraelio karalystę ir įtvirtinti žydų tautos galią regione. Taip jo dalyviai suprato Dievo valią, ir Judas entuziastingai bandė ją įgyvendinti. Jėzus, šis stebukladarys, gydantis ligonius, žodžiu numalšinantis audras, sugebantis pamaitinti minias ir tobulai jas valdyti, puikiai tiko būti Izraelio karaliumi.", + "Tik Jėzus to vengė. Kiekvieną kartą, kai buvo norima paskelbti jį karaliumi, jis pasišalindavo (Jn 6, 15). Ir tos jo kalbos: „Mano karalystė ne iš šio pasaulio“ (Jn 18, 36); „kas ciesoriaus, atiduokite ciesoriui, o kas Dievo – Dievui“ (Lk 20, 25); „Dievo karalystė neateina regimai“ (Lk 17, 20), etc. Jis ne tik nekurpė valdžios paėmimo planų, bet be galo kalbėjo apie meilę ir vidinę karalystę. Mokiniai nekantravo: „Viešpatie, gal tu šiuo metu atkursi Izraelio karalystę?“ (Apd 1, 6). Normalaus atsakymo jie nesulaukė. Taigi, reikėjo veikti.", + "Judas Iskariotas ėmėsi veiksmų. Reikėjo įstumti Jėzų į tokią padėtį, kurioje jis būtų priverstas parodyti savo galią. Reikėjo išduoti jį kareiviams, teismui ir miniai, kad kiltų pavojus jo gyvybei. Tada jis neturėsiąs kitos išeities: privalės savo antgamtine jėga, kuria sutramdė vėją ir jūrą, išblaškyti minią, sunaikinti romėnus, ir čia Judui ir kitiems mokiniams rasis proga atkurti Izraelio karalystę. Toks buvo planas.", + "Įvyko kitaip. Jėzus išties turėjo galią: „Gal manai, jog aš negaliu paprašyti savo Tėvą ir jis bemat neatsiųstų man per dvylika legionų angelų?!“ (Mt 26, 53). Tačiau jos nepanaudojo, nes į žemę nešė visai kitokio pobūdžio žinią: „Mano karalystė ne iš šio pasaulio. Jei mano karalystė būtų iš šio pasaulio, mano tarnai juk kovotų, kad nebūčiau atiduotas. Bet mano karalystė ne iš čia“ (Jn 18, 36). Jėzus leidosi suimamas, kankinamas, nužudomas. Taip jis prisiėmė kiekvieno iš mūsų kančią ir mirtį. Jis prisikėlė, kiekvienam iš mūsų suteikdamas naujos gyvybės – meile pulsuojančios gyvybės – galimybę. Judas to nenujautė, to nepamatė. Jo mąstymas nebuvo tam atviras.", + "Kokia yra Judo Iskarioto nuodėmė? Nurodinėti Dievui, ką jis turi daryti. Iš čia ir jo drama. Jis uoliai vykdė religinę savo laiko programą, neįtardamas, kad „įėjo į jį šėtonas“ (Jn 13, 27; Lk 22, 3). Skirtingai nuo kitų Jėzaus mokinių, Judas nesugebėjo atsiverti aukštesnei logikai, įsiveržusiai į žmonijos istoriją. Judo mąstymas veikė pagal šio pasaulio logiką, dievišką mokymą aiškinusią siaurai žmogiškomis kategorijomis, politinės galios ir pergalės prieš kitą idealais. Šie idealai buvo nuspalvinti religijos spalvomis: Judas manėsi esąs Dievo didvyris, savo veiksmais išprovokuosiantis Dievo veikimą Izraelyje. Jis išprovokavo Dievo ir savo mirtį.", + "Tai ne tik Judo, tai daugybės krikščionių drama. Mes skaitome Katekizmą, kalbame apie dorybes ir manomės žinantys, kokia yra Dievo valia. Bet jeigu mūsų religingumas nėra pranokęs pasaulio logikos, jeigu Dievo valią suvokiame kaip galią, kaip kito žmogaus atstūmimą, kaip politinę pergalę, jeigu Dievo valią vykdome nesigilindami į subtilų ir jautrų sielos gyvenimą, mes kartojame Judo veiksmus. Mes juos kartojame ir tada, kai fantazuojame apie visuomenėje karaliaujančią Bažnyčią, bet pamirštame, kad Kristaus Bažnyčia pirmiausia yra vidinė mūsų dvasios karalystė, auganti tik tiek, kiek mumyse yra meilės. Deja, neretai krikščionių mąstymas yra panašus į primityviausią politinę ideologiją.", + "Pernelyg dažnai religingi žmonės manosi vykdantys Dievo valią, o iš tiesų stojasi į Dievo vietą ir kliudo jam veikti. Tarsi judai, jie nurodinėja Dievui, ką jis turi daryti, nė nesuvokdami, kad taip dalyvauja piktojo planuose. Judo išdavystė tiems, kurie skaito Bibliją, yra kvietimas introspekcijai, sąžinės sąskaitai, bandymui atpažinti savo sieloje judo polinkius. Tai būtina sąlyga, mokantis atsiverti autentiškam dieviškajam veikimui.", + "Tiesa, Dievas „eina savo keliu“ (Mk 14, 21), net jeigu daugybė judų istorijoje jį išduoda. Jis keliasi iš mirties. Šio pasaulio logika gali žudyti jį kasdien, kas dieną jis prisikels, pulsuodamas nauja gyvybe. Galbūt atėjo laikas į mūsų žmogišką mąstymą įsileisti Dievo mąstymą, pakeisti galios troškimo logiką meilės logika? Tai klausimas kiekvienam." + ] + } + ] + }, "publishing_date": "2024-03-31 16:59:00+00:00", "title": "Povilas Aleksandravičius. Kodėl Judas išdavė Jėzų?", "topics": [ diff --git a/tests/resources/parser/test_data/us/BusinessInsider.json b/tests/resources/parser/test_data/us/BusinessInsider.json index 72368ac99..7db3d7cde 100644 --- a/tests/resources/parser/test_data/us/BusinessInsider.json +++ b/tests/resources/parser/test_data/us/BusinessInsider.json @@ -3,6 +3,33 @@ "authors": [ "Amanda Krause" ], + "body": { + "summary": [ + "Zendaya is widely recognized as a fashion superstar thanks to her daring and experimental outfits.", + "She's worn many of her boldest looks while promoting the \"Dune\" franchise since 2021.", + "Here's how we'd rank them from least to most daring." + ], + "sections": [ + { + "headline": [ + "Zendaya promoted \"Dune: Part Two\" in London while wearing a plum-colored suit.", + "She also kept things simple back in 2021 during a London screening of \"Dune.\"", + "The actor wore a similar style at the 2021 Venice International Film Festival.", + "For a \"Dune\" red carpet in London around that time, Zendaya wore a futuristic gown.", + "Her two-piece ensemble for the French premiere of \"Dune: Part Two\" stood out.", + "Another set she wore years earlier in Paris signified the start of Zendaya's daring \"Dune\" looks.", + "Fans will likely remember when the actor wore a top made from chains while in London.", + "Zendaya brought the \"naked\" trend back while attending the Venice International Film Festival screening of \"Dune.\"", + "The actor stunned during a \"Dune: Part Two\" photo shoot in Paris.", + "She showed lots of skin at the London premiere of the movie.", + "You couldn't miss Zendaya's outfit at the Mexico premiere of \"Dune: Part Two.\"", + "She stole the show at another \"Dune: Part Two\" event in Mexico City.", + "Her barely-there top at CinemaCon 2023 is one to be remembered." + ], + "paragraphs": [] + } + ] + }, "publishing_date": "2024-02-14 16:15:30+00:00", "title": "Every outfit Zendaya has worn to promote the 'Dune' franchise, ranked from least to most daring", "topics": [ From 9e6868e86689830329ec187d8b83c6d3aada2876 Mon Sep 17 00:00:00 2001 From: Adrian Breiding Date: Fri, 19 Apr 2024 20:10:26 +0200 Subject: [PATCH 12/13] update bi paragraph/subheadline selector --- src/fundus/publishers/us/business_insider.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/fundus/publishers/us/business_insider.py b/src/fundus/publishers/us/business_insider.py index 77469ca81..48a886cc5 100644 --- a/src/fundus/publishers/us/business_insider.py +++ b/src/fundus/publishers/us/business_insider.py @@ -16,7 +16,7 @@ class BusinessInsiderParser(ParserProxy): class V1(BaseParser): _summary_selector = CSSSelector("article ul[class^='summary-list'] > li") - _subheadline_selector = CSSSelector("article h2") + _subheadline_selector = CSSSelector("article h2, div.slideshow-slide-container h2") _paragraph_selector = XPath( """ //article @@ -25,6 +25,8 @@ class V1(BaseParser): //article //div[contains(@class, 'content-lock-content')] /div[contains(@class, 'premium-content')] + /p[not(contains(@class, 'disclaimer'))] | + //div[@class='slide-layout clearfix'] /p[not(contains(@class, 'disclaimer'))] """ ) From 607503df0c88bf20c0af95559007d3ff4f81009b Mon Sep 17 00:00:00 2001 From: Adrian Breiding Date: Fri, 19 Apr 2024 20:11:10 +0200 Subject: [PATCH 13/13] reextract bi test data --- .../parser/test_data/us/BusinessInsider.json | 140 ++++++++++++++++-- 1 file changed, 127 insertions(+), 13 deletions(-) diff --git a/tests/resources/parser/test_data/us/BusinessInsider.json b/tests/resources/parser/test_data/us/BusinessInsider.json index 7db3d7cde..7d18e6913 100644 --- a/tests/resources/parser/test_data/us/BusinessInsider.json +++ b/tests/resources/parser/test_data/us/BusinessInsider.json @@ -10,23 +10,137 @@ "Here's how we'd rank them from least to most daring." ], "sections": [ + { + "headline": [], + "paragraphs": [ + "Zendaya is a fashion superstar.", + "From her Met Gala looks to her street-style fashion, it seems impossible for her outfits to miss the mark.", + "And that's largely because she loves to take risks and experiment with out-there garments, many of which she's worn while promoting the \"Dune\" franchise.", + "Here's a look at those outfits, ranked from least to most daring." + ] + }, + { + "headline": [ + "Zendaya promoted \"Dune: Part Two\" in London while wearing a plum-colored suit." + ], + "paragraphs": [ + "Designed by Roksanda, the three-piece suit included floor-length trousers, a knee-length skirt on top, and a long dress-style blazer worn with nothing underneath.", + "Zendaya's longtime stylist, Law Roach, pointed out in an Instagram story that she wore the ensemble before it hit the runway, as it's part of the designer's autumn/winter 2024 line.", + "The jacket looked particularly sharp on Zendaya, and its skirt and pants made for a unique combo. But while the outfit would be bold for some stars, it's a simple look for the \"Dune\" actor." + ] + }, + { + "headline": [ + "She also kept things simple back in 2021 during a London screening of \"Dune.\"" + ], + "paragraphs": [ + "She wore a white shirtdress with only two buttons clasped, pointed black pumps, and satin trousers with subtle stripes.", + "Though her top flowed and was worn half open, it was still pretty tame when compared to Zendaya's usual bold fashion." + ] + }, + { + "headline": [ + "The actor wore a similar style at the 2021 Venice International Film Festival." + ], + "paragraphs": [ + "This time, her loose-fitting outfit included a black blazer worn over a white Valentino gown.", + "The latter piece was tied with a pink bow that added a pop of color, and it was crafted with a thigh-high slit that showed her black heels.", + "Though Zendaya looked stunning, it wasn't the most surprising or daring look from those worn during her \"Dune\" press tour." + ] + }, + { + "headline": [ + "For a \"Dune\" red carpet in London around that time, Zendaya wore a futuristic gown." + ], + "paragraphs": [ + "The cream-colored, sequin-covered gown, designed by Rick Owens, had a sculpture-style neckline that made it entirely unique. It also had a single long sleeve, a mermaid skirt, and a short train.", + "Though it wasn't the most daring, it was extremely glamorous — especially when paired with Zendaya's slicked-back hairstyle, purple eye makeup, and diamond jewelry." + ] + }, + { + "headline": [ + "Her two-piece ensemble for the French premiere of \"Dune: Part Two\" stood out." + ], + "paragraphs": [ + "An ambassador for Louis Vuitton, Zendaya wore a custom ensemble from the fashion house.", + "Its golden crop top had a thick, wrapped neckline that reached her chin, and its matching skirt featured a high waistband with wide pleated fabric beneath it.", + "The textured pieces showed plenty of skin, and the metallic colors matched the movie's aesthetic." + ] + }, + { + "headline": [ + "Another set she wore years earlier in Paris signified the start of Zendaya's daring \"Dune\" looks." + ], + "paragraphs": [ + "The Alaïa ensemble featured two eggplant-colored pieces: a high-waisted skirt with small cutouts around the waist and a super-short crop top with long sleeves.", + "The latter piece was especially bold, rising above her chest at the sides underneath her arms." + ] + }, + { + "headline": [ + "Fans will likely remember when the actor wore a top made from chains while in London." + ], + "paragraphs": [ + "Vivienne Westwood designed the daring garment, which was as much of an art piece as it was a fashion statement. She wore it with seemingly nothing underneath.", + "The rest of Zendaya's outfit included a mid-rise checkered skirt, cream-colored pumps, and an assortment of silver jewelry." + ] + }, + { + "headline": [ + "Zendaya brought the \"naked\" trend back while attending the Venice International Film Festival screening of \"Dune.\"" + ], + "paragraphs": [ + "Her sleeveless, form-fitting gown was custom-made by Balmain in a tan shade of leather that matched her skin tone, creating the illusion that she was naked on the red carpet.", + "It also had ruching across its bodice, a hip-high slit in its skirt, and a short train.", + "Zendaya completed the daring look with pointed heels, a statement snake-shaped necklace, and a wavy hairstyle." + ] + }, + { + "headline": [ + "The actor stunned during a \"Dune: Part Two\" photo shoot in Paris." + ], + "paragraphs": [ + "Wearing Alaïa again, Zendaya sported a white gown with a bodice that wrapped around her like a snake.", + "Its skirt featured a similar silhouette that was short in front and longer in the back, revealing some skin and her white pointed pumps." + ] + }, + { + "headline": [ + "She showed lots of skin at the London premiere of the movie." + ], + "paragraphs": [ + "She was photographed entering the event wearing a multicolored gown crafted from thin pieces of sheer brown fabric.", + "The garment, which also had pink and black lining, featured cutouts across the waist, a thigh-high slit, and thin straps across the neckline." + ] + }, + { + "headline": [ + "You couldn't miss Zendaya's outfit at the Mexico premiere of \"Dune: Part Two.\"" + ], + "paragraphs": [ + "Her multicolored, industrial-style outfit was custom-made by Torishéju.", + "It featured a halter crop top with 3D pieces along the neckline, fabric hanging down her back, and a mid-rise skirt with a vibrant red lining.", + "Not only was the ensemble entirely unique in design, but it also perfectly matched the vibe of the \"Dune\" franchise." + ] + }, + { + "headline": [ + "She stole the show at another \"Dune: Part Two\" event in Mexico City." + ], + "paragraphs": [ + "But this time, she wore a daring custom look from Bottega Veneta.", + "The brown ensemble featured a standout skirt with a thick leather waistband and matching lining, and a high-neck, pullover-style crop top that revealed the underside of her chest.", + "She wore it with a bob hairstyle, pointed pumps, and a diamond anklet." + ] + }, { "headline": [ - "Zendaya promoted \"Dune: Part Two\" in London while wearing a plum-colored suit.", - "She also kept things simple back in 2021 during a London screening of \"Dune.\"", - "The actor wore a similar style at the 2021 Venice International Film Festival.", - "For a \"Dune\" red carpet in London around that time, Zendaya wore a futuristic gown.", - "Her two-piece ensemble for the French premiere of \"Dune: Part Two\" stood out.", - "Another set she wore years earlier in Paris signified the start of Zendaya's daring \"Dune\" looks.", - "Fans will likely remember when the actor wore a top made from chains while in London.", - "Zendaya brought the \"naked\" trend back while attending the Venice International Film Festival screening of \"Dune.\"", - "The actor stunned during a \"Dune: Part Two\" photo shoot in Paris.", - "She showed lots of skin at the London premiere of the movie.", - "You couldn't miss Zendaya's outfit at the Mexico premiere of \"Dune: Part Two.\"", - "She stole the show at another \"Dune: Part Two\" event in Mexico City.", "Her barely-there top at CinemaCon 2023 is one to be remembered." ], - "paragraphs": [] + "paragraphs": [ + "Louis Vuitton designed her daring outfit, which included baggy brown trousers and a gray vest top.", + "The latter piece wasn't as traditional as it seemed from the front. When she turned around, it was revealed that the garment was entirely backless and loose-fitting on its sides." + ] } ] },