code

사람의 모든 github 저장소 목록을 검색하는 방법은 무엇입니까?

codestyles 2020. 12. 8. 08:05
반응형

사람의 모든 github 저장소 목록을 검색하는 방법은 무엇입니까?


우리는 GitHub 계정의 저장소에있는 사람의 모든 프로젝트를 표시해야하는 프로젝트를 진행하고 있습니다.

누구든지 git-user 이름을 사용하여 특정 사람의 모든 git 저장소 이름을 어떻게 표시 할 수 있습니까?


이를 위해 github api사용할 수 있습니다 . 명중 https://api.github.com/users/USERNAME/repos하면 USERNAME 사용자의 공용 저장소가 나열됩니다 .


사용 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 URL을 가져올 수 있습니다.


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 릴리스를 다운로드하는 방법


jq가 설치되어 있는 경우 다음 명령을 사용하여 사용자의 모든 공용 저장소를 나열 할 수 있습니다.

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

아마도 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>


NPM 모듈 저장소 는 일부 사용자 또는 그룹의 모든 공용 저장소에 대한 JSON을 가져옵니다. 에서 직접 실행할 수 npx있으므로 아무것도 설치할 필요가 없습니다. 조직이나 사용자를 선택하기 만하면됩니다 (여기에서 "W3C").

$ npx repos W3C W3Crepos.json

그러면 W3Crepos.json이라는 파일이 생성됩니다. Grep은 예를 들어 저장소 목록을 가져 오는 데 충분합니다.

$ grep full_name W3Crepos.json

장점 :

  • 100 개 이상의 리포지토리에서 작동합니다 (이 질문에 대한 많은 답변은 그렇지 않습니다).
  • 입력 할 내용이 많지 않습니다.

단점 :

  • 필요합니다 npx(또는 npm실제로 설치하려는 경우).

페이징 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)
})

대답은 "/ users / : user / repo"이지만, 서버에서 웹 애플리케이션을 구축하는 데 사용할 수있는 오픈 소스 프로젝트에이 작업을 수행하는 모든 코드가 있습니다.

I stood up a GitHub project called Git-Captain that communicates with the GitHub API that lists all the repos.

It's an open-source web-application built with Node.js utilizing GitHub API to find, create, and delete a branch throughout numerous GitHub repositories.

It can be setup for organizations or a single user.

I have a step-by-step how to set it up as well in the read-me.


Retrieve the list of all public repositories of a GitHub user using Python:

import requests
username = input("Enter the github username:")
request = requests.get('https://api.github.com/users/'+username+'/reposper_page=1000')
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")

Reference


To get the user's 100 public repositories's 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>

참고URL : https://stackoverflow.com/questions/8713596/how-to-retrieve-the-list-of-all-github-repositories-of-a-person

반응형