[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/epythonlab/scripts/main/filter_github_devs.py [Back]  [Original]

import requests
import csv


def get_developers_by_region(region, access_token):
    """
    Retrieve a list of developers from a specific region sorted by their number of followers.

    Parameters:
        region (str): The region you want to filter developers by.
        access_token (str): The GitHub personal access token for authentication.

    Returns:
        list: A list of dictionaries containing developer information, sorted by number of followers.
    """
    base_url = "https://api.github.com/search/users"
    params = {
        "q": f"location:{region}",
        "per_page": 100,  # You can adjust the number of results per page as needed
        "sort": "followers",  # Sort by number of followers
        "order": "desc",  # Sort in descending order (highest followers first)
    }
    headers = {
        "Authorization": f"token {access_token}"
    }
    response = requests.get(base_url, params=params, headers=headers)

    if response.status_code == 200:
        data = response.json()
        developers = data.get("items", [])
        return developers
    else:
        print(f"Failed to retrieve data from GitHub API. Status Code: {response.status_code}")
        return []
    

def get_user_followers(username, access_token):
    """
    Retrieve the number of followers for a specific GitHub user.

    Parameters:
        username (str): The GitHub username of the user.
        access_token (str): The GitHub personal access token for authentication.

    Returns:
        int: The number of followers for the specified user.
    """
    base_url = f"https://api.github.com/users/{username}"
    headers = {
        "Authorization": f"token {access_token}"
    }
    response = requests.get(base_url, headers=headers)

    if response.status_code == 200:
        data = response.json()
        followers = data.get("followers", 0)
        return followers
    else:
        print(f"Failed to retrieve data for user {username}. Status Code: {response.status_code}")
        return 0
    

def save_to_csv(region, developers, access_token):
    csv_filename = f"{region}_developer_data.csv"
    with open(csv_filename, mode='w', newline='') as csv_file:
        fieldnames = ['Username', 'Followers', 'GitHub Profile']
        writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
        writer.writeheader()
        for dev in developers:
            username = dev["login"]
            followers = get_user_followers(username, access_token)
            github_link = f"https://github.com/{username}"
            writer.writerow({'Username': username, 'Followers': followers, 'GitHub Profile': github_link})
    
    print(f"Developer data saved in '{csv_filename}'.")
    
    
if __name__ == "__main__":
    region = "Ethiopia"  # Replace this with the region you want to filter by
    access_token = "your token"  # Replace this with your GitHub personal access token
    developers = get_developers_by_region(region, access_token)
    
    if developers:
        print(f"Developers in {region}, sorted by rate:")
        for dev in developers:
            username = dev["login"]
            followers = get_user_followers(username, access_token)
            github_link = f"https://github.com/{username}"
            print(f"{username} - Followers: {followers} - GitHub Profile: {github_link}")
        save_to_csv(region, developers, access_token)
    else:
        print("No developers found in the specified region.")



Web Proxy Viewer  |  New URL  |  Original Page