Click here to code!

Code Challenge 17 - Never Miss a Good Podcast - Review

Posted by PyBites on Sun 07 May 2017 in Challenges • 2 min read

It's end of the week again so we review the code challenge of this week: Never Miss a Good Podcast. It's never late to join, just fork us and start coding.


Wow, this challenge led to some great learning! We got 3 Pull Requests (PRs) which we just merged into our Community branch. Don't want to miss your favorite podcast anymore? Here are some solutions that get you started:

  • clamytoe built "Podcaster" providing a rich command line interface. Really nice documentation (lot of screenshots) in his README. It uses SQLAlchemy for the back-end and click for the CLI interface (good reminder we need to check this module out!). Another nice feature is that it lets you download episodes. Code is here.

  • cverna wrote a script that fetches the feed of (keep it Python!) - all nicely done in one script using sqlite3 and feedparser. Cron is done at the OS level (/etc/cron.weekly). Code is here.

  • jhervas wrote "Personal Podcast Assistant": a script that will manage a database with your favorite podcasts, notifying you by email when it finds new podcasts. It uses the schedule module for cron (schedule.every()"10:52").do(main) - nice). The script even tries to install the required packages. Code is here.

  • We used feedparser to parse a podcast feed which can be given with the --feed option. We also used SQLAlchemy to keep track of episodes and status (done = emailed out). We also print some stats at the bottom of each mail (e.g. "Podcast consumption stats: 0.9% done [1 of 111]"). We tried to make the code modular (package) and wrote some tests. Code is here

Best way to learn is to play around with these projects doing a git pull of the Community branch.

Again we really enjoyed these nice solutions and we are pumped to deliver more challenges so you can learn by building cool stuff.

Let us know if you have any issue and/or contact us if you want to submit a cool challenge. See you next week ...

Keep Calm and Code in Python!

-- Bob and Julian

See an error in this post? Please submit a pull request on Github.