Как получить список исходных репозиториев пользователя / организации на GitHub? - PullRequest
0 голосов
/ 22 января 2020

Я хочу получить список репозиториев пользователя или организации на GitHub, за исключением разветвленных, зеркальных или архивных репо.

Ответы [ 3 ]

1 голос
/ 22 января 2020

Используя PyGithub , вы можете сделать следующее, чтобы отфильтровать публичные c репозитории:

from github import Github

g = Github()

user = g.get_user("<username>") # target user
repos = user.get_repos()

non_forks = []
for repo in user.get_repos():
    if repo.fork is False:
        non_forks.append(repo.name)

print(non_forks)
0 голосов
/ 27 января 2020

Я написал небольшой скрипт, который отлично справляется с работой

#!/usr/bin/env python3.9
#-*- coding: utf-8 -*-
import readline, sys, os, requests

import click
from github import Github

g = Github()

def userexists(username):
    addr = "https://api.github.com/users/" + username
    response = requests.get(addr)
    if response.status_code == 404:
        return False
    else:
        if response.status_code == 200:
            return True

def printrepos(repos):
        original_repos = []
        for repo in repos:
            if repo.fork is False and repo.archived is False:
                print(repo.clone_url)

@click.command()
@click.argument('username')
def main(username):
    if userexists(username):
        user = g.get_user(username)
        repos = user.get_repos()
        printrepos(repos)
    else:
        print("Username doesn't exist")


if __name__ == "__main__":
    main()

0 голосов
/ 22 января 2020

https://github.com/PyGithub/PyGithub

- это библиотека python для взаимодействия с Github API. Из файла readme:

from github import Github

# First create a Github instance:

# using username and password
g = Github("user", "password")

# or using an access token
g = Github("access_token")

# Github Enterprise with custom hostname
g = Github(base_url="https://{hostname}/api/v3", login_or_token="access_token")

# Then play with your Github objects:
for repo in g.get_user().get_repos():
    print(repo.name)

У объекта репозитория есть свойства, позволяющие проверить, архивируется ли репозиторий, ответвление или зеркало:

repo.archived // is repo archived?
repo.fork // is repo a fork?
repo.mirror_url // return the url of the mirrored repo, if applicable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...