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 eitherdownload
for a single podcast ordownload_all
for multiple podcasts<args>
are the arguments for the command. Fordownload
, provide the URL of the podcast. Fordownload_all
, provide the path to the file containing the list of podcasts.
for more information and features, use the
--help
flag with the commandshell 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
andargparse
: 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
- clone the repository
git clone https://github.com/yourusername/RSSPod_dl.git
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5fd59255fc7ce3bf4a032986506b6d745ab376b5111876b4b74e0fc9bcbc606f |
|
MD5 | bcff531d6d3ba137afbb3fbeb72c682a |
|
BLAKE2b-256 | 5696b3a5fd535b39a6a352ce9d2d2f4cf6fec1563156b16bd7194463501ce041 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95953116cf19bfb7bdcf5203dabacb2bb0cf41803ec64dfa8c2e9a291dc2fea9 |
|
MD5 | 895d55d914a2afa9d1df5d6360b7f0c5 |
|
BLAKE2b-256 | 4f942e183b9966936a0a56d9a52dd838b3d6f1fb5f84931f536499fbbcc1c55a |