The Python module for downloading missing mp3 from given RSS feeds (mostly podcasts). It do not using database of any sort, but it require configuration file.
pip install podcast_downloader
Provide a configuration file. Place the .podcast_downloader_config.json
it your home directory (JSON format). It should contain an array of settings. Each setting per RSS channel.
python -m podcast_downloader
Using the example above, the result will be:
[2020-06-16 19:54:35] Loading configuration (from file: "~/.podcast_downloader_config.json")
[2020-06-16 19:54:35] Checking "The Skeptic Guide"
[2020-06-16 19:54:35] Last downloaded file "skepticast2020-06-13.mp3"
[2020-06-16 19:54:39] The Skeptic Guide: Nothing new
[2020-06-16 19:54:39] ------------------------------
[2020-06-16 19:54:39] Finished
The script accept following command line arguments:
Short version | Long name | Parameter | Default | Note |
---|---|---|---|---|
--downloads_limit |
number | inifinity | The maximum number of downloaded mp3 files | |
--if_directory_empty |
string | download_last |
The general approach on empty directory' |
The script will replace default values by read from configuration file. Those will be cover by all values given by command line.
Podcasts
is the part of configuration file where you provide the array of objects with fallowing content:
Property | Type | Required | Default | Note |
---|---|---|---|---|
name |
string | yes | - | The name of channel (used in logger) |
rss_link |
string | yes | - | The URL of RSS channel |
path |
string | yes | - | The path to directory, for podcast files |
require_date |
boolean | no | false |
Is date of podcast should be added into name of file |
disable |
boolean | no | false |
This podcast will be ignored |
An example:
{
"if_directory_empty": "download_from_4_days",
"podcasts": [
{
"name": "The Skeptic Guide",
"rss_link": "http://www.theskepticsguide.org/feed/rss.aspx",
"path": "~/podcasts/SGTTU"
}
]
}
If RSS channel doesn't have single and constant name convention, script is able to adding the date on beginning of downloaded file name. Just set the require_date
option to true.
If a directory for podcast is empty, the script needs to recognize what to do. Due to lack of database, you can:
-
download only the last episode
-
download all new episode from last n days
The script will download only the last episode from the feed. It is a good approach when you wish to start listening the podcast. It is also default approach of the script.
Set by download_last
.
The script will download all episodes which appear in last n days. I can be use when you are downloading on regular schedule.
The n number is given within the setup value: download_from_n_days
. For example: download_from_3_days
means download all episodes from last 3 days.