web-dev-qa-db-ja.com

個人のすべてのgithubリポジトリのリストを取得する方法は?

私たちは、GitHubアカウントのリポジトリにある人のすべてのプロジェクトを表示する必要があるプロジェクトに取り組んでいます。

誰でも、特定の人のgitユーザー名を使用してすべてのgitリポジトリの名前を表示するにはどうすればよいですか?

58
user1127981

これには github api を使用できます。ヒッティング https://api.github.com/users/USERNAME/reposは、ユーザーの公開リポジトリをリストします[〜#〜] username [〜#〜]

33

Github API を使用します。

/users/:user/repos

これにより、すべてのユーザーの公開リポジトリが提供されます。プライベートリポジトリを見つける必要がある場合は、特定のユーザーとして認証する必要があります。次に、REST呼び出しを使用できます。

/user/repos

ユーザーのリポジトリをall見つけます。

これを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です。認証する必要がない場合は、メソッドを変更してAuthorizationヘッダーの追加を削除します。単純なGETリクエストを使用して、パブリックAPIのURLを取得します。

33
BeRecursive

次の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リリースをダウンロードする方法

27
kenorb

jq がインストールされている場合、次のコマンドを使用して、ユーザーのすべてのパブリックリポジトリを一覧表示できます。

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

おそらく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>
3
blackmiaool

NPMモジュール repos は、特定のユーザーまたはグループのすべてのパブリックリポジトリのJSONを取得します。これはnpxから直接実行できるため、組織やユーザーを選択するだけでインストールする必要はありません(ここでは「W3C」):

$ npx repos W3C W3Crepos.json

これにより、W3Crepos.jsonというファイルが作成されます。 Grepは、たとえばリポジトリのリストを取得します。

$ grep full_name W3Crepos.json

長所:

  • 100以上のリポジトリで動作します(この質問に対する多くの回答はそうではありません)。
  • 入力することはあまりありません。

短所:

  • npx(または実際にインストールする場合はnpm)が必要です。
1
ericP

Pythonを使用してGitHubユーザーのすべてのパブリックリポジトリのリストを取得します。

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")

参照

0
Darshan Chheda

答えは「/ users /:user/repo」ですが、サーバー上でWebアプリケーションを立ち上げるために使用できるオープンソースプロジェクトでこれを行うすべてのコードがあります。

Git-Captain と呼ばれるGitHubプロジェクトを立ち上げ、すべてのリポジトリをリストするGitHub APIと通信します。

Node.jsで構築されたオープンソースのWebアプリケーションであり、GitHub APIを利用して、多数のGitHubリポジトリ全体でブランチを検索、作成、削除します。

組織または単一ユーザー向けにセットアップできます。

Read-meでも設定方法を順を追って説明しています。

0
ConfusedDeer

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)
})
0
Mathieu CAROFF