7
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.

GitHubAPIで複数アカウントの草をまとめて表示させる

Last updated at Posted at 2021-09-03

TL;DR

GitHubの会社用アカウントと個人用アカウントの草を,自分のWebサイトにまとめて表示させてみました.

GitHubのGraphQL APIを叩くことで草情報を取ってこれるので,それを自分のWebサイトで表示させてやります.

手順

GitHubアクセストークンの発行

ここからPersonal access tokenを発行します.
https://github.com/settings/tokens

具体的な手順は公式ドキュメントの説明が分かりやすいのでそちらを参照してください.

今回は複数アカウントにアクセスしますが,草情報などのパブリックな情報であればどのアカウントのアクセストークンでも取得できるので,どれか一つで大丈夫です.

草情報の取得

こちらのサイトを参考にさせていただきました.
https://zenn.dev/yuichkun/articles/b207651f5654b0

具体的な手順は次の通りです.

  1. エンドポイントをhttps://api.github.com/graphqlに設定する
  2. ヘッダーにアクセストークンを追加する(Authorization: Bearer [発行したアクセストークン]
  3. メソッドをPOSTにする
  4. クエリを書いてリクエスト

草情報のみであれば次のクエリで取得できます.
ユーザーIDを変えることでアカウントごとの草情報を取得できます.

{
  user(login: [ユーザーIDを入れる]) {
    contributionsCollection {
      contributionCalendar {
        weeks {
          contributionDays {
            contributionCount
          }
        }
      }
    }
  }
}

レスポンスは次の通りです.
草情報(各日のcontribution数)は,contributionCountという名前で週ごとに配列で返ってきます.

{
  "data": {
    "user": {
      "contributionsCollection": {
        "contributionCalendar": {
          "weeks": [
            {
              "contributionDays": [
                {
                  "contributionCount": 0
                },
                {
                  "contributionCount": 1
                },
                {
                  "contributionCount": 5
                },
                {
                  "contributionCount": 17
                },
                {
                  "contributionCount": 3
                },
                {
                  "contributionCount": 5
                },
                {
                  "contributionCount": 6
                }
              ]
            },
            ...(省略)...
          ]
        }
      }
    }
  }
}

画像はGraphiQLの例です.

スクリーンショット 2021-09-03 16.39.27.png

スクリーンショット 2021-09-03 16.58.27.png

Webサイト上で表示

あとはcontributionCountに入っている値を使って表示するだけです.

私はアカウントごとに色を変えて表示させてみました.
(ちなみにVue.jsです)

この辺の詳細は,長くなる&コードが汚いので今回は割愛しますが,gridで四角を並べて,contributionCountに応じてbackground-color変えてやっています笑

forQiita.gif

おわりに

上のGifにも若干映っていますが,GitHub APIは草情報だけでなく,リポジトリ情報や言語情報なども引っ張ってこれるので,色々できて面白いです.

GraphQLの勉強にもなるのでぜひ!

7
0
1

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
7
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?