Proposal: <podcast:replaces> to fix broken episodes #449
Replies: 8 comments 14 replies
-
Regardless of how it works, I like his idea a lot. This is the "break glass in case of emergency" to me. |
Beta Was this translation helpful? Give feedback.
-
This later use My issue with the the This has the chance of being mutually beneficial. |
Beta Was this translation helpful? Give feedback.
-
Bumping this up after hearing @theDanielJLewis mention it on the Future of Podcasting this week (18 April 2024). I think it's a great idea! The main beneficiaries would be the creator who has a mechanism to "push" an episode update, then the audience who know they are listening to the latest information. Useful for story episodes that have an update after original publication for example. |
Beta Was this translation helpful? Give feedback.
-
I'm sorry to ask only now, but doesn't the RSS standard already allow you to update items? Don't we already have http headers which can indicate if anything has changed since X? In other words: we can't you (as a podcaster/host) update the feed with correct episode information, maintaining the episode guid? My colleague often complains that Podcast namespace is replicating already existing functionality, and I often try to find the thing that's extra, not possible with the existing method. (For example Funding: payment link, Chapters: Podlove simple chapters.) Not sure if I can make that case here. More importantly, and I might be coming a bit strong in this one: duplicate episodes are already a major issue. Adding the proposed tag just makes the situation worse (rather than better) for any app that hasn't implemented this tag (yet). Many apps including AntennaPod don't physically delete episodes that are no longer in the feed. That's done for several reasons, e.g. to not lose user data (such as favourites) when podcasters/hosts only include the latest X episodes in the feed (instead of keeping the full backlog with paged feeds). Whenever a feed would take the proposed approach and this 'replaces' tag isn't supported/recognised (yet), the episode would get to exist twice in the database. Once with a working download URL, once with a broken download URL, if the podcaster/host changed the enclosure URL.
If that's the problem, then I would rather suggest adding a |
Beta Was this translation helpful? Give feedback.
-
The correct way to fix that would be to change the episode GUID. Currently, I don’t have a way to do that, but a decent podcast host would produce a GUID using a hash of the audio file. I’m not sold on the need for this feature, and share the concerns from @keunes - this is an issue for best-practice documentation, not a requirement for a new tag. (Also, see the generator tag, media:thumbnail, and plenty of other perfectly valid existing RSS features). |
Beta Was this translation helpful? Give feedback.
-
This article that @johnspurlock posted on Mastodon seems relevant and is good reading anyway. |
Beta Was this translation helpful? Give feedback.
-
Trying to get my head around this. I can see the use case/problem. But if I upload a new episode (fixed) and republish using the same GUID. Will apps not get a podping to tell apps to refresh the feed? Isn't this the goal of podping to alert apps to ANY and all RSS feed changes? We use it this way for Live when the status changes from pending to live. We use Podping when a new episode is first published. I would love to see Podping used for more realtime RSS updates. |
Beta Was this translation helpful? Give feedback.
-
Here's something else to consider for this, as probably either the length attribute or something for this specific situation. What if the length or order of the media significantly changes? Like what Sam or James forgot to insert an interview into Podnews Weekly Review and you hear simply, "I spoke with John Smith about it … And wasn't that a lovely conversation?" Then the replacement episode needs to indicate that the timing has changed, and that could trigger the app to prompt the user to start over or continue from where they were. This shouldn't be gleaned from only the enclosure's length attribute because there could be cases where the length is actually the same, but that's because some silence was left in where audio was supposed to be, or one track didn't shift from editing the other track(s). |
Beta Was this translation helpful? Give feedback.
-
In thinking of another potential use for
<podcast:expire>
(#448), I realized a better way of implementing this other use as a separate feature.(I think
replace
could work, too, but I thinkreplaces
reads better.)This would be used to indicate that the newly released episode should replace the other episode by GUID. Ideally, the apps should then delete the previously downloaded version and replace it with this new one, probably maintaining playback position (but that might not be good in all circumstances).
The problem
Podcast apps track consumption with the item GUID. You can replace everything about an episode (even the title and enclosure), but the apps should see it as the same episode as long as the GUID remains the same.
On the flip side, change nothing about the item except the GUID, and apps should see it as a new episode.
Here's where to use this. When an episode contains some bad edits (like maybe forgotten background music, extra trailing silence, or some neglected editing), but such mistakes don't destroy the consumption experience, a podcaster can re-upload the audio file and all new downloads will get the new file while everyone who already downloaded the episode will keep their file and not be forced to redownload.
When there is a catastrophic problem (like a cohost's audio track is missing or the wrong audio was published), a podcaster should change the GUID of the post in order to force a redownload. (I suggest appending "[FIXED]" to the title, for about a week, for clarity.) This forced method should force everyone to redownload the new episode. (Because most publishing systems rightly don't allow editing the GUID, the next thing to do is copy all the post contents to a new post and publish that while unpublishing the faulty post.)
In other words, the situation calls for a forced redownload if the episode is unlistenable, but not if the episode was merely missing some smaller edits.
How
<podcast:replaces>
would workThis
replaces
tag would look the same as the item<guid>
, and it would include the GUID of a previous item, allowing that faulty item to be completely removed from the feed.A podcast app would see
replaces
, delete the faulty replaced episode (by its GUID) and replace it with this new episode. If there is no already-download episode with that GUID, then the podcast app does nothing different. And if the replaced episode has been marked as played, then the app would not redownload.As for playback position, a podcast app could work like the Amazon Kindle app works when reading e-books across different devices. Jumping back to the same playback position in a replaced file could put the audience in the wrong spot if the replaced version shifted anything before the current playback position. Thus, I think a prompt would help the audience, but only trigger the prompt if the episode lengths mismatch.
For example:
Extending the idea
While being required to change the GUID (or make a new post in order to get a new GUID) ensures backward compatibility with all podcast apps, I could foresee allowing
<podcast:replaces>
on an existing item. This would negate the need to change the GUID or create a new post but at the cost of backward compatibility. Nonetheless, this is where thedate
attribute would be crucial.When the tag references its own GUID, then the podcast app would force a redownload only if the replaces date was not previously seen.
This would allow an episode to be replaced multiple times without having to change the GUID (or repost) every time.
Beta Was this translation helpful? Give feedback.
All reactions