【干货】如何通过RSS订阅社交网络

96
xzonepiece
0.6 2017.05.29 15:46* 字数 1460

再分享完用RSS订阅微信公众号知乎,本文将会告诉大家如果用RSS订阅社交网络。首先说明一下这里社交网络主要指的是微博、Instagram、Twitter、Facebook等,不包括全世界最大的封闭社交系统-微信,因为它没有提供对外的接口,我也束手无策。

社交网络

1. 微博

针对公开的微博信息,这里强烈推荐使用微博看看,在首页搜索你想订阅的微博,就可以轻松地获得对于的RSS地址,使用起来非常方便,而且同步更新也很及时。那么针对不公开的微博信息,也就是只有双方相互关注才能看到的信息,有什么解决方法呢?还好,微博有比较完善的API,通过微博提供的API就可以获得我们想要的好友微博。
在这里使用这个URL-https://api.weibo.com/2/statuses/bilateral_timeline.json,可以获取双向关注用户的最新微博。在使用微博的API之前,你需要在微博开放平台上创建一个应用,并获得对应的Access Token,具体的操作方法参见这篇文章——新浪微博 Oauth2.0 授权 获取 Access Token
有了接口,接下来只需要一个可以读取接口并将内容转换成RSS的工具即可;当然,我们接下来要介绍的工具仍然是无所不能的Huginn。

首先,安装部署 Huginn 的方法请参见我前面的文章 -Huginn 安装教程—建立你自己的 IFTTT,更多安装部署方法可参见我们的Huginn 中文网。如果你想更深入地了解 Huginn,请参见我之前的文章 - 使用 Huginn 打造自动化云端信息助手,或者来我们的论坛上进行交流。

下面具体地介绍一下利用Huginn将好友微博转换成RSS的步骤,具体的思路如下:


将好友微博转成RSS
将好友微博转成RSS

(1) 获取好友的最新微博

因为通过API获取的是结构化的json,因此,在获取到内容以后,还需要将零散的内容组合起来;其实,这也比较简单,主要是将文字和图片整合到一起就可以了。这里使用的仍然是Website Agent,具体的选项参数如下:

{
  "expected_update_period_in_days": "2",
  "url": "https://api.weibo.com/2/statuses/bilateral_timeline.json?access_token={% credential weibo_access_token %}",
  "type": "json",
  "mode": "on_change",
  "extract": {
    "text": {
      "path": "$.statuses[*]"
    }
  },
  "template": {
    "text": "{{text.text}}{% if {{text.original_pic}} != null %}<br><img src=\"{{text.original_pic}}\"{% endif %}{% if {{text.retweeted_status != null %}<br>///{{text.retweeted_status.text}}{% if {{text.retweeted_status.original_pic != null %}<br><img src=\"{{text.retweeted_status.original_pic}}\">{% endif %}{% endif %}",
    "title": "{{text.user.name}} 在 {{text.created_at}} 更新了微博",
    "link": "http://m.weibo.cn/status/{{text.mid}}"
  }
}
  • 请注意在这里使用了credential来代替我自己的Access Token,因此,你也需要在credential里新建一个weibo_access_token,其值就是你自己的Access Token。
  • 这里使用了template来组合文字和图片,并使用了一些Liquid语法来组合原创微博或转发微博。

(2)输出RSS

通过上一步的内容处理,这一步只需要通过Data Output Agent将内容输出成RSS即可,具体的选项参数如下:

{
  "secrets": [
    "weibo"
  ],
  "expected_receive_period_in_days": 2,
  "template": {
    "title": "好友微博",
    "description": "推送好友微博的状态",
    "item": {
      "title": "{{title}}",
      "description": "{{text}}",
      "link": "{{link}}"
    }
  },
  "rss_content_type": "text/xml"
}

如果你不想按照上面一步一步地进行设置,你可以直接把这个文件导入到Scenarios中即可,别忘了在你的credential里新建一个weibo_access_token,填上你自己的Access Token。

2.Instagram/Twitetr/Facebook

将国外这几个社交平台上的信息转化成RSS可以使用Github上的这个项目——rss-bridge,如果你自己不想部署的话,可以直接使用这些已经部署好的网站——https://bridge.suumitsu.eu/或者http://rssbridge.buddylist.co/
但是,这里有一个问题,通过这个方法获得的原始图片链接在国内是无法正常显示图片的,理由你应该是懂的。一种方法是在阅读的时候,同时打开VPN;还有一种方法是将图片链接换成能正常显示的图片链接,这里又要使用强大的Huginn,下面以Instagram为例。

(1) 通过RSS-Bridge上的Instagram Bridge模块生成的RSS地址

这里以全世界最伟大的前锋兼守门员——诺神的Instagram为例,首先使用RSS Agent获取RSS的内容,具体的选项参数如下:

{
  "expected_update_period_in_days": "7",
  "clean": "false",
  "url": [
    "https://bridge.suumitsu.eu/?action=display&bridge=Instagram&u=manuelneuer&format=Atom"
  ]
}

url中的链接地址就是通过RSS-Bridge生成的RSS地址

(2)通过Liquid语法重新输出新的RSS

最后,使用Huginn自带的Liquid语法中的regex_replace将原先RSS中的图片链接全部换成国内可读的链接地址,这里是将图片链接的网址scontent-cdg2-1.cdninstagram.com全部换成igcdn-photos-h-a.akamaihd.net/hphotos-ak-xfp1 ,输出RSS地址使用的是Data Output Agent,具体的选项参数如下:

{
  "secrets": [
    "instagram"
  ],
  "expected_receive_period_in_days": 7,
  "template": {
    "title": "Instagram上关注的社交账号",
    "description": "聚合Instagram上关注的社交账号",
    "item": {
      "title": "{{title}}",
      "description": "{{content|regex_replace:\"scontent(.*?).cdninstagram.com\",\"igcdn-photos-h-a.akamaihd.net/hphotos-ak-xfp1\"}}",
      "link": "{{url}}"
    }
  },
  "rss_content_type": "text/xml"
}

同样地,如果你不想按照上面一步一步地进行设置,你可以直接把这个文件导入到Scenarios中即可,将第一步中的url换成你从RSS-Bridge的Instagram Bridge中获得的RSS地址。

除了使用RSS-Bridge生成的RSS以外,还可以借助IFTTT生成对应社交平台的RSS,范围更加广泛,方法也比较简单,在这里就不再赘述,有兴趣的可以自己去尝试一下。

3. 总结

社交平台最主要的优点应该是互动,这一点RSS是做不到的。但是,通过RSS聚合信息,能快速集中地掌握好友或关注者的动态是RSS相比各个社交APP的优点;而且,现在很多优质的内容都出现在社交平台上,通过RSS聚合信息,可以快速集中地进行学习。

干货分享
Web note ad 1