RSSとは
Rich Site Summaryの略で、充実したサイトの要約という意味になる。
主な特徴は、
- 内容情報のメタデータ化にRDFを使う。
- それの情報をXML言語で記述する。
Webサイトの要素 | マークアップ言語 |
---|---|
Webページ | HTML |
RSS | XML |
メタデータ
データベースでいうカラムのことRDF
メタデータを統一するための規格。データベースでいうモデル?マークアップ言語
<>で表した要素を使って、データの構造を示す言語#gemを追加
Gemfile
gem 'feedjira'
gem 'httparty'
$ bundle install
##対象RSSを、Railsで処理してクライアントに送るまでの流れ
- RSSをrailsに送る
- 受け取ったRSSを扱いやすい形になるようパースする
- パースしてオブジェクトになったデータをJSON形式で、クライアントに返す
今回は、サーバ側の処理を書いていくので、2番目と3番目のコーディングをみていく。
#受け取ったRSSを、XML形式のデータに変換する
rss = Feed.new(url: params[:url])
xml = HTTParty.get(rss).body
##変換したXMLデータをパースして、オブジェクト形式のデータにする。
obj = Feedjira.parse(xml)
パースとは
そのデータを解析して扱えるデータ(rssの書式データ)か判別し、扱えるデータなら変換までする処理のこと。##オブジェクトデータを分解して、記事内容を取得できるようにする
list = []
obj.entries.each do |item|
list += [
:title => item.title,
:url => item.url,
:title => item.summary,
:published => item.published.to_time.strftime("%Y-%m-%d %H:%M:%S")
]
end
データを配列の要素にすることで、記事の内容を取得できる。
obj.entries
は、オブジェクトの記事内容の塊のこと。
##クライアントに返すデータを作成する
data = {
feed: {
id: rss.id,
url: rss.url,
title: obj.title,
item: list
}
}
render :json => data
クライアントに、JSON形式で返すようにする。