Open itlsoft opened 1 year ago
import requests import json
def get_github_repo_info(username, github_url):
repos_url = f"{github_url}/api/v3/users/{username}/repos"
response = requests.get(repos_url)
if response.status_code != 200:
print(f"Nie udało się pobrać repozytoriów użytkownika {username}")
return None
repositories = response.json()
# Inicjalizacja pustego słownika do przechowywania informacji o repozytoriach w formie JSON
repo_data = []
for repo in repositories:
repo_name = repo["name"]
repo_description = repo["description"]
# Pobieranie informacji o ostatnim commicie
commits_url = f"{repo['url']}/commits?per_page=1&sha=main"
commit_response = requests.get(commits_url)
if commit_response.status_code == 200:
last_commit = commit_response.json()[0]
last_commit_date = last_commit["commit"]["committer"]["date"]
last_commit_author = last_commit["commit"]["committer"]["name"]
last_commit_message = last_commit["commit"]["message"]
else:
last_commit_date = "N/A"
last_commit_author = "N/A"
last_commit_message = "N/A"
# Dodawanie informacji do listy w formacie JSON
repo_info = {
"Nazwa repozytorium": repo_name,
"Opis": repo_description,
"Data ostatniego commita": last_commit_date,
"Autor ostatniego commita": last_commit_author,
"Treść ostatniego commita": last_commit_message
}
repo_data.append(repo_info)
return json.dumps(repo_data, indent=4)
if name == "main": username = "ProjectX" github_url = "https://www.projekty.com/ProjectX"
repo_data_json = get_github_repo_info(username, github_url)
if repo_data_json is not None:
print(repo_data_json)
$(document).on('click', function (event) {
if (!$(event.target).hasClass('more')) {
$('.dropout.active').removeClass('active');
}
});
$('table').on('click', '.more', function (event) {
event.stopPropagation(); // Zapobiegnij propagacji kliknięcia, aby uniknąć zamknięcia menu po kliknięciu w button
var parentRow = $(this).parent();
// Zamykanie innych otwartych menu
$('.dropout.active').not(parentRow).removeClass('active');
parentRow.toggleClass('active');
});
Tak, można uzyskać informacje o repozytoriach bez konieczności klonowania ich lokalnie, korzystając z GitHub REST API. To o wiele bardziej wydajne podejście, które nie wymaga pobierania całych repozytoriów na lokalny dysk. W Pythonie możesz użyć bibliotek takich jak
requests
, aby wykonać zapytania do API GitHub. Oto jak można to zrobić:W powyższym kodzie używamy GitHub REST API do pobrania informacji o repozytoriach użytkownika ProjectX, a następnie zbieramy potrzebne dane i zapisujemy je do pandas DataFrame. Nie jest konieczne klonowanie repozytoriów, co sprawia, że operacja jest znacznie szybsza i bardziej efektywna.