Add alpha and beta versions
This commit is contained in:
63
alpha/gitea_simple_app/api.py
Normal file
63
alpha/gitea_simple_app/api.py
Normal file
@@ -0,0 +1,63 @@
|
||||
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
|
||||
Reference in New Issue
Block a user