podsync

Crates.iopodsync
lib.rspodsync
version0.1.5
sourcesrc
created_at2023-03-03 00:10:36.623006
updated_at2024-05-29 19:41:40.991582
descriptionA server to sync podcasts with, mirroring the gpodder API. Designed for use with AntennaPod
homepagehttps://github.com/bobrippling/podsync
repositoryhttps://github.com/bobrippling/podsync
max_upload_size
id799271
size144,852
Rob Pilling (bobrippling)

documentation

README

podsync

A HTTP server for syncing podcast app state, mirroring the gpodder API. Designed for use with AntennaPod's sync service.

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

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
Commit count: 123

cargo fmt