Assembla提供了一种简单的方法来获取组织的所有提交,使用api.assembla.com/v1/activity.json,它接受to和from参数,允许获取选定日期的提交(从用户参与的所有空间(Repos)。
Github有没有类似的方式?
我为Github找到了这些:
/repos/:owner/:repo/commits
接受用于获取所选日期的提交的开始日期和截止日期参数。但是,因为我需要所有repo的提交,所以我必须遍历所有这些repos并获取每个repo的提交。
/users/:user/events
这显示了用户的提交。我在遍历组织中的所有用户时没有任何问题,但是我如何才能获得特定的日期?
/orgs/:org/events
这显示了所有回购的所有用户的提交,但不知道如何获取特定日期?
发布于 2013-01-09 23:56:22
使用/users/:user/events端点的问题是,您无法获得API,并且您必须跳过非提交事件并执行更多对PushEvent的调用。假设你通过了身份验证,只要你的用户不是超级活跃的,你就应该是安全的。
对于/orgs/:org/events,我不认为他们接受任何参数,但我可以咨询API设计者。
以防你不熟悉,这些都是分页的结果。因此,您可以返回到链接头的开头。我的库(github3.py)提供了自动执行此操作的迭代器。你也可以告诉它你想要多少个事件。(与提交相同,等等)。但是,是的,在和GitHub的API人员谈过之后,我会回来编辑的。
编辑:Conversation
发布于 2013-01-10 02:17:15
您可能想了解一下Google项目-- http://www.githubarchive.org/,以及使用GitHub的BigQuery查询归档的功能。听起来它将是这项工作的完美工具--我非常确定您可以通过一个查询得到您想要的东西。
另一种选择是调用GitHub API --迭代组织的所有事件,并过滤出不满足日期范围标准和事件类型标准(提交)的事件。但是,由于您不能在API调用中指定日期范围,因此您可能会进行大量调用来获取您感兴趣的事件。请注意,您不必为了找到包含日期范围内第一个结果的页面而遍历从0开始的每个页面--只需对页码执行二进制搜索(变体)即可找到包含日期范围内的提交的任何页面,然后进行双向迭代,直到超出日期范围。这将减少您进行的API调用的数量。
https://stackoverflow.com/questions/14236461
复制相似问题