Ejemplo n.º 1
0
        public async Task RefreshAsync(bool notify, bool checkDownloads, bool forceRefresh)
        {
            try
            {
                foreach (var episode in Episodes)
                {
                    if (episode.IsAlreadyDownloaded || episode.DownloadInProgress)
                    {
                        if (episode.IsPlayed && LocalSettings.Instance.DeleteDownloadWhenPlayed)
                        {
                            episode.DeleteDownload(true);
                        }

                        if (episode.DownloadedDate.HasValue && DateTime.Now.Subtract(episode.DownloadedDate.Value).TotalDays >= LocalSettings.Instance.DeleteEpisodesOlderThan)
                        {
                            episode.DeleteDownload(true);
                        }
                    }
                }

                GetLocalImage();

                if (!NetworkHelper.Instance.ConnectionInformation.IsInternetAvailable)
                {
                    if (checkDownloads)
                    {
                        CheckForAutomaticDownloads();
                    }
                    return;
                }

                if (!forceRefresh && !LocalSettings.Instance.Metered && NetworkHelper.Instance.ConnectionInformation.IsInternetOnMeteredConnection)
                {
                    return;
                }

                var data = await CoreTools.DownloadStringAsync(FeedUrl, true, Login, Password);

                var document = new Windows.Data.Xml.Dom.XmlDocument();

                try
                {
                    data = data.Replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "");
                    document.LoadXml(data);
                }
                catch
                {
                    data = await CoreTools.DownloadStringAsync(FeedUrl, false, Login, Password);

                    document.LoadXml(data);
                }

                await ParseAsync(document, notify, checkDownloads);
            }
            catch
            {
                // Ignore error
            }
        }
Ejemplo n.º 2
0
        public static async Task <SearchResponseEntry[]> SearchAsync(string keywords, string country = "US", int limit = 50)
        {
            keywords = keywords.Replace(" ", "+");

            var responseString = await CoreTools.DownloadStringAsync($"https://itunes.apple.com/search?term={keywords}&media=podcast&country={country}&limit={limit}");

            var response = JsonConvert.DeserializeObject <SearchResponse>(responseString);

            return(response.results);
        }
Ejemplo n.º 3
0
        public static async Task <SearchResponseEntry[]> SearchAsync(string keywords, string country = "US", int limit = 50)
        {
            keywords = keywords.Replace(" ", "+");

            var responseString = await CoreTools.DownloadStringAsync($"https://itunes.apple.com/search?term={keywords}&media=podcast&country={country}&limit={limit}");

            var response = JsonConvert.DeserializeObject <SearchResponse>(responseString);

            // Remove podcasts without feed url from search results.
            return(response.results.Where(r => !String.IsNullOrEmpty(r.feedUrl)).ToArray());
        }
Ejemplo n.º 4
0
        public static async Task <Podcast> ParseAsync(string url, bool checkDownloads, string login = null, string password = null)
        {
            try
            {
                var data = await CoreTools.DownloadStringAsync(url, true, login, password);

                var document = new Windows.Data.Xml.Dom.XmlDocument();

                try
                {
                    document.LoadXml(data);
                }
                catch
                {
                    data = await CoreTools.DownloadStringAsync(url, false, login, password);

                    document.LoadXml(data);
                }

                var channel = document.GetElementsByTagName("channel")[0] as Windows.Data.Xml.Dom.XmlElement;

                var result = new Podcast
                {
                    Title       = channel.GetChildNodeTextValue("title", "").Sanitize(),
                    Description = channel.GetChildNodeTextValue("description", "").Sanitize(),
                    Link        = channel.GetChildNodeTextValue("link", ""),
                    Image       = channel.GetChildNodeAttribute("itunes:image", "href", ""),
                    FeedUrl     = url,
                    Login       = login,
                    Password    = password
                };

                if (string.IsNullOrEmpty(result.Image))
                {
                    result.LocalImage = "ms-appx:///Assets/IconFull.png";
                }

                if (string.IsNullOrEmpty(result.Description))
                {
                    result.Description = channel.GetChildNodeTextValue("itunes:summary", "").Sanitize();
                }

                await result.ParseAsync(document, false, checkDownloads);

                result.ReOrder();

                return(result);
            }
            catch
            {
                return(null);
            }
        }