如何在更新RSS源时触发可执行文件

时间:2011-04-22 19:16:24

标签: c# .net rss

我有一个RSS提要网址,我可以在任何Feed阅读器中查看 这个RSS提要不是由我控制的,它只是由我消费。
此RSS源(Office of Inspector General's Excluded Provider List)链接到包含可下载文件的页面。

这些文件大约每月更新一次,RSS Feed会显示新的“未读”项目。

我想要做的是写一些东西(在C#中),每周检查一次这个RSS Feed,当一个新项目(即一个新的可下载文件)可用时,触发一个可执行文件。

这基本上就像一个非常小规模的RSS阅读器,其唯一目的是在出现新项目时触发可执行文件。

任何指导,建议都将不胜感激。

修改

  • 我需要帮助确定何时新的 项目可用于 下载。
  • 一个人的奔跑 我可以做的可执行文件。
  • 的 将运行的可执行文件将进行处理 下载的文件。

4 个答案:

答案 0 :(得分:2)

作为一名已经注意到的评论者,这个问题相当广泛,但这里有一个尝试回答:

  • 您可以编写Windows服务(使用VS / MonoDevelop附带的模板),也可以编写一个由Windows Scheduler或Cron调用的简单控制台应用程序。

  • 主代码将使用众多RSS提要解析器之一:

这里有很多关于SO的例子。 IMO,最简单的基于LINQ的是here

我个人喜欢this approach,也使用LINQ。

  • 解析Feed后,您需要查找Link元素的值,通过以上SO示例执行此操作:

...

var feeds = from feed in feedXML.Descendants("item")
              select new
              {
                Title = feed.Element("title").Value,
                **Link** = feed.Element("link").Value,
                Description = feed.Element("description").Value
              };

...

  • 因此,既然您已拥有可执行文件,则需要将其下载到您的计算机上。我建议你研究一下this example from MSDN
  • 现在,您已经下载了文件,只需使用Process.Start("Path to EXE");来执行它。

注意前列腺中的病毒!!!

答案 1 :(得分:2)

如果您使用.Net 3.5或更高版本,您可以使用System.ServiceModel.Syndication命名空间中的各种类,特别是公开LastUpdatedTime属性的SyndicationFeed类,您可以使用它来比较日期以了解何时使用System.Diagnostics命名空间中的Process.Start方法调用可执行文件。

            using (XmlReader reader = XmlReader.Create(path))
            {
                SyndicationFeed feed = SyndicationFeed.Load(reader);

                if ((feed != null) && (feed.LastUpdateTime > feedLastUpdated))
                {
                    // Launch Process                            
                }
            }

答案 2 :(得分:1)

因此,您必须从URL中读取RSS源,然后解析数据以确定是否有新项目可用。

要阅读Feed,您需要使用WebClient。最简单的方法:

var MyClient = new WebClient();
string rssData = MyClient.DownloadString("http://whatever");

然后,您可以从返回的字符串创建XML文档。

var feedXML = new XMlDocument();
feedXML.Load(rssData);

@dawebber展示了如何使用LINQ解析XML。您需要检查每个项目的日期,看它是否比上次检查的日期更新。或者您可能拥有一个已经看过的项目数据库,并且您想要检查您收到的项目是否在数据库中。

每当您找到新项目时,都可以使用Process.Start启动可执行文件。

答案 3 :(得分:0)

您可以编写系统托盘应用程序。我已经按计划完成了几次屏幕抓取/监控网站。这是一个非常简单的开始。我想你可以在几个小时内做你正在寻找的东西。

http://alperguc.blogspot.com/2008/11/c-system-tray-minimize-to-tray-with.html