How lyssadev/spotilol works
Spotilol is an Android WebView wrapper for Spotify, adding ad/telemetry blocking, playback integrations, account profiles, and optional offline downloads sourced from YouTube Music/InnerTube. The primary path is user → Android app/WebView → Spotify player, with injected controls and a JavaScript bridge connecting page behavior to Android services. Separate branches cover media controls, offline search/download/playback, profiles, and optional proxying. The README documents these capabilities; sampled excerpts support the WebView, download, profile, notification, and proxy components, while some subsystem wiring is represented only where documented.
Main entry points: MainActivity.kt Main Activity · OfflineScreen.kt Offline Screens · DownloadManager.kt Download Manager · SpotifyWebViewClient.kt WebView Client
Components 19
Spotify Player
- Main Activity
app/src/main/java/com/project/lol/ui/MainActivity.kt - WebView Client
app/src/main/java/com/project/lol/webview/SpotifyWebViewClient.kt - Player Injections
app/src/main/java/com/project/lol/webview/injections/PlayerCore.kt - Spotify Bridge
app/src/main/java/com/project/lol/bridge/SpotifyBridge.kt
Offline Audio
- Offline Screens
app/src/main/java/com/project/lol/ui/screens/OfflineScreen.kt - Download Service
app/src/main/java/com/project/lol/service/DownloadService.kt - Download Manager
app/src/main/java/com/project/lol/offline/DownloadManager.kt - Offline Store
app/src/main/java/com/project/lol/offline/OfflineStore.kt - Offline Playback
app/src/main/java/com/project/lol/service/OfflineMediaService.kt
Android Integration
- Media Controls
app/src/main/java/com/project/lol/service/MediaNotificationService.kt - Android Auto
app/src/main/java/com/project/lol/service/MediaNotificationService.kt
Network Services
- InnerTube Client
app/src/main/java/com/project/lol/innertube/InnerTube.kt - Local Proxy
app/src/main/java/com/project/lol/proxy/LocalProxyManager.kt
Accounts and Settings
- Profile Manager
app/src/main/java/com/project/lol/profile/ProfileManager.kt - App Preferences
app/src/main/java/com/project/lol/ui/screens/SettingsScreen.kt
Other components
- Listener
- Spotify Web Player
- YouTube Music
- Spotify WebView
Connections 25
- Listener → Main Activity: opens and controls
- Main Activity → Spotify WebView: hosts
- Spotify WebView → Spotify Web Player: loads player
- WebView Client → Spotify WebView: handles page events
- WebView Client → Player Injections: injects scripts
- Player Injections → Spotify Bridge: calls native bridge
- Spotify Web Player → Spotify Bridge: sends page events
- Main Activity → WebView Client: configures
- Main Activity → Profile Manager: manages sessions
- Profile Manager → Spotify WebView: applies cookies
- Main Activity → Media Controls: starts media controls
- Media Controls → Spotify WebView: dispatches playback commands
- Android Auto → Media Controls: browses media
- Listener → Offline Screens: requests downloads
- Offline Screens → Download Service: starts jobs
- Download Service → Download Manager: runs downloads
- Download Manager → InnerTube Client: requests audio
- InnerTube Client → YouTube Music: queries and fetches
- Download Manager → Offline Store: saves tracks
- Offline Screens → Offline Store: lists downloads
- Offline Screens → Offline Playback: starts offline playback
- Offline Playback → Offline Store: reads tracks
- Main Activity → App Preferences: reads settings
- Main Activity → Local Proxy: configures optional proxy
- Local Proxy → Spotify WebView: proxies traffic