/// <summary>
 /// Gibt eine Liste mit EPG-Einträge zurück, welche den Suchtext enthalten.
 /// Returns a list of EPG entries containing the search text.
 /// </summary>
 /// <param name="searchText"></param>
 /// <param name="channelItem"></param>
 /// <param name="fromDate"></param>
 /// <param name="toDate"></param>
 /// <param name="searchOptions">Optional: Default is T (Title) and S (Subtitle)</param>
 /// <returns></returns>
 public static Task <EpgList> GetEpgListAsync(string searchText, ChannelItem channelItem, DateTime fromDate, DateTime toDate, Enums.EpgSearchOptions searchOptions = Enums.EpgSearchOptions.T | Enums.EpgSearchOptions.S)
 {
     return(GetEpgListAsync(new List <Helper.UriParameter>
     {
         new Helper.UriParameter("channel", $"{channelItem.EpgChannelID}"),
         new Helper.UriParameter("start", fromDate.ToOADate().ToString()),
         new Helper.UriParameter("end", toDate.ToOADate().ToString()),
         new Helper.UriParameter("search", searchText),
         new Helper.UriParameter("options", searchOptions.ToString("F").Replace(",", "").Replace(" ", "").Trim())
     }));
 }
        /// <summary>
        /// Spiel einen Kanal auf dem DVBViewer ab. Plays a channel on the DVBViewer.
        /// </summary>
        /// <param name="channelItem"></param>
        /// <returns></returns>
        public Task <HttpStatusCode> PlayChannelAsync(ChannelItem channelItem)
        {
            var dvbApi = DVBViewerServerApi.GetCurrentInstance();

            if (dvbApi != null)
            {
                return(dvbApi.SendApiDataAsync("dvbcommand", new List <Helper.UriParameter>
                {
                    new Helper.UriParameter("target", Name),
                    new Helper.UriParameter("cmd", $"-c:{channelItem.ChannelID}")
                }));
            }
            else
            {
                return(Task.FromResult <HttpStatusCode>(0));
            }
        }
 /// <summary>
 /// Spiel einen Kanal auf dem DVBViewer ab. Plays a channel on the DVBViewer.
 /// </summary>
 /// <param name="channelItem"></param>
 /// <returns></returns>
 public HttpStatusCode PlayChannel(ChannelItem channelItem)
 {
     return(PlayChannelAsync(channelItem).Result);
 }
 /// <summary>
 /// Gibt das komplette verfügbare EPG eines Senders zurück.
 /// Returns the complete available EPG of a channel.
 /// </summary>
 /// <param name="channelItem"></param>
 /// <returns></returns>
 public static EpgList GetEpgList(ChannelItem channelItem)
 {
     return(GetEpgListAsync(channelItem).Result);
 }
 /// <summary>
 /// Gibt eine EPGListe zurück, welche der Sender zur aktuellen Zeit aussendet. Dies beinhaltet nur 1 EPG Item.
 /// Returns an EPG list, which send the channel at the current time. This inherits 1 EPG Item.
 /// </summary>
 /// <param name="channelItem"></param>
 /// <returns></returns>
 public static Task <EpgList> GetEpgListNowAsync(ChannelItem channelItem)
 {
     return(GetEpgListAsync(channelItem, DateTime.Now, DateTime.Now + TimeSpan.FromMinutes(1.0)));
 }
 /// <summary>
 /// Gibt eine Liste mit EPG-Einträge zurück, welche den Suchtext enthalten.
 /// Returns a list of EPG entries containing the search text.
 /// </summary>
 /// <param name="searchText"></param>
 /// <param name="channelItem"></param>
 /// <param name="fromDate"></param>
 /// <param name="toDate"></param>
 /// <param name="searchOptions">Optional: Default is T (Title) and S (Subtitle)</param>
 /// <returns></returns>
 public static EpgList GetEpgList(string searchText, ChannelItem channelItem, DateTime fromDate, DateTime toDate, Enums.EpgSearchOptions searchOptions = Enums.EpgSearchOptions.T | Enums.EpgSearchOptions.S)
 {
     return(GetEpgListAsync(searchText, channelItem, fromDate, toDate, searchOptions).Result);
 }
 /// <summary>
 /// Gibt das komplette EPG eines Kanals in einem bestimmten Zeitraum zurück.
 /// Returns the complete EPG of a channel in a given time period.
 /// </summary>
 /// <param name="channelItem"></param>
 /// <param name="fromDate"></param>
 /// <param name="toDate"></param>
 /// <returns></returns>
 public static EpgList GetEpgList(ChannelItem channelItem, DateTime fromDate, DateTime toDate)
 {
     return(GetEpgListAsync(channelItem, fromDate, toDate).Result);
 }
 /// <summary>
 /// Gibt das EPG ab einem bestimmten Zeitpunkt eines Kanals zurück.
 /// Returns the EPG at a specific time of a channel.
 /// </summary>
 /// <param name="channelItem"></param>
 /// <param name="currentTime"></param>
 /// <returns></returns>
 public static EpgList GetEpgList(ChannelItem channelItem, DateTime currentTime)
 {
     return(GetEpgListAsync(channelItem, currentTime).Result);
 }