Подтвердить что ты не робот

Как получить список всех репозиториев github человека?

Мы работаем над проектом, в котором нам нужно отображать все проекты человека в его репозитории на учетной записи GitHub.

Может ли кто-нибудь предложить, как я могу отображать имена всех репозиториев git конкретного человека, используя его имя git -user?

4b9b3361

Ответ 1

Для этого вы можете использовать github api. Нажав https://api.github.com/users/USERNAME/repos, вы увидите список общедоступных репозиториев для пользователя USERNAME.

Ответ 2

Используйте API Github:

/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-адрес, переданный функции, является URL-адресом REST, как в приведенных выше примерах. Если вам не нужно аутентифицироваться, просто измените метод, чтобы удалить добавление заголовка авторизации. Затем вы можете получить любой общедоступный api url, используя простой запрос GET.

Ответ 3

Попробуйте следующую команду curl чтобы curl список репозиториев:

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

Чтобы получить список клонированных 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 Release из частного репозитория с помощью командной строки

Ответ 4

Если у вас установлен jq, вы можете использовать следующую команду, чтобы просмотреть все публичные репозитории пользователя.

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

Ответ 5

Вероятно, вам нужно решение 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>

Ответ 6

Репозитории модуля NPM получают JSON для всех общедоступных репозиториев для какого-либо пользователя или группы. Вы можете запустить это прямо из npx поэтому вам не нужно ничего устанавливать, просто выберите org или пользователя (здесь "W3C"):

$ npx repos W3C W3Crepos.json

Это создаст файл с именем W3Crepos.json. Grep достаточно хорош, например, для получения списка репозиториев:

$ grep full_name W3Crepos.json

плюсы:

  • Работает с более чем 100 репо (многие ответы на этот вопрос нет).
  • Не так много, чтобы напечатать.

минусы:

  • Требуется npx (или npm если вы хотите установить его по-настоящему).

Ответ 7

Пейджинг 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)
})

Ответ 8

Ответ "/users/: user/repo", но у меня есть весь код, который делает это в проекте с открытым исходным кодом, который вы можете использовать для установки веб-приложения на сервере.

Я поддержал проект GitHub под названием Git-Captain, который связывается с GitHub API, в котором перечислены все репозитории.

Это веб-приложение с открытым исходным кодом, созданное с использованием Node.js и использующее GitHub API для поиска, создания и удаления ветки в многочисленных репозиториях GitHub.

Это может быть настройка для организаций или одного пользователя.

У меня есть пошаговая инструкция по настройке в read-me.

Ответ 9

Получить список всех общедоступных репозиториев пользователя GitHub с помощью 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")

Ссылка

Ответ 10

Чтобы получить пользователю 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>