Esempio n. 1
0
        public async Task <T> GetFromApi <T>(ConnectionInfo connectionInfo, XtreamApiEnum xtreamApiEnum, CancellationToken cancellationToken, params string[] extraParams)
        {
            var jsonContent = await _client.GetStringAsync(new Uri(GetApiUrl(connectionInfo, xtreamApiEnum, extraParams)));

            cancellationToken.ThrowIfCancellationRequested();

            jsonContent = TrimJsonAndConvertChannelsToArray(jsonContent);
            return(JsonConvert.DeserializeObject <T>(jsonContent));
        }
Esempio n. 2
0
        internal async Task <T> GetFromApi <T>(string playlistUrl, XtreamApiEnum xtreamApiEnum, CancellationToken cancellationToken, params string[] extraParams)
        {
            using (var client = new HttpClient())
            {
                var json = await client.GetStringAsync(new Uri(GetApiUrl(playlistUrl, xtreamApiEnum, extraParams)));

                cancellationToken.ThrowIfCancellationRequested();
                return(JsonConvert.DeserializeObject <T>(json));
            }
        }
Esempio n. 3
0
        //TODO: API Builder

        protected virtual string GetApiUrl(ConnectionInfo connectionInfo, XtreamApiEnum xtreamApiEnum, params string[] extraParams)
        {
            var urlBuilder = new StringBuilder();

            urlBuilder.Append($"{connectionInfo.Server}");

            switch (xtreamApiEnum)
            {
            case XtreamApiEnum.Player_Api:
                urlBuilder.Append($"/player_api.php?username={connectionInfo.UserName}&password={connectionInfo.Password}");
                return(urlBuilder.ToString());

            case XtreamApiEnum.LiveCategories:
                urlBuilder.Append($"/player_api.php?username={connectionInfo.UserName}&password={connectionInfo.Password}&action=get_live_categories");
                return(urlBuilder.ToString());

            case XtreamApiEnum.LiveStreams:
                urlBuilder.Append($"/player_api.php?username={connectionInfo.UserName}&password={connectionInfo.Password}&action=get_live_streams");
                return(urlBuilder.ToString());

            case XtreamApiEnum.LiveStreamsByCategories:
                urlBuilder.Append($"/player_api.php?username={connectionInfo.UserName}&password={connectionInfo.Password}&action=get_live_streams&category_id={extraParams[0]}");
                return(urlBuilder.ToString());

            case XtreamApiEnum.Panel_Api:
                urlBuilder.Append($"/panel_api.php?username={connectionInfo.UserName}&password={connectionInfo.Password}");
                return(urlBuilder.ToString());

            case XtreamApiEnum.VOD_Streams:
                urlBuilder.Append($"/player_api.php?username={connectionInfo.UserName}&password={connectionInfo.Password}&action=get_vod_streams");
                return(urlBuilder.ToString());

            case XtreamApiEnum.ShortEpgForStream:
                urlBuilder.Append($"/player_api.php?username={connectionInfo.UserName}&password={connectionInfo.Password}&action=get_short_epg&stream_id={extraParams[0]}");
                return(urlBuilder.ToString());

            case XtreamApiEnum.AllEpg:
                urlBuilder.Append($"/player_api.php?username={connectionInfo.UserName}&password={connectionInfo.Password}&action=get_simple_data_table");
                return(urlBuilder.ToString());

            case XtreamApiEnum.Xmltv:
                urlBuilder.Append($"/xmltv.php?username={connectionInfo.UserName}&password={connectionInfo.Password}");
                return(urlBuilder.ToString());

            default:
                return(string.Empty);
            }
        }
Esempio n. 4
0
        internal string GetApiUrl(string playlistUrl, XtreamApiEnum xtreamApiEnum, params string[] extraParams)
        {
            var reg = new Regex(XtreamUrlPattern, RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase).Match(playlistUrl);

            if (reg.Success)
            {
                switch (xtreamApiEnum)
                {
                case XtreamApiEnum.Player_Api:
                    return($"{reg.Groups["portocol"]}://{reg.Groups["host"]}:{reg.Groups["port"]}/player_api.php?username={reg.Groups["username"]}&password={reg.Groups["password"]}");

                case XtreamApiEnum.LiveCategories:
                    return($"{reg.Groups["portocol"]}://{reg.Groups["host"]}:{reg.Groups["port"]}/player_api.php?username={reg.Groups["username"]}&password={reg.Groups["password"]}&action=get_live_categories");

                case XtreamApiEnum.LiveStreams:
                    return($"{reg.Groups["portocol"]}://{reg.Groups["host"]}:{reg.Groups["port"]}/player_api.php?username={reg.Groups["username"]}&password={reg.Groups["password"]}&action=get_live_streams");

                case XtreamApiEnum.LiveStreamsByCategories:
                    return($"{reg.Groups["portocol"]}://{reg.Groups["host"]}:{reg.Groups["port"]}/player_api.php?username={reg.Groups["username"]}&password={reg.Groups["password"]}&action=get_live_streams&category_id={extraParams[0]}");

                case XtreamApiEnum.Panel_Api:
                    return($"{reg.Groups["portocol"]}://{reg.Groups["host"]}:{reg.Groups["port"]}/panel_api.php?username={reg.Groups["username"]}&password={reg.Groups["password"]}");

                case XtreamApiEnum.VOD_Streams:
                    return($"{reg.Groups["portocol"]}://{reg.Groups["host"]}:{reg.Groups["port"]}/player_api.php?username={reg.Groups["username"]}&password={reg.Groups["password"]}&action=get_vod_streams");

                case XtreamApiEnum.ShortEpgForStream:
                    return($"{reg.Groups["portocol"]}://{reg.Groups["host"]}:{reg.Groups["port"]}/player_api.php?username={reg.Groups["username"]}&password={reg.Groups["password"]}&action=get_short_epg&stream_id={extraParams[0]}");

                case XtreamApiEnum.AllEpg:
                    return($"{reg.Groups["portocol"]}://{reg.Groups["host"]}:{reg.Groups["port"]}/player_api.php?username={reg.Groups["username"]}&password={reg.Groups["password"]}&action=get_simple_data_table&stream_id={extraParams[0]}");

                case XtreamApiEnum.Xmltv:
                    return($"{reg.Groups["portocol"]}://{reg.Groups["host"]}:{reg.Groups["port"]}/xmltv.php?username={reg.Groups["username"]}&password={reg.Groups["password"]}");

                default:
                    return(string.Empty);
                }
            }
            else
            {
                throw new ApplicationException("Xtream playlist format not valid");
            }
        }