किसी व्यक्ति के सभी GitHub रिपॉजिटरी की सूची कैसे प्राप्त करें?


94

हम एक ऐसी परियोजना पर काम कर रहे हैं, जहाँ हमें किसी व्यक्ति की सभी परियोजनाओं को GitHub खाते पर उसके भंडार में प्रदर्शित करने की आवश्यकता है।

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

जवाबों:


67

आप इसके लिए गितुब आपी का उपयोग कर सकते हैं । हिटिंग https://api.github.com/users/USERNAME/reposउपयोगकर्ता के लिए सार्वजनिक खजाने सूची जाएगा USERNAME


7
आप यह भी चुन सकते हैं कि आपको ?per_page= डेवलपर.
github.com/v3/#pagination के

1
api.github.com/users/USERNAME/repos?page=1 परिणामों का पहला पृष्ठ देता है। (2 करने के लिए और इतने पर परिवर्तन 1, डिफ़ॉल्ट है 30 परिणाम प्रति पृष्ठ)
stevec

40

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

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


27
यह केवल परिणाम सेट का पहला "पृष्ठ" देगा, जो डिफ़ॉल्ट रूप से 30 आइटम पर सेट किया गया है। आप ?per_page=100अधिकतम राशि प्राप्त करने के लिए उपयोग कर सकते हैं, लेकिन यदि उपयोगकर्ता के पास सौ से अधिक रिपॉजिट हैं, तो आपको प्रतिक्रिया के साथ nextHTTP Linkहेडर भेजने में कई यूआरएल का पालन करना होगा ।
20

2
धन्यवाद @Potherca, बस मैं क्या देख रहा था!
एकनॉड्स

34

curlरिपॉजिटरी को सूचीबद्ध करने के लिए निम्नलिखित कमांड आज़माएं :

GHUSER=CHANGEME; curl "https://api.github.com/users/$GHUSER/repos?per_page=100" | grep -o 'git@[^"]*'

क्लोन किए गए URL को सूचीबद्ध करने के लिए, चलाएं:

GHUSER=CHANGEME; curl -s "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -w clone_url | grep -o '[^"]\+://.\+.git'

यदि यह निजी है, तो आपको अपनी API कुंजी ( access_token=GITHUB_API_TOKEN) जोड़ने की आवश्यकता है , उदाहरण के लिए:

curl "https://api.github.com/users/$GHUSER/repos?access_token=$GITHUB_API_TOKEN" | grep -w clone_url

यदि उपयोगकर्ता संगठन है, तो /orgs/:username/reposइसके बजाय सभी रिपॉजिटरी को वापस करने के लिए उपयोग करें ।

उन्हें क्लोन करने के लिए, देखें: GitHub से एक ही बार में सभी रिपोज को कैसे क्लोन किया जाए?

यह भी देखें: कमांड लाइन का उपयोग करके निजी रेपो से GitHub रिलीज कैसे डाउनलोड करें


9
यह केवल पहले 100 रिपॉजिटरी को दर्शाता है, चाहे कुछ भी हो per_page=1000
jm666

2
उन भद्दे प्रगति पट्टियों से छुटकारा पाने के -sलिए अपने curlकमांड में विकल्प जोड़ें , जैसे किcurl -s ...
xmnboy

5
जैसा कि @ jm666 कहता है, अधिकतम पृष्ठ का आकार 100 है। 2 पेज देखने के लिए, करें: कर्ल " api.github.com/users/$USER/repos?per_page=100 \ & page = 2"
rcocohn2

2
निजी उदाहरण उदाहरण के साथ काम नहीं करेगा, / "बहुवचन में उपयोगकर्ता /" केवल सार्वजनिक रिपॉजिट देता है। आपको api.github.com/user/repos के साथ जाना होगा और निजी पाने के लिए अनुरोध में टोकन जोड़ना होगा।
LeandroCR

2
@kenorb रहस्य सुलझाया गया, उपयोगकर्ता एक ऑर्ग है इसलिए /orgs/:username/reposसभी रिपॉजिट लौटाएं, /users/...उनमें से वापसी करें, यह वास्तव में अजीब है। उपयोगकर्ता नाम या ऑर्गन दोनों को ही माना जा सकता है।
IOS शिक्षार्थी

11

यदि आपने jq स्थापित किया है, तो आप किसी उपयोगकर्ता के सभी सार्वजनिक रिपॉजिट को सूचीबद्ध करने के लिए निम्न कमांड का उपयोग कर सकते हैं

curl -s https://api.github.com/users/<username>/repos | jq '.[]|.html_url'

6

आपको संभवतः एक 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>


3

NPM मॉड्यूल रिपोज कुछ उपयोगकर्ता या समूह के लिए सभी पब्लिक रिपोज के लिए JSON पकड़ लेता है। आप इसे सीधे चला सकते हैं, npxइसलिए आपको केवल एक ऑर्गन या उपयोगकर्ता ("W3C") लेने की आवश्यकता नहीं है:

$ npx repos W3C W3Crepos.json

यह W3Crepos.json नामक एक फाइल बनाएगा। ग्रेप रेपो की सूची लाने के लिए काफी अच्छा है:

$ grep full_name W3Crepos.json

पेशेवरों:

  • 100 से अधिक रेपो के साथ काम करता है (इस सवाल के कई जवाब नहीं)।
  • टाइप करने के लिए ज्यादा नहीं।

विपक्ष:

  • आवश्यकता है npx(या npmयदि आप इसे वास्तविक के लिए स्थापित करना चाहते हैं)।

3

पायथन का उपयोग करके एक GitHub उपयोगकर्ता के सभी सार्वजनिक रिपॉजिटरी की सूची को पुनः प्राप्त करें:

import requests
username = input("Enter the github username:")
request = requests.get('https://api.github.com/users/'+username+'/repos')
json = request.json()
for i in range(0,len(json)):
  print("Project Number:",i+1)
  print("Project Name:",json[i]['name'])
  print("Project URL:",json[i]['svn_url'],"\n")

संदर्भ


1
यह काम नहीं कर रहा है (हो सकता है कि यह पुराने एपीआई संस्करण के लिए हो)
ओज़ज़ीकचच

2
हां, एक छोटा सा बदलाव है। मैंने अपना उत्तर संपादित कर लिया है, और अब यह अच्छी तरह से काम करता है।
darshanc99 16

3

अब भयानक ग्राफ़काइल एपीआई एक्सप्लोरर का उपयोग करने का एक विकल्प है ।

मैं अपने सभी ओआरजी के सक्रिय रिपोज की सूची उनकी संबंधित भाषाओं के साथ चाहता था। यह प्रश्न बस यही करता है:

{
  organization(login: "ORG_NAME") {
    repositories(isFork: false, first: 100, orderBy: {field: UPDATED_AT, direction: DESC}) {
      pageInfo {
        endCursor
      }
      nodes {
        name
        updatedAt
        languages(first: 5, orderBy: {field: SIZE, direction: DESC}) {
          nodes {
            name
          }
        }
        primaryLanguage {
          name
        }
      }
    }
  }
}


3

यदि किसी संगठन के भंडार की तलाश है-

api.github.com/orgs/$NAMEOFORG/repos

उदाहरण:

curl https://api.github.com/orgs/arduino-libraries/repos

इसके अलावा, आप सभी नामों को प्राप्त करने के लिए per_page पैरामीटर जोड़ सकते हैं, जब एक पेजिनेशन समस्या हो-

curl https://api.github.com/orgs/arduino-libraries/repos?per_page=100

3

यहाँ repos API के लिए एक पूर्ण युक्ति दी गई है:

https://developer.github.com/v3/repos/#list-repositories-for-a-user

GET /users/:username/repos

क्वेरी स्ट्रिंग पैरामीटर:

पहले 5 को ऊपर एपीआई लिंक में प्रलेखित किया गया है। के लिए मापदंडों pageऔर per_pageजो कहीं और प्रलेखित हैं और एक पूर्ण विवरण में उपयोगी हैं।

  • type(स्ट्रिंग): में से एक हो सकता है all, owner, member। चूक:owner
  • sort(स्ट्रिंग): में से एक हो सकता है created, updated, pushed, full_name। चूक:full_name
  • direction(स्ट्रिंग): ascया में से एक हो सकता है desc। डिफ़ॉल्ट: ascका उपयोग करते समय full_name, अन्यथाdesc
  • page (पूर्णांक): वर्तमान पृष्ठ
  • per_page (पूर्णांक): प्रति पृष्ठ अभिलेखों की संख्या

चूँकि यह एक HTTP GET API है, cURL के अलावा, आप इसे केवल ब्राउज़र में आज़मा सकते हैं। उदाहरण के लिए:

https://api.github.com/users/grokify/repos?per_page=1&page=2


2

एचटीएमएल

<div class="repositories"></div>

जावास्क्रिप्ट

// गीथूब रिपोज

यदि आप रिपॉजिटरी सूची को सीमित करना चाहते हैं, तो आप इसके ?per_page=3बाद जोड़ सकते हैं username/repos

जैसे username/repos?per_page=3

/ username/ के बजाय , आप किसी भी व्यक्ति का उपयोगकर्ता नाम Github पर रख सकते हैं।

var request = new XMLHttpRequest();
        request.open('GET','https://api.github.com/users/username/repos' , 
        true)
        request.onload = function() {
            var data = JSON.parse(this.response);
            console.log(data);
            var statusHTML = '';
            $.each(data, function(i, status){
                statusHTML += '<div class="card"> \
                <a href=""> \
                    <h4>' + status.name +  '</h4> \
                    <div class="state"> \
                        <span class="mr-4"><i class="fa fa-star mr-2"></i>' + status.stargazers_count +  '</span> \
                        <span class="mr-4"><i class="fa fa-code-fork mr-2"></i>' + status.forks_count + '</span> \
                    </div> \
                </a> \
            </div>';
            });
            $('.repositories').html(statusHTML);
        }
        request.send();

1

पेजिंग JSON

नीचे दिए गए JS कोड का उपयोग कंसोल में किया जाना है।

username = "mathieucaroff";

w = window;
Promise.all(Array.from(Array(Math.ceil(1+184/30)).keys()).map(p =>
    fetch(`//api.github.com/users/{username}/repos?page=${p}`).then(r => r.json())
)).then(all => {
    w.jo = [].concat(...all);
    // w.jo.sort();
    // w.jof = w.jo.map(x => x.forks);
    // w.jow = w.jo.map(x => x.watchers)
})

1

जवाब "/ उपयोगकर्ता /: उपयोगकर्ता / रेपो" है, लेकिन मेरे पास सभी कोड हैं जो एक ओपन-सोर्स प्रोजेक्ट में ऐसा करते हैं जिसका उपयोग आप एक सर्वर पर वेब-एप्लिकेशन को खड़ा करने के लिए कर सकते हैं।

मैं गिट-कैप्टन नामक एक GitHub प्रोजेक्ट पर खड़ा हुआ जो GitHub API के साथ संचार करता है जो सभी रिपॉजिट को सूचीबद्ध करता है।

यह एक ओपन-सोर्स वेब-एप्लिकेशन है, जिसे कई GitHub रिपॉजिटरी में एक शाखा को खोजने, बनाने और हटाने के लिए GodeHub API का उपयोग करते हुए Node.js के साथ बनाया गया है।

यह संगठनों या एकल उपयोगकर्ता के लिए सेटअप किया जा सकता है।

मेरे पास एक चरण-दर-चरण है कि इसे कैसे सेट किया जाए और साथ ही रीड-मी में भी।


1

उपयोगकर्ता के 100 सार्वजनिक रिपॉजिटरी के url प्राप्त करने के लिए:

$.getJSON("https://api.github.com/users/suhailvs/repos?per_page=100", function(json) {
  var resp = '';
  $.each(json, function(index, value) {
    resp=resp+index + ' ' + value['html_url']+ ' -';
    console.log(resp);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


1
const request = require('request');
const config = require('config');

router.get('/github/:username', (req, res) => {
    try {
        const options = {

            uri: `https://api.github.com/users/${req.params.username}/repos?per_page=5
                 &sort=created:asc
                 &client_id=${config.get('githubClientId')}
                 &client_secret=${config.get('githubSecret')}`,

            method: 'GET',

            headers: { 'user-agent': 'node.js' }
        };
        request(options, (error, response, body) => {
            if (error) console.log(error);
            if (response.statusCode !== 200) {
                res.status(404).json({ msg: 'No Github profile found.' })
            }
            res.json(JSON.parse(body));
        })
    } catch (err) {
        console.log(err.message);
        res.status(500).send('Server Error!');
    }
});

1
अधिक जानकारी के लिए git docs-> developer.github.com/v3/repos पर जाएं
विशाल

1
एसओ में आपका स्वागत है! कृपया पोस्ट करने से पहले इसे देखें ... जब आप कोई उत्तर पोस्ट करते हैं और कुछ और होते हैं, तो अपने पीओवी के पेशेवरों को दिखाएं और कृपया, बस पोस्ट कोड को न करें, इसे थोड़ा समझाएं।
डेविड गार्सिया बोडेगो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.