package pb.remote; // The supported message types enum MsgType { UNKNOWN = 0; // Messages generally send from client to server CONNECT = 1; DISCONNECT = 2; REQUEST_PLAYLISTS = 3; REQUEST_PLAYLIST_SONGS = 4; CHANGE_SONG = 5; SET_VOLUME = 6; // Messages send by both PLAY = 20; PLAYPAUSE = 21; PAUSE = 22; STOP = 23; NEXT = 24; PREVIOUS = 25; SHUFFLE_PLAYLIST = 26; // Messages that contain the repeat or random mode // Either set by client or clementine REPEAT = 27; RANDOM = 28; // Messages send from server to client INFOS = 40; CURRENT_METAINFOS = 41; PLAYLISTS = 42; PLAYLIST_SONGS = 43; ENGINE_STATE_CHANGED = 44; KEEP_ALIVE = 45; } // Valid Engine states enum EngineState { Empty = 0; Idle = 1; Playing = 2; Paused = 3; } // Song Metadata message SongMetadata { optional int32 id = 1; // unique id of the song optional int32 index = 2; // Index of the current row of the active playlist optional string title = 3; optional string album = 4; optional string artist = 5; optional string albumartist = 6; optional int32 track = 7; optional int32 disc = 8; optional string pretty_year = 9; optional string genre = 10; optional int32 playcount = 11; optional string pretty_length = 12; optional bytes art = 13; } // Playlist informations message Playlist { optional int32 id = 1; optional string name = 2; optional int32 item_count = 3; optional bool active = 4; // The songs are only sent when the client requests them. // See src/remotecontrol/outgoingdatacreator.cpp for more info repeated SongMetadata songs = 10; } // Valid Repeatmodes enum RepeatMode { Repeat_Off = 0; Repeat_Track = 1; Repeat_Album = 2; Repeat_Playlist = 3; } // Valid Shuffle modes enum ShuffleMode { Shuffle_Off = 0; Shuffle_All = 1; Shuffle_InsideAlbum = 2; Shuffle_Albums = 3; } // Message with unknown content // Shouldn't be used anywhere message Unknown { } // This message is sent when a client connects to clementine message Connect { } // This message is sent when a client disconnects from clementine message Disconnect { } // Client requests all playlists message RequestPlaylists { } // A Client requests songs from a specific playlist message RequestPlaylistSongs { optional int32 id = 1; } // Client want to change track message RequestChangeSong { // In which playlist is the song? optional int32 playlist_id = 1; // And on which position? optional int32 song_index = 2; } // Set the volume message RequestSetVolume { optional int32 volume = 1; } // Controlmessages message Play {} message PlayPause {} message Pause {} message Stop {} message Next {} message Previous {} message ShufflePlaylist {} // Repeat and Random messages message Repeat { optional RepeatMode repeat_mode = 1; } message Shuffle { optional ShuffleMode shuffle_mode = 1; } // Response from server // General infos message ResponseClementineInfo { optional string version = 1; } // The current song played message ResponseCurrentMetadata { optional SongMetadata song_metadata = 1; } // The playlists in clementine message ResponsePlaylists { repeated Playlist playlist = 1; } // A list of songs in a playlist message ResponsePlaylistSongs { optional Playlist requested_playlist = 1; repeated SongMetadata song = 2; } // The current state of the play engine message ResponseEngineStateChanged { optional EngineState state = 1; } // Empty Keep Alive telegram message KeepAlive {} // The message itself message Message { required int32 version = 1 [default=1]; required MsgType msgType = 2 [default=UNKNOWN]; // What data is in the message? optional Unknown unknown = 10; optional Connect connect = 11; optional Disconnect disconnect = 12; optional RequestPlaylists request_playlist = 13; optional RequestPlaylistSongs request_playlist_songs = 14; optional RequestChangeSong request_change_song = 15; optional RequestSetVolume request_set_volume = 16; optional Play play = 17; optional PlayPause play_pause = 18; optional Pause pause = 19; optional Stop stop = 20; optional Next next = 21; optional Previous previous = 22; optional ShufflePlaylist shuffle_playlist = 23; optional Repeat repeat = 24; optional Shuffle shuffle = 25; optional ResponseClementineInfo response_clementine_info = 26; optional ResponseCurrentMetadata response_current_metadata = 27; optional ResponsePlaylists response_playlists = 28; optional ResponsePlaylistSongs response_playlist_songs = 29; optional ResponseEngineStateChanged response_engine_state_changed = 30; }