Skip to main content

RSSPod-dl

Python-based CLI tool for downloading and managing podcast episodes from RSS feeds.

Install Package

pip install RSSPod-dl

Description

This program is a multi-threaded podcast downloader. It can download a single podcast or multiple podcasts from a list. The metadata of the original podcast episodes is maintained in the downloaded MP3 files.


Usage

To run the program, use the following command:

rsspod <command> [<args>]

Where:

  • <command> is either download for a single podcast or download_all for multiple podcasts
  • <args> are the arguments for the command. For download, provide the URL of the podcast. For download_all, provide the path to the file containing the list of podcasts.

for more information and features, use the --help flag with the command shell rsspod --help

Download a Single Podcast

To download a single podcast, use the download command and provide the URL of the podcast:

rsspod download https://example.com/podcast.rss

Download Multiple Podcasts

To download multiple podcasts, use the download_all command and provide the path to the file containing the list of podcasts:

rsspod download_all /path/to/podcast_list.txt

if no file is provided, the program will look for a file named podcast_list.txt in the current directory.

All podcasts in the file will be downloaded

Adding Podcasts to the List

The file should contain the name of the podcast followed by a colon and then the URL of the podcast. Lines starting with # are treated as comments and those podcasts will not be downloaded. Here's an example of the file structure:

Podcast Name:Podcast RSS Feed URL

Here's an example:

Lost Terminal:https://www.spreaker.com/show/4488937/episodes/feed

In this example, "Lost Terminal" is the name of the podcast and "https://www.spreaker.com/show/4488937/episodes/feed" is the RSS feed URL of the podcast.

If you want to add a comment or note to yourself in the file, start the line with a #. The program will ignore these lines when downloading podcasts. For example:

# This is my favorite podcast
Modem Prometheus:https://www.spreaker.com/show/5184621/episodes/feed

Or you can use it to disable a podcast from being downloaded. For example:

# This is my favorite podcast
Lost Terminal:https://www.spreaker.com/show/4488937/episodes/feed

# Modem Prometheus:https://www.spreaker.com/show/5184621/episodes/feed

Once you have prepared your list, save the file. When running the download_all command, provide the path to this file:

rsspod download_all /path/to/podcast_list.txt

If no file is provided, the program will look for a file named podcast_list.txt in the current directory.

#Lost Terminal:https://www.spreaker.com/show/4488937/episodes/feed
Modem Prometheus:https://www.spreaker.com/show/5184621/episodes/feed

In this example, the "Lost Terminal" podcast will not be downloaded because its line starts with #. Each non-comment line represents a separate podcast with its corresponding RSS feed URL. The program will download all episodes from each provided podcast URL.

Credits to Tris for the best SCI-FI podcast out there Lost Terminal.


Dependencies

This program uses the following Python packages:

  • requests: Used for making HTTP requests to download the podcast episodes.
  • bs4 (BeautifulSoup): Used for parsing the XML of the RSS feeds.
  • eyed3: Used for handling ID3 tags in the downloaded MP3 files.
  • os and argparse: Used for file operations and command line argument parsing, respectively.
  • alive_progress: Used for displaying a progress bar while the podcasts are being downloaded.
  • io: Used for handling byte streams.
  • time: Used for time-related tasks.
  • socket: Used for low-level networking interface.
  • re: Used for regular expression operations.

You can install these packages using pip:

pip install requests bs4 eyed3 alive_progress

Note: os, argparse, io, time, socket, and re are part of the Python standard library, so you don't need to install them separately.


Build Yourself (Optional)

If you want to build this project yourself, follow these steps

  1. clone the repository
git clone https://github.com/yourusername/RSSPod_dl.git
  1. Install the package
cd RSSPod_dl
pip install .

License

This program is released under the MIT License. See the LICENSE file for more details.


About

This project was born out of a personal need. As a podcast listener, I wanted a simple way to download my favorite podcasts from various sources and sync them to my iPod. This tool allows me to do just that - it downloads multiple podcasts and organizes them in a single directory, making it easy to transfer and listen to them on my device.

This is one of my first projects and I'm still learning, so feel free to correct me or suggest improvements, raise issues or contribute to the project!

Metadata

Release files for RSSPod-dl 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for RSSPod-dl 1.0.2
File Size Uploaded Provenance
RSSPod-dl-1.0.2.tar.gz 6.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for RSSPod-dl 1.0.2
File Interpreter ABI Platform
RSSPod_dl-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 14.1 kB

Release files / RSSPod-dl-1.0.2.tar.gz

Download URL RSSPod-dl-1.0.2.tar.gz
Size 6.9 kB
Tags Source
SHA-256 checksum
How to use checksums
5fd59255fc7ce3bf4a032986506b6d745ab376b5111876b4b74e0fc9bcbc606f
BLAKE2b-256 checksum
How to use checksums
5696b3a5fd535b39a6a352ce9d2d2f4cf6fec1563156b16bd7194463501ce041
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.7

Release files / RSSPod_dl-1.0.2-py3-none-any.whl

Download URL RSSPod_dl-1.0.2-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
95953116cf19bfb7bdcf5203dabacb2bb0cf41803ec64dfa8c2e9a291dc2fea9
BLAKE2b-256 checksum
How to use checksums
4f942e183b9966936a0a56d9a52dd838b3d6f1fb5f84931f536499fbbcc1c55a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.7

Security for RSSPod-dl 1.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page