| Crates.io | interlude |
| lib.rs | interlude |
| version | 0.1.0 |
| created_at | 2025-09-08 12:20:53.926211+00 |
| updated_at | 2025-09-08 12:20:53.926211+00 |
| description | Convert share links of different music streaming services. |
| homepage | |
| repository | https://github.com/antoniomikley/interlude_server |
| max_upload_size | |
| id | 1829228 |
| size | 350,346 |
Convert share links of one music streaming service to another. Currently supported are:
| Spotify | Tidal | Deezer | Apple Music | |
|---|---|---|---|---|
| Songs | ✅ | ✅ | ✅ | ❌ |
| Albums | ✅ | ✅ | ✅ | ❌ |
| Artists | ❌ | ❌ | ❌ | ❌ |
There are several clients that make use of the Interlude server that offer a comfortable user experience:
The easiest way to install interlude_server is using cargo.
If you have the Rust toolchain setup, the latest version can be installed using the following command:
cargo install --locked interlude
An alternative way to run the interlude server is using one of the provided release executables. There are Windows and Linux releases for x86_64, although the Windows version is not signed so Windows might complain.
To build the application from source you need to have the rust toolchain installed.
Clone this repo and run cargo build --release to compile the application.
The binary can be found under ./target/release/interlude.
git clone https://github.com/antoniomikley/interlude_server
cd interlude_server
cargo build --release
The server can also be run using Docker. A Docker Compose file is provided.
# Docker Compose verwenden (Port 30002)
docker-compose up -d
# Oder manuell:
docker build -t interlude-server .
docker run -p 30002:5000 -v ./Config.toml:/app/Config.toml:ro interlude-server
The application is configured via a Config.toml file in the same directory as the binary.
To be able to convert links from and to Spotify and Tidal you need to setup authentication with their API yourself by
providing your client_id and client_secret.
# The address on which the server will listen for requests
listen_address_ipv4 = "0.0.0.0"
# The port the server will listen on
listen_port = 5000
# The address under which you want to expose the server to the outside
external_addr = "your.domain.com:443"
# The password used to 'secure' the API. You have to provide it base64 encoded
# in the Authorization Header for each request
api_password = "secret_password"
# Your credentials for the various APIs
[credentials]
tidal = { client_id = "{client_id}", client_secret = "{client_secret}" }
spotify = { client_id = "{client_id}", client_secret = "{client_secret}" }
To run the server execute the binary. If you have installed the application using
cargo install or added the binary to your $PATH you can start the server using the following command:
interlude
Using the default configuration the server will be listening on 0.0.0.0:5000 and will provide the following endpoints:
GET /convert?link={share_link}
curl '0.0.0.0:5000/convert' \
-H "Authorization: Bearer $(echo -n 'secret_password' | base64)" \
-G --data-urlencode 'link=https://tidal.com/browse/album/55391786?u'
{
"results": [
{
"provider": "Spotify",
"type": "Album",
"displayName": "The Dark Side of the Moon",
"url": "https://open.spotify.com/album/4LH4d3cOWNNsVw41Gqt2kv",
"artwork": "https://i.scdn.co/image/ab67616d00001e02ea7caaff71dea1051d49b2fe"
},
{
"provider": "Tidal",
"type": "Album",
"displayName": "The Dark Side of the Moon",
"url": "https://tidal.com/browse/album/55391786",
"artwork": "https://resources.tidal.com/images/3009543d/652a/4ab4/ad79/c636323a63cd/320x320.jpg"
},
{
"provider": "Deezer",
"type": "Album",
"displayName": "The Dark Side of the Moon",
"url": "https://www.deezer.com/album/12114240",
"artwork": "https://cdn-images.dzcdn.net/images/cover/d37e1c39fb5fcd1ead55c4b86e8c610a/250x250-000000-80-0-0.jpg"
}
]
}
GET /providers
curl '0.0.0.0:5000/providers' \
-H "Authorization: Bearer $(echo -n 'secret_password' | base64)"
[
{
"name": "Spotify",
"url": "https://spotify.com",
"logoUrl": "your.domain.com:443/public/spotify_logo.png",
"iconUrl": "your.domain.com:443/public/spotify_icon.png"
},
{
"name": "Tidal",
"url": "https://tidal.com",
"logoUrl": "your.domain.com:443/public/tidal_logo.png",
"iconUrl": "your.domain.com:443/public/tidal_icon.png"
},
{
"name": "Deezer",
"url": "https://www.deezer.com",
"logoUrl": "your.domain.com:443/public/deezer_logo.png",
"iconUrl": "your.domain.com:443/public/deezer_icon.png"
}
]
GET /public/{filename}
curl '0.0.0.0:5000/public/spotify_logo.png' --output spotify_logo.png \
-H "Authorization: Bearer $(echo -n 'secret_password' | base64)"
The spotify_logo.png file.