GitHub アカウントのリポジトリにある人のすべてのプロジェクトを表示する必要があります。
特定の人の git-user 名を使用して、その人のすべての git リポジトリの名前を表示するにはどうすればよいですか?
GitHub アカウントのリポジトリにある人のすべてのプロジェクトを表示する必要があります。
特定の人の git-user 名を使用して、その人のすべての git リポジトリの名前を表示するにはどうすればよいですか?
これにはgithub apiを使用できます。ヒットすると、ユーザーUSERNAMEhttps://api.github.com/users/USERNAME/repos
の公開リポジトリが一覧表示されます。
次のコマンドを試して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 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 は、上記の例のように REST URL です。認証する必要がない場合は、メソッドを変更して Authorization ヘッダーの追加を削除します。次に、単純な GET 要求を使用して、公開 API の URL を取得できます。
Python を使用して、GitHub ユーザーのすべてのパブリック リポジトリのリストを取得します。
import requests
username = input("Enter the github username:")
request = requests.get('https://api.github.com/users/'+username+'/repos')
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")
きれいなリストとして取得するための@joelazarの回答のわずかに改善されたバージョン:
gh repo list <owner> -L 400 |awk '{print $1}' |sed "s/<owner>\///"
もちろん、所有者名に置き換えます。
これにより、100 を超えるリポジトリ (この場合は 400) を含むリストも取得できます。