diff --git a/README.md b/README.md index a5377cf4..84d67870 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,20 @@ Please refrain from opening issues about the following features, as they are ser - Native playlist downloading (you can download podcast episodes though) - Jam (hosting a Spotify Jam requires Premium, joining by link currently works only with Jailbreak/TrollStore) -EeveeSpotify replaces Spotify monthly limited lyrics with Genius. If the tweak is unable to find a song or process the lyrics, you'll see the original Spotify one. **The lyrics might be wrong for some songs (e.g. random language translation, article, another song). This is due to how the tweak searches songs on Genius. While I've made it work in most cases, kindly refrain from opening issues about it. Genius lyrics are also not and will never be time-synced.** - In theory, implementing downloading/offline mode locally *should* be possible, but it will **not** be included in this tweak. +## Lyrics + +EeveeSpotify replaces Spotify monthly limited lyrics with one of the following three lyrics providers: + +- Genius: Offers the best quality lyrics, provides the most songs, and updates lyrics the fastest. Does not and will never be time-synced. + +- LRCLIB: The most open service, offering time-synced lyrics. However, it lacks lyrics for many songs. + +- Musixmatch: The service Spotify uses. Provides time-synced lyrics for many songs, but you'll need a user token to use this source. To obtain the token, you need to download Musixmatch from the App Store, sign up, and use a MITM tool to intercept requests. + +If the tweak is unable to find a song or process the lyrics, you'll see the original Spotify one or a "Couldn't load the lyrics for this song" message. The lyrics might be wrong for some songs (e.g. another song, song article) when using Genius due to how the tweak searches songs. While I've made it work in most cases, kindly refrain from opening issues about it. + ## How It Works Upon login, Spotify fetches user data, including active subscription, and caches it in the `offline.bnk` file in the `/Library/Application Support/PersistentCache` directory. It uses its proprietary binary format to store data, incorporating a length byte before each value, among other conventions. Certain keys, such as `player-license`, `financial-product`, and `type`, determines the user abilities.