如何检索一个人的所有github仓库列表?

问题描述:

我们正在开发一个项目,我们需要在GitHub账户上显示一个人在他的仓库中的所有项目。如何检索一个人的所有github仓库列表?

任何人都可以建议,我怎么能显示一个特定的人使用他的git用户名的所有git仓库的名称?

您可以使用这个github api。打到https://api.github.com/users/username/repos将列出该用户的公共存储库。

+2

中号ay想要使用更新的v3 API – BeRecursive 2012-01-03 14:25:36

使用Github API

/users/:user/repos

这会给你的所有用户的公共库。如果您需要查找私有存储库,则需要以特定用户身份进行身份验证。然后,您可以使用REST调用:

/user/repos

找到所有用户的回购协议。

在Python做这个做这样的事情:

USER='AUSER' 
API_TOKEN='ATOKEN' 
GIT_API_URL='https://api.github.com' 

def get_api(url): 
    try: 
     request = urllib2.Request(GIT_API_URL + url) 
     base64string = base64.encodestring('%s/token:%s' % (USER, API_TOKEN)).replace('\n', '') 
     request.add_header("Authorization", "Basic %s" % base64string) 
     result = urllib2.urlopen(request) 
     result.close() 
    except: 
     print 'Failed to get api request from %s' % url 

凡在传递给函数的URL是REST URL作为在上面的例子。如果您不需要进行身份验证,那么只需修改该方法以删除添加授权标头。然后,您可以使用简单的GET请求获取任何公共API。

+15

这只会给出结果集的第一个“页面”,默认情况下设置为30个项目。您可以使用'?per_page = 100'来获得最大的ammount,但是如果用户有超过100个回购站,您需要在响应中发送HTTP'Link'头中的几个'next' URL。 – Potherca 2014-05-22 20:09:54

+1

感谢@Potherca,我正在寻找! – aknuds1 2016-06-03 09:28:53

请尝试以下curl命令列出的库:

USER=foo; curl "https://api.github.com/users/$USER/repos?per_page=100" | grep -o '[email protected][^"]*' 

如果是私人的,你需要增加你的API密钥(access_token=GITHUB_API_TOKEN)。以this script为例。

要复制它们,请参见:How to clone all repos at once from GitHub?

+2

无论“per_page = 1000”如何,它都只显示前100个存储库。 – jm666 2016-08-12 07:07:32

+1

将'-s'选项添加到'curl'命令以摆脱那些难看的进度条,如'curl -s ...' – xmnboy 2017-03-11 01:41:51

+1

正如@ jm666所述,最大页面大小为100.要查看第2个page:do:curl“https://api.github.com/users/$USER/repos?per_page=100\&page=2” – rscohn2 2017-12-04 01:17:00

你可能需要一个JSONP解决方案:

https://api.github.com/users/[user name]/repos?callback=abc

如果你使用jQuery:

$.ajax({ 
 
    url: "https://api.github.com/users/blackmiaool/repos", 
 
    jsonp: true, 
 
    method: "GET", 
 
    dataType: "json", 
 
    success: function(res) { 
 
    console.log(res) 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>