In brief, I needed to get a list of the members currently in my organization at GitHub.
There are multiple ways to do so, including:
- Direct calls to the API from curl
sudo apt install curl
- Python using PyGitHub
pip install pygithub
- Ruby using octokit
gem install octokit
I tried all 3 and all work in a wonderful way, but I had to choose one eventually
For the simple task I needed of getting members of my GitHub organization, I just used the first method above, using the following call:
curl 'https://api.github.com/orgs/my_organization/members?page=3&per_page=100' -u "myusername:mypassword" >> myoutput.json
Another example for getting a list of the outside collaborators in my organization:
curl 'https://api.github.com/orgs/my_organization/members?page=3&per_page=100' -u "myusername:mypassword" >> myoutput.json
Where:
per_page=100: controls how many records appear per page (pagination), the maximum I could get is 100, so I had to get 2 pages in total.
page=3: The page number in case you have more than 100 records
-u: To add your GitHub username and password, in case the information you request needs authentication
Note: To convert the json to csv, I just went to https://json-csv.com/ and it did a pretty good job for me.
Enjoy!
Some Updates:
I did the conversion from json to csv also from Python, since the website tried forcing me to upgrade:
import pandas as pd df = pd.read_json (r'/home/file1.json') export_csv = df.to_csv (r'/home/file1.csv') df = pd.read_json (r'/home/file2.json') #had to get the GitHub API output in 2 times export_csv = df.to_csv (r'/home/file1.csv', mode='a', header=False) #To append the second file without the header
Sources:
- GitHub API V3 Documentation
- octokit Documentation
- PyGitHub Documentation
- Many articles on StackOverflow and ServerFault
Were is that like button 🙂
LikeLike