From e66d2bfa5a632468768036e2cbace8ff5e33b769 Mon Sep 17 00:00:00 2001 From: Adrian Breiding Date: Wed, 12 Feb 2025 00:49:40 +0100 Subject: [PATCH] Add `GL` --- docs/supported_publishers.md | 32 ++++ src/fundus/parser/utility.py | 1 + src/fundus/publishers/__init__.py | 2 + src/fundus/publishers/gl/__init__.py | 13 ++ src/fundus/publishers/gl/sermitsiaq.py | 66 ++++++++ .../parser/test_data/gl/Sermitsiaq.json | 156 ++++++++++++++++++ .../gl/Sermitsiaq_2025_02_12.html.gz | Bin 0 -> 22542 bytes tests/resources/parser/test_data/gl/meta.info | 6 + 8 files changed, 276 insertions(+) create mode 100644 src/fundus/publishers/gl/__init__.py create mode 100644 src/fundus/publishers/gl/sermitsiaq.py create mode 100644 tests/resources/parser/test_data/gl/Sermitsiaq.json create mode 100644 tests/resources/parser/test_data/gl/Sermitsiaq_2025_02_12.html.gz create mode 100644 tests/resources/parser/test_data/gl/meta.info diff --git a/docs/supported_publishers.md b/docs/supported_publishers.md index 93f4c388..eaed9a5d 100644 --- a/docs/supported_publishers.md +++ b/docs/supported_publishers.md @@ -1211,6 +1211,38 @@ +## GL-Publishers + + + + + + + + + + + + + + + + + + + + +
Class                                Name                                                                        URL                                                        Missing AttributesAdditional Attributes    
+ Sermitsiaq + +
Sermitsiaq
+
+ + www.sermitsiaq.ag + +   
+ + ## IND-Publishers diff --git a/src/fundus/parser/utility.py b/src/fundus/parser/utility.py index bcbf3f02..29641a8d 100644 --- a/src/fundus/parser/utility.py +++ b/src/fundus/parser/utility.py @@ -492,6 +492,7 @@ def preprocess_url(url: str, domain: str) -> str: def image_author_parsing(authors: Union[str, List[str]]) -> List[str]: credit_keywords = [ + "fotograf", "credits?", "quellen?", "bild(rechte)?", diff --git a/src/fundus/publishers/__init__.py b/src/fundus/publishers/__init__.py index 837b0371..aaed1ab1 100644 --- a/src/fundus/publishers/__init__.py +++ b/src/fundus/publishers/__init__.py @@ -12,6 +12,7 @@ from fundus.publishers.dk import DK from fundus.publishers.es import ES from fundus.publishers.fr import FR +from fundus.publishers.gl import GL from fundus.publishers.ind import IND from fundus.publishers.it import IT from fundus.publishers.jp import JP @@ -64,6 +65,7 @@ class PublisherCollection(metaclass=PublisherCollectionMeta): us = US uk = UK fr = FR + gl = GL ch = CH lt = LT cn = CN diff --git a/src/fundus/publishers/gl/__init__.py b/src/fundus/publishers/gl/__init__.py new file mode 100644 index 00000000..680b70ea --- /dev/null +++ b/src/fundus/publishers/gl/__init__.py @@ -0,0 +1,13 @@ +from fundus.publishers.base_objects import Publisher, PublisherGroup +from fundus.scraping.url import Sitemap + +from .sermitsiaq import SermitsiaqParser + + +class GL(metaclass=PublisherGroup): + Sermitsiaq = Publisher( + name="Sermitsiaq", + domain="https://www.sermitsiaq.ag/", + parser=SermitsiaqParser, + sources=[Sitemap("https://www.sermitsiaq.ag/sitemap.xml")], + ) diff --git a/src/fundus/publishers/gl/sermitsiaq.py b/src/fundus/publishers/gl/sermitsiaq.py new file mode 100644 index 00000000..b0dc385b --- /dev/null +++ b/src/fundus/publishers/gl/sermitsiaq.py @@ -0,0 +1,66 @@ +import datetime +import re +from typing import List, Optional + +from lxml.cssselect import CSSSelector +from lxml.etree import XPath + +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, + generic_topic_parsing, + image_extraction, +) + + +class SermitsiaqParser(ParserProxy): + class V1(BaseParser): + _paragraph_selector = XPath( + f"//div[contains(@class, 'bodytext')]//p[not(@class='offer-description' or re:test(text(), '^/.*/$'))]", + namespaces={"re": "http://exslt.org/regular-expressions"}, + ) + _summary_selector = XPath("//h2[@class='subtitle ']") + _subheadline_selector = XPath("//div[contains(@class, 'bodytext')]//h3[not(@class='offer-name')]") + + @attribute + def body(self) -> Optional[ArticleBody]: + return extract_article_body_with_selector( + self.precomputed.doc, + summary_selector=self._summary_selector, + subheadline_selector=self._subheadline_selector, + paragraph_selector=self._paragraph_selector, + ) + + @attribute + def authors(self) -> List[str]: + return generic_author_parsing(self.precomputed.ld.bf_search("author"), split_on=["og"]) + + @attribute + def publishing_date(self) -> Optional[datetime.datetime]: + return generic_date_parsing(self.precomputed.ld.bf_search("datePublished")) + + @attribute + def title(self) -> Optional[str]: + return self.precomputed.ld.bf_search("headline") + + @attribute + def topics(self) -> List[str]: + return [tag.title() for tag in generic_topic_parsing(self.precomputed.meta.get("article:tag"))] + + @attribute + def images(self) -> List[Image]: + return image_extraction( + doc=self.precomputed.doc, + paragraph_selector=self._paragraph_selector, + image_selector=XPath("//figure//img[not(@itemprop='image')]"), + caption_selector=XPath( + "./ancestor::*[self::figure or (self::div and contains(@class,'articleHeader'))]" + "//figcaption[@itemprop='caption']" + ), + author_selector=XPath( + "./ancestor::*[self::figure or (self::div and contains(@class,'articleHeader'))]" + "//figcaption[@itemprop='author']" + ), + ) diff --git a/tests/resources/parser/test_data/gl/Sermitsiaq.json b/tests/resources/parser/test_data/gl/Sermitsiaq.json new file mode 100644 index 00000000..011ec7b5 --- /dev/null +++ b/tests/resources/parser/test_data/gl/Sermitsiaq.json @@ -0,0 +1,156 @@ +{ + "V1": { + "authors": [ + "Trine Juncher Jørgensen", + "Tôrtia Reimer-Johansen" + ], + "body": { + "summary": [], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Et stort flertal af den grønlandske befolkning - 85 procent - ønsker ikke, at Grønland træder ud af Rigsfællesskabet og i stedet blive en del af USA.", + "Alligevel svarer knap halvdelen, at de ser Donald Trumps interesse for Grønland som en mulighed, mens den anden halvdel svarer, at de ser det som en trussel.", + "Skal man vælge mellem dansk og amerikansk statsborgerskab, så foretrækker langt størstedelen dansk statsborgerskab (55 procent). En stor del svarer dog ”ved ikke” (37 procent). Kun 8 procent foretrækker amerikansk statsborgerskab." + ] + }, + { + "headline": [ + "Selvstændighed" + ], + "paragraphs": [ + "I forhold til selvstændighed svarer flertallet, at de ønsker en form for selvstændighed, men inden for en tidshorisont på 10-20 år, og såfremt selvstændighed ikke medfører en nedgang i levevilkår.", + "Det er nogle af resultaterne i den meningsmåling, som analyseinstituttet Verian har udarbejdet for Sermitsiaq og Berlingske. Meningsmålingen er baseret på webinterviews i perioden fra 22-27. januar 2025 med 497 repræsentativt udvalgte borgere i Grønland over 18 år." + ] + }, + { + "headline": [ + "Et grønlandsk anliggende" + ], + "paragraphs": [ + "Foreholdt meningsmålingen understreger formand for Naalakkersuisut, Múte B. Egede, ”at Grønlands fremtid til enhver tid er et grønlandsk anliggende”.", + "– Og på den baggrund peger denne undersøgelse på, at et stort flertal af grønlænderne ønsker, at Grønland ikke skal underordne sig USA, men at mange er bekymrede over følgende udviklinger, men at mange også ser muligheder i disse udviklinger. Og jeg peger også på, at et flertal af befolkningen ønsker, at der ikke skal være status quo. Og at der skal være tryghed og en beslutning om, at her i landet skal være beslutningskompetence, der vedrører vores fremtid. Selvfølgelig, vi kan se, at denne undersøgelse peger på, at det er op til samfundet at styre, men jeg vil gerne understrege, at det er op til borgerne her at træffe beslutninger for deres fremtid, lyder det." + ] + }, + { + "headline": [ + "Fortsat samarbejde" + ], + "paragraphs": [ + "I sidste uge kommenterede statsminister Mette Frederiksen også meningsmålingen over for Berlingske. Her lød det, at hun som udgangspunkt ikke ville gå ind i, hvad meningsmålinger fra Grønland måtte vise.", + "– Det til en side er jeg glad for, hvis målingen er udtryk for, at mange grønlændere vil kunne se et fortsat tæt samarbejde med Danmark. Sikkert i en anden udgave end det, vi kender i dag, fordi alting forandrer sig over tid.", + "Efterfølgende har Mette Frederiksen over for Jyllands-Posten i artiklen ”Kamp om Grønland” blandt andet erkendt, at udenrigs- og sikkerhedspolitikken er områder, som udfordres af de rammer som ligger i rigsfællesskabet nu.", + "– Jeg anerkender fuldt ud de ønsker, der er, og vil også gerne løse problemerne, lyder det fra Mette Frederiksen." + ] + } + ] + }, + "images": [ + { + "versions": [ + { + "url": "https://image.sermitsiaq.ag/2192435.webp?imageId=2192435&x=0.00&y=0.00&cropw=100.00&croph=85.63&width=960&height=548&format=jpg", + "query_width": "max-width:767", + "size": { + "width": 960, + "height": 548 + }, + "type": "image/jpeg" + }, + { + "url": "https://image.sermitsiaq.ag/2192435.webp?imageId=2192435&x=0.00&y=0.00&cropw=100.00&croph=85.63&width=960&height=548&format=webp", + "query_width": "max-width:767", + "size": { + "width": 960, + "height": 548 + }, + "type": "image/webp" + }, + { + "url": "https://image.sermitsiaq.ag/2192435.webp?imageId=2192435&x=0.00&y=0.00&cropw=100.00&croph=85.63&width=2116&height=1208&format=jpg", + "query_width": "min-width:768", + "size": { + "width": 2116, + "height": 1208 + }, + "type": "image/jpeg" + }, + { + "url": "https://image.sermitsiaq.ag/2192435.webp?imageId=2192435&x=0.00&y=0.00&cropw=100.00&croph=85.63&width=2116&height=1208&format=webp", + "query_width": "min-width:768", + "size": { + "width": 2116, + "height": 1208 + }, + "type": "image/webp" + } + ], + "is_cover": true, + "description": null, + "caption": "Formand for Naalakkersuisut, Múte B. Egede har noteret sig meningsmålingens resultater om, at et stort flertal af grønlænderne ikke ønsker, at Grønland skal underordne sig USA. Han noterer sig også, at status quo ikke er en mulighed.", + "authors": [ + "Mads Claus Rasmussen" + ], + "position": 272 + }, + { + "versions": [ + { + "url": "https://image.sermitsiaq.ag/2192439.webp?imageId=2192439&width=960&height=548&format=jpg", + "query_width": "max-width:767", + "size": { + "width": 960, + "height": 548 + }, + "type": "image/jpeg" + }, + { + "url": "https://image.sermitsiaq.ag/2192439.webp?imageId=2192439&width=960&height=548&format=webp", + "query_width": "max-width:767", + "size": { + "width": 960, + "height": 548 + }, + "type": "image/webp" + }, + { + "url": "https://image.sermitsiaq.ag/2192439.webp?imageId=2192439&width=1412&height=806&format=jpg", + "query_width": "min-width:768", + "size": { + "width": 1412, + "height": 806 + }, + "type": "image/jpeg" + }, + { + "url": "https://image.sermitsiaq.ag/2192439.webp?imageId=2192439&width=1412&height=806&format=webp", + "query_width": "min-width:768", + "size": { + "width": 1412, + "height": 806 + }, + "type": "image/webp" + } + ], + "is_cover": false, + "description": null, + "caption": "Statsminister Mette Frederiksen er ifølge Berlingske ”glad for, hvis målingen er et udtryk for, at mange grønlændere vil kunne se et fortsat tæt samarbejde med Danmark. Sikkert i en anden udgave end det, vi kender i dag, fordi alting forandrer sig over tid.”", + "authors": [ + "Mads Claus Rasmussen/Ritzau Scanpix" + ], + "position": 310 + } + ], + "publishing_date": "2025-02-06 19:25:34+00:00", + "title": "Múte B. Egede om meningsmåling: Status quo er ikke en mulighed", + "topics": [ + "Múte B. Egede", + "Grønland", + "Selvstændighed", + "Samfund", + "Rigsfællesskabet", + "Donald Trump" + ] + } +} diff --git a/tests/resources/parser/test_data/gl/Sermitsiaq_2025_02_12.html.gz b/tests/resources/parser/test_data/gl/Sermitsiaq_2025_02_12.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..67442fda06e43e4c63c1421dc54223165f04184a GIT binary patch literal 22542 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