3
1

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 5 years have passed since last update.

んで、結局Contributionのうち、投稿で勝ち得たいいねはどれぐらいなのさ

Posted at

自分の投稿をすべて取得してJSONで保存します。

コード

qiita.rb
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は算定ロジックにもある通り、編集リクエストとコメントのいいねも含まれてしまう。(いいことだ)
でも、編集リクエストの本来期する、「記事をより良くするリクエスト」ではなくて、
ちょっとしたtypo,リンク・タグミス,コードハイライトばっかり送っていた。
それでじりじり上がる通知が来ないContributionの上昇に複雑な気持ちだったので、自分がどれだけゲタを履いているか確認したくなった。

でも実装当時はAPIが無くて、

Qiita記事のストック数を確認するbookmarklet - Qiita

のようにスクレイピングするかで敬遠していた。

Qiitaのデータを扱った集計はたくさんあるけど、
記事単位だったり1
ランキングだったり(範囲外)。
全ユーザーの集計でもやっぱり集計上ユーザー画面を使うからか、Contributionだったり。
Qiitaのあれこれをひたすら分析してランキング - Qiita

と、「ランキングに乗らない程度のユーザーの投稿のみの合計いいね数」が、検索能力の低さも相まってQiita内では見つけられなかった。
=気にする人居ないってことなんですが…

今回はAPI実装後にモチベが持ち上がったのでさくっと作りました。

余話

で、肝心の結果が926でした。
50Contribution以上もゲタ履いてるとはさてはテングだなオメー
…となるはずでしたが、週をまたぐと計算方法が変わったのか、表示上が933。小数点込み合算後切り捨てから切り捨ててから合算に変わったのかな?
と記事を書いていたら計算方法がJust now?戻ったみたいです。
高いゲタを履いて頑張ります。

(anyenv+)rbenv+fishは設定が面倒臭い

  1. 増分計算や独自の重み付けすごいと思う

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?