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
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,
|
|
]
|
|
}
|
|
}
|
|
|