03. Playlists and platforms¶
Purpose 1: keeping playlists the same everywhere.
3.1 What a synchronized playlist is¶
A synchronized playlist is one playlist with a copy on each platform that you connect to it: a YouTube playlist, a TIDAL playlist, an Apple Music playlist, and so on. VeeJay keeps the copies the same.
"The same" means the same songs. A song added to one copy appears in the others, and a song removed from one copy is removed from the others. Order is kept on the platforms that can reorder a playlist, and a platform that cannot reorder keeps its own order. A difference in order alone is never a conflict.
VeeJay never changes a copy that it has not been asked to keep. A playlist that you do not connect is left alone.
3.2 Supported platforms¶
What each platform allows is taken from its own published documentation, read on November 13, 2026. These are documented capabilities, not results from tests against a live account. Each one still has to be proved with a real sign-in before VeeJay relies on it.
| Platform | Read a playlist | Add an item | Remove an item | Music videos | Official interface |
|---|---|---|---|---|---|
| YouTube | Yes | Yes | Yes | Native: every item is a video | Yes (the YouTube Data API) |
| TIDAL | Yes | Yes | Yes | Yes: a playlist item is a track or a video | Yes (the TIDAL API, sign-in with playlist permissions) |
| Apple Music | Yes | Yes, to the end of the playlist | Not documented | Yes: a music video can be added | Yes (the Apple Music API) |
| YouTube Music | Yes | Yes | Yes | By video ID | No. Only an unofficial library exists, so it can break without notice. |
| Spotify | Yes | Yes | Yes | No: tracks and episodes only | Yes, with restrictions below |
What this means.
- YouTube and TIDAL can be kept in step in both directions, including removals.
- Apple Music can receive additions, but its documented interface has no way to remove or reorder an item. A playlist on Apple Music can therefore only grow through VeeJay, and a removal there has to be made by hand.
- Spotify is for audio playlists only. It has no music videos, and its developer policy prohibits a product "integrated with streams or content from another service." The policy allows moving a user's playlist metadata to another service, not Spotify's content.
- YouTube Music has no supported interface, so VeeJay treats it as optional and fragile.
- TIDAL's published definition lists what a playlist can hold. Whether an ordinary third-party application is granted write access in practice is not proved yet.
More platforms can be added later. Each is one adapter behind the same interface, as described in 10.2.
3.3 Matching a song across platforms¶
A song has a different identifier on every platform: YouTube identifies a video, and TIDAL and Apple Music each have their own track and video identifiers. To add a song that you added on YouTube to the TIDAL copy of a playlist, VeeJay has to find the right item there, and not the live version, the remaster or a cover.
The recording's code. Every recording has an international standard code, the ISRC, and MusicBrainz, TIDAL, Apple Music and Spotify all expose it. YouTube does not. VeeJay stores the ISRC on each song and matches by it.
How a match is made.
- The ISRC must agree. The song's code is looked up on the other platform.
- The artist and the title must agree too. The length must be close. A code and a name that both agree rarely agree by accident, and a match is accepted only then.
- Anything doubtful goes to you. A song with no code in MusicBrainz is matched by artist, title and length, and a match that is not certain is listed on Needs attention instead of being made.
- The match is remembered. The platform's own identifier for the item is stored with the song and the platform, so it is never searched for again.
YouTube. A YouTube video has no code, so it is matched through the song that it belongs to in your database. A video that has no verified song cannot be copied to another platform until it has been identified.
Tracks and videos. A song can be an audio track on one platform and a video on another. VeeJay stores which kind each platform item is, because a video playlist needs the video and an audio playlist needs the track.
The data that holds this is described in 9. The database: the ISRC on each song, the list of platforms with what each can do, and one row for each copy of a song on a platform.
3.4 Directions, changes and conflicts¶
Two ways, wherever the platform allows it. A change made on any connected platform reaches the others. YouTube and TIDAL can be changed in both directions, including removals. Apple Music can receive additions, but its documented interface has no way to remove an item, so a removal made elsewhere cannot be applied there. That song is listed on Needs attention as a removal to make by hand, and it is not offered again once you have done it. Spotify takes part for audio playlists only.
How changes are found. VeeJay remembers what each playlist looked like at the last synchronization, on each platform. At the next one it compares every copy with that memory, so it can tell what was added and what was removed since then, and it never has to guess.
The rules.
- An addition on any copy is added to the others.
- A removal is applied to the others only when the song was in the playlist at the last synchronization and is gone now. A song that has merely not arrived yet on a platform is never treated as a removal.
- The most recent change wins, song by song, when the same song was changed in two places.
- A real conflict goes to you. When a song was removed on one platform and changed on another in a way the rules cannot settle, it is listed on Needs attention with both versions and nothing is changed until you decide.
Every change that VeeJay makes to a playlist is logged, with the platform and the song, so it can be undone.
3.5 Video playlists and audio playlists¶
A synchronized playlist is a list of songs, and a music video playlist and a music audio playlist are not two separate things. Each platform's copy shows each song in the best form that the platform supports.
| Platform | What the copy holds |
|---|---|
| A platform that holds videos (YouTube, TIDAL, Apple Music) | The song's music video |
| An audio-only platform (Spotify) | The song's audio track |
- Audio only, on request. A playlist can be made audio-only, so that even a platform that holds videos gets the audio track of each song.
- When a song has no video on a platform that holds videos, VeeJay uses the song's audio track there instead, or lists the song on Needs attention when there is neither.
- One list, not two. Adding a song to a playlist adds it to every copy, in the form that each platform holds. There is never a second list to keep in step, so the video copy and the audio copy cannot drift apart.
Which item a song becomes on each platform is the match described in 3.3, and the kind of each item, a track or a video, is stored with it.
3.6 Likes¶
A like is the signal that starts everything else.
- A thumbs-up on a music video on YouTube adds the song to VeeJay, which then downloads and files its video and audio.
- A thumbs-down removes the song everywhere.
What counts as music. A like is acted on automatically when either of these is true:
- The video is in YouTube's Music category.
- The video's artist is a musician or a band with a page on Wikipedia.
In a test library of 2,187 videos, 92.0% were in the Music category and 8.0% were not, so the second test catches music videos that YouTube has filed elsewhere.
Asking you. A like that passes neither test is not acted on silently. VeeJay asks you about it inside the app, and you decide.
Existing likes at setup. When VeeJay is first set up, your account may already hold many likes, and VeeJay does not start work on them blindly. At setup it reports how many likes it found and how many look like music, and lets you import all the music likes, pick which to import, or import none. Any import runs slowly in the background, within YouTube's daily quota and gentle on your bandwidth. Likes that are not imported at setup can be imported later.
3.7 Sign-in, limits and quotas¶
Sign-in. Each platform is connected with its own sign-in. VeeJay keeps the keys and tokens in the protected secrets file described in 10.5, and never in the database.
YouTube's quota. The YouTube Data API gives each application 10,000 units a day. Reading a playlist costs 1 unit, but adding, changing or removing a playlist item costs 50 units each, so about 200 changes a day. Searching is capped at 100 calls a day. A large first synchronization to YouTube therefore takes days, and VeeJay spreads it out, never using search calls when a cheaper call will do.
Apple Music. Every request that touches a user's library needs a music user token, which the user grants.
Platform rules. YouTube's developer policy prohibits using its interface to download, cache or store YouTube video content without YouTube's written approval. Downloading is therefore kept separate from playlist synchronization, so the two can be offered, used and reviewed on their own. Spotify's restrictions are in 3.2.