ふと GitHub のリポジトリに付いたスター数を数えてみたいと思ったので、 GitHub の API を利用してカウントしてみました。

目次

作ったもの

カウント用のスクリプトは Python で作りました。 (3.7.5)

使い方

使用する場合は python3 -m venv .venv && source ./.venv/bin/activate などで Python 3 の環境を作って && 入って、その中で下記コマンドを実行します。

$ python count-github-stargazers.py michimani
Count stargazers of michimani's GitHub repositries...


auto-start-stop-ec2                     :     1
qiita-to-hugo                           :     1
resize-s3-image                         :     1
start-stop-ec2-python                   :     1

TOTAL                                   :     4

補足

今回作ったスクリプトについて簡単に補足を書いておきます。

GitHub の API

今回使用したのは、ユーザのリポジトリ一覧を取得する API です。
スクリプト中にもありますが、エンドポイントは下記 URL となっています。

GET https://api.github.com/users/:username/repos

認証は不要で、指定したユーザの Public な リポジトリ一覧を取得することができます。
per_page パラメータでページングが可能で、 page パラメータでページを指定できます。

その他、下記のオプションで取得できるリポジトリの種類、ソート順を指定することができます。(詳細については公式ドキュメントを参照してください)

  • type : all / owner / member で指定します。デフォルトは owner です。

  • sort : 下記の値でソート順を指定します。デフォルトは full_name です。

    • created
    • updated
    • pushed
    • full_name
  • direction : asc / desc でソート順の昇順/降順を指定します。デフォルトは、sort=full_name の場合は asc 、その他の場合は desc です。

  • Repositories # List user repositories | GitHub Developer Guide

Python の argparse モジュール

今までも Python で簡単な CLI ツールのようなものを作っていましたが、今回は argparse という Python の標準モジュールを使用してみました。
CLI ツールを作るとなると、引数やオプションの処理を実装する必要があります。それらの 必須/任意 の管理などは面倒なのですが、 argparse モジュールを使用することにより引数やオプションの管理が非常に簡単になります。

今回のスクリプトでは GitHub のユーザ名のみを必須の引数とするシンプルなものですが、引数が渡されなかった場合に定型文を出力してくれたり、デフォルトで -h オプションを使用することで各引数・オプションのヘルプを出力することもできます。

  • 引数なしで実行した場合

    $ python count-github-stargazers.py
    usage: count.py [-h] user_name
    count.py: error: the following arguments are required: user_name
    
  • ヘルプ

    $ python count-github-stargazers.py -h
    usage: count.py [-h] user_name
    
    positional arguments:
      user_name   GitHub user name
    
    optional arguments:
      -h, --help  show this help message and exit
    

argparse モジュールについては下記の記事を参考にさせていただきました。

まとめ

GitHub のリポジトリに付いたスター数をカウントするスクリプトを Python で作ってみた話でした。
スター数をカウントしたいというか argparse モジュールを使ってみたかった感じになってますが、自分のリポジトリに付いてるスター数をカウントしたくなったら参考にしてみてください。

どうでもいいですが、スター数の名前が単純に stared_count じゃなくて stargazers_count なのがなんかかっこいいですよね。スターゲイザーっていう響きが。


以上、よっしー (michimani) でした。

Share to ...

0

Follow on Feedly


comments powered by Disqus