Files

63 lines
1.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import requests
import base64
def split_link(repo_link):
parts = repo_link.replace("https://", "").split("/")
base_url = "https://" + parts[0]
owner = parts[1]
repo = parts[2]
return base_url, owner, repo
def get_repo_data(repo_link):
base_url, owner, repo = split_link(repo_link)
url = f"{base_url}/api/v1/repos/{owner}/{repo}"
return requests.get(url).json()
def get_commits(repo_link):
base_url, owner, repo = split_link(repo_link)
url = f"{base_url}/api/v1/repos/{owner}/{repo}/commits"
return requests.get(url).json()
def get_code_lines(repo_link):
base_url, owner, repo = split_link(repo_link)
# получаем список файлов
url = f"{base_url}/api/v1/repos/{owner}/{repo}/git/trees/main?recursive=1"
data = requests.get(url).json()
total_lines = 0
for file in data.get("tree", []):
if file.get("type") != "blob":
continue
path = file.get("path", "")
if not path.endswith(".py"):
continue
# читаем файл через API (НЕ raw!)
file_url = f"{base_url}/api/v1/repos/{owner}/{repo}/contents/{path}"
r = requests.get(file_url)
if r.status_code != 200:
continue
file_data = r.json()
content = file_data.get("content")
if content:
decoded = base64.b64decode(content).decode("utf-8", errors="ignore")
total_lines += len(decoded.splitlines())
return total_lines