podsync
podsync copied to clipboard
A minimal podcast sync server, using the same API as GPodder, compatible with AntennaPod. See also https://github.com/kd2org/opodsync
podsync
A HTTP server for syncing podcast app state, mirroring the gpodder API. Designed for use with AntennaPod's sync service.
Setup
Creating Users
Add a user with scripts/add-user.sh:
$ ./scripts/add-user.sh yourname
yourname's pass: <enter password>
This will add a user into the database, assumed to be pod.sql.
Endpoints
podsync doesn't cover the full gpodder API, just enough to get AntennaPod to work:
- auth:
-
POST api/2/auth/{username}/login.json -
POST api/2/auth/{username}/logout.json
-
- devices:
-
GET api/2/devices/{username}.json -
POST api/2/devices/{username}/{device}.json
-
- subscriptions:
-
GET api/2/subscriptions/{username}/{device}.json -
POST api/2/subscriptions/{username}/{device}.json
-
- episodes:
-
GET api/2/episodes/{username}.json -
POST api/2/episodes/{username}.json
-
Logging
podsync uses the RUST_LOG environment variable for logging. To generate logs similar to a webserver:
export RUST_LOG=podsync=info
# or for debugging:
export RUST_LOG=podsync=trace
# for warp/endpoint output:
export RUST_LOG=podsync=info,warp=info
See the log crate for more details
Building
Modes
podsync has two backends: SQL database or plain text files. The former being more scalable, the latter being easier to inspect and manipulate with Unix tools.
By default it builds in file mode, to build in sql mode, build with cargo build --features backend-sql.
SQLx offline build
podsync uses sqlx in offline mode for builds (see build.rs for more).
To update the schema:
export DATABASE_URL=sqlite://pod.sql
cargo install sqlx-cli
cargo sqlx prepare -- --tests --features backend-sql
git commit -m 'Update sqlx snapshot' sqlx-data.json
Docker
An unofficial Docker image exists, maintained by OpenByteDev