wordarr

Request and import manager for ebooks, comics/manga and audiobooks, in the style of Sonarr/Radarr. Search metadata providers, keep a list of wanted titles, and move finished downloads into your library under a naming scheme of your choice.

Deployment

docker compose up -d --build
# web UI: http://localhost:8787

Mount /mnt/downloads and your library roots so that the root_path values configured in wordarr exist inside the container. Keep downloads and libraries on the same mount, otherwise moving turns into copy + delete.

Env Default Description
WORDARR_DOWNLOAD_DIR /mnt/downloads scanned download folder
WORDARR_CONFIG_DIR /config location of the SQLite database
WORDARR_AUDIBLE_REGIONS de,com Audible marketplaces, first ranks first
WORDARR_MUSICBRAINZ_UA see metadata/musicbrainz.py user agent MusicBrainz requires
WORDARR_EXTRA_EBOOK_EXTENSIONS extra ebook formats the scan should offer, e.g. .kepub,.lit,.rtf
WORDARR_HARDCOVER_TOKEN Hardcover API token, the best ebook source; without it Hardcover is skipped
WORDARR_GOOGLE_BOOKS_KEY optional, only needed when the keyless Google Books quota runs dry

Usage

  1. Libraries create one per target folder with a media type, a naming scheme ({Author} {Authors} {Narrator} {Narrators} {Title} {Year} {Series} {Volume}) and optionally a language that filters the search.
  2. Search look up a title (ebooks: Hardcover, Google Books and Open Library, audiobooks: Audible plus MusicBrainz, manga: AniList) and request it, or add it by hand. The language filter narrows ebook and audiobook hits. For a series, Ganze Serie… requests every episode at once.
  3. Import scan the download folder. wordarr suggests file→request matches, which you confirm or correct; entries can be merged, split, or turned into requests from their folder names. Every row names its format and size, and the toolbar can filter by format - a Calibre export lists the same book once per format, and only one of them belongs in the library. Importing renames and moves the files according to the library's scheme and writes audio tags.

Imported titles can be edited afterwards; Speichern & neu ablegen re-applies the naming scheme to files already in the library.

Development

python3 -m venv .venv && .venv/bin/pip install -e '.[dev]'
.venv/bin/pytest
WORDARR_CONFIG_DIR=./config WORDARR_DOWNLOAD_DIR=/mnt/downloads \
  .venv/bin/uvicorn wordarr.main:app --port 8787

The browser tests in tests/test_ui_dialogs.py need playwright plus its chromium build and skip themselves when either is missing.

S
Description
No description provided
Readme
1.1 MiB
2026-08-31 09:54:32 +02:00
Languages
Python 57.5%
JavaScript 32.1%
HTML 6.6%
CSS 3.7%
Dockerfile 0.1%