Files
audiobook-player/README.md
T
nmemmertandClaude Sonnet 5.5 c699aca5b0
build / check (push) Successful in 8s
build / image (push) Successful in 26s
Create a default account from PLAYER_USER/PLAYER_PASSWORD
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 15:48:12 -04:00

35 lines
1.4 KiB
Markdown

# Audiobook Player
A web player for an [OpenAudible](https://openaudible.org) library, with user accounts, per-user listening progress synced across devices, and an iPhone-friendly layout. Python 3 standard library only.
## Setup
```bash
python3 server.py setup # OpenAudible login the server uses (shared by all accounts)
python3 server.py adduser NAME # create a player account
python3 server.py serve # --upstream http://HOST:8000 --port 8080
```
Then open `http://<server-ip>:8080` and sign in. Other commands: `users`, `passwd NAME`, `deluser NAME`.
Only MP3/M4B files can be played in a browser; convert Audible `.aax`/`.aaxc` books in OpenAudible first.
## Notes
- Credentials and user data live in `config.json`, `users.json`, `sessions.json`, `progress_users.json` (git-ignored).
- Only read-only OpenAudible endpoints are proxied; admin commands and import are blocked.
- Traffic is plain HTTP. Use a VPN (e.g. Tailscale) or a TLS reverse proxy for access outside your home network.
## Docker
```bash
# .env next to docker-compose.yml
OPENAUDIBLE_USER=...
OPENAUDIBLE_PASSWORD=...
PLAYER_USER=nate # default account, created on first start
PLAYER_PASSWORD=...
```
`docker compose up -d`, then sign in at port 8080. The default account is only created if it doesn't exist, so changing its password later with
`docker exec -it audiobook-player python server.py passwd nate` sticks. Add more people with `adduser`.