2012-01-03 25 views

回答

18

您可以使用這個github api。打到https://api.github.com/users/username/repos將列出該用戶的公共存儲庫。

+2

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

23

使用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

16

請嘗試以下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

0

你可能需要一個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>

相關問題