Ответ 1
Для этого вы можете использовать github api. Нажав https://api.github.com/users/USERNAME/repos
, вы увидите список общедоступных репозиториев для пользователя USERNAME.
Мы работаем над проектом, в котором нам нужно отображать все проекты человека в его репозитории на учетной записи GitHub.
Может ли кто-нибудь предложить, как я могу отображать имена всех репозиториев git конкретного человека, используя его имя git -user?
Для этого вы можете использовать github api. Нажав https://api.github.com/users/USERNAME/repos
, вы увидите список общедоступных репозиториев для пользователя USERNAME.
Используйте 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.
Попробуйте следующую команду 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 из частного репозитория с помощью командной строки
Если у вас установлен 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
поэтому вам не нужно ничего устанавливать, просто выберите org или пользователя (здесь "W3C"):
$ npx repos W3C W3Crepos.json
Это создаст файл с именем W3Crepos.json. Grep достаточно хорош, например, для получения списка репозиториев:
$ grep full_name W3Crepos.json
плюсы:
минусы:
npx
(или npm
если вы хотите установить его по-настоящему).Код 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", но у меня есть весь код, который делает это в проекте с открытым исходным кодом, который вы можете использовать для установки веб-приложения на сервере.
Я поддержал проект GitHub под названием Git-Captain, который связывается с GitHub API, в котором перечислены все репозитории.
Это веб-приложение с открытым исходным кодом, созданное с использованием Node.js и использующее GitHub API для поиска, создания и удаления ветки в многочисленных репозиториях GitHub.
Это может быть настройка для организаций или одного пользователя.
У меня есть пошаговая инструкция по настройке в read-me.
Получить список всех общедоступных репозиториев пользователя 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")
Чтобы получить пользователю 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>