cody-music
Player control support
- Mac Spotify and iTunes desktop
- Spotify Web
Spotify web API support
- Audio features
- Playlists
(create, delete, fetch playlist tracks, replace playlist tracks)
- Genre search
- Spotify devices
iTunes API support
More coming soon
Installation
$ npm install cody-music
Running unit tests
$ npm test
Load the module
import { getRunningTrack, Track, PlayerType, TrackStatus } from "cody-music";
...
const track:Track = await getRunningTrack();
if (track.state === TrackStatus.Playing) {
}
if (track.playerType === PlayerType.WebSpotify) {
}
OR
import * as CodyMusic from "cody-music";
OR
const CodyMusic = require("cody-music");
API
playTrack(uri)
Play a track with Music URI uri
.
Specify either "Spotify" or "iTunes" (case-insensitive).
await CodyMusic.getRunningTrack().then((track: Track) => {
});
await CodyMusic.playTrack(
"spotify",
"spotify:track:2YarjDYjBJuH63dUIh9OWv"
).then(result => {
});
await CodyMusic.playTrack("itunes", 1).then(result => {
});
await CodyMusic.playTrack("spotify", 1000000000).then(result => {
if (result.error) {
console.log(`Unable to play track, error: ${result.error}`);
}
});
await CodyMusic.getRunningTrack().then(result => {
});
Full set of APIs
setCredentials(credentials: any)
getAccessToken()
isSpotifyRunning(): Promise<boolean>
isItunesRunning(): Promise<boolean>
isPlayerRunning(player: PlayerName): Promise<boolean>
hasActiveTrack(): Promise<boolean>
getTrack(player: PlayerName): Promise<Track>
getRunningTrack(): Promise<Track>
getTracksByPlaylistName(player: PlayerName,
playListName: string,
playlist_id: string = "",
qsOptions: any = {})
getPlaylistTracks(player: PlayerName,
playlist_id: string,
qsOptions: any = {})
playTrackInContext(player: PlayerName, params: any[])
playSpotifyDevice(device_id: string)
play(player: PlayerName, options: any = {})
playTrack(player: PlayerName, trackId: string)
pause(player: PlayerName, options: any = {})
playPause(player: PlayerName)
next(player: PlayerName, options: any = {})
previous(player: PlayerName, options: any = {})
setRepeat(player: PlayerName, repeat: boolean)
setShuffle(player: PlayerName, shuffle: boolean)
isShuffling(player: PlayerName)
isRepeating(player: PlayerName)
setVolume(player: PlayerName, volume: number)
volumeUp(player: PlayerName, volume: number)
volumeDown(player: PlayerName, volume: number)
mute(player: PlayerName)
unmute(player: PlayerName)
setItunesLoved(loved: boolean)
getPlaylists(
player: PlayerName,
qsOptions: any = {}
): Promise<PlaylistItem[]>
getPlaylistNames(player: PlayerName, qsOptions: any = {}):Promise<string[]>
launchPlayer(playerName: PlayerName, options: any = {})
getSpotifyDevices(): Promise<PlayerDevice[]>
getGenre(artist: string, songName: string = ""): Promise<string>
getSpotifyGenre(artist: string): Promise<string>
getSpotifyAudioFeatures(ids: string[]): Promise<SpotifyAudioFeature[]>
createPlaylist(name: string, isPublic: boolean, description: string = "")
deletePlaylist(playlist_id: string)
replacePlaylistTracks(
playlist_id: string,
track_ids: string[]
)
addTracksToPlaylist(
playlist_id: string,
tracks: string[],
position: number = 0
)
removeTracksFromPlaylist(
playlist_id: string,
tracks: string[]
)
Deprecated APIs
getCurrentlyRunningTrackState(): Promise<Track>
getPlayerState(player: PlayerName): Promise<Track>
getState(player: PlayerName): Promise<Track>
startSpotifyIfNotRunning()
startItunesIfNotRunning()
isRunning(player: PlayerName): Promise<boolean>
repeatOn(player: PlayerName)
repeatOff(player: PlayerName)
unMute(player: PlayerName)
Contributors
License