mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2026-03-02 22:57:11 -05:00
Podcasting 2.0 RSS support #3248
Labels
No labels
Component: Accessibility
Component: Administration
Component: Auth
Component: CLI
Component: Channels
Component: Chapters
Component: Comments
Component: Custom Markdown
Component: Docker 🐳
Component: Documentation 📚
Component: Email
Component: Embed
Component: Federation 🎡
Component: Import/Export
Component: Live
Component: Metadata
Component: Mobile
Component: Moderation :godmode:
Component: Notifications
Component: Object storage
Component: Observability
Component: PeerTube Plugin 📦
Component: Player ⏯️
Component: Playlist
Component: Recommendation
Component: Redundancy
Component: Registration
Component: Runners
Component: SEO
Component: Search
Component: Security
Component: Stats
Component: Studio
Component: Studio
Component: Subscriptions
Component: Subtitles 💬
Component: Transcoding
Component: Upload
Component: Video Import
Component: i18n 🔡
Priority: High
Priority: Low
Priority: Roadmap
Status: Blocked ✋
Status: In Progress 🔜
Status: To Reproduce
Status: Waiting for answer
Template not filled
Type: Bug 🐛
Type: Discussion 💭
Type: Discussion 💭
Type: Duplicate ➿
Type: Feature Request ✨
Type: Maintenance 👷♀️
Type: Performance
Type: Question
UI
good first issue
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/PeerTube#3248
Loading…
Add table
Add a link
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?
Originally created by @agates on GitHub (Feb 21, 2021).
Hello,
I am interested in adding RSS support for The "podcast" Namespace and possibly optional integration with the Podcast Index.
One of the goals of the project is to eventually add support for multiple "enclosures", via
podcast:alternateEnclosureor with mypodcast:mediaproposal (which was heavily influenced by Media RSS from PeerTube), in addition to all sorts of other things to help content creators, application developers, and hosts. You can find out more on the Podcasting 2.0 podcast.I think it's a great fit for PeerTube specifically as a decentralized video ecosystem.
With that said:
podcast:valuesupport at first, but I'm sure this would expand)@agates commented on GitHub (Feb 21, 2021):
Also, I think this a better solution for #2922 primarily because of the enclosure plans.
@rigelk commented on GitHub (Feb 21, 2021):
Could you elaborate?
@agates commented on GitHub (Feb 21, 2021):
The Podcast Namespace project is addressing the issues and lack of necessary features in standard, stagnated RSS with an official, community-supported XML namespace.
This includes, but is not limited to, a proposal to support multiple media formats and transport types. Development here, regardless of the route taken, would be great for feedback particularly as a video platform with optional audio and multiple transport types.
In addition, some of the other proposals could provide a framework to work on other additional features. One example is the
podcast:valuetag (still in flux) which provides a way for a client to stream bitcoin to the host/content creator via the lightning network.I envision allowing PeerTube as a way for people to easily host their own video/audio "podcasts," but that's merely a vision in my head and I understand it's not the goal of the PeerTube project.
@rosano commented on GitHub (Sep 23, 2021):
Would be great to subscribe to any channel in a podcast player. Is there a way to accomplish this through plugins? If so, are there any plugins that one could use as a reference?
@agates commented on GitHub (Sep 23, 2021):
I have a fork that does this, but it's woefully out of date as I'm working on other items. You are free to use my fork.
I am interested in submitting a pull request with the new features at some point.
@agates commented on GitHub (Feb 6, 2022):
FYI I am tracking this here.
Working on it and would like to discuss options for upstreaming soon. Contributions welcome!
https://github.com/users/agates/projects/1/views/7
@Chocobozzz commented on GitHub (Feb 7, 2022):
Hello,
Please use this fork to implement your podcast changes. I updated rigelk's fork to sync with upstream (that uses Typescript now)
@ctlw83 commented on GitHub (Jun 1, 2022):
I second this request. Implementing the Podcast Namespace allows for all sorts of features and for discoverability through supporting podcast apps.
@agates commented on GitHub (Jun 2, 2022):
Working on it, getting back into the swing of things!
@agates commented on GitHub (Aug 25, 2022):
Before continuing further development on this, there are a few architectural decisions that need to be made regarding plugins. In order to outline the need for these decisions, I'll outline a few features that exist within the Podcasting 2.0 (abbreviated PC20) realm but may or may not be desirable in upstream PeerTube as a project.
1. XMPP Chat Support
On the roadmap for supporting live chat within PC20 is using standardize federation protocols. Initial plans for this are via XMPP as it is lightweight enough for many clients to implement, very scalable, moderation-friendly, and federated by design meaning an application only has to have the user sign in once.
Given that there is already a plugin for this by the wonderful @JohnXLivingston, all we will need for PC20 is to include some of the plugin metadata within the RSS feeds.
2. Podping Support
One of the other projects I work on is Podping (see Podcasting 2.0 – Evolution of Podping for example). This is a way to announce updates and live stream notifications within RSS feeds that support PC20. I already have
<podcast:liveItem>support in my PeerTube work, but adding Podping will be critical either via the podping-hivewriter project and/or optionally something like podping.cloud. It's possible to do it directly from JavaScript too, of course, though I think it makes more sense to supply with a companion docker container.In addition to live stream notifications, I also think using Podping + RSS is a phenomenal way to support content discovery given that the podcasting ecosystem already has a built in cultural mechanism if indexing and searching for content.
This notification/update system is already in use today by many podcast and video channels. However, I would understand perfectly if the PeerTube developers do not want to support it upstream due to its current dependency on the Hive blockchain and subsequent use of cryptocurrency. This is not the place for such a debate, I'm just trying to make my intentions for upstreaming clear.
3. Value 4 Value Support
Another feature is Value4Value (abbreviated V4V). Similarly to Podping support, this depends on cryptocurrency. The only current implementation is via Bitcoin on the lightning network, but the standard can support other currencies. (In fact, I'll probably add support for Monero once I get around to it)
The gist of this feature is the creator puts in one or more addresses where they can optionally receive payments. The instance administrators could opt to also include an address for as a sort of "hosting fee" (I currently do this on an instance I host). PeerTube developers could even build in a small % as a project donation.
Another way to think about V4V from a video-platform perspective is it's a decentralized alternative to bits from Twitch or super chats from YouTube.
Obviously the same disclaimer of controversy as the previous feature goes and I understand if PeerTube maintainers do not want it upstream. I'm not here to debate the merits of of the underlying technology.
4. Plugin Support
Given the above information, and likely due to upcoming features I'm still unaware of, there appears to be a need for plugins to hook into RSS feed generation. I need some guidance as to how to go about this, whether it's for only item 1 above or even 2 and 3.
I believe this plugin system would need ways to hook into every level of the RSS feed -- namely the channel and each individual item/liveItem -- and supply custom data structures to be rendered by the underlying RSS XML generator.
And just for reference, this is why I have yet to port my feed generator changes to the TypeScript version.
Conclusion
With all that said, I hope that underlines the need for RSS feed generation plugin support if only for XMPP support in RSS feeds. I would also like to know how I need to approach Podping and V4V support, be it focusing on upstream or holding off for plugin support.
If you're interested, for further information about why we're doing this check out It's not really about RSS and perhaps my appearance on Office Hours episode 7 where I talk about some of the PeerTube work I've been doing.
@aprilthepink commented on GitHub (Sep 17, 2022):
would be nice to get at least basic support for podcasts using a RSS feed to work first and then later these optional complex features could be added :)
(maybe there is some work on a plugin already done which could be linked here?)
@emansom commented on GitHub (Sep 17, 2022):
@agates Please address @Chocobozzz's comment of adding support within his fork of the feed library instead for higher changes of this feature being implemented.
If that's not a viable plan for implementation, please elaborate on why and describe a alternative plan to acknowledge with @Chocobozzz.
@agates commented on GitHub (Sep 17, 2022):
As I have discussed in detail, I can't do so until i know how to handle the need for plugin support.
@emansom commented on GitHub (Sep 17, 2022):
Please create a separate feature request elaborating on that.
@agates commented on GitHub (Sep 17, 2022):
Why? It is part of podcasting 2.0 support. This issue is related to podcasting 2.0 support.
I would know, as I created the issue and many of the standards being implemented.
@emansom commented on GitHub (Sep 17, 2022):
As you stated in your previous comment, if I understand correctly, you are blocked on lacking functionality within the plugin system.
@agates commented on GitHub (Sep 17, 2022):
Yes, however if it is determined that some of the features should be in upstream PeerTube, I can develop them immediately without plugin support.
This will also influence architecture of the code. Making this decision now will reduce the level of effort, of which I am not asking others to participate in developing prior to merging.
So with that said, even if plugin support is not finalized here, I need to know if i should develop podping and/or v4v support in the base project or plan to implement them as plugins.
Asking me, a volunteer in an open source project, to address a specific RSS library implementation does not answer this question.
@emansom commented on GitHub (Sep 17, 2022):
@Chocobozzz?
@vid-bin commented on GitHub (Sep 17, 2022):
@emansom I don't think he works weekends. I've never seen him post here or update the git on weekends.
@emansom commented on GitHub (Sep 17, 2022):
The comments will still be there during business hours. 😄
@Chocobozzz commented on GitHub (Sep 19, 2022):
Hi,
Plugins seem more appropriate for this use case. But I don't have a strong opinion on this
@agates commented on GitHub (Sep 19, 2022):
Okay, that works for me. I think plugins will be more maintainable anyway.
I will take a look at implementing hooks for plugins. If I can't figure it out, I'll at least be able document the requirements in a separate feature request.
@agates commented on GitHub (Dec 28, 2022):
PR #5487 implements this as well as adds hooks to be able to add functionality via plugins.
@agates commented on GitHub (May 4, 2023):
Awaiting feedback, cleaned up PR #5487 -- one developer is testing the hooks for their user case already.
@Chocobozzz commented on GitHub (May 22, 2023):
Implemented in https://github.com/Chocobozzz/PeerTube/pull/5487