1.5 KiB
1.5 KiB
Audiobook Player
A web player for an OpenAudible library, with user accounts, per-user listening progress synced across devices, and an iPhone-friendly layout. Python 3 standard library only.
Setup
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. The first account (and the PLAYER_USER default in Docker) is an admin. Admins manage users at /admin. 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
# .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.