RSSを取得し加工・出力を行うアプリケーション
(RSS関連アプリケーションから転送)
概要
RSSフィードを取得して様々な形に加工して出力するアプリケーション。
ニュース一覧的にリスト表示したり、スライドショー的に表示したり、サムネイル一覧的に表示したり。
具体的に欲しい機能
- はてなブックマークのRSSフィードを取得して一覧表示する
- FlickrまたはTumblrのRSSフィードを取得してスライドショー表示する
- TumblrのRSSフィードを取得してサムネイル一覧として表示する
- 1日1ニコのRSSフィードを取得して表示する
個人的に需要があるこれらを実現する機能を実装した上で、それを一般化出来るといいかなと。
基本設計
- LaravelでRSSフィードを取得してJSONで出力(API)
- Vue.jsでJSONを読み込んで任意の形で出力
実現のために追加で必要な機能
Flickrは既に写真を追加出来なくなっているので、スライドショーの対象から外す。代わりにTumblrを利用することになるのだけど、スライドショーにせよサムネイル一覧にせよ、画像を特定出来る方が良い。media要素(RSS2.0では <enclosure> というらしい)に入っていれば最高なんだけど、普通に配信されているTumblrのRSSフィードには含まれていない。ので、Laravelで加工する際に補うか、RSSフィードを読み込む代わりにTumblr APIで情報を取得してJSONを組み立てる必要がある。
どちらにしてもRSSフィードを読み込む機能は作るわけだから、
- Tumblr APIで情報を取得してmedia要素込みのRSSフィードを出力する
- RSSフィードを読み込んでJSONに変換して返す
- JSONを読み込んで出力する
という順番になる。つまりRSSフィードを作る機能、かつて「DIY RSS」と呼んでいた機能が必要になる。マジか。まあTumblr API関連はあとでumblsにもコピーして使うので、実装しておいて損は無いが。
→ と思ったけど、これならもう最初からumblsの実装をしてしまった方が良くない?
まとめ
- はてなブックマークのRSSフィードを取得して一覧表示する
- FlickrまたはTumblrのRSSフィードを取得してスライドショー表示する
- Tumblr APIを叩いてenclosure込みのフィードを書き出す
- TumblrのRSSフィードを取得してサムネイル一覧として表示する
- Tumblr APIを叩いてenclosure込みのフィードを書き出す
- 1日1ニコのRSSフィードを取得して表示する
- 未定。リスト表示だけなら特になし
実装
LaravelでRSSフィードを取得してJSONで出力(API)
Awjudd\FeedReaderを通してSimplePieを使うことでRSSデータをバージョンを意識せずに取得する。 さらにその中から必要な情報だけを抜き出して配列化し、JSONで返す。
return array(
'title' => trim($feed->get_title())
,'permalink' => trim($feed->get_permalink())
,'description' => trim($feed->get_description())
,'items' => array(
'id' => trim($item->get_id())
,'title' => trim($item->get_title())
,'site_title' => trim($item->get_feed()->get_title())
,'permalink' => trim($item->get_permalink())
,'date' => trim($item->get_date('Y-m-d H:i:s'))
,'content' => trim($item->get_content(true))
,'description' => trim($item->get_description(true))
,'enclosure' => $item->get_enclosure()
,'categories' => $categories
)
);
Vue.jsでJSONを読み込んで任意の形で出力
想定される出力形式は以下の通り
- シンプルなリスト形式
- 横並びのサムネイル形式
- スライドショー形式(BootstrapVueのカルーセルを使うと便利そう)
LaravelでTumblr APIを叩いて情報を取得する
インストール
$ composer require tumblr/tumblr $ composer update