Как получить список всех репозиториев GitHub человека? - PullRequest
57 голосов
/ 03 января 2012

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

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

Ответы [ 8 ]

34 голосов
/ 03 января 2012

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

33 голосов
/ 03 января 2012

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

26 голосов
/ 16 октября 2015

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

5 голосов
/ 30 ноября 2018

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

curl -s https://api.github.com/users/<username>/repos | jq '.[]|.html_url'
3 голосов
/ 07 июня 2017

Возможно, вам необходимо решение 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>
0 голосов
/ 22 июня 2019

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

$ npx repos W3C W3Crepos.json

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

$ grep full_name W3Crepos.json

плюсы:

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

минусы:

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

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

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

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

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

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

0 голосов
/ 26 декабря 2018

Пейджинг 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)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...