public List <SimpleFeedlyFeedItem> GetItems(string feedUrl, out Exception error) { Exception currentEx = null; List <SimpleFeedlyFeedItem> items = new List <SimpleFeedlyFeedItem>(); try { var feed = CodeHollow.FeedReader.FeedReader.ReadAsync(feedUrl).GetAwaiter().GetResult(); foreach (var item in feed.Items) { var feedItem = new SimpleFeedlyFeedItem { Id = item.Id, Title = string.IsNullOrWhiteSpace(item.Title) ? item.Link : item.Title, Link = item.Link, Description = item.Description, PublishingDate = item.PublishingDate ?? DateTime.Now, Author = item.Author, Content = item.Content }; items.Add(feedItem); } } catch (Exception ex) { currentEx = ex; } error = currentEx; return(items); }
private static string GenerateFeedItemKey(SimpleFeedlyFeedItem item) { if (string.IsNullOrWhiteSpace(item.Id)) { if (string.IsNullOrWhiteSpace(item.Link)) { return(null); } else { return(item.Link); } } else { return(item.Id); } }
public List <SimpleFeedlyFeedItem> GetItems(string feedUrl, out Exception error) { Exception currentEx = null; List <SimpleFeedlyFeedItem> items = new List <SimpleFeedlyFeedItem>(); XmlReaderSettings settings = new XmlReaderSettings(); settings.DtdProcessing = DtdProcessing.Parse; try { using (var reader = XmlReader.Create(feedUrl, settings)) { var feed = System.ServiceModel.Syndication.SyndicationFeed.Load(reader); reader.Close(); foreach (System.ServiceModel.Syndication.SyndicationItem item in feed.Items) { var feedItem = new SimpleFeedlyFeedItem(); var link = item.Links.FirstOrDefault()?.Uri.ToString(); link = string.IsNullOrWhiteSpace(link) ? item.Id : link; feedItem.Id = item.Id; feedItem.Title = string.IsNullOrWhiteSpace(item.Title?.Text) ? link : item.Title.Text; feedItem.Link = link; feedItem.Description = item.Summary?.Text; feedItem.PublishingDate = item.PublishDate.UtcDateTime; feedItem.Author = item.Authors.FirstOrDefault()?.Name ?? string.Empty; feedItem.Content = item.Content?.ToString(); //feedItem.XmlData = item.GetRss20Formatter().ToString(); items.Add(feedItem); } } } catch (Exception ex) { currentEx = ex; } error = currentEx; return(items); }
public List <SimpleFeedlyFeedItem> GetItems(string feedUrl, out Exception error) { Exception currentEx = null; List <SimpleFeedlyFeedItem> items = new List <SimpleFeedlyFeedItem>(); try { var xmlString = string.Empty; using (WebClient client = new WebClient()) { var htmlData = client.DownloadData(feedUrl); xmlString = System.Text.Encoding.UTF8.GetString(htmlData); // ReplaceHexadecimalSymbols string r = "[\x00-\x08\x0B\x0C\x0E-\x1F\x26]"; xmlString = Regex.Replace(xmlString, r, "", RegexOptions.Compiled); } XmlDocument rssXmlDoc = new XmlDocument(); rssXmlDoc.LoadXml(xmlString); // Parse the Items in the RSS file XmlNodeList rssNodes = rssXmlDoc.SelectNodes("rss/channel/item"); var namespaceManager = new XmlNamespaceManager(rssXmlDoc.NameTable); var contentNamespace = rssXmlDoc.DocumentElement.GetAttribute("xmlns:content"); namespaceManager.AddNamespace("content", contentNamespace); // Iterate through the items in the RSS file foreach (XmlNode rssNode in rssNodes) { var feedItem = new SimpleFeedlyFeedItem(); XmlNode rssSubNode = rssNode.SelectSingleNode("link"); feedItem.Link = rssSubNode != null ? rssSubNode.InnerText : null; rssSubNode = rssNode.SelectSingleNode("title"); feedItem.Title = rssSubNode != null ? rssSubNode.InnerText : null; feedItem.Title = string.IsNullOrWhiteSpace(feedItem.Title) ? feedItem.Link : feedItem.Title; rssSubNode = rssNode.SelectSingleNode("description"); feedItem.Description = rssSubNode != null ? rssSubNode.InnerText : null; rssSubNode = rssNode.SelectSingleNode("//content:encoded", namespaceManager); feedItem.Content = rssSubNode != null ? rssSubNode.InnerText : null; rssSubNode = rssNode.SelectSingleNode("pubDate"); DateTime pubDate = DateTime.Now; if (rssSubNode != null) { if (DateTime.TryParse(rssSubNode.InnerText, out DateTime tmpDate)) { pubDate = tmpDate; } } feedItem.PublishingDate = pubDate; //feedItem.XmlData = rssNode.InnerXml.ToString(); if (!string.IsNullOrWhiteSpace(feedItem.Link)) { items.Add(feedItem); } } } catch (Exception ex) { currentEx = ex; } error = currentEx; return(items); }