Native Android client for Spotify, built with Jetpack Compose
翻譯準備中
媒體Kotlin · PythonGitHub @kota-zo自行安裝營運者未確認
試用過了嗎? 點一下就好,不需要登入。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Spotify without ads, on a free account. Your own Spotify account, playlists and Wrapped, in a native Android app that blocks the ads, with offline downloads through extensions you install.
No audio ads, no video ads, no banners, and no 30-second break between songs. Myspoti switches off the ad breaks of Spotify's own player, so a free account plays like Premium: pick any song, skip as much as you want. No Premium, no modified Spotify app, nothing to root.
Myspoti has no download source of its own. Install a download-source extension (Settings, Extensions) and you can download a song, an album, a playlist or all your Liked Songs, and listen with no connection: on the plane, in the metro, with no data. The extension decides where the files come from and in which formats (FLAC, M4A or MP3); Myspoti keeps them encrypted on your phone, refuses a file that is not the song's length, and keeps downloaded playlists in step: songs you add on Spotify download by themselves.
Your home, search, library, playlists, podcasts, Spotify Connect and Android Auto, plus word-by-word lyrics, official music videos and song meanings from Genius.
Myspoti is a Spotify app for Android that you install yourself. You sign in with your usual Spotify account, on Spotify's own login page: Myspoti never sees your password. A free account is enough.
Under the hood, the official Spotify Web Player plays the music, hidden inside the app, with your phone's DRM. Myspoti draws its own screens on top and drives it. Your plays are reported to Spotify exactly as in a browser: they count for the artists, in your history and in your Wrapped.
New versions are offered inside the app: one tap downloads and installs them.
Each release carries one APK per architecture: arm64-v8a for almost every phone from the last ten years, armeabi-v7a for older or entry-level 32-bit phones (an app such as CPU-Z or Device Info shows which one yours is; when in doubt, take arm64-v8a, and if it refuses to install, armeabi-v7a). The in-app update picks the right one by itself.
Obtainium (add https://github.com/kota-zo/myspoti; the stable app and the beta app are two apps and each release carries their APKs named for the channel and the architecture):
app.myspoti.stable): leave "Include prereleases" off and set the APK filter to ^myspoti-stable-.*-arm64-v8a\.apk$ (or -armeabi-v7a on a 32-bit phone).app.myspoti): turn "Include prereleases" on and set the APK filter to ^myspoti-beta-.*-arm64-v8a\.apk$ (or -armeabi-v7a on a 32-bit phone).<next version>-beta.<n> (2.2.1-beta.1, then 2.2.1-beta.2...), marked prerelease on GitHub, and always newer than the last stable.Listening
Lyrics and videos
Your playlists
Offline
Extensions
And also
Version 2.0 is a new app, rebuilt from the ground up.
Every change is in the changelog.
Two looks, switched in Settings, Display.
Immersive
| Home | Player |
|---|---|
Classic
| Home | Player | Artist | Album |
|---|---|---|---|
Is it safe for my account? Myspoti talks to Spotify the way its web player does, and you sign in on Spotify's own page. Blocking ads is still against Spotify's Terms of Use (see the disclaimer below).
"Spotify refused to play this"? Some new or free accounts get refused by Spotify. Settings → Export a diagnostic report and send it on Discord or in an issue: it holds the app's recent log (what Spotify answered) and your phone's model, never your password or your login tokens.
Do downloads count in my Wrapped? They always count in Myspoti's own recap. With Sync downloaded songs with Spotify (Settings → Playback, on by default), a downloaded song played online also plays muted on Spotify so your other devices see and control it; whether Spotify counts that play is up to Spotify and not guaranteed. Offline, or with the setting off, the file plays only from the phone and nothing is reported. Streamed songs and music videos count as usual.
What leaves my phone? Your plays go to Spotify. Lyrics are looked up on lyrics sites, song meanings on Genius, translations on Google Translate, music videos on YouTube, and downloads on the hosts your download-source extension names (shown before you install it). Nothing is sent to the developer.
Blocking ads goes against Spotify's Terms of Use, and Spotify may suspend accounts that do it. Use this app at your own risk. If you can, support artists with Premium or by buying their music.
Not affiliated with or endorsed by Spotify. Spotify is a trademark of Spotify AB.
Myspoti is free, has no ads and is made in my spare time. If you enjoy it, you can support it on Ko-fi or GitHub Sponsors, also from About in the app. Nothing is locked behind a donation.
News, help and ideas: the Discord server. Bugs and requests: GitHub issues.
The Android project is in base/, split in two:
:api is the contract the UI talks to: plain Kotlin models and interfaces (player, search, catalog, library, playlists, home, podcasts, users, lyrics, devices, Jam).:api-spotify implements it on Spotify's Web Player. Playback stays in the official player, in a hidden WebView (:host-android), driven by a small bridge script. Catalog, search and library calls go straight to Spotify's servers. When Spotify ships a new Web Player, the app reads its new operation list by itself.:host-cdp runs the same API on desktop Chrome, so the whole API is tested against the real Web Player without a phone.More: base/api-spotify/README.md and docs/api.
Requirements: JDK 17+ and the Android SDK (compileSdk 37).
cd base
./gradlew assembleDebug
./gradlew testDebugUnitTest
Live API tests (desktop Chrome with a signed-in Web Player):
google-chrome --user-data-dir="$HOME/.myspoti-chrome" --remote-debugging-port=9222
./gradlew :host-cdp:test -Pcdp=http://localhost:9222
Every push builds and tests on GitHub Actions. A vX.Y.Z tag publishes a stable APK in Releases and a vX.Y.Z-beta.N tag a beta one (a prerelease, tools/check_tag.py checks the number).
base/licenses/).Full notices: THIRD_PARTY_NOTICES.md.
GPL-3.0. If you reuse this code, you must credit Myspoti, keep the license notices and
publish your complete source under GPL-3.0. Closed-source or uncredited copies are
violations and will be reported to the hosting platform (DMCA takedown). See also
AGENTS.md.