From cfab58ade57098d14279776cb2f0cdd6863f78cc Mon Sep 17 00:00:00 2001 From: Adrian Breiding Date: Mon, 10 Nov 2025 22:35:52 +0100 Subject: [PATCH 1/3] fix `summary_selector` --- src/fundus/publishers/us/the_nation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fundus/publishers/us/the_nation.py b/src/fundus/publishers/us/the_nation.py index 09529553f..e80b58a32 100644 --- a/src/fundus/publishers/us/the_nation.py +++ b/src/fundus/publishers/us/the_nation.py @@ -106,7 +106,7 @@ class V2(V1): # use the old layout for main content, so we concatenate XPath from V1 onto V1_1. _summary_selector = XPath( - "//div[@class='article-header-content'] /h2 | //div[contains(@class, 'article-title')] /p" + "//div[@class='article-header-content'] /h2 | //article//div[contains(@class, 'article-title')] /p" ) _paragraph_selector = XPath("(//article | //div[@class='article-body-inner']) / p") From b71548a1ddef5d3a5e74b95e9c9f89b72b354455 Mon Sep 17 00:00:00 2001 From: Adrian Breiding Date: Mon, 10 Nov 2025 23:06:28 +0100 Subject: [PATCH 2/3] Add `V1_1` for `TimesLive` --- src/fundus/publishers/za/__init__.py | 13 +-- src/fundus/publishers/za/times_live.py | 19 ++++ .../parser/test_data/za/TimesLive.json | 86 ++++++++++++++++++ .../test_data/za/TimesLive_2025_11_10.html.gz | Bin 0 -> 35826 bytes tests/resources/parser/test_data/za/meta.info | 4 + 5 files changed, 114 insertions(+), 8 deletions(-) create mode 100644 tests/resources/parser/test_data/za/TimesLive_2025_11_10.html.gz diff --git a/src/fundus/publishers/za/__init__.py b/src/fundus/publishers/za/__init__.py index 39e023e26..000280511 100644 --- a/src/fundus/publishers/za/__init__.py +++ b/src/fundus/publishers/za/__init__.py @@ -2,7 +2,7 @@ from fundus.publishers.za.daily_maverick import DailyMaverickParser from fundus.publishers.za.times_live import TimesLiveParser from fundus.scraping.filter import inverse, regex_filter -from fundus.scraping.url import NewsMap, Sitemap +from fundus.scraping.url import NewsMap, RSSFeed, Sitemap class ZA(metaclass=PublisherGroup): @@ -26,12 +26,9 @@ class ZA(metaclass=PublisherGroup): domain="https://www.timeslive.co.za/", parser=TimesLiveParser, sources=[ - NewsMap("https://www.timeslive.co.za/sitemap/google-news/times-live/news/"), - NewsMap("https://www.timeslive.co.za/sitemap/google-news/times-live/politics/"), - NewsMap("https://www.timeslive.co.za/sitemap/google-news/times-live/sport/"), - NewsMap("https://www.timeslive.co.za/sitemap/google-news/times-live/lifestyle/"), - NewsMap("https://www.timeslive.co.za/sitemap/google-news/sunday-times/news/"), - NewsMap("https://www.timeslive.co.za/sitemap/google-news/sunday-times/business/"), - NewsMap("https://www.timeslive.co.za/sitemap/google-news/sunday-times-daily/news/"), + RSSFeed("https://www.timeslive.co.za/arc/outboundfeeds/google-news-feed/"), + NewsMap("https://www.timeslive.co.za/arc/outboundfeeds/sitemap-news-index/"), + Sitemap("https://www.timeslive.co.za/arc/outboundfeeds/sitemap-index/"), + Sitemap("https://www.timeslive.co.za/arc/outboundfeeds/sitemap-section-index/"), ], ) diff --git a/src/fundus/publishers/za/times_live.py b/src/fundus/publishers/za/times_live.py index 5e7c1a487..f5da8a95c 100644 --- a/src/fundus/publishers/za/times_live.py +++ b/src/fundus/publishers/za/times_live.py @@ -16,6 +16,8 @@ class TimesLiveParser(ParserProxy): class V1(BaseParser): + VALID_UNTIL = datetime.date(2025, 9, 30) + _paragraph_selector = XPath("//div[@class='wrap']//div[@class='text']/p[span or text()]") _summary_selector = XPath("//h3[contains(@class, 'article-title-tertiary')] ") _subheadline_selector = XPath("//div[@class='wrap']//div[@class='text']/h3") @@ -82,3 +84,20 @@ def images(self) -> List[Image]: author_selector=XPath("./ancestor::div[contains(@class, 'image-container')]//span[@class='name']"), relative_urls=True, ) + + class V1_1(V1): + VALID_UNTIL = datetime.date.today() + + _paragraph_selector = XPath("//article/p[not(string()='TimesLIVE')]") # There are no subheadlines/summaries + + @attribute + def images(self) -> List[Image]: + return image_extraction( + doc=self.precomputed.doc, + paragraph_selector=self._paragraph_selector, + lower_boundary_selector=XPath("//div[@class='wrap']//hr"), + upper_boundary_selector=XPath("//h1"), + caption_selector=XPath("./ancestor::figure//span[contains(@class, 'caption')]"), + author_selector=XPath("./ancestor::figure//span[contains(@class, 'credit')]"), + relative_urls=True, + ) diff --git a/tests/resources/parser/test_data/za/TimesLive.json b/tests/resources/parser/test_data/za/TimesLive.json index 3d0740e23..0606ec35f 100644 --- a/tests/resources/parser/test_data/za/TimesLive.json +++ b/tests/resources/parser/test_data/za/TimesLive.json @@ -85,5 +85,91 @@ "early retirement", "defence drc" ] + }, + "V1_1": { + "authors": [ + "Tania Broughton" + ], + "body": { + "summary": [], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Duduzile Zuma-Sambudla had been on the state’s radar long before the July 2021 riots, which her advocate Dali Mpofu referred to as police “spying” on her.", + "This emerged during day one of the trial against former president Jacob Zuma’s daughter, an MK Party MP, who is accused of “terrorism” and inciting violence through a series of social media messages she posted before and during the 2021 July unrest, which left 350 people dead in KwaZulu-Natal and Gauteng.", + "Zuma-Sambudla pleaded not guilty to the charges when she appeared before Durban high court judge Mbuzeni Mathenjwa on Monday.", + "Her father sat in the front row of the public gallery, along with other MK Party supporters.", + "The indictment claims that the unrest was sparked by the jailing of Zuma, as ordered by the Constitutional Court after he refused to comply with its order that he appear before the Zondo Commission of Inquiry into state capture.", + "Zuma-Sambudla and other supporters openly criticised this, using social media to organise, plan, incite and coordinate violent incidents.", + "At her earlier bail application, she did not deny sending some of the messages, but said it was nonsensical and petty to say that people were influenced by them.", + "She said the state was clutching at straws and its case against her was weak.", + "The first witness at the trial was Hawks head Major-Gen Gopaul Govender, who was appointed as the national co-ordinator for the investigation into the civil arrest.", + "He said Zuma-Sambudla had been a “person of interest” a long time before July 8, when the violence erupted following the incarceration of Jacob Zuma for contempt of court.", + "In his evidence in chief, and under cross-examination by Mpofu, he said after the apex court had ruled, on June 29 2021, that Zuma must go to jail, there had been “intelligence gathering at a high level to monitor the temperature” in the country.", + "Zuma-Sambudla had been flagged because she was an influential social media user and, on June 30, had posted to her 124,000 followers, loosely translated, “Comrades, the time to fight in this arena with the mobile phone is over.”", + "She had then tweeted that the fight for radical economic transformation must be intensified “on the outside”. Then, in a series of 19 tweets, she had shared videos of the violence with words “we see you” or “I see you”.", + "He said these words could be viewed as being supportive of the violence and chaos.", + "Govender said the investigation revealed that of the three Twitter accounts in her name, two were fake.", + "He said not all of her followers were supportive of her messaging, with some calling her out, saying she was inciting violence and calling on her to “stop playing with people’s lives”.", + "He said the investigation had shown international links to the violence coming from Cuba.", + "There were also people “providing finance”, but he conceded under cross-examination that she, Zuma-Sambudla, had been cleared early on in the investigation of having no direct links with the looters, had not been at any of the crime scenes, and her bank records had shown that she had not been involved in funding the unrest.", + "She had also not been directly involved in any of the many WhatsApp groups which, according to Govender, were created for the sole purpose of communicating from a high level to the “ground forces” and whose members included politicians, community leaders, ward councillors and business people.", + "Regarding the tweets, Mpofu adopted a “so what” attitude and said none of them incited violence.", + "He said he himself followed his client on social media and questioned if that made him a criminal.", + "He said the state had “drawn a blank” in its initial investigations and was now prosecuting his client on an “interpretation of her tweets”.", + "“What is dangerous about a tweet that says ‘we see you’ with a video of burning premises, which had already happened and had been shared widely on social media?” he asked.", + "Govender responded that it was “trending”. Zuma-Sambudla, a person of political influence and authority, the daughter of the former president, had shared it. Her posts carried weight, he said.", + "“It was, like, encouraging, appreciating and supporting it,” Govender said.", + "He said context and timing were important. Specifically on July 9 and 10, “South Africa was a crumbling disaster” with the majority of burning, looting and murders taking place in the first 72 hours.", + "“I will argue that your evidence is completely unhelpful to the state, although it might be helpful to us. Nothing you have said sheds light on why the accused is sitting here,” said Mpofu.", + "Earlier, in his opening statement, state advocate Yuri Gangai said the case was about the “power of words” and that Zuma-Sambudla, instead of being a voice to calm the nation, had not shown restraint.", + "He said she had understood the extent of the volatility and had chosen to fuel it from the comfort of her home.", + "The state is expected to call a cybercrime expert during the course of the next two weeks.", + "On Tuesday, it will call Sarah-Jane Trent, executive director of Forensics for Justice (owned by Paul O’Sullivan), who laid the complaint against Zuma-Sambudla with the Hawks." + ] + } + ] + }, + "images": [ + { + "versions": [ + { + "url": "https://www.timeslive.co.za/resizer/v2/DLJSG4UH2NFNZP2HPZCYAG4GSM?auth=91191352fb42187691cd436f4cb1d91783ac8963f243097ffa4a879d7a49e4fc&width=800&height=450&smart=true", + "query_width": "max-width:800", + "size": { + "width": 800, + "height": 450 + }, + "type": null + }, + { + "url": "https://www.timeslive.co.za/resizer/v2/DLJSG4UH2NFNZP2HPZCYAG4GSM?auth=91191352fb42187691cd436f4cb1d91783ac8963f243097ffa4a879d7a49e4fc&width=1600&height=900&smart=true", + "query_width": "max-width:1600", + "size": { + "width": 1600, + "height": 900 + }, + "type": null + } + ], + "is_cover": true, + "description": "Duduzile Zuma-Sambudla will face the music for her role in the July civil unrest when her terrorism trial is heard in November.", + "caption": "Duduzile Zuma-Sambudla will face the music for her role in the July civil unrest when her terrorism trial is heard in November.", + "authors": [ + "NPA" + ], + "position": 342 + } + ], + "publishing_date": "2025-11-10 16:21:53+00:00", + "title": "Duduzile Zuma-Sambudla’s legal team argues state has been ‘spying’ on her way before July riots", + "topics": [ + "Duduzile Zuma-Sambudla", + "2021 unrest", + "courts", + "Dali Mpofu", + "Jacob Zuma" + ] } } diff --git a/tests/resources/parser/test_data/za/TimesLive_2025_11_10.html.gz b/tests/resources/parser/test_data/za/TimesLive_2025_11_10.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..170d7f81d86f4c92ed858be7308a098d2441a224 GIT binary patch literal 35826 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 SKPW@}{{I1mfL)0gr~&{gCen2P literal 0 HcmV?d00001 diff --git a/tests/resources/parser/test_data/za/meta.info b/tests/resources/parser/test_data/za/meta.info index 15dfeb1a6..453091bea 100644 --- a/tests/resources/parser/test_data/za/meta.info +++ b/tests/resources/parser/test_data/za/meta.info @@ -6,5 +6,9 @@ "TimesLive_2025_05_22.html.gz": { "url": "https://www.timeslive.co.za/sunday-times-daily/business/2025-05-21-2025-budget-30-sars-gets-r4bn-to-hire-army-of-debt-collectors/", "crawl_date": "2025-05-22 12:29:24.622820" + }, + "TimesLive_2025_11_10.html.gz": { + "url": "https://www.timeslive.co.za/news/south-africa/2025-11-10-dududzile-zuma-sambudlas-legal-team-argues-state-has-been-spying-on-her-way-before-july-riots/", + "crawl_date": "2025-11-10 23:05:51.333562" } } From bf161334d80677ffff04862238baff8118fbf9ea Mon Sep 17 00:00:00 2001 From: Adrian Breiding Date: Mon, 10 Nov 2025 23:07:00 +0100 Subject: [PATCH 3/3] remove unnecessary import --- src/fundus/publishers/za/times_live.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/fundus/publishers/za/times_live.py b/src/fundus/publishers/za/times_live.py index f5da8a95c..302495865 100644 --- a/src/fundus/publishers/za/times_live.py +++ b/src/fundus/publishers/za/times_live.py @@ -1,5 +1,4 @@ import datetime -import re from typing import List, Optional from lxml.etree import XPath