- last update
almost 2 years ago 148 pass - 🇺🇸United States dcam
Yes, it's the DefaultProcessor that rejects title-less items. Here's a new test using the new DefaultProcessorTest that verifies it. This issue is one of the reasons I wrote it in the first place.
We would still need to decide what we want and can do about it, if anything. I haven't done any research yet.
- last update
almost 2 years ago 148 pass - heddn Nicaragua
Not directly related, but if the feed item has a malformed or non existent URL, it also has issues. The example feed here has no 'link' value. The processor just handles it and then Item::buildUri fails on an empty url string.
https://rss.art19.com/apology-line
<item> <title>Listen Now – Over My Dead Body: Gone Hunting</title> <description> <p>When Mike Williams vanishes on a hunting trip, the authorities suspect he was eaten by alligators but the true predators who took Mike may lurk much closer to home. The mystery of Mike’s disappearance might have faded from memory, if it wasn’t for one woman’s tireless crusade. From Wondery, comes a new season of Over My Dead Body; a story about an obsessive love affair, a scandalous secret and a mother’s battle for the truth.</p><p><br></p><p>Listen to Over My Dead Body: <a href="http://Wondery.fm/_OMDB_" rel="noopener noreferrer" target="_blank"><u>Wondery.fm/_OMDB_</u></a></p><p>See Privacy Policy at <a href="https://art19.com/privacy" rel="noopener noreferrer" target="_blank">https://art19.com/privacy</a> and California Privacy Notice at <a href="https://art19.com/privacy#do-not-sell-my-info" rel="noopener noreferrer" target="_blank">https://art19.com/privacy#do-not-sell-my-info</a>.</p> </description> <itunes:title>Listen Now – Over My Dead Body: Gone Hunting</itunes:title> <itunes:episodeType>trailer</itunes:episodeType> <itunes:summary> When Mike Williams vanishes on a hunting trip, the authorities suspect he was eaten by alligators but the true predators who took Mike may lurk much closer to home. The mystery of Mike’s disappearance might have faded from memory, if it wasn’t for one woman’s tireless crusade. From Wondery, comes a new season of Over My Dead Body; a story about an obsessive love affair, a scandalous secret and a mother’s battle for the truth. Listen to Over My Dead Body: Wondery.fm/_OMDB_ See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info. </itunes:summary> <content:encoded> <p>When Mike Williams vanishes on a hunting trip, the authorities suspect he was eaten by alligators but the true predators who took Mike may lurk much closer to home. The mystery of Mike’s disappearance might have faded from memory, if it wasn’t for one woman’s tireless crusade. From Wondery, comes a new season of Over My Dead Body; a story about an obsessive love affair, a scandalous secret and a mother’s battle for the truth.</p><p><br></p><p>Listen to Over My Dead Body: <a href="http://Wondery.fm/_OMDB_" rel="noopener noreferrer" target="_blank"><u>Wondery.fm/_OMDB_</u></a></p><p>See Privacy Policy at <a href="https://art19.com/privacy" rel="noopener noreferrer" target="_blank">https://art19.com/privacy</a> and California Privacy Notice at <a href="https://art19.com/privacy#do-not-sell-my-info" rel="noopener noreferrer" target="_blank">https://art19.com/privacy#do-not-sell-my-info</a>.</p> </content:encoded> <guid isPermaLink="false"> gid://art19-episode-locator/V0/THAkE_PLYvLPe5esjbbRwigRYOcI8slrh1TzzUS0Yes </guid> <pubDate>Mon, 21 Aug 2023 08:00:00 -0000</pubDate> <itunes:explicit>yes</itunes:explicit> <itunes:image href="https://content.production.cdn.art19.com/images/be/e1/82/c2/bee182c2-14b7-491b-b877-272ab6754025/bd4ab6d08d7b723678a682b6e399d26523245b3ba83f61617b9b28396aba1092b101cd86707576ec021b77e143b447463342b352f8825265b15310c989b6cb93.jpeg"/> <itunes:keywords> Serial killer,TRUE CRIME,Society,This American Life,MURDER,Apology,Apology Line,Binge Worthy Documentary,New York City,Binge-worthy true crime,exhibit c </itunes:keywords> <itunes:duration>00:05:41</itunes:duration> <enclosure url="https://dts.podtrac.com/redirect.mp3/chrt.fm/track/9EE2G/pdst.fm/e/rss.art19.com/episodes/f2a5ba0e-de92-4ba8-85d3-afd3f042179c.mp3?rss_browser=BAhJIgxGaXJlZm94BjoGRVQ%3D--e1fe8381133ee436d645c9120f2b13f7c307fd4d" type="audio/mpeg" length="5456457"/> </item>
- 🇺🇸United States dcam
Shouldn't #3 fail?
Nope, although it does need to be rerolled since I enhanced that test.
+++ b/tests/src/Kernel/Plugin/aggregator/processor/DefaultProcessorTest.php @@ -77,6 +77,19 @@ class DefaultProcessorTest extends KernelTestBase { + 0,
Here on line 92 the number of expected items is 0. So when the title-less item isn't imported this passes.
- 🇺🇸United States mfb San Francisco
It would be great to resolve this issue, because Bluesky RSS feeds do not have a title.
I'm reclassifying this as a bug, because it seems like a good idea to support Bluesky's RSS feeds.
- Status changed to Needs work
12 days ago 4:01am 23 July 2025 - 🇺🇸United States mfb San Francisco
Setting to needs work because this isn't really fixed by the patch, yet :)
I updated the issue summary with a pretty-important remaining task: Figure out exactly how to handle RSS items that are missing a title or have an empty title, due to the item title being used in the UI, e.g. when listing items, and by the label() method; all this stuff still needs to work for items without a title!
- 🇺🇸United States mfb San Francisco
Opened up a MR for review. Since title is apparently used in de-duplicating items, i thought it might be a good idea to save the truncated description instead of an empty title? But also, since a NULL or empty title would be valid (if saved programmatically, for example), I also patched the label() to use the truncated description, if necessary. Since the description can be HTML-encoded markup, we have to strip tags and HTML-decode the description before using it as the title, otherwise the markup would be displayed to the end user.
- 🇺🇸United States mfb San Francisco
I discovered an API method we can use to convert the description markup to plain text: PlainTextOutput::renderFromHtml(). And for some reason, the default title is empty string, but the default description is null. So, we need to handle that potential null by only using the description if it's present.