Beispiel #1
0
 /// <summary>
 /// Parses an RSS feed and returns a <see cref="IList&amp;lt;Item&amp;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>());
     }
 }
Beispiel #2
0
 /// <summary>
 /// Parses an RDF feed and returns a <see cref="IList&amp;lt;Item&amp;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>());
     }
 }
Beispiel #3
0
 /// <summary>
 /// Parses an Atom feed and returns a <see cref="IList&amp;lt;Item&amp;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>());
     }
 }