您的組織是否擁有太多github 儲存庫,並且您需要一種簡單的方法來總結和記錄每個儲存庫的內容以用於報告、儀表板或審計目的?下面是一個使用 Github API 完成該操作的快速腳本。
get_repo_info(所有者,回購):
get_collaborators(collaborators_url):
get_languages(languages_url):
get_open_issues(所有者,回購):
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))
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3