Podcastindex-org / podcast-namespace

A wholistic rss namespace for podcasting
Creative Commons Zero v1.0 Universal
389 stars 116 forks source link

Proposal: Username and password credentials required namespace #296

Open mitchdowney opened 3 years ago

mitchdowney commented 3 years ago

The goal of this namespace is to indicate to a podcast app that the episodes for an RSS feed are username and password protected.

There is one known example of a feed in Podcast Index that could use this namespace. Aeon Byte Inner Sanctum of Gnosis is a public RSS feed that is available in Podcast Index, but the media content can only be played if you provide a valid username and password.

In order for apps to properly handle this situation, we need to know in advance that the media content of the RSS feed is password protected. A simple boolean that tells us "content is username and password protected" would work for this RSS feed, so I propose a tag that can be set at the podcast/channel level. If set at the podcast/channel level, then apps can prompt users for a username and password, and then pass those credentials with every request to stream or download its episodes.

One thing I am not sure how we should handle is, what if a feed contains credentialsRequired content, and non-credentialsRequired content? If we know what content in the same feed is password protected or not, we could render a "Premium content" indicator in the UI, so the user knows which episodes/items can be played without a username and password. Perhaps can be set at the podcast/channel level, and false</podcast:credentialsRequired> can be set at the episode level for each episode that does not need username and password?

This proposal might overlap with #239, so if it's redundant please feel free to close this issue. My understanding is that 239 goes much deeper than a simple "basic authentication required" boolean, but if 239 can accomplish the same thing, maybe it is best to wait until 239 is formalized and close this proposal.

keunes commented 3 years ago

AntennaPod already prompts for a username and password when necessary. So I'm wondering if it's actually necessary (?)

No idea how that works, though. Something with standard http authentication?

mitchdowney commented 3 years ago

@keunes you are right that we should also be able to receive a 401 Unauthorized response to handle this...however I have had trouble implementing this with the react-native-background-downloader and react-native-track-player we are using to download episodes and stream them...

While we should be able to handle a 401 Unauthorized error, I think it would be at least a slight UX improvement if we could know which episodes required a username and password before making the first request.