Podstar is a Python library for working with podcasts. It optimizes for robustness, efficiency, and standards support while providing a clean and simple API. Podstar has some neat features:
- robust parsing of RSS-based podcast feeds
- transparent use of paginated feeds (via RSS pagination)
- support for HTTP caching headers (
ETagorLast-Modified), enabling long-running aggregator processes to request as little data as possible - easy access to audio information, including:
- duration (as determined by iTunes DTD metadata when available, or by streaming audio files to memory until necessary metadata is available)
- bitrate
- sample rate
Ensure that you've got Python >= 3.3 installed, and a new Python virtual environment activated. Install the library using:
$ pip install podstarYou're done!
The following code iterates over a podcast feed, listing each episode and its duration:
import time
import podstar
feed = podstar.Feed('http://feeds.sceneonradio.org/SceneOnRadio')
# print some information about the podcast, including a text description (HTML in the description will be removed automatically)
print(feed.title)
print(feed.description + "\n")
# list each episode with its title, date published, and duration
for episode in feed.episodes():
pub_date = episode.published_at.strftime("%a %b %d, %Y")
duration = time.strftime("%H:%M:%S", time.gmtime(episode.duration))
print(f"– \"{episode.title}\" ({pub_date}) [{duration}]")For further examples of how to use Podstar, see the examples/ directory.
Getting started with development on Podstar is relatively straightforward.
Ensure that you have Python >= 3.3 installed, clone the repository, and cd to it
$ git clone <repo url>
$ cd podstar/Use pip to install the dependencies specified in requirements.txt (if you haven't already) as well as the development dependencies specified in dev_requirements.txt
$ pip install -r requirements.txt
$ pip install -r dev_requirements.txtTo run all tests, execute
$ python -m pytest testsTo check test coverage, execute:
python -m pytest --cov=podstar --cov-report term-missing -s testsexamples/download.py – The original sketch used when designing the API for this library. Run it from the project's root directory by executing:
$ python -m examples.sketchexamples/crawl.py – Parses a good number of feeds in parallel using digitalpodcast.com as a convenient redirect. From the project's root directory, try it (on a decent internet connection) by executing:
$ python -m examples.crawl