• 利用飞信api和rss对园友博客监控与提醒


    好久没写过代码了,最近的工作和代码几乎没有接触,全是手工操作:安装系统,安装软件,看日志文件,周而复始。刚好发现一些有意思的api,拿来做一个小程序与大家分享,同时练练手。

    主要功能:

    程序很小,主要功能是监控博客园(rss的内容和博客园一致也适用)用户的博客,如果有最新的文章则及时发短信提醒。先贴一张图,让大家有一个大致的了解:

    image 

    (因为我是英文系统,在windows paint里面打不了中文)

    涉及技术:

    1.xml解析,这里实现的比较简单,用.net内置的XmlDocument加上xpath就满足了要求。

    2.发短信,免费发短信到手机目前我认为最好的方案是用飞信,但飞信官方没有公开api,采用的是sms.yicker.com网站上的api,用起来还是蛮方便的。

    有一点需要注意:sms.yicker.com的发短信api是Get请求 https://sms.yicker.com/api/手机号/飞信密码/发送信息,发送的信息如果含有中文应该htmlencode.

    实现:

    先从监控的方法开始,这个方法主要是完成文章的获取和短信提醒,代码如下:

    代码
    public static void Monitor()
    {
    //获取博客的rss文件,一般为xml格式的
    string xml = HttpGet(blogRssUrl);
    //解析获取所有的文章节点
    XmlNodeList articles = GetArticles(xml);

    foreach (XmlNode article in articles)
    {
    //获取文章的GUID节点
    XmlNode guid = article.SelectSingleNode("//item/guid");
    //已通知过的文章
    if (IsNotified(guid.InnerText))
    {
    continue;
    }
    //未通知过的文章
    else
    {
    //获取文章的标题节点
    XmlNode title = article.SelectSingleNode("//item/title");
    Inform(title.InnerText);
    }
    }
    }

    监控文章的方法调用的获取文章和发短信的方法如下:

    代码
    public static XmlNodeList GetArticles(string xml)
    {
    XmlDocument doc
    = new XmlDocument();
    doc.LoadXml(xml);
    XmlNodeList articles
    = doc.SelectNodes("//item");
    return articles;
    }

    public static void Inform(string message)
    {
    //编码要发送的信息,因为会有中文
    message=HttpUtility.HtmlEncode(message);
    string url = string.Format("{0}/{1}/{2}/{3}",fetionApiUrl,mobileno,password,message);
    HttpGet(url);
    }

    这里的http请求都只要求采用GET方法就可以了。具体的代码就不列出来了,我已将代码打包,如果大家需要可以随时下载。

    程序扩展:

    这个程序虽小,但是有很多值得改进的地方。

    从功能上来说,短信提醒可以用在很多方面,据我所知的有:网站监控,email邮件提醒,微博客。。等等,只要你有一个飞信号,这些都能免费做到。

    从技术上来说,程序短信的已经提醒短信的记录是采用一个字典类型来记录,完全可以保存到外部文件或数据库等。程序的当前只对一个博客监控,如果需要对多个博客,为了更好的体验可以采用多线程。当然还有其他的。。

    鉴于精力有限,我也就实现这么多,如果大家感兴趣可以把代码下过去,扩展改进。如果能做出更有意思的东西来,希望也能一起分享。

    相关资料:

    w3cschool的xpath教程 :http://www.w3school.com.cn/xpath/

    代码:下载

  • 相关阅读:
    Java -verbose:gc 命令
    JVM中启用逃逸分析
    nginx指定配制文件
    jvm笔记
    python添加tab键提示
    ssh-copy-id帮你建立信任
    救火必备linux命令
    oracle判断字符串中包函另外一个字符串
    String,StringBuffer,StringBuilder三者区别
    Python数据分析应用背景
  • 原文地址:https://www.cnblogs.com/lloydsheng/p/1697255.html
Copyright © 2020-2023  润新知