概要
- Ruby + Qiita API v2 で特定ユーザーの Qiita 記事一覧を取得する
サンプルコード
require 'json'
require 'net/http'
require 'open-uri'
access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # アクセストークン
user = 'niwasawa' # 記事作成ユーザ名
all_items = [] # すべての記事を収める配列
resource_url = 'https://qiita.com/api/v2/items' # WebAPI エントリポイント
headers = {'Authorization' => "Bearer #{access_token}"} # 認証用ヘッダ
page = 0 # ページネーションのページ番号
loop do
# パラメータを組み立てる
page += 1
params = {
'query' => "user:#{user}", # 記事作成ユーザー名で検索
'per_page' => '100', # 1回のAPIコールで100件まで取得可能
'page' => page # ページネーションのページ番号(1からスタート)
}
# 記事のリストを取得
url = resource_url + '?' + URI.encode_www_form(params)
puts "Calling WebAPI: #{url}"
res = URI.open(url, headers)
items = JSON.parse(res.read)
# 記事が1件も取得できなくなったらループを抜ける
break if items.empty?
# 記事のリストをすべての記事を収める配列に追加
all_items.concat items
end
# 記事の作成日時でソート
all_items.sort!{|a, b| Time.iso8601(a['created_at']) <=> Time.iso8601(b['created_at'])}
# 記事の作成日時とタイトルを出力
all_items.each do |item|
puts "#{Time.iso8601(item['created_at']).strftime('%Y-%m-%d %H:%M:%S')} #{item['title']}"
end
実行例
macOS Catalina + Ruby 3.0.0 でサンプルコードを実行した例。
Calling WebAPI: https://qiita.com/api/v2/items?query=user%3Aniwasawa&per_page=100&page=1
Calling WebAPI: https://qiita.com/api/v2/items?query=user%3Aniwasawa&per_page=100&page=2
Calling WebAPI: https://qiita.com/api/v2/items?query=user%3Aniwasawa&per_page=100&page=3
Calling WebAPI: https://qiita.com/api/v2/items?query=user%3Aniwasawa&per_page=100&page=4
Calling WebAPI: https://qiita.com/api/v2/items?query=user%3Aniwasawa&per_page=100&page=5
2017-01-10 12:31:51 Ruby で WebAPI をコールするサンプルコード
2017-01-16 12:49:08 Ruby + RESAS-API で観光資源の位置情報(緯度経度)を取得する
2017-01-31 12:12:35 PHPUnit ことはじめ (インストール&テストスイート構築)
(中略)
2020-12-12 16:18:40 CentOS Linux 8 から CentOS Stream 8 へ移行する
2020-12-16 08:46:35 JSON に記述された数値型の範囲外の整数値を JavaScript でパースする
2020-12-19 23:05:53 Oracle Database 12c でテーブル定義を確認する