Verfügt Ihre Organisation über (viel) zu viele Github-Repositories und Sie benötigen eine einfache Möglichkeit, die einzelnen Repositories für Berichts-, Dashboard- oder Prüfzwecke zusammenzufassen und aufzuzeichnen? Hier ist ein kurzes Skript, um genau das mit der Github-API zu tun.
get_repo_info(owner, repo):
get_collaborators(collaborators_url):
get_linguals(sprachen_url):
get_open_issues(owner, repo):
get_repo_data(repo_url):
import json import requests from pymongo import MongoClient # MongoDB setup (replace with your actual connection details) client = MongoClient("mongodb://localhost:27017/") db = client["github_repos"] # Database name collection = db["repos"] # Collection name def get_repo_info(owner, repo): url = f"https://api.github.com/repos/{owner}/{repo}" headers = {"Accept": "application/vnd.github+json"} response = requests.get(url, headers=headers) if response.status_code == 200: return response.json() else: print(f"Error: {response.status_code}") return None def get_collaborators(collaborators_url): response = requests.get(collaborators_url) if response.status_code == 200: return [collaborator["login"] for collaborator in response.json()] else: return [] def get_languages(languages_url): response = requests.get(languages_url) if response.status_code == 200: return list(response.json().keys()) else: return [] def get_open_issues(owner, repo): url = f"https://api.github.com/repos/{owner}/{repo}/issues?state=open" headers = {"Accept": "application/vnd.github+json"} response = requests.get(url, headers=headers) if response.status_code == 200: return response.json() else: print(f"Error: {response.status_code}") return [] def get_repo_data(repo_url): owner, repo = repo_url.split("/")[-2:] repo_info = get_repo_info(owner, repo) if repo_info: data = { "Github URL": repo_url, "Project name": repo_info["name"], "Project owner": repo_info["owner"]["login"], "List users with access": get_collaborators(repo_info["collaborators_url"].split("{")[0]), # remove template part of URL "Programming languages used": get_languages(repo_info["languages_url"]), "Security/visibility level": repo_info["visibility"], "Summary": repo_info["description"], "Last maintained": repo_info["pushed_at"], "Last release": repo_info["default_branch"], "Open issues": get_open_issues(owner, repo), } # Insert the data into MongoDB collection.insert_one(data) print("Data inserted into MongoDB successfully.") return data else: return None # Example usage repo_url = "https://github.com/URL" repo_data = get_repo_data(repo_url) if repo_data: print(json.dumps(repo_data, indent=4))
Das obige ist der detaillierte Inhalt vonSo rufen Sie Github-Repository-Daten mit Python ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!