MusicPlayer
MusicPlayer copied to clipboard
Music player submodule for LyricsX
MusicPlayer
Music player submodule for LyricsX.
Unified API for music players.
Supported Players
macOS
- [x] Apple Music (iTunes)
- [x] Spotify
- [x] Vox
- [x] Audirvana
- [x] Swinsian
iOS
- [x] Music
- [ ] Spotify (see #5)
Linux
Read me before using MPRIS
dependencies
- playerctl (could be installed by package manager)
A running
GMainLoop
is required to automatically update the player and playback status for MPRIS. If not, you can run one by:GRunLoop.main.run()
or in other threads:
Thread.detachNewThread { GRunLoop.main.run() }
Universal
- SystemMedia: System-wide Now Playing
- [x] macOS
- [x] iOS (jailbroken device only) (test needed)
- [ ] Windows (via SMTC)
- [ ] Spotify (Web API)
Helper:
- [x] Agent: Delegate events to another player.
- [x] Now Playing: Automatically choose a playing player from given players.
- [x] MPRIS Now Playing: Just like Now Playing, but automatically find available MPRIS players.
- [x] Virtual: A virtual player that allows you to manipulate its state.
- [ ] Remote: Sync player state from other devices.
Usage
Quick Start
let player = MusicPlayers.Scriptable(name: .appleMusic)!
let track = player.currentTrack.title
if player.playbackState.isPlaying {
player.skipToNextItem()
}
License
MusicPlayer is part of LyricsX and licensed under MPL 2.0. See the LICENSE file.