How to get all possible image URLs from an RSS feed item?

I am trying to use this example to get the URLs of images from http://www.nydailynews.com/cmlink/NYDN.Article.rss

but without success

Could you help me find all the correct ways to get all possible image URLs from an RSS feed element with the SyndicationItem class?

There is a design solution here , but I think it should be a more general solution.

Thanks!

  List<RssFeedItem> rssItems = new List<RssFeedItem>(); Stream stream = e.Result; XmlReader response = XmlReader.Create(stream); SyndicationFeed feeds = SyndicationFeed.Load(response); foreach (SyndicationItem f in feeds.Items) { RssFeedItem rssItem = new RssFeedItem(); rssItem.Description = f.Summary.Text; foreach (SyndicationLink enclosure in f.Links.Where<SyndicationLink>(x => x.RelationshipType == "enclosure")) { Uri url = enclosure.Uri; long length = enclosure.Length; string mediaType = enclosure.MediaType; rssItem.ImageLinks.Add(url.AbsolutePath); } } 
+3
source share
3 answers

I have found a solution.

 foreach (SyndicationElementExtension extension in f.ElementExtensions) { XElement element = extension.GetObject<XElement>(); if (element.HasAttributes) { foreach (var attribute in element.Attributes()) { string value = attribute.Value.ToLower(); if (value.StartsWith("http://") && (value.EndsWith(".jpg") || value.EndsWith(".png") || value.EndsWith(".gif") )) { rssItem.ImageLinks.Add(value); // Add here the image link to some array } } } } 
+4
source
 XDocument xDoc = XDocument.Load("http://www.nydailynews.com/cmlink/NYDN.Article.rss"); XNamespace media = XNamespace.Get("http://search.yahoo.com/mrss/"); var images = xDoc.Descendants(media+"content") .Where(m=>m.Attribute("type").Value=="image/jpeg") .Select(m=>m.Attribute("url").Value) .ToArray(); 

- EDIT -

 var images = feeds.Items .SelectMany(i => i.ElementExtensions .Select(e => e.GetObject<XElement>().Attribute("url").Value) ) .ToArray(); 
+2
source

Gets a list of images from a string

 var text = "your text with image links"; Regex regx = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&amp;\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?.(?:jpg|bmp|gif|png)", RegexOptions.IgnoreCase); MatchCollection mactches = regx.Matches(text); 
+1
source

Source: https://habr.com/ru/post/915432/


All Articles