例えばHackerNewsのような海外のWebサイト。
英語が得意ではない僕は、タイトルだけでも読むのにメッチャ時間がかかる。
なのでそれらのサイトを定期的にスクレイピングして、その中身を翻訳して、メールで送ってくれるシステムを作ってみた。
作るにあたり使ったもの
・GoogleAppsScript
・kimono(http://www.kimonolabs.com/)
kimonoは登録したWebサイトをスクレイピングして、JSONやらCSVやらXMLで返してくれる素晴らしいWebサービス。
import.ioと同じ?
仕組み
1.kimonoでWebサイトをAPI化
2.GASでそのAPIからデータを取得
3.データを翻訳してメール送信して完了
具体的な方法
kimonoでWebサイトをAPI化する方法
まずはkimonoに会員登録してこんなショートカットをブラウザにセット
次に対象のサイトにアクセス。
サイトが開いた状態でさっきブラウザに保存したショートカットを押すとこんな状態になる。
ここでAPIにしたい部分をクリック(今回はタイトル部分)するとこんな感じになる。
ここで注意。
今タイトルっぽいところは全部黄色くなっているが、実は一番上の1つしかAPI対象になっていない。
全部選択したい場合は2行目以降にあるこのチェックマークを押すと全部選択された状態になる。
を押すと右側のチェックマークが消えてこんな感じになる
他にもAPIには出来るが、今回はこれだけで良かったのでこれで右上のDONEをクリック。
API名とかスクレイピングの頻度を設定して完了。
このAPIはJSON、csv、XML形式でアクセスが可能。
kimonoで作られたアドレスにアクセスしてみると、JSONだとこんなのが返ってくる。
素晴らしいですね。
これでkimonoの設定は終わり。
GoogleAppsScriptの設定
GASの基本的な作り方はググってもらえれば良いかと。
今回はコードだけ。
function translateAndSendMailer() {
var jsonText = UrlFetchApp.fetch("kimonoで発行されたAPIのアドレス").getContentText();
var results = JSON.parse(jsonText);
var webTitles = results["results"]["collection1"];
var mailBody = webTitles.map(function (hash, i, self) {
return convertToText(hash);
}).join("\n\n");
MailApp.sendEmail("送りたいメールアドレス", "メールタイトル", mailBody);
function convertToText(hash){
var result =
LanguageApp.translate(hash["property1"]["text"], "en", "ja") + "\n" +
hash["property1"]["href"];
return result;
}
}
完了。試しに一回送ってみるとこんなメールが届いた。
※kimonoのSSとこのメールのSSは時間が違うため内容の差はご了承ください。
これであとはトリガー設定して、好きな頻度で動くようにする。
これだけでAPIにしてくれたり、翻訳してくれたりメール送ったりkimonoとかGASとか便利すぎて鼻血出る。
でも翻訳がイマイチ何を意味してるかわかりにくいのでそもそも論英語の方が良いんじゃないかって説もなくはない。勉強することにする。。。