https://github.com/teampiped/sponsorblock-mirror
An implementation of a mirror SponsorBlock server in Rust.
https://github.com/teampiped/sponsorblock-mirror
rust sponsorblock
Last synced: 6 months ago
JSON representation
An implementation of a mirror SponsorBlock server in Rust.
- Host: GitHub
- URL: https://github.com/teampiped/sponsorblock-mirror
- Owner: TeamPiped
- License: agpl-3.0
- Created: 2022-10-22T12:25:29.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-04-07T01:49:33.000Z (6 months ago)
- Last Synced: 2025-04-11T22:21:45.029Z (6 months ago)
- Topics: rust, sponsorblock
- Language: Rust
- Homepage: https://sponsorblock.kavin.rocks
- Size: 301 KB
- Stars: 58
- Watchers: 2
- Forks: 9
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# sponsorblock-mirror
This is a Rust-based mirror of the [SponsorBlock](https://sponsor.ajay.app) API.
It also uses [sb-mirror](https://github.com/mchangrh/sb-mirror) for mirroring the CSV dumps via rsync.
## Instances
- [sponsorblock.kavin.rocks](https://sponsorblock.kavin.rocks) - 🇩🇪 (main instance)
- [sponsorblock.gleesh.net](https://sponsorblock.gleesh.net) - 🇩🇪
- [sponsorblock.2255.me](https://sponsorblock.2255.me) - 🇵🇱
- [sponsorblock.hostux.net](https://sponsorblock.hostux.net) - :fr:Feel free to add your instance to this list by making a pull request.
You can also configure Piped-Backend to use your mirror by changing the `SPONSORBLOCK_SERVERS` configuration value.
## Compatibility
This implementation does not implement the full SponsorBlock server API. It supports hash-based queries to `/api/skipSegments/`, with optional `categories` parameter, and queries to `/api/skipSegments` with required `videoID` and optional `categories` parameters.
The browser extension works with only the hash-based query endpoint, but other clients, such as the one in ReVanced, require the video ID endpoint, and additionally query `/api/userInfo` and `/api/isUserVip`. Right now there are stub implementations for these. ReVanced had not yet been verified as compatible.
## Using with Docker Compose
To run the server under Docker Compose, run:
```
docker compose up
```This starts the API server, a database, and a mirroring service to download the SponsorBlock data from the `sponsorblock.kavin.rocks` mirror and keep it up to date.
The API will be available on `http://localhost:8000`. For example, you can try `http://localhost:8000/api/skipSegments/aabf` or `http://localhost:8000/api/skipSegments?videoID=eQ_8F4nzyiw`. **It will take a few minutes at least for the database to download and import,** so these will not return data on the first run.
## Building
To make a local release build, use `cargo build --release`. This will produce a binary in `target/release/sponsorblock-mirror`.
To make a Docker container, you need to do a BuildKit Docker build, not a normal Docker build. Make sure you have `buildx` available in your Docker, and run:
```bash
docker buildx build --load -t 1337kavin/sponsorblock-mirror .
```## Troubleshooting
* If the linker complains about a missing `-lpq`, make sure you have the PostgreSQL development libraries, which may be in a `libpq-dev` package or your distribution's equivalent.
* If Docker complains that `the --mount option requires BuildKit`, make sure you are building with `docker buildx build` and not `docker build`.
* To access the PostgreSQL database directly, you can `docker exec -ti postgres-sb-mirror bash -c 'psql $POSTGRES_DB $POSTGRES_USER'`.
* Requests for videos not in the database are forwarded to `https://sponsor.ajay.app/`, which may be down or malfunctioning. A response of the string `Internal Server Error` is likely to be from there, rather than from this application.