예제 #1
0
         /// <summary>
         /// Retrieve all tv show episodes
         /// </summary>
 public async Task<XBMCRPC.VideoLibrary.GetEpisodesResponse> GetEpisodes(XBMCRPC.VideoLibrary.GetEpisodes_filterGenreid filter, int tvshowid=0, int season=0, XBMCRPC.Video.Fields.Episode properties=null, XBMCRPC.List.Limits limits=null, XBMCRPC.List.Sort sort=null)
 {
     var jArgs = new JObject();
      if (tvshowid != null)
      {
          var jproptvshowid = JToken.FromObject(tvshowid, _client.Serializer);
          jArgs.Add(new JProperty("tvshowid", jproptvshowid));
      }
      if (season != null)
      {
          var jpropseason = JToken.FromObject(season, _client.Serializer);
          jArgs.Add(new JProperty("season", jpropseason));
      }
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
      if (limits != null)
      {
          var jproplimits = JToken.FromObject(limits, _client.Serializer);
          jArgs.Add(new JProperty("limits", jproplimits));
      }
      if (sort != null)
      {
          var jpropsort = JToken.FromObject(sort, _client.Serializer);
          jArgs.Add(new JProperty("sort", jpropsort));
      }
      if (filter != null)
      {
          var jpropfilter = JToken.FromObject(filter, _client.Serializer);
          jArgs.Add(new JProperty("filter", jpropfilter));
      }
     return await _client.GetData<XBMCRPC.VideoLibrary.GetEpisodesResponse>("VideoLibrary.GetEpisodes", jArgs);
 }
예제 #2
0
         /// <summary>
         /// Retrieve all albums from specified artist or genre
         /// </summary>
 public async Task<XBMCRPC.AudioLibrary.GetAlbumsResponse> GetAlbums(XBMCRPC.AudioLibrary.GetAlbums_filterGenreid filter, XBMCRPC.Audio.Fields.Album properties=null, XBMCRPC.List.Limits limits=null, XBMCRPC.List.Sort sort=null)
 {
     var jArgs = new JObject();
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
      if (limits != null)
      {
          var jproplimits = JToken.FromObject(limits, _client.Serializer);
          jArgs.Add(new JProperty("limits", jproplimits));
      }
      if (sort != null)
      {
          var jpropsort = JToken.FromObject(sort, _client.Serializer);
          jArgs.Add(new JProperty("sort", jpropsort));
      }
      if (filter != null)
      {
          var jpropfilter = JToken.FromObject(filter, _client.Serializer);
          jArgs.Add(new JProperty("filter", jpropfilter));
      }
     return await _client.GetData<XBMCRPC.AudioLibrary.GetAlbumsResponse>("AudioLibrary.GetAlbums", jArgs);
 }
예제 #3
0
         /// <summary>
         /// Enumerates all actions and descriptions
         /// </summary>
 public async Task<XBMCRPC.JSONRPC.IntrospectResponse> Introspect(bool getdescriptions=false, bool getmetadata=false, bool filterbytransport=false, XBMCRPC.JSONRPC.Introspect_filter filter=null)
 {
     var jArgs = new JObject();
      if (getdescriptions != null)
      {
          var jpropgetdescriptions = JToken.FromObject(getdescriptions, _client.Serializer);
          jArgs.Add(new JProperty("getdescriptions", jpropgetdescriptions));
      }
      if (getmetadata != null)
      {
          var jpropgetmetadata = JToken.FromObject(getmetadata, _client.Serializer);
          jArgs.Add(new JProperty("getmetadata", jpropgetmetadata));
      }
      if (filterbytransport != null)
      {
          var jpropfilterbytransport = JToken.FromObject(filterbytransport, _client.Serializer);
          jArgs.Add(new JProperty("filterbytransport", jpropfilterbytransport));
      }
      if (filter != null)
      {
          var jpropfilter = JToken.FromObject(filter, _client.Serializer);
          jArgs.Add(new JProperty("filter", jpropfilter));
      }
     return await _client.GetData<XBMCRPC.JSONRPC.IntrospectResponse>("JSONRPC.Introspect", jArgs);
 }
예제 #4
0
         /// <summary>
         /// Add a favourite with the given details
         /// </summary>
 public async Task<string> AddFavourite(string title=null, XBMCRPC.Favourite.Type type=0, string path=null, string window=null, string windowparameter=null, string thumbnail=null)
 {
     var jArgs = new JObject();
      if (title != null)
      {
          var jproptitle = JToken.FromObject(title, _client.Serializer);
          jArgs.Add(new JProperty("title", jproptitle));
      }
      if (type != null)
      {
          var jproptype = JToken.FromObject(type, _client.Serializer);
          jArgs.Add(new JProperty("type", jproptype));
      }
      if (path != null)
      {
          var jproppath = JToken.FromObject(path, _client.Serializer);
          jArgs.Add(new JProperty("path", jproppath));
      }
      if (window != null)
      {
          var jpropwindow = JToken.FromObject(window, _client.Serializer);
          jArgs.Add(new JProperty("window", jpropwindow));
      }
      if (windowparameter != null)
      {
          var jpropwindowparameter = JToken.FromObject(windowparameter, _client.Serializer);
          jArgs.Add(new JProperty("windowparameter", jpropwindowparameter));
      }
      if (thumbnail != null)
      {
          var jpropthumbnail = JToken.FromObject(thumbnail, _client.Serializer);
          jArgs.Add(new JProperty("thumbnail", jpropthumbnail));
      }
     return await _client.GetData<string>("Favourites.AddFavourite", jArgs);
 }
예제 #5
0
         /// <summary>
         /// Get the directories and files in the given directory
         /// </summary>
 public async Task<XBMCRPC.Files.GetDirectoryResponse> GetDirectory(string directory=null, XBMCRPC.Files.Media media=0, XBMCRPC.List.Fields.Files properties=null, XBMCRPC.List.Sort sort=null, XBMCRPC.List.Limits limits=null)
 {
     var jArgs = new JObject();
      if (directory != null)
      {
          var jpropdirectory = JToken.FromObject(directory, _client.Serializer);
          jArgs.Add(new JProperty("directory", jpropdirectory));
      }
      if (media != null)
      {
          var jpropmedia = JToken.FromObject(media, _client.Serializer);
          jArgs.Add(new JProperty("media", jpropmedia));
      }
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
      if (sort != null)
      {
          var jpropsort = JToken.FromObject(sort, _client.Serializer);
          jArgs.Add(new JProperty("sort", jpropsort));
      }
      if (limits != null)
      {
          var jproplimits = JToken.FromObject(limits, _client.Serializer);
          jArgs.Add(new JProperty("limits", jproplimits));
      }
     return await _client.GetData<XBMCRPC.Files.GetDirectoryResponse>("Files.GetDirectory", jArgs);
 }
예제 #6
0
         /// <summary>
         /// Retrieve the current profile
         /// </summary>
 public async Task<XBMCRPC.Profiles.Details.Profile> GetCurrentProfile(XBMCRPC.Profiles.Fields.Profile properties=null)
 {
     var jArgs = new JObject();
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
     return await _client.GetData<XBMCRPC.Profiles.Details.Profile>("Profiles.GetCurrentProfile", jArgs);
 }
예제 #7
0
         /// <summary>
         /// Toggle fullscreen/GUI
         /// </summary>
 public async Task<bool> SetFullscreen(XBMCRPC.Global.Toggle2 fullscreen)
 {
     var jArgs = new JObject();
      if (fullscreen != null)
      {
          var jpropfullscreen = JToken.FromObject(fullscreen, _client.Serializer);
          jArgs.Add(new JProperty("fullscreen", jpropfullscreen));
      }
     return await _client.GetData<bool>("GUI.SetFullscreen", jArgs);
 }
예제 #8
0
         /// <summary>
         /// Retrieves the values of the given properties
         /// </summary>
 public async Task<XBMCRPC.System.Property.Value> GetProperties(XBMCRPC.System.GetProperties_properties properties=null)
 {
     var jArgs = new JObject();
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
     return await _client.GetData<XBMCRPC.System.Property.Value>("System.GetProperties", jArgs);
 }
예제 #9
0
         /// <summary>
         /// Toggle mute/unmute
         /// </summary>
 public async Task<bool> SetMute(XBMCRPC.Global.Toggle2 mute)
 {
     var jArgs = new JObject();
      if (mute != null)
      {
          var jpropmute = JToken.FromObject(mute, _client.Serializer);
          jArgs.Add(new JProperty("mute", jpropmute));
      }
     return await _client.GetData<bool>("Application.SetMute", jArgs);
 }
예제 #10
0
         /// <summary>
         /// Exports all items from the audio library
         /// </summary>
 public async Task<string> Export(XBMCRPC.AudioLibrary.Export_options1 options)
 {
     var jArgs = new JObject();
      if (options != null)
      {
          var jpropoptions = JToken.FromObject(options, _client.Serializer);
          jArgs.Add(new JProperty("options", jpropoptions));
      }
     return await _client.GetData<string>("AudioLibrary.Export", jArgs);
 }
예제 #11
0
         /// <summary>
         /// Retrieve all textures
         /// </summary>
 public async Task<XBMCRPC.Textures.GetTexturesResponse> GetTextures(XBMCRPC.Textures.Fields.Texture properties=null)
 {
     var jArgs = new JObject();
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
     return await _client.GetData<XBMCRPC.Textures.GetTexturesResponse>("Textures.GetTextures", jArgs);
 }
예제 #12
0
         /// <summary>
         /// Execute a specific action
         /// </summary>
 public async Task<string> ExecuteAction(XBMCRPC.Input.Action action=0)
 {
     var jArgs = new JObject();
      if (action != null)
      {
          var jpropaction = JToken.FromObject(action, _client.Serializer);
          jArgs.Add(new JProperty("action", jpropaction));
      }
     return await _client.GetData<string>("Input.ExecuteAction", jArgs);
 }
예제 #13
0
         /// <summary>
         /// Retrieves the details of a specific channel group
         /// </summary>
 public async Task<XBMCRPC.PVR.GetChannelGroupDetailsResponse> GetChannelGroupDetails(int channelgroupid, XBMCRPC.PVR.GetChannelGroupDetails_channels channels=null)
 {
     var jArgs = new JObject();
      if (channelgroupid != null)
      {
          var jpropchannelgroupid = JToken.FromObject(channelgroupid, _client.Serializer);
          jArgs.Add(new JProperty("channelgroupid", jpropchannelgroupid));
      }
      if (channels != null)
      {
          var jpropchannels = JToken.FromObject(channels, _client.Serializer);
          jArgs.Add(new JProperty("channels", jpropchannels));
      }
     return await _client.GetData<XBMCRPC.PVR.GetChannelGroupDetailsResponse>("PVR.GetChannelGroupDetails", jArgs);
 }
예제 #14
0
         /// <summary>
         /// Retrieves the details of a specific channel
         /// </summary>
 public async Task<XBMCRPC.PVR.GetChannelDetailsResponse> GetChannelDetails(int channelid=0, XBMCRPC.PVR.Fields.Channel properties=null)
 {
     var jArgs = new JObject();
      if (channelid != null)
      {
          var jpropchannelid = JToken.FromObject(channelid, _client.Serializer);
          jArgs.Add(new JProperty("channelid", jpropchannelid));
      }
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
     return await _client.GetData<XBMCRPC.PVR.GetChannelDetailsResponse>("PVR.GetChannelDetails", jArgs);
 }
예제 #15
0
         /// <summary>
         /// Go to previous/next/specific item in the playlist
         /// </summary>
 public async Task<string> GoTo(XBMCRPC.Player.GoTo_to1 to, int playerid=0)
 {
     var jArgs = new JObject();
      if (playerid != null)
      {
          var jpropplayerid = JToken.FromObject(playerid, _client.Serializer);
          jArgs.Add(new JProperty("playerid", jpropplayerid));
      }
      if (to != null)
      {
          var jpropto = JToken.FromObject(to, _client.Serializer);
          jArgs.Add(new JProperty("to", jpropto));
      }
     return await _client.GetData<string>("Player.GoTo", jArgs);
 }
예제 #16
0
         /// <summary>
         /// Retrieves the values of the given properties
         /// </summary>
 public async Task<XBMCRPC.Player.Property.Value> GetProperties(int playerid=0, XBMCRPC.Player.GetProperties_properties properties=null)
 {
     var jArgs = new JObject();
      if (playerid != null)
      {
          var jpropplayerid = JToken.FromObject(playerid, _client.Serializer);
          jArgs.Add(new JProperty("playerid", jpropplayerid));
      }
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
     return await _client.GetData<XBMCRPC.Player.Property.Value>("Player.GetProperties", jArgs);
 }
예제 #17
0
         /// <summary>
         /// Retrieves the currently played item
         /// </summary>
 public async Task<XBMCRPC.Player.GetItemResponse> GetItem(int playerid=0, XBMCRPC.List.Fields.All properties=null)
 {
     var jArgs = new JObject();
      if (playerid != null)
      {
          var jpropplayerid = JToken.FromObject(playerid, _client.Serializer);
          jArgs.Add(new JProperty("playerid", jpropplayerid));
      }
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
     return await _client.GetData<XBMCRPC.Player.GetItemResponse>("Player.GetItem", jArgs);
 }
예제 #18
0
         /// <summary>
         /// Retrieve details about a specific tv show episode
         /// </summary>
 public async Task<XBMCRPC.VideoLibrary.GetEpisodeDetailsResponse> GetEpisodeDetails(int episodeid=0, XBMCRPC.Video.Fields.Episode properties=null)
 {
     var jArgs = new JObject();
      if (episodeid != null)
      {
          var jpropepisodeid = JToken.FromObject(episodeid, _client.Serializer);
          jArgs.Add(new JProperty("episodeid", jpropepisodeid));
      }
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
     return await _client.GetData<XBMCRPC.VideoLibrary.GetEpisodeDetailsResponse>("VideoLibrary.GetEpisodeDetails", jArgs);
 }
예제 #19
0
         /// <summary>
         /// Activates the given window
         /// </summary>
 public async Task<string> ActivateWindow(XBMCRPC.GUI.Window window=0, global::System.Collections.Generic.List<string> parameters=null)
 {
     var jArgs = new JObject();
      if (window != null)
      {
          var jpropwindow = JToken.FromObject(window, _client.Serializer);
          jArgs.Add(new JProperty("window", jpropwindow));
      }
      if (parameters != null)
      {
          var jpropparameters = JToken.FromObject(parameters, _client.Serializer);
          jArgs.Add(new JProperty("parameters", jpropparameters));
      }
     return await _client.GetData<string>("GUI.ActivateWindow", jArgs);
 }
예제 #20
0
         /// <summary>
         /// Retrieve all favourites
         /// </summary>
 public async Task<XBMCRPC.Favourites.GetFavouritesResponse> GetFavourites(XBMCRPC.Favourite.Type type=0, XBMCRPC.Favourite.Fields.Favourite properties=null)
 {
     var jArgs = new JObject();
      if (type != null)
      {
          var jproptype = JToken.FromObject(type, _client.Serializer);
          jArgs.Add(new JProperty("type", jproptype));
      }
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
     return await _client.GetData<XBMCRPC.Favourites.GetFavouritesResponse>("Favourites.GetFavourites", jArgs);
 }
예제 #21
0
         /// <summary>
         /// Retrieve details about a specific album
         /// </summary>
 public async Task<XBMCRPC.AudioLibrary.GetAlbumDetailsResponse> GetAlbumDetails(int albumid=0, XBMCRPC.Audio.Fields.Album properties=null)
 {
     var jArgs = new JObject();
      if (albumid != null)
      {
          var jpropalbumid = JToken.FromObject(albumid, _client.Serializer);
          jArgs.Add(new JProperty("albumid", jpropalbumid));
      }
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
     return await _client.GetData<XBMCRPC.AudioLibrary.GetAlbumDetailsResponse>("AudioLibrary.GetAlbumDetails", jArgs);
 }
예제 #22
0
         /// <summary>
         /// Add item(s) to playlist
         /// </summary>
 public async Task<string> Add(XBMCRPC.Playlist.ItemEpisodeid item, int playlistid=0)
 {
     var jArgs = new JObject();
      if (playlistid != null)
      {
          var jpropplaylistid = JToken.FromObject(playlistid, _client.Serializer);
          jArgs.Add(new JProperty("playlistid", jpropplaylistid));
      }
      if (item != null)
      {
          var jpropitem = JToken.FromObject(item, _client.Serializer);
          jArgs.Add(new JProperty("item", jpropitem));
      }
     return await _client.GetData<string>("Playlist.Add", jArgs);
 }
예제 #23
0
         /// <summary>
         /// Retrieves all settings
         /// </summary>
 public async Task<XBMCRPC.Settings.GetSettingsResponse> GetSettings(XBMCRPC.Settings.GetSettings_filter1 filter, XBMCRPC.Setting.Level level=0)
 {
     var jArgs = new JObject();
      if (level != null)
      {
          var jproplevel = JToken.FromObject(level, _client.Serializer);
          jArgs.Add(new JProperty("level", jproplevel));
      }
      if (filter != null)
      {
          var jpropfilter = JToken.FromObject(filter, _client.Serializer);
          jArgs.Add(new JProperty("filter", jpropfilter));
      }
     return await _client.GetData<XBMCRPC.Settings.GetSettingsResponse>("Settings.GetSettings", jArgs);
 }
예제 #24
0
         /// <summary>
         /// Retrieves all setting sections
         /// </summary>
 public async Task<XBMCRPC.Settings.GetSectionsResponse> GetSections(XBMCRPC.Setting.Level level=0, XBMCRPC.Settings.GetSections_properties properties=null)
 {
     var jArgs = new JObject();
      if (level != null)
      {
          var jproplevel = JToken.FromObject(level, _client.Serializer);
          jArgs.Add(new JProperty("level", jproplevel));
      }
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
     return await _client.GetData<XBMCRPC.Settings.GetSectionsResponse>("Settings.GetSections", jArgs);
 }
예제 #25
0
         /// <summary>
         /// Retrieve all profiles
         /// </summary>
 public async Task<XBMCRPC.Profiles.GetProfilesResponse> GetProfiles(XBMCRPC.Profiles.Fields.Profile properties=null, XBMCRPC.List.Limits limits=null, XBMCRPC.List.Sort sort=null)
 {
     var jArgs = new JObject();
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
      if (limits != null)
      {
          var jproplimits = JToken.FromObject(limits, _client.Serializer);
          jArgs.Add(new JProperty("limits", jproplimits));
      }
      if (sort != null)
      {
          var jpropsort = JToken.FromObject(sort, _client.Serializer);
          jArgs.Add(new JProperty("sort", jpropsort));
      }
     return await _client.GetData<XBMCRPC.Profiles.GetProfilesResponse>("Profiles.GetProfiles", jArgs);
 }
예제 #26
0
         /// <summary>
         /// Load the specified profile
         /// </summary>
 public async Task<string> LoadProfile(string profile=null, bool prompt=false, XBMCRPC.Profiles.Password password=null)
 {
     var jArgs = new JObject();
      if (profile != null)
      {
          var jpropprofile = JToken.FromObject(profile, _client.Serializer);
          jArgs.Add(new JProperty("profile", jpropprofile));
      }
      if (prompt != null)
      {
          var jpropprompt = JToken.FromObject(prompt, _client.Serializer);
          jArgs.Add(new JProperty("prompt", jpropprompt));
      }
      if (password != null)
      {
          var jproppassword = JToken.FromObject(password, _client.Serializer);
          jArgs.Add(new JProperty("password", jproppassword));
      }
     return await _client.GetData<string>("Profiles.LoadProfile", jArgs);
 }
예제 #27
0
         /// <summary>
         /// Retrieves the program of a specific channel
         /// </summary>
 public async Task<XBMCRPC.PVR.GetBroadcastsResponse> GetBroadcasts(int channelid=0, XBMCRPC.PVR.Fields.Broadcast properties=null, XBMCRPC.List.Limits limits=null)
 {
     var jArgs = new JObject();
      if (channelid != null)
      {
          var jpropchannelid = JToken.FromObject(channelid, _client.Serializer);
          jArgs.Add(new JProperty("channelid", jpropchannelid));
      }
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
      if (limits != null)
      {
          var jproplimits = JToken.FromObject(limits, _client.Serializer);
          jArgs.Add(new JProperty("limits", jproplimits));
      }
     return await _client.GetData<XBMCRPC.PVR.GetBroadcastsResponse>("PVR.GetBroadcasts", jArgs);
 }
예제 #28
0
         /// <summary>
         /// Get the sources of the media windows
         /// </summary>
 public async Task<XBMCRPC.Files.GetSourcesResponse> GetSources(XBMCRPC.Files.Media media=0, XBMCRPC.List.Limits limits=null, XBMCRPC.List.Sort sort=null)
 {
     var jArgs = new JObject();
      if (media != null)
      {
          var jpropmedia = JToken.FromObject(media, _client.Serializer);
          jArgs.Add(new JProperty("media", jpropmedia));
      }
      if (limits != null)
      {
          var jproplimits = JToken.FromObject(limits, _client.Serializer);
          jArgs.Add(new JProperty("limits", jproplimits));
      }
      if (sort != null)
      {
          var jpropsort = JToken.FromObject(sort, _client.Serializer);
          jArgs.Add(new JProperty("sort", jpropsort));
      }
     return await _client.GetData<XBMCRPC.Files.GetSourcesResponse>("Files.GetSources", jArgs);
 }
예제 #29
0
         /// <summary>
         /// Get details for a specific file
         /// </summary>
 public async Task<XBMCRPC.Files.GetFileDetailsResponse> GetFileDetails(string file=null, XBMCRPC.Files.Media media=0, XBMCRPC.List.Fields.Files properties=null)
 {
     var jArgs = new JObject();
      if (file != null)
      {
          var jpropfile = JToken.FromObject(file, _client.Serializer);
          jArgs.Add(new JProperty("file", jpropfile));
      }
      if (media != null)
      {
          var jpropmedia = JToken.FromObject(media, _client.Serializer);
          jArgs.Add(new JProperty("media", jpropmedia));
      }
      if (properties != null)
      {
          var jpropproperties = JToken.FromObject(properties, _client.Serializer);
          jArgs.Add(new JProperty("properties", jpropproperties));
      }
     return await _client.GetData<XBMCRPC.Files.GetFileDetailsResponse>("Files.GetFileDetails", jArgs);
 }
예제 #30
0
         /// <summary>
         /// Executes the given addon with the given parameters (if possible)
         /// </summary>
 public async Task<string> ExecuteAddon(XBMCRPC.Addons.ExecuteAddon_params1 params_arg, string addonid=null, bool wait=false)
 {
     var jArgs = new JObject();
      if (addonid != null)
      {
          var jpropaddonid = JToken.FromObject(addonid, _client.Serializer);
          jArgs.Add(new JProperty("addonid", jpropaddonid));
      }
      if (params_arg != null)
      {
          var jpropparams_arg = JToken.FromObject(params_arg, _client.Serializer);
          jArgs.Add(new JProperty("params_arg", jpropparams_arg));
      }
      if (wait != null)
      {
          var jpropwait = JToken.FromObject(wait, _client.Serializer);
          jArgs.Add(new JProperty("wait", jpropwait));
      }
     return await _client.GetData<string>("Addons.ExecuteAddon", jArgs);
 }