abspod/README.md
2025-04-01 16:17:17 -05:00

2.1 KiB

abspod - Audobookshelf Podcast Sync Tool

Tool to manually sync podcast episodes from Audiobookshelf with a local directory.

Intended for syncing podcasts with offline devices (such as Rockbox players) in a way where episodes that you listen to on the server will be automatically removed from your device, and episodes that you listen to (and delete) on your device will be automatically be marked as finished in Audiobookshelf.

Features

  • Download a configurable number of unlistened episodes from each podcast to a local directory.
  • Mark episodes as finished in Audiobookshelf when they're deleted from the local directory.
  • Delete episodes from the local directory when they're marked as finished on Audiobookshelf.

Usage

Run once to generate a sample configuration file. Edit the file and configure according to your preferences. You can get the libraryId by navigating to your Podcast library in Audiobookshelf and copying it from the url, which should look like this:

https://myaudiobookshelfserver.com/library/{libraryId}`

Example configuration:

{
  "hostUrl": "https://myaudiobookshelfserver.com",
  "username": "myuser",
  "password": "mypassword",
  "libraryId": "c02bab76-687e-4126-9bb3-d6197391780b",
  "syncToDirectory": "/mnt/usb/podcasts",
  "maxEpisodesPerPodcast": 10
}

Run abspod again and the application will download the maxEpisodesPerPodcast oldest unfinished episodes from each podcast in your library, named by published date and episode title in folders named by podcast title.

If you listen to episodes on your server, the next time you run abspod those episodes will be deleted from your sync directory, and if any newer episodes are available they will be downloaded to make sure you still have maxEpisodesPerPodcast episodes.

If you delete an already downloaded file from your sync directory, the next time you run abspod those episodes will be marked as finished on your server, and if any newer episodes are available they will be downloaded to make sure you still have maxEpisodesPerPodcast episodes.