web-dev-qa-db-ja.com

最も適切なpython Github API v3のライブラリ

私に適したGithub APIv3のpythonライブラリを探しています。

ライブラリが1つ見つかりました (python-github3)GH API docs で言及されています。 ipythonで1〜2時間遊んだ後、探索/作業するのは本当に直感的ではないことがわかりました。もっと調べてみると、少なくともそのようなライブラリを書き込もうとする人がかなりいることがわかりました。 (一見)より有望な見た目は PyGithub別のpython-github で、これは明らかに最初のものとは異なります。

ライブラリの次の日を連続してライブラリを試す前に、SOコミュニティに、そのライブラリに受け入れられた、決定的で明白な選択肢があるかどうかを尋ねたいですか?

最初のライブラリで気に入らなかったのは、データを取得するための(私にとって)直感的でない方法でした-属性として取得するもの、メソッドの戻り値として取得するもの、その戻り値が必要な複雑なオブジェクトページングおよび反復処理など.

その点で、PyGithubは一見魅力的です-オブジェクト階層を明確にドリルダウンし、必要なものを含む属性に到達します。

for repo in g.get_user().get_repos(): print repo.name

それで、共有する知恵の真珠はありますか?ライブラリの品質を迅速に判断するのに十分なスキルがないため、SOコミュニティに目を向けています。

編集:fwiw、私はPyGithubを使用することになりました。それはうまく機能し、作者はフィードバックとバグレポートを本当に受け入れます。 :-)

80
Christoph

最終的に、私は PyGithub を使用することになりました。それはうまく機能し、作者はフィードバックとバグレポートを本当に受け入れます。 :-)

(見やすくするために、編集から元の質問に適応)

22
Christoph

あなたは初心者であると述べたのでpythonプログラマー、最初にGithubライブラリなしでJSON APIを使用することをお勧めします。同じアプローチをどのJSON APIにも適用できるため、プログラミングの後半になります(特にライブラリの試用には数日かかると思われる場合)。

一部のライブラリは使いにくいと言っているのではなく、APIを直接使用するためのわずかな余分な努力は、長期的には価値があると言っているだけです。少なくとも、これらのライブラリの一部が「直感的でない」ように見える理由を理解するのに役立ちます(あなたが言ったように)。

Djangoリポジトリの作成時間を取得する簡単な例:

import requests
import json
r = requests.get('https://api.github.com/repos/Django/django')
if(r.ok):
    repoItem = json.loads(r.text or r.content)
    print "Django repository created: " + repoItem['created_at']

これは、よく使用される requests library を使用しています。コードでは、当然、エラーのケースも処理する必要があります。

認証付きのアクセスが必要な場合は、もう少し複雑になります。

72
Lycha

ドキュメントはPyGitHubにとって恐ろしいものですが、製品は素晴らしいです。ファイルを実際に取得し、ファイルの先頭に新しいコメントを付けて変更し、コミットして戻す簡単なサンプルを次に示します。

from github import Github
gh = Github(login_or_token='.....', base_url='...../api/v3')
user = gh.get_user()
repo = user.get_repo("RepoName")
file = repo.get_file_contents("/App/forms.py")
decoded_content = "# Test " + "\r\n" + file.decoded_content
repo.update_file("/"RepoName"/forms.py", "Commit Comments", decoded_content, file.sha)
14
Steve

Libsaas は初心者に最適です。 Nice documentation があり、使いやすいです example を参照してください。気軽に貢献してください。

1
DmitrySandalov