A tool for the automated generation of podcast feeds with a built-in upload functionality for new episodes
- Upload your freshly produced podcast episode via an interactive CLI
- Alternatively, use arguments when interacting with the CLI
- Automagically create a podcast feed via episode uploads and keep it updated with each new upload
- Supports
AWS S3,Google Cloud Storage,Digital Ocean Spaces, and every other provider that isAWS S3API-compatible - Automatically creates backups of the local episode database which is used for generating the feed
- Offers built-in protection against overwriting episodes that were already uploaded in the past
- Allows to use HTML markup in the description of an episode
I produce a podcast myself (shameless plug), so naturally I needed a tool to upload new episodes to my hosting provider. As I am not a big fan of Wordpress, I did not want to go down that route that is understandibly quite popular with podcast producers. Instead I wanted something for the command-line, could not find anything and created my own instead.
First, duplicate the config.template.json to a file with the name config.json.
Next, populate the config.json file with your information.
The hosting object:
accessKey: Look up the documentation of your hosting provider regarding AWS S3 API compatibility. InAWS S3, it is calledaws_access_key_id.secret: Look up the documentation of your hosting provider regarding AWS S3 API compatibility. InAWS S3, it is calledaws_secret_access_key.databasePath,episodePath,feedPath: Correspond to the paths in the bucket of the hosting provider as relative paths from thebucketNameroot.endpointUrl,regionName: Have to be looked up in the hosting providers documentation, this is necessary as per AWS S3 API. Consequently, if your provider does not offer these values, it probably is not AWS S3 API compliant.
The podcast object:
category: Follows the categories from Apple Podcasts (formerly iTunes Podcasts). A list can be found here.language: Has to be a language code out of this list.
The tool can be used in two modes, both on a command line:
interactiveargument-based
Before starting, create a new virtualenv with:
virtualenv -p python3.6 venvand install the requirements:
venv/bin/pip3 install -r requirements.txtThe interactive mode is just triggered by normally executing the program and following the prompts:
venv/bin/python3 pycaster/pycaster.pyThe argument-based accepts the following arguments:
venv/bin/python3 pycaster/pycaster.py \
--title='Episode #1' \
--description='Just a test' \
--duration='160:55' \
--file='./episode-1.mp3'