Пример #1
0
 public static NewsAnalysis ConvertItem(RssFeedItem newsItem)
 {
     return new NewsAnalysis
     {
         ID = newsItem.NewsItemID,
         TimeDate = newsItem.PubDate.ToString(),
         HeadLine = newsItem.Title
     };
 }
Пример #2
0
		public List<RssFeedItem> GetRssFeed(string rssUrl)
		{
			const int maxAttempts = 10;
			var attempt = 0;
			while (attempt++ < maxAttempts)
			{
				try
				{
					var rssFeed = XElement.Load(rssUrl);
					var items = new List<RssFeedItem>();

					foreach (var i in rssFeed.Element("channel").Elements("item"))
					{
						var description = ElementValue(i.Element("description").Value);
						var contentRaw = !String.IsNullOrWhiteSpace(description) ? description : ElementValue(i.Element("title").Value);
						var content = contentRaw.Trim().Replace("<pre>", String.Empty).Replace("</pre>", String.Empty);
						var itemId = ElementValue((i.Element("NewsItemID") ?? i.Element("guid")).Value);

						var r = new RssFeedItem();
						r.Publisher =
							ElementValue(
										 (i.Element("publisher") ??
										  i.Element("author") ?? 
                                          i.Element(XName.Get("provider", "http://www.fxstreet.com/syndicate/rss/namespaces/")) ?? 
                                          new XElement("EmptyElement", string.Empty))
											 .Value);

						var index = content.IndexOf("DJ Codes", StringComparison.Ordinal);

						if (index == -1)
						{
							r.Description = content;
						}
						else
						{
							try
							{
								r.Description = content.Remove(index);
							}
							catch (Exception)
							{
								r.Description = content;
							}
						}

						r.IsRead = false;
						r.PubDate = GetDateTime(ElementValue((i.Element("pubDateET") ?? i.Element("pubDate")).Value));
						r.Title = ElementValue(i.Element("title").Value).Trim();
						r.NewsItemID = (string.IsNullOrEmpty(itemId) ? content.MD5HashString() : itemId).Trim();

						items.Add(r);
					}

					return items;
				}
				catch (Exception exn)
				{
					_logger.Log(exn, "Exception occurs during parsing RSS: {0}", rssUrl);
					if (attempt >= maxAttempts)
					{
						return null;
					}
				}
			}

			return null;
		}