You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
3.0 KiB

import SpotifyiOS
struct State {
static func playerStateDictionary(_ playerState: SPTAppRemotePlayerState) -> [String : Any] {
let artist = [
"name" : playerState.track.artist.name,
"uri" : playerState.track.artist.uri
]
let album = [
"name" : playerState.track.album.name,
"uri" : playerState.track.album.uri
]
let imageIdentifier = [
"raw" : playerState.track.imageIdentifier
]
let track: [String : Any] = [
"album" : album,
"artist" : artist,
"artists" : [artist],
"duration_ms" : playerState.track.duration,
"image_id" : imageIdentifier,
"is_episode" : playerState.track.isEpisode,
"is_podcast" : playerState.track.isPodcast,
"name" : playerState.track.name,
"uri" : playerState.track.uri
]
let playbackOptions: [String : Any] = [
"shuffle" : playerState.playbackOptions.isShuffling,
"repeat" : playerState.playbackOptions.repeatMode.rawValue
]
let playbackRestrictions = [
"can_skip_next" : playerState.playbackRestrictions.canSkipNext,
"can_skip_prev" : playerState.playbackRestrictions.canSkipPrevious,
"can_repeat_track" : playerState.playbackRestrictions.canRepeatTrack,
"can_repeat_context" : playerState.playbackRestrictions.canRepeatContext,
"can_toggle_shuffle" : playerState.playbackRestrictions.canToggleShuffle,
"can_seek" : playerState.playbackRestrictions.canSeek
]
return [
"track" : track,
"is_paused" : playerState.isPaused,
"playback_speed" : playerState.playbackSpeed,
"playback_position" : playerState.playbackPosition,
"playback_options" : playbackOptions,
"playback_restrictions" : playbackRestrictions
]
}
static func playerContextDictionary(_ playerState: SPTAppRemotePlayerState) -> [String : Any] {
return [
"title" : playerState.contextTitle,
"subtitle" : playerState.contextTitle,
"type" : playerState.contextURI.absoluteString.components(separatedBy: ":")[1],
"uri" : playerState.contextURI.absoluteString
]
}
static func crossfadeStateDictionary(_ crossfadeState: SPTAppRemoteCrossfadeState) -> [String : Any] {
return [
"duration": crossfadeState.duration,
"isEnabled": crossfadeState.isEnabled,
]
}
static func userCapabilitiesDictionary(_ userCapabilities: SPTAppRemoteUserCapabilities) -> [String : Any] {
return [
"can_play_on_demand": userCapabilities.canPlayOnDemand
]
}
static func libraryStateDictionary(_ libraryState: SPTAppRemoteLibraryState) -> [String : Any] {
return [
"uri": libraryState.uri,
"saved": libraryState.isAdded,
"can_save": libraryState.canAdd,
]
}
}