- cross-posted to:
- python@programming.dev
- cool_github_projects@programming.dev
- cross-posted to:
- python@programming.dev
- cool_github_projects@programming.dev
Hey all,
I’ve spent the majority of the last year hammering away at Pinepods. It’s a Rust based podcast management system that manages podcasts with multi-user support and relies on a central database with clients to connect to it. It’s complete with a browser based client and your podcasts and settings follow you from device to device due to everything being stored on the server. AntennaPod is great and all but sometimes I want to listen to podcasts from my laptop. Here’s a great solution to that problem. There’s also a client edition that you can download and install.
Search both The Podcast Index or Itunes to browse through shows and episodes, Import or export opmls of your podcasts, utilize the standard of podcasting 2.0. It’s all fully dockerized and you can have an instance of your own up and running in 5 mins!
If you’re on the fence you can try it out without installing the server too! Check the website for more info!
There’s a lot more to come down the pipeline as well, such as a lightweight client to stream episodes to and alternative database support. Now is the perfect time to check it out and enjoy continued feature updates! Feel free to open issues or PRs if you experience any problems. Or drop a line on the discord. I’m happy to help!
Official website:
Github:
https://github.com/madeofpendletonwool/PinePods
Discord:
I realize you may already be locked-in on the name, but you should probably be aware that Pine64 have an upcoming pair of ear buds called PinePods as well. So not just another project with the same name, but another FOSS-community project, to boot.
This seems like an awesome project though. As a fellow Rustacean, it excites me to see.
Ugh… It is unfortunate isn’t it… Here’s the history of the name.
I started development on Pinepods back when I was learning about python’s fastapi. It originally was built in pure python. And as you can probably imagine the UI was dog slow because python isn’t exactly fast. At that point it was called Pypods. Because python. I wanted to then change the name away from being a reference to a programming language. Only the nerdiest people would get that, plus I wanted it to have it’s own identity instead of being tied to a language. So I went with Pinepods, which itself is a reference to the pine snake (kept the snake thing despite moving away from python) and at that point I started adopting the forest theme. Which is why if you visit try.pinepods.online you’ll see rotating images of pine forests.
At this point, it’s been over a year and I’ve invested somewhat in the tree/forest idea. I would struggle to move away from it because I love the forest undertones.
Changing the name is feasible. And might be a good idea. It kinda stinks I’d need to change the domains along with it but I suppose it is what is there. The challenge that I struggle with is coming up with something that keeps the forest theming. I really like that aspect of it.
Isn’t the Pine64 product called the PineBuds? The case is nicked the Pinepod, but that’s not really the same.
What I am missing is something where I can sync what podcast I am playing and the minute and second where in the podcast I am.
This way I could switch seamlessly between devices.
Does it have functionality like that?
Yes absolutely. If you’re using Pinepods between the two devices your listen time is synced to the server. Meaning swapping between devices syncs your exact listen time. In addition to that I almost have time sync implemented for nextcloud sync as well. Meaning swapping between antennapod and pinepods your listen time will sync also.
That makes it very interesting, hm I just don’t have Nextcloud.
You can use it without nextcloud. That’s entirely optional and exists only if you want to sync between antennapod and pinepods. If you’re only using Pinepods you don’t need that at all and syncing time between devices works totally fine.
Yeah I get it, thanks. I just already use Antennapod and like it a lot. I will check Pinepods out, perhaps it’s already good enough that I would be OK giving up Antennapod, if not then installing Nextcloud to get this sync functionality between devices.
Kasts on desktop and Antennapod on Android, each using Gpoddersync to Nextcloud gives me this functionality.
Does gpodder sync playtime too? I never could figure out how and then their webside was broken for so long so I gave up on it.
It depends in the app. Gpodder has the capability to sync playtime but some apps don’t sync that part. And gpodder itself is a dead project. But a nextcloud gpodder is a nextcloud app that replicates the same functionality to your local nextcloud server since gpodder is in maintenance mode.
I’ve been using the PocketCasts app for android which has this feature. It’s not self-hosted, though.
Yeah relying on someone else’s computer is not optimal. And also when it’s a proprietary protocol you can only use one client on all devices.
Looks cool. Why discord and not matrix?
Entirely due to me trying to make getting help as accessible as possible. If there’s demand for a matrix server I’d be happy to start one up.
+1 for matrix
You could look at setting up a discord bridge on the matrix server to bridge messages between the two. Pine64 have had something like that for quite a while on their discord & matrix.
Also echoing what’s been said already, I did initially think this was some air pods style product from Pine64, as they prefix almost anything they make with Pine
I understand your reasoning. And I understand it for old projects, matrix wasn’t an option 5 or 10 years ago. Almost all modern public projects are on matrix nowadays. Someone said it already, there are also bridges and matrix doesn’t excludr anyone.
Honestly you guys have easily convinced me. I’d much prefer matrix personally anyway. I’ll get a matrix server up and running this weekend!
Cool! You don’t need a server specifically for that, a room is enough. Just create an account on a reliable server and create the room. Most big rooms are on matrix.org in my experience, unless it’s some of the big projects from mozilla, gnome or kde but even openstreetmap are on matrix.org
Matrix room is a go! I’ve got a badge created on the repo Readme to join so hopefully anyone interested in matrix will see that and join over discord. I’ll get a link added to the documentation site as well. Thanks for the tips!
That’s cool
This looks amazing, that you for this.
Suggestions:
Use the https://authjs.dev/ library to implement SSO for user management. This will automatically give the ability to use any login protocol any user could ever want.
I have numerous self hosted apps with multiple users, running them all through authentik is very important for users that are doing something similar.
Every homelabber will have a slightly different setup but the above library will essentially just support everything right away.
You will never need to worry about users requesting whatever protocol they are using because if you check the list of providers it’s basically everything.
Fantastic suggestion! I’ll add it to the short term roadmap. Alternative auth options like github among others was already on the roadmap but if I can just kill all the birds with one stone that’s great! Thank you for this.
Looks and sounds very promising! I’ve been looking for a self-hosted podcast server that I can use to sync podcasts and progress between multiple devices. Nextcloud Gpodder sync is already great, but there does not seem to be any iOS app that supports it. So I’m really looking forward to seeing more of your project!
The web version already works great. So that would work of course on an ios device. Otherwise, keep an eye out as an ios client proper is in the works. It uses tauri for building the clients and tauri has a release coming to add support for ios and Android apps.
Good to see this works with antennapod, just need to get a gpodder thing setup in my unraid server and give this a go. Been using antennapod on my phone for the last several years but didn’t do backups and exports often enough and when my Samsung dropped and died I lost 8 months of data. This would make it a lot easier to also be able to stream on my desktop during work. Will be giving it a go here soon!
All the reasons you gave are all the reasons I took on this project for sure. Thanks for giving it a go! Let me know if you have any troubles with the setup.
Hey! Finally gave it a go this morning but ran into some headaches pointing to existing dockerized mysql and postgres containers on unraid. I reached out in discord this afternoon but setting up auth according to the docker-compose on the site and github I get lots of errors about missing tables or properties during the database initialization.
Hi there, I sent you a reply over on the discord post. Let’s continue the conversation there. Should be an easy enough fix. Thanks!
Sounds great. Pocketcasts but self-hosted. Now only if a software could strip podcasts from ads. 😉
I was thinking about that recently. Seems like it could be a decent use case for an Ai or something. A model that searches for consistent keywords or something. It’s on my feasibility map to take a look at.
Or just go the route of sposerblock and keep a database of user submitted timestamps for auto skipping
I sure am glad I posted about this here. Lemmy users are full of seriously good ideas. Can’t believe I didn’t think of that. That’s a really good idea. Straight to the roadmap!
I’m spinning up a docker container of this right now. I already host next cloud and if you add the sponsorship skipping I will lose my damn mind. I’ve wanted that feature for so so long it’ll be enormously useful.
Nice! What isn’t already implemented is on the roadmap! Jump on the discord or open an issue if you have any troubles with the setup!
“It’s a Rust based…” You son of a bitch, I’m in.
I mentioned that first for a reason 😁 I figured it’d be a selling point.
Looks great! I wonder if this could be used to create some kind of podcast-based sponsorblock equivalent? I know there are issues with podcast- (providers) inserting sponsor reads and ads at random / unknown times, so, not sure how it could be done reliably.
I was thinking about that recently. Seems like it could be a decent use case for an Ai or something. A model that searches for consistent keywords or something. It’s on my feasibility map to take a look at. That does drive me absolutely crazy when it breaks to ads seemingly mid sentence.
This looks amazing. I’m gonna wait for pgsql support, but you had me here: “Otherwise, if you sync using Nextcloud you can use the AntennaPods app and your podcasts will sync between Antennapod and Pinepods.”
Pgsql support is coming very soon. Keep an eye out for version 0.6. It’ll be in there. There’s a branch created where I’m already working on it!
Sorry could you do a comparison to Audiobookshelf? It also has very reputable self hosting podcasting catching features
Pinepods also supports podcast 2.0 podcast specifications and wiol be implenting more of it such as chapter support and timestamp support very soon. I don’t think Audiobookshelf does? Though I’m happy to be wrong about that as I don’t use Audiobookshelf for podcasts.
Audiobookshelf (which is a great project that I use personally for audio books) is focused very heavily on audio books. With features like libraries and all that. I don’t feel like it has every feature I’d want for managing podcasts. Especially when it comes to searching and syncing feeds to things like antennapod. This project focuses on being the best podcast managment server it can be. It makes browsing podcasts, feeds, and episodes a breeze. Adding podcast feeds is a search away and that’s all integrated right into the app. This app is also built in rust rather than javascript. Which some people really like.
Audiobookshelf is a phenomenonal piece of open source software and if it does everything you need it to I think that’s a great solution! If not, this software might be a good fit.
Appreciate it! I’ll have to give it a check!
Don’t you have to download episodes to your server first in ABS? That makes it useless for me as a podcast app.
Oh yeah, I didn’t realize that. That’s a bummer. Pinepods can stream episodes whether you have the podcast added or not. You can search a podcast, open the feed and play the episodes without even adding the feed if you want. I tried to make that as robust as possible.
This has huge potential. What I personally look for in a podcast solution is:
- Web/desktop player
- Sync between players (down to seconds)
- Organize subscribed podcasts with folders/tags
- Per podcast/folder/tag settings for “automatically add to queue”
- Some way of dealing with older (backlog) episodes (built-in or via an API)
For now, I’m using Pocketcasts which pretty much does what I need, except for handling the backlog, which I do with a homemade python-script that adds backlog episodes to my playlist whenever it has less than 4 hours of playtime left, using Pocketcast’s web player REST API. The result is an endless playlist where newly released episodes are played within a few hours and older episodes are sprinkled on with no real need for micro-managing episodes in the playlist.
It looks like web/desktop players and sync is already in scope, but are there any “advanced” podcast organization features on your roadmap?
Extremely good call on the tagging. I love that. I’ve implementing saving for some basic essentially bookmarking of episodes so far but taking that one further and allowing the user to define custom save tags that they can associate without episodes and quickly access is a fantastic idea.
I’ll have to give your backlog queuing idea some thought. I think there’s absolutely room for that feature. There’s also a lot to considering with implementing it in the most effective way possible. I wondering about maybe taking a look at what podcasts you listen to the most, checking which episodes from those you haven’t listened to, and then aggregating them into a cohesive backlog. These kinds of computational tasks like refreshing for example already happen on the backend so adding more things like that doesn’t affect the user experience at all.
deleted by creator