Open mitchdowney opened 1 year ago
It me!
A quick comment on the prevalence of <itunes:foo>
tags: I know there's a movement—which I support—to replicate those proprietary tags with <podcast:foo>
tags. So whatever is done that keys off the Apple tags should also be scanning not-Apple tags, adjusting as the RSS2.0 spec changes. Please and thank you!
hey @ryanhirsch, @evoterra has a comment above I think would relate to podcast-partytime handling.
I like parties.
It me!
A quick comment on the prevalence of
<itunes:foo>
tags: I know there's a movement—which I support—to replicate those proprietary tags with<podcast:foo>
tags. So whatever is done that keys off the Apple tags should also be scanning not-Apple tags, adjusting as the RSS2.0 spec changes. Please and thank you!
Any links you can share related to this discussion? I'm trying to clean up some of the code internal on partytime right now, so if I need to make changes like this, its good for me to keep in mind so that new stuff plays well.
Any links you can share related to this discussion?
I am likely very little help, Ryan, as I'm a) not a developer and b) not entirely sure what partytime is supposed to do. But if there are links or other info I can provide that would help, I'm here to help. My call with Mitch last week was to discuss making Podverse work better with podcasts that have <itunes:type>serial</itunes:type>
in their <channel>
section, with a follow on to say "hey, don't forget that there are a bunch of <podcast>
tags coming that will mirror (or be better than) the current Apple tags."
But if you need samples of RSS feeds with said tagging, I've several hundred in a spreadsheet.
not entirely sure what partytime is supposed to do
Partytime is the RSS parser Podverse uses. So any initiatives to fully "clone" the itunes
namespace under the podcast
one, would require changes to it. Its a project maintained by myself, but originally "forked" from the podcast-index parser.
I hadn't seen any discussion around cloning/duplicating the whole itunes
namespace, so if you have any additional documentation or links to where this is going on, I'd appreciate it. I want to ensure partytime is kept up-to-date as much as possible.
I hadn't seen any discussion around cloning/duplicating the whole
itunes
namespace, so
I'm not sure how many of those conversations happened here on GitHub, Ryan. Or how many of them are "official," but if I see any that warrant linking, I'm on it!
@RyanHirsch I just sent @evoterra an email asking if he could share the spreadsheet of fiction RSS feeds, so I should be able to provide you with examples.
In the meantime, here is an RSS feed I found that uses the <itunes:season>
and <itunes:episode>
tag, however I don't see a <itunes:type>serial</itunes:type>
tag in it.
https://feeds.acast.com/public/shows/edd6bde5-221e-4c07-bde8-2a0241ccc6e0
@RyanHirsch I just sent @evoterra an email asking if he could share the spreadsheet of fiction RSS feeds, so I should be able to provide you with examples.
In the meantime, here is an RSS feed I found that uses the
<itunes:season>
and<itunes:episode>
tag, however I don't see a<itunes:type>serial</itunes:type>
tag in it.https://feeds.acast.com/public/shows/edd6bde5-221e-4c07-bde8-2a0241ccc6e0
👍 ill take a look later tonight
👍 ill take a look later tonight
So I see that partytime is correctly grabbing itunesSeason
and itunesEpisode
for each one of these items and that if the feed does have the itunes:type
tag, I have the expected code to grab it and populate itunesType
on the parsed feed. I have passing tests to detect episodic and serial as well.
it("extracts node value (episodic)", () => {
const xml = helpers.spliceFeed(
feed,
`
<itunes:type>episodic</itunes:type>
`
);
const result = parseFeed(xml);
expect(result).toHaveProperty("itunesType", ItunesFeedType.Episodic);
});
it("extracts node value (serial)", () => {
const xml = helpers.spliceFeed(
feed,
`
<itunes:type>Serial</itunes:type>
`
);
const result = parseFeed(xml);
expect(result).toHaveProperty("itunesType", ItunesFeedType.Serial);
});
Right now things look good on my side. It seems like these feed either need to properly set serial
or podverse should infer it based on some rules.
A list of several hundred fiction podcast RSS feeds for you, @RyanHirsch and @mitchdowney.
https://docs.google.com/spreadsheets/d/1dwDwNSGvVhEWTjspIT-CxycD3D3h0rMOlSyUqEnw04A/edit?usp=sharing
I'm not promising all of these have the >serial<
tag properly set up, or have any of the season>
or episode>
or even episodeType>
fields property declared. In fact, many will not. So you'll get plenty of passes and fails.
I'm not promising all of these have the
>serial<
tag properly set up, or have any of theseason>
orepisode>
or evenepisodeType>
fields property declared. In fact, many will not. So you'll get plenty of passes and fails.
No problem! This is a great starting point to validate when things are "correct" in the feed partytime is doing the right thing, and if the feed isn't in the ideal state, it make give hints for how podverse can infer/guess that it could be serial.
@evoterra @RyanHirsch so I'm looking at Serial's RSS feed, which I thought might be a textbook example of how a "serial" feed should implemented...but the<itunes:type>
value is episodic
instead of serial
.
Could this be an example of a situation where, despite the feed not properly declaring itself as of the serial
type, perhaps we should handle the feed as if it were serial
anyway? If yes...then @RyanHirsch I'm wondering if this is something we could pass an option to podcast-partytime, so that it does some duck-typing to return serial
(or a 3rd type option) even if the feed specifies episodic
or does not specify an <itunes:type>
. What do you think?
Serial's RSS feed, which I thought might be a textbook example of how a "serial" feed should implemented...but
Yeah, that way lies madness! Serial podcasts existed long before the Serial podcast, like all the way back in 2005, when I started Podiobooks•com. And well before Apple gifted us the <iTunes:type>
tag. And Serial came out a good three years before the tag was implemented, and, like most podcasters, the Serial team never bothered to update their feed with the new info.
Personally, I don't think you should spend a lot of time on the exceptions here. With the exception of Spotify for Podcasters (was: Anchor), every podcast hosting platform allows for the feed type to be flipped from episodic
to serial
. But that's up to you, Mitch.
@evoterra thanks for the background. My hunch so far is it seems like any podcast that is using seasons AND episode numbers could be treated as "serial" podcasts, as far as our UX is concerned.
any podcast that is using seasons AND episode numbers could be treated as "serial" podcasts...
Maybe. Though I know shows exist (my old one, as an example) that are episodic but still group episodes into seasons with sequential numbering. Shows that take a break over the summer, or just put out a series of like 12 episodes each year.
Happy to share some RSS feeds of non-serialized shows that use S and E if you need it.
@evoterra ok...and sorry you probably already explained this already, but if I'm understanding correctly:
1) If a podcast has seasons + episode for its items, then group them in the UI in a hierarchy by season.
2) If a podcast has serial
declared, then the default setting of the sorting for that podcast in our UI should be chronological order, instead of reverse chronological order.
3) For a combination of 1) and 2) do both.
If that's the case, then @RyanHirsch we won't need special duck-typing from podcast-partytime.
@evoterra thanks for clarifying
And oof...this keeps getting more complicated...now I'm noticing that the Serial RSS feed has <itunes:season>
set on items, but it doesn't have <itunes:episode>
to tell us the episode number for each season...even though the titles contain an episode number :[
Maybe I just won't use <itunes:episode>
in v1 of this feature, and will group episodes together by season either in serial (chrono) or non-serial (reverse-chrono) order, but not try to do additional sorting by <itunes:episode>
. I think that should be fine for most cases, and if edge cases are discovered where episodes are out of order within the RSS feed for a season, I'll cross that road when we get to it.
I think, @mitchdowney, that if you try to make a single show from 2014 that published episodes before any of these tags existed look perfect, you're gonna have a bad time. Ignore the show managed by someone at the NYT is my advice. Or treat it as an exception.
There are many, many serialized shows that have spent a great idea of time re-tooling their feeds with season and episode numbers to give a much, much better listener experience than can be provided by chronological or reverse-chronological order. It's your app, and you can make the final decision, but I'd hate to see it go down a weird path instead of rewarding creators (and delighting listeners) for doing all the right things.
Group by season. Sort by episode number. That's the best path forward for listeners.
@evoterra an initial mobile app implementation of this is now available in the 4.14.0 Beta release for iOS and Android (Join Beta).
However...I've already seen an example where this implementation is breaking the display of content that previously displayed correctly 😣
Correct:
Incorrect:
After investigating, it appears the 2nd podcast isusing the <itunes:season>
tag incorrectly, in multiple different ways, that will be impossible for us to rectify in an automated way on our side. Here is the RSS feed: https://feeds.megaphone.fm/KHWTP7757216280
The issue is serious because I can't even find the most recent episode for this podcast due to the invalid use of tags. It appears much lower in the list than anyone would expect.
So this is a difficult problem to resolve...on one hand, it's the podcaster / RSS host's fault the feed is not following the <itunes:season>
and <itunes:episode>
tags correctly. On the other hand, Podverse listeners are not going to know this is a podcaster problem, not a Podverse problem. (For example, we receive bad reviews because we have "too many ads" when we literally have a policy against adding any advertisements of our own.)
That said, I don't want to scrap the Seasons feature entirely. The only workaround I can think of is to manually flag podcasts in our database with invalid Seasons usage, and disable the Seasons feature for those podcasts. As for whether this manual process of flagging will be feasible for us though will depend on how widespread invalid season/episode tag usage is.
Anyway, I expect 4.14.0 to be in prod within the next few days, and I'm going to focus on adding the flagging and website implementation tonight.
So color me confused, @mitchdowney, but Kyrin's show, Value 4 Value, isn't serial
, so I'm not sure why that one is used as a "good" example.
Neither is Who Are These Podcasts?, which furthers my confusion.
Perhaps the most straightforward implementation would be to display 'serial' content differently than 'episodic' (or undefined) content. Then, once that relevant subset of shows designed to be listened to by season and episode order has been optimized, you could decide what, if anything, to do about episodic shows that use season and episodes.
(Quick hot take on that last bit: It's a combined fault between the creator and their hosting platforms to cock up the numbering of either seasons or episodes. Not sure I'd spend lot of time figuring out how to fix their screw-up when the best answer is to fix the feed.)
Edit: Just drawing attention back to the title of this issue: Update the Podcast screen UX for podcasts with the "serial" RSS tag
Emphasis added.
Kyrin's show, Value 4 Value, isn't serial, so I'm not sure why that one is used as a "good" example.
Ok, it seems I misunderstood. When I outlined in this comment here, I tried to say in 1) that we would be implementing a seasons feature even for shows that don't have the serial tag. I intended for 3) to mean shows that have both seasons and serial implemented.
In any case, if the <itunes:feedType>serial</itunes:feedType>
is a reliable indicator that a feed intends to be rendered in Seasons, and isn't just incidentally using season + episode due to a misinterpretation of what the tag is for. I'll give the season + serial requirement a try, and hopefully we'll see better results.
(Quick hot take on that last bit: It's a combined fault between the creator and their hosting platforms to cock up the numbering of either seasons or episodes. Not sure I'd spend lot of time figuring out how to fix their screw-up when the best answer is to fix the feed.)
Yes, in this case it is the fault of the podcaster and/or RSS host company for allowing invalid feeds, but our listeners by and large do not understand that. If Podverse looks broken, people blame Podverse. We have numerous 1-star reviews for "too many ads" in Podverse, even though we have a policy against ever adding our own advertisements to Podverse or podcast content. We have to keep our listeners' perspective in mind when implementing new features. Unfortunately we have to weigh these concerns.
if the
<itunes:feedType>serial</itunes:feedType>
is a reliable indicator that a feed intends to be rendered in Seasons...
The <itunes:feedType>serial</itunes:feedType>
is a reliable indicator that the feed intends to be rendered as serialized content, starting with the first episode rather than the most recent. Additionally, if there are seasons (there need not be), then group said episodes, starting each season with the first episode of said season.
If Podverse looks broken, people blame Podverse.
Understood. Which is why I strongly suggest not trying to "fix" this across all possible podcasts and instead focus on those with <itunes:feedType>serial</itunes:feedType>
.
@evoterra provided a list of feature improvements for listening to podcasts that have the
serial
RSS tag. Most podcasts with theserial
tag fit the fiction, True Crime, or storytelling genres, and our default sorting of reverse chronological order is not the type of sorting and grouping that mostserial
podcast listeners would want by default.I'm copy and pasting his recommendations here, and will try to keep all the work for this in one ticket.
<channel>
it should signal to apps to display the episodes differently than episodic shows.<itunes:season>
numbers and allow for navigation between seasons<itunes:episode number>
tag in ascending order<itunes:type>trailer
) episodes at the top of the feed/show listing/season listing<itunes:type>bonus
) episodes to the bottom of the feed/show/season listing<itunes:title>
exists, use that, as it's less likely to have season/episode descriptors in the title, though certainly not always) Those are the biggies. And please also scan for the new<podcast>
namespace tags that replicate this. I use Apple's tags because they're more universal.Nice to haves for fiction podcasters (and others):
<link>
tags are used with the<item>
, display "get more info on this episode" or something like that<img>
tag found in<item>
snote from umbrafen in our Matrix space: