Inspiration
I've tried many different podcast players on the linux desktop, but all of them either:
- Are webapps, which I don't like because I prefer native apps.
- Don't keep track of where I stopped when I was listening to the podcast last.
- Don't fit with my desktop theme.
What it does
YAPP is a terminal-based podcast player made to solve these issues.
How I built it
YAPP is built in C++ and cmake, with mpv as a backend for audio and git as version control. It's built around parsing podcast XML files and downloading + playing the episodes within.
Challenges I ran into
I'm all alone, so keeping up with the time restraint was hard, especially in a language like C++. Stuff that might be simple in a language like python, such as writing a GUI or playing audio, ended up taking hours in C++. If I had someone else helping me create the GUI, there may have been one ready by the end of Technica! Unfortunately, right now, there's just a temporary text interface.
Also, Object Persistence was something I didn't even have a chance to touch, which means YAPP is really a one-and-done application.
Accomplishments that I'm proud of
Fitting the mpv backend into YAPP was TIGHT. Just barely worked, and heck, I still barely have any idea what I coded. Also, my backend work on parsing XML and getting episodes is really clean! Love that.
What I learned
Tip: Don't use a C++ for project with a time-constraint when you don't have any teammates.
I mean, I still had a lot of fun! I love coding in C++. But jeeeeeeze. At the very least, I should've aimed for something a bit smaller.
What's next for YAPP
First things first, get mpv to seek the spot I was last playing the podcast at. From there, get object persistence working. Finally, a proper GUI! And by proper, I mean using ncurses, but, you know. Better than "input a number."
Who I Am
I'm Skye Jonke (she/her). I've been working with computers for most of my life, but this is my first hackathon! I'm a freshman at UMD.
Built With
- c++
- cmake
- mpv
- rss
Log in or sign up for Devpost to join the conversation.