Ejemplo n.º 1
0
        public async Task <IEnumerable <MediaSourceInfo> > GetChannelItemMediaInfo(string id, CancellationToken cancellationToken)
        {
            var channelID = id.Split('_');
            var items     = new List <MediaSourceInfo>();

            using (var outerResponse = await _httpClient.SendAsync(new HttpRequestOptions
            {
                Url = channelID[1] + "&formats=mp3,aac",
                CancellationToken = cancellationToken
            }, "GET").ConfigureAwait(false))
            {
                using (var site = outerResponse.Content)
                {
                    using (var reader = new StreamReader(site))
                    {
                        while (!reader.EndOfStream)
                        {
                            var url = await reader.ReadLineAsync().ConfigureAwait(false);

                            _logger.Debug("FILE NAME : " + url.Split('/').Last().Split('?').First());

                            var ext = Path.GetExtension(url.Split('/').Last().Split('?').First());

                            _logger.Debug("URL : " + url);
                            if (!string.IsNullOrEmpty(ext))
                            {
                                _logger.Debug("Extension : " + ext);
                                if (string.Equals(ext, ".pls", StringComparison.OrdinalIgnoreCase))
                                {
                                    try
                                    {
                                        using (var response = await _httpClient.SendAsync(new HttpRequestOptions
                                        {
                                            Url = url,
                                            CancellationToken = cancellationToken
                                        }, "GET").ConfigureAwait(false))
                                        {
                                            using (var value = response.Content)
                                            {
                                                var parser = new IniParser(value);
                                                var count  = Convert.ToInt16(parser.GetSetting("playlist", "NumberOfEntries"));
                                                _logger.Debug("COUNT : " + count);
                                                for (var i = 0; i < count; i++)
                                                {
                                                    var file = parser.GetSetting("playlist", "File" + count);
                                                    _logger.Debug("FILE : " + count + " - " + file);

                                                    items.Add(new ChannelMediaInfo
                                                    {
                                                        Path = file.ToLower()
                                                    }.ToMediaSource());
                                                }
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        _logger.Error(ex.ToString());
                                    }
                                }
                                else if (string.Equals(ext, ".m3u", StringComparison.OrdinalIgnoreCase))
                                {
                                    try
                                    {
                                        using (var response = await _httpClient.SendAsync(new HttpRequestOptions
                                        {
                                            Url = url,
                                            CancellationToken = cancellationToken
                                        }, "GET").ConfigureAwait(false))
                                        {
                                            using (var value = response.Content)
                                            {
                                                using (var reader2 = new StreamReader(value))
                                                {
                                                    while (!reader2.EndOfStream)
                                                    {
                                                        var url2 = await reader2.ReadLineAsync().ConfigureAwait(false);

                                                        items.Add(new ChannelMediaInfo
                                                        {
                                                            Path = url2
                                                        }.ToMediaSource());
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        _logger.Error(ex.ToString());
                                    }
                                }
                                else
                                {
                                    items.Add(GetMediaInfoFromUrl(url));
                                }
                            }
                            else
                            {
                                _logger.Debug("Normal URL");

                                items.Add(GetMediaInfoFromUrl(url));
                            }
                        }
                    }
                }
            }

            return(items);
        }
Ejemplo n.º 2
0
        public async Task <IEnumerable <ChannelMediaInfo> > GetChannelItemMediaInfo(string id,
                                                                                    CancellationToken cancellationToken)
        {
            var channelID = id.Split('_');
            var items     = new List <ChannelMediaInfo>();

            using (var site = await _httpClient.Get(channelID[1] + "&formats=mp3,aac", CancellationToken.None).ConfigureAwait(false))
            {
                using (var reader = new StreamReader(site))
                {
                    while (!reader.EndOfStream)
                    {
                        var url = reader.ReadLine();
                        _logger.Debug("FILE NAME : " + url.Split('/').Last().Split('?').First());

                        var ext = Path.GetExtension(url.Split('/').Last().Split('?').First());

                        _logger.Debug("URL : " + url);
                        if (!string.IsNullOrEmpty(ext))
                        {
                            _logger.Debug("Extension : " + ext);
                            if (ext == ".pls")
                            {
                                try
                                {
                                    using (var value = await _httpClient.Get(url, CancellationToken.None).ConfigureAwait(false))
                                    {
                                        var parser = new IniParser(value);
                                        var count  = Convert.ToInt16(parser.GetSetting("playlist", "NumberOfEntries"));
                                        _logger.Debug("COUNT : " + count);
                                        for (var i = 0; i < count; i++)
                                        {
                                            var file = parser.GetSetting("playlist", "File" + count);
                                            _logger.Debug("FILE : " + count + " - " + file);

                                            items.Add(new ChannelMediaInfo
                                            {
                                                Path = file.ToLower()
                                            });
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    _logger.Error(ex.ToString());
                                }
                            }
                            else if (ext == ".m3u")
                            {
                                try
                                {
                                    using (var value = await _httpClient.Get(url, CancellationToken.None).ConfigureAwait(false))
                                    {
                                        using (var reader2 = new StreamReader(value))
                                        {
                                            while (!reader2.EndOfStream)
                                            {
                                                var url2 = reader2.ReadLine();
                                                items.Add(new ChannelMediaInfo
                                                {
                                                    Path = url2
                                                });
                                            }
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    _logger.Error(ex.ToString());
                                }
                            }
                            else
                            {
                                items.Add(GetMediaInfoFromUrl(url));
                            }
                        }
                        else
                        {
                            _logger.Debug("Normal URL");

                            items.Add(GetMediaInfoFromUrl(url));
                        }
                    }
                }
            }

            return(items);
        }
Ejemplo n.º 3
0
        public async Task<IEnumerable<ChannelMediaInfo>> GetChannelItemMediaInfo(string id,
            CancellationToken cancellationToken)
        {
            var channelID = id.Split('_');
            var items = new List<ChannelMediaInfo>();

            using (var site = await _httpClient.Get(channelID[1] + "&formats=mp3,aac", CancellationToken.None).ConfigureAwait(false))
            {
                using (var reader = new StreamReader(site))
                {
                    while (!reader.EndOfStream)
                    {
                        var url = reader.ReadLine();
                        _logger.Debug("FILE NAME : " + url.Split('/').Last().Split('?').First());

                        var ext = Path.GetExtension(url.Split('/').Last().Split('?').First());

                        _logger.Debug("URL : " + url);
                        if (!string.IsNullOrEmpty(ext))
                        {
                            _logger.Debug("Extension : " + ext);
                            if (ext == ".pls")
                            {
                                try
                                {
                                    using (var value = await _httpClient.Get(url, CancellationToken.None).ConfigureAwait(false))
                                    {
                                        var parser = new IniParser(value);
                                        var count = Convert.ToInt16(parser.GetSetting("playlist", "NumberOfEntries"));
                                        _logger.Debug("COUNT : " + count);
                                        for (var i = 0; i < count; i++)
                                        {
                                            var file = parser.GetSetting("playlist", "File" + count);
                                            _logger.Debug("FILE : " + count + " - " + file);

                                            items.Add(new ChannelMediaInfo
                                            {
                                                Path = file.ToLower()
                                            });
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    _logger.Error(ex.ToString());
                                }
                            }
                            else if (ext == ".m3u")
                            {
                                try
                                {
                                    using (var value = await _httpClient.Get(url, CancellationToken.None).ConfigureAwait(false))
                                    {
                                        using (var reader2 = new StreamReader(value))
                                        {
                                            while (!reader2.EndOfStream)
                                            {
                                                var url2 = reader2.ReadLine();
                                                items.Add(new ChannelMediaInfo
                                                {
                                                    Path = url2
                                                });
                                            }
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    _logger.Error(ex.ToString());
                                }
                            }
                            else
                            {
                                items.Add(new ChannelMediaInfo
                                {
                                    Path = url
                                });
                            }
                        }
                        else
                        {
                            _logger.Debug("Normal URL");

                            items.Add(new ChannelMediaInfo
                            {
                                Path = url
                            });
                        }
                    }
                }
            }

            return items;
        }