最适合Github API v3的python库

时间:2012-05-16 19:17:27

标签: python api github

我正在寻找适合我的Github APIv3的python库。

我在(python-github3)中找到了一个GH API docs个库。在ipython中玩了一两个小时之后,我发现探索/使用它真的不直观。我看了一下,发现有很多人至少试图写这样的图书馆。看起来更有前途的(一目了然)是PyGithubanother python-github3,显然与第一个不同。

在接下来的几天连续尝试库之后的库之前,我想询问SO社区是否有一个可接受的,明确的,明显的选择库?

我不喜欢第一个库是(对我来说)不直观的获取数据的方法 - 你得到的一些属性,一些你得到的方法的返回值,返回值是一些复杂的对象必须进行分页和迭代等等。

在这方面,PyGithub乍一看看起来更有吸引力 - 明确地向下钻取对象层次结构,然后到达包含你想要的属性:

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

那么,任何珍珠的智慧分享?我知道我没有足够的技能来快速判断图书馆的质量,这就是我转向SO社区的原因。

编辑:fwiw,我最终使用 PyGithub 。它运作良好,作者非常愿意接受反馈和错误报告。 : - )

4 个答案:

答案 0 :(得分:71)

由于您提到您是初学python程序员,我建议您首先尝试使用JSON API而不使用任何Github库。它确实不是那么困难,它会在你的编程生涯中为你提供很多帮助,因为同样的方法可以应用于任何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。在您的代码中,您自然也需要处理错误情况。

如果您需要使用身份验证进行访问,则会更复杂一些。

答案 1 :(得分:22)

最后,我最终使用了PyGithub。它运作良好,作者非常愿意接受反馈和错误报告。 : - )

(从我的编辑改编为原始问题,以获得更好的可见性)

答案 2 :(得分:14)

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)

答案 3 :(得分:1)

Libsaas非常适合初学者。它有一个很好的documentation并且易于使用,请参阅example。随意贡献。