私たちは、GitHubアカウントのリポジトリにある人のすべてのプロジェクトを表示する必要があるプロジェクトに取り組んでいます。
誰でも、特定の人のgitユーザー名を使用してすべてのgitリポジトリの名前を表示するにはどうすればよいですか?
これには github api を使用できます。ヒッティング https://api.github.com/users/USERNAME/repos
は、ユーザーの公開リポジトリをリストします[〜#〜] username [〜#〜]。
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を取得します。
次の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からすべてのリポジトリを一度に複製する方法
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モジュール repos は、特定のユーザーまたはグループのすべてのパブリックリポジトリのJSONを取得します。これはnpx
から直接実行できるため、組織やユーザーを選択するだけでインストールする必要はありません(ここでは「W3C」):
$ npx repos W3C W3Crepos.json
これにより、W3Crepos.jsonというファイルが作成されます。 Grepは、たとえばリポジトリのリストを取得します。
$ grep full_name W3Crepos.json
長所:
短所:
npx
(または実際にインストールする場合はnpm
)が必要です。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")
答えは「/ users /:user/repo」ですが、サーバー上でWebアプリケーションを立ち上げるために使用できるオープンソースプロジェクトでこれを行うすべてのコードがあります。
Git-Captain と呼ばれるGitHubプロジェクトを立ち上げ、すべてのリポジトリをリストするGitHub APIと通信します。
Node.jsで構築されたオープンソースのWebアプリケーションであり、GitHub APIを利用して、多数のGitHubリポジトリ全体でブランチを検索、作成、削除します。
組織または単一ユーザー向けにセットアップできます。
Read-meでも設定方法を順を追って説明しています。
以下の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)
})