Python
Django
GitHub
python3

PythonでGitHubAPIを叩く(Django)

DjangoでGitHubのOAuth認証を利用してのWebアプリケーションを利用した際にGitHubAPIを叩いたので備忘録も兼ねて、自分と同じようにPythonでGitHubAPIを叩きたい人向けに記事を書く。

前提条件

  • Djangoがある程度わかっている。
  • Python3の構文を理解している。

注意

今回の記事ではOAuth認証の実装の説明はしないのでこちらの記事を参考に実装してみてください

準備

GitHubAPIを利用するためにPyGithubというライブラリを使用します。

$ pip install PyGithubでライブラリをインストールしましょう。

ユーザ情報の取得

アクセストークンを利用する場合

OAuth認証を実装したWebアプリケーションでGitHubAPIを叩きたい場合はアクセストークンを利用します。

views.py
social = user.social_auth.get(provider='github')
access_token = social.extra_data['access_token']

上記のコードでアクセストークンを取得できます。
userの部分にはUserモデルを入れてあげてください。

ユーザ情報を取得するには以下のコードでOKです!

views.py
from github import Github

gh = Github(access_token)

これでghにはアクセストークンを元に取得したユーザの情報が入っています。

普通にPythonでGitHubAPIを叩きたい場合

DjangoとかWebアプリケーションではなく普通にスクリプトでGitHubAPIを叩きたい場合でもこのライブラリは使えます(有能)

github.py
from github import Github

gh = Github('ユーザー名', 'パスワード')

以上のようにしてユーザ情報を取得できます!

注意点

アクセストークンを元にユーザ情報を取得した場合Organizations(組織)関連の情報が取得できないので注意しましょう。

※ もしかしたら方法があるのかもしれませんが私は見つけられませんでした...

GitHubAPIを叩く!!

お待たせしました!ここまできたらAPI叩き放題です!(ゲス顔)
全部紹介するとキリがないので私が開発で実際に使ったものだけも紹介したいと思います。(甘え)

リポジトリ一覧の取得

github.py
gh.get_user().get_repos()

リポジトリの個別情報の取得

repository.py
repository.name # リポジトリ名

repository.html_url # GitHUbのリポジトリのページのURL(リンクに使える)

repository.stargazers_count # リポジトリのスター数

repository.updated_at # 最後にリポジトリを更新した時刻(日本時間基準ではないので+9時間してやると日本時間になる)

自己紹介(Bio)の取得

github.py
gh.get_user().bio

ウォッチリストの取得

github.py
gh.get_user().get_watched()

Issueの一覧の取得

github.py
gh_repo.get_issues()

Issueの個別情報の取得

issue.py
issue.title # タイトル

issue.html_url # リポジトリと同じ(リンク)

ブランチ一覧の取得

github.py
gh.get_repo(project.repository_id).get_branches()

ブランチの個別情報の取得

branch.py
branch.name # ブランチ名

以上!

最後に

全部取得系でしたが当然リポジトリの作成なども行えますので、それは公式のドキュメントを参考にして見てください(土下座)
ただ取得にしろ作成にしろ要領は同じなので困ることはあまりないと思います。私はPyCharmの補完機能を利用して勉強したので是非実践して見てください!

それでは皆さん良いPythonライフを送ってくださいね!