Importarr

Importarr is an Arr-style service for importing manually categorized SABnzbd downloads after SAB reports final completion. It owns one SAB category, defaults to manual, and refuses to import transient Direct Unpack paths or jobs still in SAB queue/post-processing.

New-machine install

Importarr is intended to feel like a small Arr service: deploy the container or systemd service, edit one env file, point SABnzbd category manual at the same completed-download path, then open the web UI.

mkdir -p /opt/importarr/config
cd /opt/importarr
curl -fsSLO https://gitea.delphas.dk/daniels/importarr/raw/branch/main/deploy/docker-compose.example.yml
curl -fsSLo importarr.env https://gitea.delphas.dk/daniels/importarr/raw/branch/main/deploy/importarr.env.example
${EDITOR:-vi} importarr.env
docker compose -f docker-compose.example.yml --env-file importarr.env up -d

Then open http://host:8765/ or put it behind your reverse proxy. For a local build instead of a published image, run:

docker build -t importarr:local .

systemd / pip install

git clone https://gitea.delphas.dk/daniels/importarr.git
cd importarr
sudo sh deploy/systemd-install.sh
sudo install -o importarr -g importarr -d /var/lib/importarr
sudo ${EDITOR:-vi} /etc/importarr/importarr.env
sudo systemctl start importarr.service

The installer creates the importarr system user when needed.

Required setup

  1. In SABnzbd, create or confirm category manual.
  2. Set its completed folder to the same path mounted as IMPORTARR_DOWNLOAD_ROOT.
  3. Set IMPORTARR_SAB_URL and IMPORTARR_SAB_API_KEY.
  4. Mount/configure IMPORTARR_MOVIES_ROOT and IMPORTARR_TV_ROOT read/write.
  5. Set IMPORTARR_AUTH_TOKEN unless write endpoints are protected by a reverse proxy.
  6. Check GET /health, then inspect /api/jobs before running imports.

Safety model

  • SAB-managed imports must be in IMPORTARR_SAB_CATEGORY and present in SAB history as Completed with final storage.
  • Active queue/post-processing states such as Queued, Repairing, Extracting, and Moving are never ready.
  • _UNPACK_, __UNPACK__, _FAILED_, and _ADMIN_ paths are skipped.
  • Manual batches are explicit one-time folders under IMPORTARR_DOWNLOAD_ROOT.

API

  • GET /health
  • GET /api/status
  • GET /api/jobs
  • GET /api/history
  • GET /api/manual-batches
  • POST /api/manual-batches with { "path": "relative/or/absolute/path" }
  • DELETE /api/manual-batches/{id}
  • POST /api/import/run-now

Set IMPORTARR_AUTH_TOKEN to require Authorization: Bearer <token> for write endpoints.

Development

python3.12 -m venv .venv
. .venv/bin/activate
pip install -e '.[test]'
pytest
uvicorn importarr.main:app --reload

Migration notes for dgsserver1

Export the existing script settings into IMPORTARR_* env vars, add historical folders as explicit manual batches, run a dry-run/inspection through /api/jobs, then switch the systemd service or Compose route after the ready set matches expectations.

S
Description
No description provided
Readme MIT
599 KiB
first
Latest
2026-07-30 19:52:47 +02:00
Languages
Python 82.8%
JavaScript 11.4%
Shell 4%
HTML 0.5%
CSS 0.5%
Other 0.8%