Skip to content

Commit

Permalink
Add image extraction for ZwanzigMinuten
Browse files Browse the repository at this point in the history
  • Loading branch information
addie9800 committed Dec 17, 2024
1 parent f56f442 commit e2b7025
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 18 deletions.
15 changes: 13 additions & 2 deletions src/fundus/publishers/ch/zwanzig_minuten.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,19 @@

from lxml.etree import XPath

from fundus.parser import ArticleBody, BaseParser, ParserProxy, attribute
from fundus.parser import ArticleBody, BaseParser, Image, ParserProxy, attribute
from fundus.parser.utility import (
extract_article_body_with_selector,
generic_author_parsing,
generic_date_parsing,
image_extraction,
)


class ZwanzigMinutenParser(ParserProxy):
class V1(BaseParser):
_summary_selector = XPath(
"//div[@class='Article_elementLead__N3pGr']/p| " "//div[@type='typeInfoboxSummary']//li"
"//div[@class='Article_elementLead__N3pGr']/p | (//div[@type='typeInfoboxSummary'])[1]//li"
)
_subheadline_selector = XPath("//section[@class='Article_body__60Liu']//h2[contains(@class, 'crosshead')]")
_paragraph_selector = XPath("//div[@class='Article_elementTextblockarray__WNyan']/p")
Expand All @@ -39,3 +40,13 @@ def publishing_date(self) -> Optional[datetime.datetime]:
@attribute
def title(self) -> Optional[str]:
return self.precomputed.meta.get("og:title")

@attribute
def images(self) -> List[Image]:
return image_extraction(
doc=self.precomputed.doc,
paragraph_selector=self._paragraph_selector,
upper_boundary_selector=XPath("//article"),
caption_selector=XPath("./ancestor::figure//figcaption/span[@class='sc-d47814d6-2 bDLFoO']/p"),
author_selector=XPath("./ancestor::figure//figcaption/span[@class='sc-d47814d6-3 bmEwwn']"),
)
94 changes: 81 additions & 13 deletions tests/resources/parser/test_data/ch/ZwanzigMinuten.json
Original file line number Diff line number Diff line change
@@ -1,36 +1,104 @@
{
"V1": {
"authors": [
"Simon Misteli"
"Konstantin Furrer",
"Deutsche Presse-Agentur"
],
"body": {
"summary": [
"Laurent Vinatier wurde im Juni in Moskau festgenommen. Nun sprach ein Gericht drei Jahre Haft gegen ihn aus. Vorgeworfen wird ihm das Sammeln von Militärinformationen.",
"Ein in Moskau verhafteter Franzose erhielt drei Jahre Gefängnisstrafe.",
"Er arbeitete für das Schweizer NGO HD Centre.",
"Im wird vorgeworfen, russische Militärinformationen gesammelt zu haben."
"Wahleinmischung per Algorithmus? Tiktok steht im Verdacht, ausländische Einflüsse nicht ausreichend zu bekämpfen. Es drohen Strafen.",
"Die Europäische Kommission untersucht den Einfluss von Tiktok auf die rumänischen Präsidentschaftswahlen.",
"Tiktok steht im Verdacht, ausländische Einmischung nicht ausreichend zu bekämpfen.",
"Tiktok weist die Vorwürfe zurück und betont, keine bezahlte politische Werbung zu akzeptieren."
],
"sections": [
{
"headline": [],
"paragraphs": [
"Anfang Juni wurde in Moskau der Franzose Laurent Vinatier festgenommen, der für das Schweizer NGO HD Centre (Zentrum für humanitären Dialog) gearbeitet hatte.",
"Vorgeworfen wird ihm das Sammeln russischer Militärinformationen und eine fehlende Registrierung als «ausländischer Agent». Nun wurde er zu drei Jahren Haft im Straflager verurteilt."
"Die Europäische Kommission hat im Zusammenhang mit der inzwischen annullierten Präsidentenwahl in Rumänien ein Verfahren gegen die Online-Plattform Tiktok eröffnet. Es soll geprüft werden, ob der chinesische Konzern bei Wahlen genug gegen die Einmischung von ausländischen Akteuren vorgeht, wie die Kommission in Brüssel mitteilte.",
"Konkret will sich die Brüsseler Behörde unter anderem Tiktoks Empfehlungssysteme anschauen, also den Algorithmus der Plattform. Dabei soll es um koordinierte, nicht authentische Manipulation sowie die automatisierte Nutzung des Dienstes gehen. Ausserdem steht im Fokus, wie Tiktok mit politischer Werbung und bezahlten politischen Inhalten umgeht."
]
},
{
"headline": [
"In Russland als Auslandsagent verurteilt"
"Strenge Regeln durch EU-Gesetz"
],
"paragraphs": [
"Das Gericht verminderte somit die von der Staatsanwaltschaft verlangte Strafe. Diese forderte fünf Jahre Haft oder Zwangsarbeit. Die Verteidigung hatte eine Geldstrafe vorgeschlagen.",
"«Ich bitte Russland um Verzeihung, dass ich die Gesetze der Russischen Föderation nicht beachtet habe», sagte Vinatier. Er kenne Russland seit 20 Jahren und habe sich in das Land verliebt, so zitiert ihn die russische Nachrichtenagentur Interfax.",
"Gemäss dem russischen Gesetz über die sogenannten Auslandsagenten müssen sich Organisationen und Personen registrieren, die ganz oder teilweise aus dem Ausland finanziert werden. Das Gesetz wird oft dazu genutzt, Regierungskritiker zu verfolgen."
"Plattformen wie Tiktok, Facebook, X, Google und viele andere müssen nach dem EU-Gesetz DSA (Digital Services Act) schneller und schärfer als früher gegen illegale Inhalte im Netz vorgehen. Sonst drohen ihnen Geldbussen. Grundsätzlich müssen grosse Dienste wie Facebook und Instagram mehr Regeln befolgen als kleine.",
"EU-Kommissionspräsidentin Ursula von der Leyen mahnte an, dass die Demokratien vor jeder Art von ausländischer Einmischung geschützt werden müssten. Nach ernsthaften Hinweisen darauf, dass sich ausländische Akteure mit Hilfe von Tiktok in die rumänischen Präsidentschaftswahlen eingemischt haben, werde nun gründlich untersucht, ob der Konzern solche Risiken ausreichend bekämpft, sagte sie. «Wann immer wir eine solche Einmischung vermuten, insbesondere bei Wahlen, müssen wir schnell und entschlossen handeln.»"
]
},
{
"headline": [
"Vorwürfe gegen Tiktok in Rumänien"
],
"paragraphs": [
"Der chinesische Konzern weist die Vorwürfe von sich. «Wir haben die Integrität unserer Plattform bei über 150 Wahlen auf der ganzen Welt geschützt», teilte eine Sprecherin auf Anfrage mit. «Wir akzeptieren keine bezahlte politische Werbung, wir entfernen proaktiv Inhalte, die gegen unsere Richtlinien zu Fehlinformationen, Belästigung und Hassreden verstossen.» Tiktok wolle weiterhin mit der Europäischen Kommission sowie mit regionalen und nationalen Behörden zusammenarbeiten, um Anfragen zu bearbeiten und Bedenken zu diskutieren.",
"Der Oberste Verteidigungsrat (CSAT) in Rumänien hatte Tiktok nach dem Erfolg des prorussischen Rechtsradikalen Calin Georgescu bei der Präsidentenwahl schwere Vorwürfe gemacht. Die Plattform habe es unterlassen, ihn bei seinen dort veröffentlichten Propagandamaterialien als Politiker zu identifizieren. Zur Methode des Wahlkampfs von Georgescu und dessen Finanzierung ermittelt inzwischen Rumäniens Staatsanwaltschaft.",
"Georgescu hatte vor allem auf Tiktok Wahlkampf betrieben. Er war in der ersten Runde der Präsidentenwahl auf Platz eins gekommen, gefolgt von der konservativ-liberalen Politikerin Elena Lasconi. Inzwischen hat das Verfassungsgericht die Wahl annulliert. Der gesamte Wahlprozess muss wiederholt werden. Einen Termin dafür gibt es noch nicht."
]
}
]
},
"publishing_date": "2024-10-15 21:01:17+02:00",
"title": "Laurent Vinatier: Franzose in Russland zu drei Jahren Haft"
"images": [
{
"versions": [
{
"url": "https://image.20min.ch/2024/12/17/43ef34fc-44c2-4745-a495-6aca1f078fcb.jpeg?auto=format%2Ccompress%2Cenhance&fit=max&w=400&h=400&rect=0%2C0%2C4000%2C2668&s=faff33f729f74cfb0c9845bc22463846",
"query_width": null,
"size": {
"width": 400,
"height": 267
},
"type": "image/jpeg"
},
{
"url": "https://image.20min.ch/2024/12/17/43ef34fc-44c2-4745-a495-6aca1f078fcb.jpeg?auto=format%2Ccompress%2Cenhance&fit=max&w=800&h=800&rect=0%2C0%2C4000%2C2668&s=f2eb418733a24986c7a2025d254468a4",
"query_width": null,
"size": {
"width": 800,
"height": 533
},
"type": "image/jpeg"
},
{
"url": "https://image.20min.ch/2024/12/17/43ef34fc-44c2-4745-a495-6aca1f078fcb.jpeg?auto=format%2Ccompress%2Cenhance&fit=max&w=1200&h=1200&rect=0%2C0%2C4000%2C2668&s=a2415f57549c7112a8c3f9a5873b7311",
"query_width": null,
"size": {
"width": 1200,
"height": 800
},
"type": "image/jpeg"
},
{
"url": "https://image.20min.ch/2024/12/17/43ef34fc-44c2-4745-a495-6aca1f078fcb.jpeg?auto=format%2Ccompress%2Cenhance&fit=max&w=1600&h=1600&rect=0%2C0%2C4000%2C2668&s=3944bc50c1753e0bba311f62d0f5533f",
"query_width": null,
"size": {
"width": 1600,
"height": 1067
},
"type": "image/jpeg"
},
{
"url": "https://image.20min.ch/2024/12/17/43ef34fc-44c2-4745-a495-6aca1f078fcb.jpeg?auto=format%2Ccompress%2Cenhance&fit=max&w=2001&h=2000&rect=0%2C0%2C4000%2C2668&s=6c85d31359785915218bcf95f7283e51",
"query_width": null,
"size": {
"width": 2001,
"height": 1334
},
"type": "image/jpeg"
}
],
"is_cover": false,
"description": "«Wann immer wir eine solche Einmischung vermuten, insbesondere bei Wahlen, müssen wir schnell und entschlossen handeln», sagt EU-Kommissionspräsidentin Ursula von der Leyen.",
"caption": "«Wann immer wir eine solche Einmischung vermuten, insbesondere bei Wahlen, müssen wir schnell und entschlossen handeln», sagt EU-Kommissionspräsidentin Ursula von der Leyen.",
"authors": [
"Philipp von Ditfurth/dpa"
],
"position": 459
}
],
"publishing_date": "2024-12-17 12:17:15+01:00",
"title": "Tiktok: Brüssel untersucht Wahleinmischung"
}
}
Binary file not shown.
Binary file not shown.
6 changes: 3 additions & 3 deletions tests/resources/parser/test_data/ch/meta.info
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"url": "https://www.tagesanzeiger.ch/chiesa-ruft-zum-politischen-widerstand-gegen-asylpolitik-auf-150193073111",
"crawl_date": "2024-09-04 15:17:02.716793"
},
"ZwanzigMinuten_2024_10_15.html.gz": {
"url": "https://www.20min.ch/story/russland-franzose-war-fuer-schweizer-ngo-taetig-drei-jahre-haft-103202511",
"crawl_date": "2024-10-15 21:08:09.472647"
"ZwanzigMinuten_2024_12_17.html.gz": {
"url": "https://www.20min.ch/story/europaeische-kommission-verfahren-bruessel-prueft-einfluss-von-tiktok-auf-wahlen-103241818",
"crawl_date": "2024-12-17 15:30:01.640676"
}
}

0 comments on commit e2b7025

Please sign in to comment.