You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Magnus Walbeck 8f51c8f6b4
Cleanup unneeded code
2 years ago
.vscode Fix names in config file 2 years ago
podweasel Cleanup unneeded code 2 years ago
.flake8 Format with black and add flake8 config 3 years ago
.gitignore Rename project and remove logo 3 years ago Update 7 years ago Fix names in config file 2 years ago
poetry.lock Rename project and remove logo 3 years ago
poetry.toml Rename project and remove logo 3 years ago
pyproject.toml Rename project and remove logo 3 years ago

Podweasel - podcatching for the terminal.

Podweasel is a program for managing & catching podcasts from the terminal.

Podweasel is a fork of podfox by brtmr


Podweasels main configuration file is called .podweasel.json and should be located in your home directory.

    "podcast_directory"     : "/home/<USER>/podcasts",
    "maxnum"                : 5,
    "cover_image"           : true,
    "cover_image_name"      : "folder",
    "rename_episodes"       : true,
    "date_format"           : "%Y-%m-%d",
    "connection_timeout"    : 10,
    "conncetion_retries"    : 3
  • podcast-directory is your main directory to store podcast data. This directory should be empty before you begin adding feeds.
  • maxnum (optional) download the newest of noted amount of episodes from podcast. When a new episodes comes out the oldest will be ignore if deleted (default is no limit)
  • cover-image (optional) boolean value to enable downloading of podcast image (default is false)
  • cover-image-name (optional) custom name for the image (default is folder)
  • rename-episodes (optional) boolean value to enable renaming of podcast episodes (default is false)
  • date-format (optional) formatting for the date when renaming episodes (default is %Y-%m-%d)
  • connection-timeout (optional) int in seconds for how long to wait before timeout (default is 10)
  • connection-retries (optional) int for how many retries per podcast episode before moving on to next episode if there is connection problems (default is 3)

Directory Structure

In podweasel, every podcast is identified with its own shortname, which is restricted to lowercase-letters, numbers, and dashes. If the shortname is not specifically given during import, it will be derived from the title of the feed. The following shows a directory tree for such a setup, including two podcasts, each with its own feed.json file for bookkeeping.

+ podcast-directory
+-----------+ python-for-rockstars
|           |
|           + feed.json
|           + episode1.ogg
|           + episode2.ogg
+-----------+ cobol-today
            + feed.json
            + episode289.ogg
            + episode288.ogg


    podweasel import <feed-url> [<shortname>]
    podweasel update [<shortname>]
    podweasel feeds
    podweasel episodes <shortname>
    podweasel download [<shortname> --how-many=<n>]


To import a new feed use: podweasel import <feed-url> [<shortname>] For example, to import the haskell cast feed:

podweasel import To import the techsnap podcast, and to store the episodes to a specific folder ts, use

podweasel import ts


podweasel update will update all feeds (This does not include downloading any new episodes)

podweasel update <shortname> will only update the feed associated with the given shortname


podweasel feeds will give an overview over the imported pocasts, and their shortnames. In the example:

$ podweasel feeds
title                                     |  shortname
TechSNAP MP3                              |  ts
The Haskell Cast                          |  the-haskell-cast


podweasel episodes <shortname> will produce a list of episodes available for this podcast, and wether they have been downloaded yet.

$ podweasel episodes ts
A Rip in NTP | TechSNAP 237               |  Not Downloaded
National Security Breaking Agency | Tech  |  Not Downloaded
Catching the Angler | TechSNAP 235        |  Not Downloaded
Key Flaw With GPL | TechSNAP 234          |  Not Downloaded
Dukes of Cyber Hazard | TechSNAP 233      |  Not Downloaded
Hardware Insecurity Module | TechSNAP 23  |  Not Downloaded
Leaky RSA Keys | TechSNAP 231             |  Not Downloaded
Trojan Family Ties | TechSNAP 230         |  Not Downloaded
Extortion Startups | TechSNAP 229         |  Not Downloaded


podweasel download will download maxnum not yet downloaded episodes for every feed (if possible.)

podweasel download ts --how-many=3 will download the 3 newest techsnap podcasts that have not yet been downloaded. (Skipping newer, but already downloaded ones). If the --how-many parameter is omitted, the maxnum parameter from the configuration file is used instead.