import time import csv import requests def get_team_members(org_name, team_name, token): members = [] page = 1 while True: url = f"https://api.github.com/orgs/{org_name}/teams/{team_name}/members?page={page}&per_page=100" headers = { "Authorization": f"token {token}", "Accept": "application/vnd.github.v3+json" } response = requests.get(url, headers=headers) response.raise_for_status() page_members = response.json() if not page_members: break members.extend(page_members) page += 1 return members def get_user_details(username, token): url = f"https://api.github.com/users/{username}" headers = { "Authorization": f"token {token}", "Accept": "application/vnd.github.v3+json" } response = requests.get(url, headers=headers) response.raise_for_status() return response.json() def write_to_csv(members, output_file, token): with open(output_file, 'w', newline='', encoding='utf-8') as csvfile: fieldnames = ['username', 'full_name', 'github_id', 'html_url'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for member in members: user_details = get_user_details(member['login'], token) writer.writerow({ 'username': member['login'], 'full_name': user_details.get('name', 'N/A'), 'github_id': member['id'], 'html_url': member['html_url'] }) # Add a small delay to avoid hitting rate limits time.sleep(0.1) def main(): org_name = input("Enter the GitHub organization name: ") token = input("Enter your GitHub personal access token: ") output_file = input("Enter the output CSV file name (e.g., mergers_team_members.csv): ") try: # Get members of the "mergers" team mergers_team_members = get_team_members(org_name, "mergers", token) # Write the mergers team members to CSV, including full names write_to_csv(mergers_team_members, output_file, token) print(f"Successfully wrote {len(mergers_team_members)} members of the 'mergers' team to {output_file}") except requests.exceptions.RequestException as e: print(f"An error occurred while fetching data: {e}") except IOError as e: print(f"An error occurred while writing to the file: {e}") if __name__ == "__main__": main()