0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby + Qiita API v2 で特定ユーザーの Qiita 記事一覧を取得する

Posted at

概要

  • 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 でテーブル定義を確認する

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?