Skip to main content

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

Project description

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!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

RSSPod-dl-1.0.2.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

RSSPod_dl-1.0.2-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file RSSPod-dl-1.0.2.tar.gz.

File metadata

  • Download URL: RSSPod-dl-1.0.2.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.7

File hashes

Hashes for RSSPod-dl-1.0.2.tar.gz
Algorithm Hash digest
SHA256 5fd59255fc7ce3bf4a032986506b6d745ab376b5111876b4b74e0fc9bcbc606f
MD5 bcff531d6d3ba137afbb3fbeb72c682a
BLAKE2b-256 5696b3a5fd535b39a6a352ce9d2d2f4cf6fec1563156b16bd7194463501ce041

See more details on using hashes here.

File details

Details for the file RSSPod_dl-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: RSSPod_dl-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.7

File hashes

Hashes for RSSPod_dl-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 95953116cf19bfb7bdcf5203dabacb2bb0cf41803ec64dfa8c2e9a291dc2fea9
MD5 895d55d914a2afa9d1df5d6360b7f0c5
BLAKE2b-256 4f942e183b9966936a0a56d9a52dd838b3d6f1fb5f84931f536499fbbcc1c55a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page