「RSSを取得し加工・出力を行うアプリケーション」の版間の差分
Ippei Suzuki (トーク | 投稿記録) ページの作成:「== 概要 == RSSフィードを取得して様々な形に加工して出力するアプリケーション。ニュース一覧的にリスト表示したり、スライ…」 |
Ippei Suzuki (トーク | 投稿記録) 細 Ippei Suzuki がページ「RSS関連アプリケーション」を「RSSを取得し加工・出力を行うアプリケーション」に移動しました |
||
| (同じ利用者による、間の13版が非表示) | |||
| 1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
RSSフィードを取得して様々な形に加工して出力するアプリケーション。 | |||
ニュース一覧的にリスト表示したり、スライドショー的に表示したり、サムネイル一覧的に表示したり。 | |||
| 8行目: | 10行目: | ||
* TumblrのRSSフィードを取得してサムネイル一覧として表示する | * TumblrのRSSフィードを取得してサムネイル一覧として表示する | ||
* 1日1ニコのRSSフィードを取得して表示する | * 1日1ニコのRSSフィードを取得して表示する | ||
個人的に需要があるこれらを実現する機能を実装した上で、それを一般化出来るといいかなと。 | 個人的に需要があるこれらを実現する機能を実装した上で、それを一般化出来るといいかなと。 | ||
| 14行目: | 17行目: | ||
== 基本設計 == | == 基本設計 == | ||
* LaravelでRSSフィードを取得してJSONで出力(API) | * LaravelでRSSフィードを取得してJSONで出力(API) | ||
* Vue. | * Vue.jsでJSONを読み込んで任意の形で出力 | ||
=== 実現のために追加で必要な機能 === | === 実現のために追加で必要な機能 === | ||
Flickrは既に写真を追加出来なくなっているので、スライドショーの対象から外す。代わりにTumblrを利用することになるのだけど、スライドショーにせよサムネイル一覧にせよ、画像を特定出来る方が良い。media要素(RSS2.0では <enclosure> というらしい)に入っていれば最高なんだけど、普通に配信されているTumblrのRSSフィードには含まれていない。ので、Laravelで加工する際に補うか、RSSフィードを読み込む代わりにTumblr APIで情報を取得してJSONを組み立てる必要がある。 | |||
どちらにしてもRSSフィードを読み込む機能は作るわけだから、 | どちらにしてもRSSフィードを読み込む機能は作るわけだから、 | ||
# Tumblr APIで情報を取得してmedia要素込みのRSSフィードを出力する | # Tumblr APIで情報を取得してmedia要素込みのRSSフィードを出力する | ||
# RSSフィードを読み込んでJSONに変換して返す | # RSSフィードを読み込んでJSONに変換して返す | ||
# JSONを読み込んで出力する | # JSONを読み込んで出力する | ||
という順番になる。つまりRSSフィードを作る機能、かつて「DIY RSS」と呼んでいた機能が必要になる。マジか。まあTumblr API関連はあとでumblsにもコピーして使うので、実装しておいて損は無いが。 | という順番になる。つまり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 | |||