An implementation of a mirror SponsorBlock server in Rust.
This is a Rust-based mirror of the SponsorBlock API.
It also uses sb-mirror for mirroring the CSV dumps via rsync.
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.
This implementation does not implement the full SponsorBlock server API. It supports hash-based queries to /api/skipSegments/<hash>
, 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.
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.
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:
docker buildx build --load -t 1337kavin/sponsorblock-mirror .
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.