The same ipx program that runs the server is its command line. Run it in the container with docker exec ipx ipx …; when the server is running, it does the work and the command shows what happened.
| Command | What it does |
|---|---|
ipx list | Every podcast and its state |
ipx status | How many podcasts, how many files waiting and downloaded |
ipx fetch [id] [--force] | Check everything that is due, or one podcast; --force checks it even if it is not due |
ipx add <url>, ipx rm <id> | Add a podcast, or take it out |
ipx import <file>, ipx export <file> | OPML in or out |
ipx reap [--dry-run] | Clear old files now, to stay within the space you set |
ipx user add|list|passwd|rm | Accounts |
A program on the same machine can also talk to the running server over its control socket, one JSON command a line, and read back one event a line:
printf '{"cmd":"fetch","force":true}\n' | socat - UNIX-CONNECT:$XDG_RUNTIME_DIR/ipx.sock
{"ev":"feed_start","feed":"atp"}
{"ev":"download_done","feed":"atp","enclosure":42,"path":"…","bytes":3000000}
{"ev":"feed_done","feed":"atp","new":1,"downloaded":1,"failed":0,"torrents":0}
{"ev":"scan_done","feeds":1}
The commands are fetch (optional feed, force), download (enclosure), reap (optional dry_run) and status.