Initial tdarr-cli: Python CLI for the Tdarr API
All checks were successful
release / release (push) Successful in 1m4s

status/nodes/worker/cruddb/insert/api commands (stdlib only). Cracked
Tdarr's x-api-key auth (seededApiKey), alter-worker-limit and update-node
formats. Used to set up 2-node transcoding (workstation NVENC + Pi5 CPU
fallback). Playbook standard: README (per-OS prereqs), doc/plan.md,
.gitignore (build/ first), VS Code build task, install.sh + one-line curl,
Gitea Actions rolling-latest release.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011YPrEZVBpPVoCRyJz2exkZ
This commit is contained in:
2026-07-05 20:31:39 +02:00
commit 7c0c55bcea
7 changed files with 351 additions and 0 deletions

40
doc/plan.md Normal file
View File

@@ -0,0 +1,40 @@
# tdarr-cli — plan
## Goal
En liten, skriptbar CLI mot Tdarrs (odokumenterade) HTTP-API så att Tdarr-servern
på Pi5 kan konfigureras/styras utan webb-UI:t — noder, worker-gränser, bibliotek
och generiska anrop. Ursprungligen byggd för att sätta upp 2-nod-transkodning
(workstation NVENC + Pi5 CPU-fallback).
## Stack
- Python 3, endast standardbibliotek (`urllib`, `json`, `argparse`). Ingen build.
- Arkitektur-oberoende (körs på både x64 och arm64 med python3).
## Deploy target
Pattern A — installerbar CLI. Release-CI publicerar `tdarrctl` (+ `install.sh`,
`checksums.txt`) till en rullande `latest`-release; en-rads `curl … | sh`-install.
## Auth
`x-api-key` (Tdarr `seededApiKey`). Nyckeln läses ur env eller `~/tdarr-node/.env`,
skrivs aldrig ut.
## Kommandon (nuläge)
`status`, `nodes`, `worker`, `libraries`, `cruddb` (generisk collection-CRUD),
`insert` (insert/update/removeOne), `api` (generiskt HTTP).
Kartlagda API-detaljer:
- `alter-worker-limit`: `{data:{nodeID, workerType:<transcodegpu|…>, process:<increase|decrease>}}`.
- `update-node`: `{data:{nodeID, nodeUpdates:{…}}}` (t.ex. `nodePaused`).
- cruddb-collections: `LibrarySettingsJSONDB`, `FlowsJSONDB`, `NodeJSONDB`, `PluginJSONDB`, m.fl.
modes: `getAll`, `insert`, `update`, `removeOne`.
## Roadmap / expansions
- Bekvämlighetskommandon: `pause <nod>` / `resume <nod>` (wrappar `update-node`).
- `create-library` / `set-flow` som bygger korrekta objekt (Tdarr-objekten är
stora/ömtåliga via rå cruddb — bibliotek/flow görs idag bäst i UI:t).
- Konfigfil (`~/.config/tdarrctl/config.json`) för URL + nyckel-referens.
- `--json`-utdata för skriptning.
## Open questions
- Vilka fler high-level-kommandon är värda att curera (vs generisk `cruddb`/`api`)?
- Ska den slås ihop med/ersättas av tdarr-tray för icke-CLI-styrning?