How aftaaab/cupid-music-player works
Cupid Music Player is a themed music player spanning a React interface in Electron and an Android WebView. Users choose local music or browse Spotify, Apple Music, or YouTube playlists, then control playback in the player. Spotify metadata is paired with YouTube audio streaming through the Electron process; local playback uses HTML5 Audio. The graph also shows the documented Android song library and native media controls. Some runtime source was only sampled, so uncertain subsystem wiring is omitted.
Main entry points: App.jsx Player app · preload.cjs Desktop bridge · main.cjs Desktop main process · useAudioPlayer.js Local playback
Components 24
Player interface
- Player app
src/App.jsx - Themes and animation
src/useTheme.js - Local playback
src/useAudioPlayer.js - Stream playback
src/useSpotifyPlayer.js
Music sources
- Local playlist and audio
audio/playlist.json - Spotify sign-in
src/spotify/auth.js - Spotify playlists
src/spotify/api.js - Apple Music sign-in
src/apple/auth.js - Apple Music library
src/apple/api.js - YouTube playlists
src/youtube/api.js - Google sign-in
src/youtube/auth.js
Desktop runtime
- Desktop main process
electron/main.cjs - Desktop bridge
electron/preload.cjs - Audio stream resolver
electron/main.cjs - Desktop audio files
audio
Android runtime
- Mobile platform bridge
src/mobile/shim.js - On-device library
src/mobile/library.js - Android media controls
android/app/src/main/java/com/cupid/player/MainActivity.java
Other components
- Listener
- Spotify API
- MusicKit JS
- YouTube services
- yt-dlp
- Capacitor filesystem
Connections 31
- Listener → Player app: uses
- Player app → Themes and animation: selects theme
- Player app → Local playback: controls local
- Player app → Stream playback: controls streaming
- Player app → Spotify sign-in: signs in
- Player app → Spotify playlists: loads playlists
- Spotify sign-in → Spotify API: requests tokens
- Spotify playlists → Spotify API: fetches playlists
- Player app → Apple Music sign-in: signs in
- Player app → Apple Music library: loads playlists
- Apple Music sign-in → MusicKit JS: authorizes
- Apple Music library → MusicKit JS: fetches library
- Player app → YouTube playlists: loads playlists
- Player app → Google sign-in: signs in
- YouTube playlists → YouTube services: fetches playlists
- Google sign-in → YouTube services: requests tokens
- Local playback → Desktop bridge: resolves local audio
- Local playback → Local playlist and audio: reads playlist
- Player app → Desktop bridge: requests local playlist
- Desktop bridge → Desktop main process: forwards requests
- Desktop main process → Desktop audio files: reads files
- Stream playback → Desktop bridge: requests stream
- Desktop bridge → Desktop main process: forwards requests
- Desktop main process → Audio stream resolver: resolves audio
- Audio stream resolver → yt-dlp: extracts stream URL
- Stream playback → YouTube services: plays YouTube audio
- Player app → Mobile platform bridge: uses mobile bridge
- Mobile platform bridge → On-device library: loads added songs
- On-device library → Capacitor filesystem: reads and writes
- Android media controls → Player app: dispatches media controls
- Player app → Android media controls: updates playback metadata