9-3-2 標準ライブラリを使ってfacebookトップページのlike数を取得しよう

dateライブラリを使うプログラムを記述し保存する

以下のようなプログラムを記述し、ファイル名をlibrary_date.rbとして保存します。

require 'date'

anniversary = Date.new(2018, 11, 18)

p anniversary
p anniversary.year
p anniversary.month
p anniversary.day
p anniversary.wday

day_of_the_weeks = %w(日 月 火 水 木 金 土)
day_of_the_week = day_of_the_weeks[anniversary.wday]

p day_of_the_week
p anniversary.strftime('%Y年%m月%d日') + day_of_the_week + '曜日'

dateライブラリを使うプログラムを実行する

コマンドライン上で保存したファイルを指定して実行します。

実行結果にDateオブジェクトが表示された後、201811180"日""2018年11月18日日曜日"と表示されます。

$ ruby -Ku library_date.rb # Windowsの場合-Kuオプション指定
#<Date: 2018-11-18 ((2458441j,0s,0n),+0s,2299161j)>
2018
11
18
0
""
"2018年11月18日日曜日"

open-uriライブラリを使うプログラムを記述し保存する

以下のようなプログラムを記述し、ファイル名をlibrary_open_uri.rbとして保存します。

require 'open-uri'

url = 'http://graph.facebook.com/?id=http://www.facebook.com'

file = open(url)
p file.read

open-uriライブラリを使うプログラムを実行する

インターネットに接続した状態で、コマンドライン上で保存したファイルを指定して実行します。

実行結果にFacebookトップページの「いいね!」数が含まれるJSONが表示されます。

$ ruby library_open_uri.rb
"{\"og_object\":{\"id\":\"10151063484068358\",\"title\":\"Welcome to Facebook - Log In, Sign Up or Learn More\",\"type\":\"website\",\"updated_time\":\"2017-03-15T08:15:25+0000\"},\"share\":{\"comment_count\":5810,\"share_count\":158666962},\"id\":\"http:\\/\\/www.facebook.com\"}"

jsonライブラリを使うプログラムを記述し保存する

以下のようなプログラムを記述し、ファイル名をlibrary_json.rbとして保存します。

require 'json'

original_hash = {
  share: {
    comment_count: 1,
    share_count: 2
  }
}
p original_hash.to_json

new_hash = JSON.parse(original_hash.to_json)
p new_hash
p new_hash['share']
p new_hash['share']['comment_count']
p new_hash['share']['share_count']

jsonライブラリを使うプログラムを実行する

コマンドライン上で保存したファイルを指定して実行します。

実行結果に"{\"share\":{\"comment_count\":1,\"share_count\":2}}"{"share"=>{"comment_count"=>1, "share_count"=>2}}{"comment_count"=>1, "share_count"=>2}12が表示されます。

$ ruby library_json.rb
"{\"share\":{\"comment_count\":1,\"share_count\":2}}"
{"share"=>{"comment_count"=>1, "share_count"=>2}}
{"comment_count"=>1, "share_count"=>2}
1
2

Facebookトップページの「いいね!」数を取得するプログラムを記述し保存する

以下のようなプログラムを記述し、ファイル名をlibrary_fb_share_counter.rbとして保存します。

require 'open-uri'
require 'json'
require 'date'

class FbShareCounter
  BASE_URL = 'http://graph.facebook.com/?id='

  attr_writer :target_url

  def count
    {share_count: share_count, count_date: count_date}
  end

  private

    def share_count
      response_hash = JSON.parse(response)
      response_hash['share']['share_count']
    end

    def count_date
      Date.today.strftime('%Y-%m-%d(%a)')
    end

    def response
      file = open(request_url)
      file.read
    end

    def request_url
      fail 'Specify target_url.' if @target_url.nil?
      BASE_URL + @target_url
    end
end

counter = FbShareCounter.new
counter.target_url = 'http://www.facebook.com'
p counter.count

Facebookトップページの「いいね!」数を取得するプログラムを実行する

インターネットに接続した状態で、コマンドライン上で保存したファイルを指定して実行します。実行結果に「いいね!」数と実行した日付が表示されます。

$ ruby library_fb_share_counter.rb
{:share_count=>158668462, :count_date=>"2017-03-15(Wed)"}