Apitore blog

Apitoreを運営していた元起業家のブログ

【API】RSSをJSONに変換する「RSS2JSON」

はじめに

RSSをJSONに変換するAPIを作りましたのでApitoreで公開します。このAPIの良いところはRomeのおかげでフォーマットの異なる各社のRSSフィード(RSS0.9、RSS1.0、RSS2.0、Atomなど)を統一的なJSONで扱える点です。RSSフィードは良い情報源なので、このAPIをうまく使えばおもしろいmashup作れそうです。今回はこのAPIの紹介です。

API

サンプルコード

関連記事

事前準備

APIコールまでの準備(API登録、アクセストークン発行、サンプル実行)はこちらを参考にしてください。

使ってみる

API登録、アクセストークン発行が終わったら、こちらのswagger UIから簡単に動作を試すことができます。APIレスポンスのフォーマットも載ってますが、ここにも記載しておきます。

SyndFeedResponseEntity {
  author (string, optional): Author ,
  description (string, optional): Description ,
  endTime (string): End date ,
  entries (Array[SyndEntryEntity]): Entries ,
  link (string): Link ,
  log (string): Log message ,
  num (integer): Num ,
  processTime (string): Process time [millisecond] ,
  pubDate (string): Published Date ,
  rss (string): Input RSS ,
  startTime (string): Start date ,
  title (string): Title
}
SyndEntryEntity {
  author (string, optional): Author ,
  description (string, optional): Description ,
  link (string): Link ,
  pubDate (string): Published Date ,
  title (string): Title
}

実際にいくつかサンプル実行してみましょう。まずはYahooのフィード「http://news.yahoo.co.jp/pickup/rss.xml」を入力してみます。Yahooのフィードはものすごくシンプルでタイトルとリンクしか流れてこないんですね笑 画像URLとスニペットも欲しいところです。

"rss": "http://news.yahoo.co.jp/pickup/rss.xml",
"author": null,
"title": "Yahoo!ニュース・トピックス - トップ",
"link": "http://news.yahoo.co.jp/",
"description": "Yahoo! JAPANのニュース・トピックスで取り上げている最新の見出しを提供しています。",
"pubDate": 1489876430000,
"num": 8,
"entries": [
  {
    "author": "",
    "title": "PKOの陸自隊員を誤って拘束",
    "link": "http://news.yahoo.co.jp/pickup/6233627",
    "description": "",
    "pubDate": 1489846768000
  },
  {
    "author": "",
    "title": "米軍基地反対派リーダー保釈",
    "link": "http://news.yahoo.co.jp/pickup/6233629",
    "description": "",
    "pubDate": 1489850065000
  },
  //中略
  {
    "author": "",
    "title": "中居 熱愛報道「話さなーい」",
    "link": "http://news.yahoo.co.jp/pickup/6233634",
    "description": "",
    "pubDate": 1489870389000
  }
]

続いてTechCrunchのフィード「http://jp.techcrunch.com/feed/」を入力してみます。TechCrunchはスニペット(description)もありますし、そこに画像のURLが貼っていますね。

"rss": "http://jp.techcrunch.com/feed/",
"author": null,
"title": "TechCrunch Japan",
"link": "http://jp.techcrunch.com",
"description": "最新のテクノロジーとスタートアップ、ガジェットに関するニュースを配信するブログメディア",
"pubDate": 1489879057000,
"num": 10,
"entries": [
  {
    "author": "Sarah Buhr",
    "title": "モバイル化が進むアフリカの医療業界―、遠隔医療相談サービスのKangpe",
    "link": "http://jp.techcrunch.com/2017/03/19/20170317kangpe-is-a-mobile-service-connecting-africa-to-healthcare/",
    "description": "<img width=\"738\" height=\"493\" src=\"https://techcrunchjp.files.wordpress.com/2017/03/kangpe-founders.jpg?w=738\" class=\"attachment-large size-large wp-post-image\" alt=\"\" srcset=\"https://techcrunchjp.files.wordpress.com/2017/03/kangpe-founders.jpg 738w, https://techcrunchjp.files.wordpress.com/2017/03/kangpe-founders.jpg?w=150 150w, https://techcrunchjp.files.wordpress.com/2017/03/kangpe-founders.jpg?w=300 300w\" sizes=\"(max-width: 738px) 100vw, 738px\" /> アフリカの医療業界と聞くと、国境なき医師団から派遣された医師が、人里離れた村で治療にあたっている様子を思い浮かべる人もいるかもしれないが、実際には、モバイルテクノロジーがアフリカ大陸全体の医療業界を急激に変化させている。Y Combinatorのプログラムに参加しているKangpe… <a href=\"http://jp.techcrunch.com/2017/03/19/20170317kangpe-is-a-mobile-service-connecting-africa-to-healthcare/\">Read More</a>",
    "pubDate": 1489878016000
  },
  {
    "author": "Ingrid Lunden",
    "title": "LinkedInが、インターネットトラフィックをモックする、社内テストツールFlashbackをオープンソース化",
    "link": "http://jp.techcrunch.com/2017/03/18/20170317linkedin-open-sources-flashback-a-tool-for-mocking-internet-traffic/",
    "description": "<img width=\"738\" height=\"416\" src=\"https://techcrunchjp.files.wordpress.com/2017/03/gettyimages-541253298.jpg?w=738\" class=\"attachment-large size-large wp-post-image\" alt=\"\" srcset=\"https://techcrunchjp.files.wordpress.com/2017/03/gettyimages-541253298.jpg 738w, https://techcrunchjp.files.wordpress.com/2017/03/gettyimages-541253298.jpg?w=150 150w, https://techcrunchjp.files.wordpress.com/2017/03/gettyimages-541253298.jpg?w=300 300w\" sizes=\"(max-width: 738px) 100vw, 738px\" /> 現在は… <a href=\"http://jp.techcrunch.com/2017/03/18/20170317linkedin-open-sources-flashback-a-tool-for-mocking-internet-traffic/\">Read More</a>",
    "pubDate": 1489834598000
  },
  // 中略
  {
    "author": "Lora Kolodny",
    "title": "深海に眠るタイタニック号を3Dスキャン―、米OceanGateが2018年5月に実施予定",
    "link": "http://jp.techcrunch.com/2017/03/18/20170315oceangate-plans-an-expedition-to-3d-scan-the-titanic/",
    "description": "<img width=\"738\" height=\"415\" src=\"https://techcrunchjp.files.wordpress.com/2017/03/oceangate_scanning_the_titanic.jpg?w=738\" class=\"attachment-large size-large wp-post-image\" alt=\"\" srcset=\"https://techcrunchjp.files.wordpress.com/2017/03/oceangate_scanning_the_titanic.jpg 738w, https://techcrunchjp.files.wordpress.com/2017/03/oceangate_scanning_the_titanic.jpg?w=150 150w, https://techcrunchjp.files.wordpress.com/2017/03/oceangate_scanning_the_titanic.jpg?w=300 300w\" sizes=\"(max-width: 738px) 100vw, 738px\" /> シアトルに拠点を置くOceanGate… <a href=\"http://jp.techcrunch.com/2017/03/18/20170315oceangate-plans-an-expedition-to-3d-scan-the-titanic/\">Read More</a>",
    "pubDate": 1489791610000
  }
]

おわりに

RSSをJSONで出力するAPIを紹介しました。これを使えばシステマティックなキュレーションサイトも作れますし、Botから情報発信させても良いので自分専用のLINE BOTでも作れば効率的に情報収集できるんじゃないでしょうか?