自分の投稿をすべて取得してJSONで保存します。
コード
require "qiita"
require "json"
page = 1
client = Qiita::Client.new(access_token: "トークン")
items = []
loop do
res = client.list_authenticated_user_items({per_page: 100, page:page})
items.concat(res.body)
break if res.next_page_url.nil?
page += 1
end
puts JSON.generate(items)
gem install qiita
が必要。
トークン使ってauthenticated_user_itemsを拾わなくても、通常のitem検索でuser:ユーザーid としても大丈夫なはずだ。
未認証でもリクエスト制限は一時間に60回。
一リクエストで投稿は100件取るので、5000ふがふが投稿数があってもまだ大丈夫。
これ自体は投稿記事を全部取得してJSONで吐き出すプログラム。
rubyで集計しても良かったが、後々別のことに活用できそうだったので、集計はjqにお願いした。
集計方法
ruby qiita.rb | jq '[.[].likes_count] | add'
利用ライブラリ
increments謹製!
自作の参考に既存物を探していたら家元が作っていたので試してみたかった。
jq jq 説明無用
参考 モチベUP記事 その他
- 投稿記事やコメントに「いいね」できるようになりました(Contributionの算定基準も変わります)... - Qiita Blog
- Qiitaの新しいContribution算定ロジックを解読してみた - Qiita
動機
Contributionは算定ロジックにもある通り、編集リクエストとコメントのいいねも含まれてしまう。(いいことだ)
でも、編集リクエストの本来期する、「記事をより良くするリクエスト」ではなくて、
ちょっとしたtypo,リンク・タグミス,コードハイライトばっかり送っていた。
それでじりじり上がる通知が来ないContributionの上昇に複雑な気持ちだったので、自分がどれだけゲタを履いているか確認したくなった。
でも実装当時はAPIが無くて、
Qiita記事のストック数を確認するbookmarklet - Qiita
のようにスクレイピングするかで敬遠していた。
Qiitaのデータを扱った集計はたくさんあるけど、
記事単位だったり1
ランキングだったり(範囲外)。
全ユーザーの集計でもやっぱり集計上ユーザー画面を使うからか、Contributionだったり。
Qiitaのあれこれをひたすら分析してランキング - Qiita
と、「ランキングに乗らない程度のユーザーの投稿のみの合計いいね数」が、検索能力の低さも相まってQiita内では見つけられなかった。
=気にする人居ないってことなんですが…
今回はAPI実装後にモチベが持ち上がったのでさくっと作りました。
余話
で、肝心の結果が926でした。
50Contribution以上もゲタ履いてるとはさてはテングだなオメー
…となるはずでしたが、週をまたぐと計算方法が変わったのか、表示上が933。小数点込み合算後切り捨てから切り捨ててから合算に変わったのかな?
と記事を書いていたら計算方法がJust now?戻ったみたいです。
高いゲタを履いて頑張ります。
(anyenv+)rbenv+fishは設定が面倒臭い
-
増分計算や独自の重み付けすごいと思う ↩