/// <summary> /// Parses an RSS feed and returns a <see cref="IList&lt;Item&gt;"/>. /// </summary> private List <Article> ParseRss(XDocument doc, out string title, out string description) { title = ""; description = ""; try { //XDocument doc = XDocument.Load(url); // RSS/Channel/item var root = doc.Root.Descendants().First(i => i.Name.LocalName == "channel"); //.Elements() .First(i => i.Name.LocalName == "description").Value; title = root.Elements().First(i => i.Name.LocalName == "title").Value; description = root.Elements().First(i => i.Name.LocalName == "description").Value; var entries = from item in root.Elements().Where(i => i.Name.LocalName == "item") select new Article { Content = item.Elements().First(i => i.Name.LocalName == "description").Value, Url = item.Elements().First(i => i.Name.LocalName == "link").Value, PublishedDate = ParseDate(item.Elements().First(i => i.Name.LocalName == "pubDate").Value), Title = item.Elements().First(i => i.Name.LocalName == "title").Value, Summary = WebBrowserHelper.GetSummary(item.Elements().First(i => i.Name.LocalName == "description").Value), //Author = WebBrowserHelper.GetSummary(item.Elements().First(i => i.Name.LocalName == "creator").Value), Author = "", Read = false, Starred = false, FeedProviderName = "NewsBlur", OpenMode = ArticleOpenMode.UseContent, Image = WebBrowserHelper.ExtractFirstImageFromHTML(item.Elements().First(i => i.Name.LocalName == "description").Value), }; return(entries.ToList()); } catch (Exception e) { return(new List <Article>()); } }
/// <summary> /// Parses an RDF feed and returns a <see cref="IList&lt;Item&gt;"/>. /// </summary> private List <Article> ParseRdf(XDocument doc, out string title, out string description) { title = ""; description = ""; try { //XDocument doc = XDocument.Load(url); // <item> is under the root var entries = from item in doc.Root.Descendants().Where(i => i.Name.LocalName == "item") select new Article { Content = item.Elements().First(i => i.Name.LocalName == "description").Value, FeedUrl = item.Elements().First(i => i.Name.LocalName == "link").Value, PublishedDate = ParseDate(item.Elements().First(i => i.Name.LocalName == "date").Value), Title = item.Elements().First(i => i.Name.LocalName == "title").Value, Summary = WebBrowserHelper.GetSummary(item.Elements().First(i => i.Name.LocalName == "description").Value), Image = WebBrowserHelper.ExtractFirstImageFromHTML(item.Elements().First(i => i.Name.LocalName == "description").Value), OpenMode = ArticleOpenMode.UseContent, }; return(entries.ToList()); } catch { return(new List <Article>()); } }
/// <summary> /// Parses an Atom feed and returns a <see cref="IList&lt;Item&gt;"/>. /// </summary> private List <Article> ParseAtom(XDocument doc, out string title, out string description) { title = doc.Root.Elements().First(i => i.Name.LocalName == "title").Value; try { description = doc.Root.Elements().First(i => i.Name.LocalName == "subtitle").Value; } catch { description = ""; } try { var entries = from item in doc.Root.Elements().Where(i => i.Name.LocalName == "entry") select new Article { Content = item.Elements().First(i => i.Name.LocalName == "content").Value, Url = item.Elements().First(i => i.Name.LocalName == "link").Attribute("href").Value, PublishedDate = ParseDate(item.Elements().First(i => i.Name.LocalName == "published").Value), Title = item.Elements().First(i => i.Name.LocalName == "title").Value, Summary = WebBrowserHelper.GetSummary(item.Elements().First(i => i.Name.LocalName == "content").Value), CrawlTime = DateTime.ParseExact("01/01/1970", "dd/MM/yyyy", CultureInfo.InvariantCulture), Author = item.Elements().First(i => i.Name.LocalName == "author").Elements().First(i => i.Name.LocalName == "name").Value, Read = false, Starred = false, FeedProviderName = "NewsBlur", OpenMode = ArticleOpenMode.UseContent, Image = WebBrowserHelper.ExtractFirstImageFromHTML(item.Elements().First(i => i.Name.LocalName == "content").Value), }; return(entries.ToList()); } catch { return(new List <Article>()); } }