Skip to content
This repository has been archived by the owner on Mar 30, 2024. It is now read-only.
/ jetispot Public archive

experimental UNOFFICIAL Spotify client for Android built on librespot-java + Jetpack Compose

License

Notifications You must be signed in to change notification settings

iTaysonLab/jetispot

Repository files navigation

Jetispot

probably usable UNOFFICIAL Spotify client for Android, built with Jetpack Compose and librespot-java

Spotify Premium account is REQUIRED*. Offline caching, DRM bypassing or raw file downloading is prohibted by ToS and will NEVER be implemented in Jetispot. Don't waste your time trying to request these features.

What's working:

  • sign in (login/pass only, no FB/Meta/whatsoever support, no Smart Lock either)
  • "browse", "home", album, premium plan, artist and genre screens (some of the blocks might be unsupported)
  • library: "liked songs" w/ tag&sort support, rootlist (liked playlists) + pins + artist/album support w/ nice animations, delta updates + pub/sub processing support
  • basic playback w/ Spotify Connect support (connect support is very WIP)
  • fairly optimized R8 rules, providing approx. 5-6 megabytes release APK size (with the playback and protobuf parts!)

What's in progress:

  • "Now Playing" improvements
  • better service (notification improvements)

Application stack:

  • playback: librespot-java as the core + sinks/decoders from librespot-android + Media2 for the mediasession support
  • UI: Jetpack Compose
  • DI: Hilt/Dagger
  • network: Retrofit w/ Moshi+Protobuf converters
  • pictures: Coil
  • storage: Room (collection), MMKV (metadata)
  • arch: MVVM
  • preferences: Jetpack Datastore (proto)

Credits:

  • librespot-java for the core API part and playback
  • librespot-android for sink and decoder source (in Jetispot they are rewritten to Kotlin)
  • moshi and moshix for the undocumented API JSON parsing
  • VK Icons for the amazing icon set used in the application's icon
  • MMKV for ultra-fast way to cache entity extended metadata
  • Google for Android/Jetpack/Hilt

* I heard some people can log in with a free account, but I won't provide any assistance to people without premium subscription. There is a possibility that a subscription check may be added to the client side in the future.