2012-01-03 12 views

cevap

18

Bunun için github api kullanabilirsiniz. https://api.github.com/users/username/repos numarasına vurmak, kullanıcının kamusal depolarını listeler.

+2

M ay daha güncel olan v3 API'sini kullanmak istiyorum – BeRecursive

23

Kullanım Github API:

/users/:user/repos

Bu size tüm kullanıcının genel depoları verecektir. Özel depoları bulmanız gerekiyorsa, belirli bir kullanıcı olarak kimlik doğrulaması yapmanız gerekecektir.

/user/repos

tüm kullanıcının repo bulmak için: Bu durumda, DİNLENME çağrısını kullanabilirsiniz.

Python bunu yapmak için böyle bir şey yapmak:

işleve geçirilen URL yukarıdaki örneklerde olduğu gibi DİNLENME url'dir
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 

. Kimlik doğrulaması yapmanız gerekmiyorsa Yetkilendirme başlığının eklenmesini kaldırmak için yöntemi basitçe değiştirin. Daha sonra basit bir GET isteği kullanarak herkese açık bir api url alabilirsiniz.

+15

Bu, sonuç kümesinin yalnızca ilk "sayfasını" verecektir, bu değer varsayılan olarak 30 öğeye ayarlanmıştır. En yüksek değeri elde etmek için 'per_page = 100' kullanabilirsiniz, ancak bir kullanıcı yüz reposundan daha fazlasına sahipse, HTTP' Link' başlığındaki birkaç 'next' URL’yi yanıtla göndermeniz gerekir. – Potherca

+1

Teşekkürler @Potherca, sadece aradığım şey! – aknuds1

16

depoları listelemek için aşağıdaki curl komutu deneyin: Bu özel ise

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

, kendi API anahtarı (access_token=GITHUB_API_TOKEN) eklemeniz gerekir. Örnek olarak this script'u kontrol edin. Onları klonlamak için

, bkz: How to clone all repos at once from GitHub?

Muhtemelen bir jsonp çözüm gerek
+2

Bu, "per_page = 1000" öğesinden bağımsız olarak yalnızca ilk 100 veri deposunu gösterir. – jm666

+1

'curs 'komutunu' curl' komutuna ekleyerek uns curl -s ... ' – xmnboy

+1

As @ jm666 diyor ki, maksimum sayfa boyutu 100'dür. page, do: curl "https://api.github.com/users/$USER/repos?per_page=100\&page=2" – rscohn2

0

:

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

kullanırsanız 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>

İlgili konular