github api基于d获取组织所有回购的所有提交

2024-06-26 00:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

Assembla提供了一种使用api.assembla.com/v1/activity.json获取组织的所有提交的简单方法,它使用to和from参数,允许从用户参与的所有空间(repo)中获取选定日期的提交。在

Github有没有类似的方式?在

我为Github找到了这些:
/repos/:owner/:repo/commits
接受since和until参数以获取所选日期的提交。但是,由于我需要所有回购的提交,所以我必须循环所有这些回购,并获取每个回购的提交。在

/users/:user/events
这显示了用户的提交。我没有任何问题,在所有的用户在组织循环,但我如何才能得到一个特定的日期?在

/orgs/:org/events
这显示了所有回购的所有用户的提交,但不知道如何获取特定日期?在


Tags: to方法用户fromgithubcomapijson
2条回答

使用/users/:user/events端点的问题是,您不能得到PushEvent,您必须跳过非提交事件,并对API执行更多的调用。假设你通过了身份验证,只要你的用户不是超活跃的,你就应该是安全的。在

对于/orgs/:org/events我不认为他们接受任何参数,但我可以与API设计者联系。在

如果你不熟悉,这些都是分页的结果。所以你可以回到链接头的开头。我的库(github3.py)提供迭代器来自动执行此操作。你也可以告诉它你想要多少个活动。(与提交等相同)。但是,是的,我会在和GitHub的API人员交谈之后回来编辑一下。在

编辑Conversation

您可能希望查看GitHub存档项目http://www.githubarchive.org/,以及使用Google的BigQuery查询存档的能力。听起来这将是一个完美的工作工具,我很肯定你可以得到你想要的与一个单一的查询。在

另一个选项是调用githubapi迭代组织的所有事件,并过滤出不满足日期范围标准和事件类型标准(提交)的事件。但是,由于不能在API调用中指定日期范围,您可能会进行大量调用来获取感兴趣的事件。请注意,您不必从0开始遍历每一页以查找包含日期范围内第一个结果的页,只要对页码执行(变体)二进制搜索,就可以找到日期范围内包含提交的任何页面,然后在两个方向上迭代,直到超出日期范围为止。这会减少你调用API的次数。在

相关问题 更多 >