Supported services - WilliamNT/tunesynctool GitHub Wiki
[!NOTE]
- This page has instructions for obtaining the necessary configuration values for each streaming service supported by tunesynctool. It does not include instructions about setting environmental variables or creating Python objects. To learn more about the configuration options supported by tunesynctool, head over to the Configuration page.
- The upcomming webui will make setting up various streaming service accounts significantly easier once set up correctly ;).
[!CAUTION] None of the services listed endorse or support tunesynctool in any way, shape, or form. Tunesynctool also doesn't implement any safe guards to avoid account bans or restrictions (not even rate limits). It's your responsibility to use tunesynctool in a responsible and safe manner!
[!IMPORTANT] For your information, due to technical limitations, tunesynctool doesn't currently support same service operations between different accounts for all services. There's nothing preventing you from trying, however due to the way some services are implemented, you might run into unexpected issues. For transparency's sake, if a service is known to have this inconvenience, it is mentioned in it's description below.
Spotify
For our Spotify support, we use the spotipy package.
Write operations | Read operations |
---|---|
Fully supported | Fully supported |
- Create a Spotify developer application here.
- Go to its settings. Copy the Client ID and Client Secret.
- Add
http://127.0.0.1:8888/callback
as a Redirect URI. Just copy and paste this URL without making any changes.
That's it! You created a Spotify application. This will let tunesynctool connect to your Spotify account.
Don't forget to set these values as environmental variables either via your terminal (command prompt) or a .env
file.
[!NOTE]
- Operations between 2 Spotify accounts aren't currently supported because of the way tunesynctool has to request access to user data.
- For Spotify authentication to work, a web browser will have to be opened by tunesynctool so you can give it access to your user data on the Spotify website. In environments where a classic browser (Chromium, Firefox, Safari) isn't an option, you may try setting your default browser to something like Lynx.
Deezer
For our Deezer support, we use the streamrip package.
Write operations | Read operations |
---|---|
Not supported | Fully supported |
- Obtain an ARL for your account. Here's a nice guide from Reddit.
That's it! This will let tunesynctool connect to your Deezer account.
Don't forget to set this value as an environmental variable either via your terminal (command prompt) or a .env
file.
Subsonic, Navidrome, Libresonic, Airsonic (Subsonic API implementations)
For our Subsonic API support, we use the libsonic (py-sonic) package.
Write operations | Read operations |
---|---|
Fully supported | Fully supported |
Tunesynctool should support basically any service that properly implements the Subsonic API specification.
What you will need:
- The base URL of your Subsonic compatible API (e.g.
http://192.168.1.2
orhttps://example.com
) - The port where the service is available.
- The username you use to sign in to your account
- The password you use to sign in to your account
Don't forget to set these values as environmental variables either via your terminal (command prompt) or a .env
file.
YouTube Music
For our YouTube Music support, we use the ytmusicapi package.
Write operations | Read operations |
---|---|
Fully supported | Fully supported |
The YouTube Music API allows for certain non-authenticated-user specific endpoints to be called without sending any authentication headers. These are semi-officially supported by tunesynctool. For example, you may fetch public playlists but you can't create them because you aren't logged in. I'm not actively testing this behavior though, so this might break at any time.
Tunesynctool uses the browser authentication method. Learn more here.
What you will need:
- Your request headers from your browser of choice. Refer to this guide to see how you can obtain them.
Don't forget to set this value as an environmental variable either via your terminal (command prompt) or a .env
file.