2012-01-03 6 views
36

हम एक परियोजना पर काम कर रहे हैं जहां हमें गिटहब खाते पर अपने भंडार में किसी व्यक्ति की सभी परियोजनाओं को प्रदर्शित करने की आवश्यकता है।किसी व्यक्ति के सभी जिथब रिपॉजिटरीज़ की सूची कैसे प्राप्त करें?

क्या कोई सुझाव दे सकता है कि मैं अपने गिट-उपयोगकर्ता नाम का उपयोग करके किसी विशेष व्यक्ति के सभी गिट भंडारों के नाम कैसे प्रदर्शित कर सकता हूं?

उत्तर

18

आप इसके लिए github api का उपयोग कर सकते हैं। https://api.github.com/users/username/repos मारने से उस उपयोगकर्ता के सार्वजनिक भंडार सूचीबद्ध होंगे।

+2

एम एई अधिक हालिया वी 3 एपीआई – BeRecursive

23

उपयोग Github API:

/users/:user/repos

यह आपको उपयोगकर्ता के सभी सार्वजनिक खजाने दे देंगे। यदि आपको निजी भंडारों को खोजने की आवश्यकता है तो आपको विशेष उपयोगकर्ता के रूप में प्रमाणित करने की आवश्यकता होगी। इसके बाद आप REST कॉल का उपयोग कर सकते हैं:

/user/repos

सभी उपयोगकर्ता के रेपोस खोजने के लिए।

अजगर में ऐसा करने के लिए की तरह कुछ कार्य करें:

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 

कहाँ यूआरएल कार्य करने के लिए में पारित उपरोक्त उदाहरण में बताया बाकी यूआरएल है। यदि आपको प्रमाणित करने की आवश्यकता नहीं है तो प्राधिकरण शीर्षलेख जोड़ने को हटाने के लिए विधि को बस संशोधित करें। फिर आप एक साधारण जीईटी अनुरोध का उपयोग कर कोई भी सार्वजनिक एपीआई यूआरएल प्राप्त कर सकते हैं।

+15

का उपयोग करना चाहते हैं यह केवल परिणाम सेट का पहला "पृष्ठ" देगा, जो डिफ़ॉल्ट रूप से 30 आइटम पर सेट होता है। आप अधिकतम राशि प्राप्त करने के लिए '? Per_page = 100' का उपयोग कर सकते हैं, लेकिन यदि किसी उपयोगकर्ता के पास सौ से अधिक रिपो हैं तो आपको HTTP 'लिंक' शीर्षलेख में प्रतिक्रिया के साथ भेजे गए कई 'अगले' यूआरएल का पालन करना होगा। – Potherca

+1

धन्यवाद @ पोदरका, बस जो मैं खोज रहा था! – aknuds1

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

+1

'curl -s ... ' – xmnboy

+1

जैसा कि @ jm666 कहता है, अधिकतम पृष्ठ आकार 100 है। दूसरा पृष्ठ आकार 100 देखने के लिए, उन भयानक प्रगति सलाखों से छुटकारा पाने के लिए अपने' curl' कमांड में' -s' विकल्प जोड़ें ' पेज, करें: कर्ल "https://api.github.com/users/$USER/repos?per_page=100\&page=2" – rscohn2

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>

संबंधित मुद्दे

 संबंधित मुद्दे