Custom RSS feeds #34
Labels
No labels
bug
devops
duplicate
enhancement
good first issue
layout
next major release
next minor release
question
research
testing
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lvl0/fedi-feed-router#34
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Allow users to add custom RSS feeds beyond the pre-configured providers (VRT, Belga, Guardian).
Context
Currently feeds are tied to a
providerconfig key (vrt, belga, guardian) which maps to specific parser classes. Users should be able to add any RSS feed URL without needing a custom parser — the generic RSS parsing infrastructure from #37 handles this.Scope
Tasks
is_systemflag (orfeed_typecolumn: system/custom) to feeds tableCustom feedsto Custom RSS feedsRSS feeds should not use page parsers at all
Decided 2026-08-15. This changes the ticket's scope beyond the task list above.
Current behaviour
FetchRssArticlesActionis already generic: it fetches any$feed->url, parsesstandard RSS, and harvests
<link>from each<item>. Nothing about it isprovider-specific, so the premise of this ticket holds.
What is not generic is what happens next.
SaveArticleActionstores the link,and the title, description and thumbnail are filled in later by
FetchArticleDataAction, which dispatches throughArticleParserFactoryon$feed->providerto a per-site page parser. For a custom feed there is no suchparser and
getParser()throwsNo parser found for URL.Decision
RSS feeds use the RSS item's own data. Title, and the brief description where
one is present, are enough to make a post. No page fetch, no page parser.
This applies to all RSS feeds, not only custom ones, which means The
Guardian stops going through
GuardianArticlePageParserand starts using itsRSS content directly.
Consequences to handle
RSS sometimes carries one in
<enclosure>or<media:thumbnail>, but notreliably. RSS-sourced posts may have no image where they previously did.
Decide whether to read those elements when present or accept no thumbnail.
<description>is often a truncated teaser ratherthan the full text. Posts from RSS feeds will be shorter than the scraped
equivalent.
GuardianArticlePageParserbecomes dead code once Guardian stops usingit, along with its fixtures and tests. Worth removing in the same change
rather than leaving it to rot.
usable feed; they keep their parsers.
Upside
Fewer HTTP requests per article, and nothing to break when a publisher changes
their markup. The failure mode that made #115 invisible for weeks only exists
for scraped sources.