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 } }
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); }
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()); }
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); } }