シンのおもちゃ箱 - API研究所

APIやアプリケーションを使ってみて、その実装手順や所要時間、実装したうえでの感想などを書いてます。

Google Feed APIでニュースサイト構築

Google Feed API

Google Feed API概要

開発者用サイト

特徴

今回の目的

  • Google Feed APIを用いて、簡単なニュースサイトを作る

作業(6時間)

1. ドットインストールにて、概要をつかむ(0.5時間)
2. 開発者用サイトのDeveloper's Guideを見ながら、Feedの検索を実装する(0.5時間)
3. Google Feed APIで特定サイトからフィードが得られるようにする(0.5時間)
4. ニュースサイトまとめから、{ サイト名: サイトurl ] のjsonを得る(1時間)
5. サイトが持っているrssのurlを得て、{ サイト名: サイトのrssのurl ] のjsonを得る (0.5時間)
6. 5で得たjsonを用いて、自分が選択したニュースサイトからフィードが得られるようにする(1時間)

1. Google Feed APIで特定サイトからフィードが得られるようにする

参考url: https://developers.google.com/feed/?hl=ja
・参考urlの中のgoogle.feeds.Feedを用いて、特定サイトからフィードを得られるようにする

2. ニュースサイトまとめから、{ サイト名: サイトurl ] のjsonを得る

・ 適当なまとめサイトから、javascriptを使って、aタグ要素をのhrefとinnerTextを得る
google chromeの開発者ツールを用いると楽ちん

var sites = {}
$("ul>li>a").each(function(i, link){sites[link.text()] = link.href})
// sites = { サイト名: サイトurl, .....]

3. { サイト名: サイトのrssのurl ] のjsonを得る

・ 2で得たjsonのurlをgoogle.feeds.lookupFeedのフィルターにかける

rss = {}
sites.each(function(key, value){
google.feeds.lookupFeed(value, function(result){
if (!result.error){
rss[key] = result.url;
}
})
})
// rss = { サイト名: サイトのrssのurl ]

4. 自分が選択したニュースサイトからフィードが得られるようにする

1. rssのサイト名をvalueに設定したチェックボックスを生成する

var $ul = $("

");


var i = 1;


$.each(rss, function(name, url){


var $input = $("").attr({type: "checkbox", name: "rss"+i, id: "rss"+i}).val(name);


$ul.append($input);


i++;


});



注意) 連想配列をeachで回すと、第一引数がkey, 第二引数がvalueになる。

2. ボタンをクリックしたときに、選択されたチェックボックスのvalueをすべて取得して、localStorageに保存する

var selected_items = ;
$("input[type=checkbox]:checked").each(function(i, input){
selected_items.push(input.value);
});
localStorage.setItem("selected", selected)

3. localStorageから読み取った値を「Google Feed APIで特定サイトからフィードが得られるようにする」と同じ要領で表示する

var selected_sites =
if (localStorage["selected"] ){
selected_sites = localStorage["selected"].split(",");
}
$.each(selected_sites, function(i, site){
.........// 「Google Feed APIで特定サイトからフィードが得られるようにする」と同じ要領で。。。
});

注意) localStorageはremoveItemメソッドでしか消えない

localStorage["selected"] = null //=> "null"が保存される
localStorage["selected"] = undefined //=> "undefined"が保存される
localStorage.removeItem("selected") //=> 消える

成果物

News Feed

結果・感想

  • feedを文字列で検索することができるようになった
  • 文字列検索ができても、適切な文字列が思い浮かばないので、使い道に困る
  • 「Techcrunch」とかいれても、ほしい情報にはたどり着けなかった
  • 検索が役に立たないということは、ある固定のurlから引っ張った方がよさそう
  • 固定のurlをいくつかピックアップする必要がある
  • 固定のurlならばNewsがよいかな(既存だけど)
  • あと、固有名称(店名や)をいれると検索も面白い。(昔のバイト先を入れたら、ブログ記事とぐるナビページが出てきた。食べログは?。。。)
  • また、それを設定、変更できる画面を作成する必要がある
  • 選択したNews Feedを表示することができた
  • NewsRSSサイトの種類分けをした方がわかりやすい
  • もっと種類を増やすと面白い
  • 「英語のニュースサイト」「学術論文」「癒し画像」「アダルト関連」「イベント」とかニーズがないだろうか
  • 種類を増やしたら、何が人気なのか知りたいからAnalyticsもいれよう