Exemple #1
0
        private async Task <IEnumerable <RssFeedItem> > GetItemsFromFeed()
        {
            // Retrieve RSS feed
            var result = await RequestWithCookiesAndRetryAsync(RssFeedUri);

            // Parse as XML document
            var xmlDocument = new XmlDocument();

            xmlDocument.LoadXml(result.ContentString);

            // Parse to RssFeedItems
            var xmlNodes = xmlDocument.GetElementsByTagName("item");
            List <RssFeedItem> feedItems = new List <RssFeedItem>();

            foreach (var n in xmlNodes)
            {
                var node = (XmlNode)n;

                if (RssFeedItem.TryParse(node, out RssFeedItem item))
                {
                    feedItems.Add(item);
                }
                else
                {
                    logger.Warn($"Could not parse {DisplayName} RSS item '{node.InnerText}'");
                }
            }

            return(feedItems);
        }
Exemple #2
0
        private async Task <IEnumerable <RssFeedItem> > GetItemsFromFeed()
        {
            // Retrieve RSS feed
            var result = await RequestWithCookiesAndRetryAsync(RssFeedUri);

            if (result.IsRedirect)
            {
                await FollowIfRedirect(result);
            }

            // Parse as XML document
            var xmlDocument = new XmlDocument();

            xmlDocument.LoadXml(result.ContentString);

            var nsm = new XmlNamespaceManager(xmlDocument.NameTable);

            nsm.AddNamespace("erai", "https://www.erai-raws.info/rss-page/");

            // Parse to RssFeedItems
            var xmlNodes = xmlDocument.GetElementsByTagName("item");
            List <RssFeedItem> feedItems = new List <RssFeedItem>();

            foreach (var n in xmlNodes)
            {
                var node = (XmlNode)n;

                if (RssFeedItem.TryParse(nsm, node, out RssFeedItem item))
                {
                    feedItems.Add(item);
                }
                else
                {
                    logger.Warn($"Could not parse {DisplayName} RSS item '{node.OuterXml}'");
                }
            }

            return(feedItems);
        }