Files
Kur3ab/alpha/gitea_simple_app/main.py

121 lines
3.8 KiB
Python
Raw 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 tkinter as tk
from tkinter import messagebox
from api import get_repo_data, get_commits, get_code_lines
from parser import parse_repo_info, parse_authors
class GiteaAnalyzer:
def __init__(self):
self.root = tk.Tk()
self.root.title("Gitea Analyzer")
self.root.geometry("1000x700")
self.root.minsize(850, 600)
self.root.configure(bg="#eef4ff")
self.build_interface()
self.root.mainloop()
def build_interface(self):
title = tk.Label(
self.root,
text="Gitea Repository Analyzer",
font=("Arial", 22, "bold"),
bg="#eef4ff",
fg="#1d3557",
)
title.pack(pady=(20, 5))
subtitle = tk.Label(
self.root,
text="Введите ссылку на репозиторий Gitea и получите информацию о нём",
font=("Arial", 12),
bg="#eef4ff",
fg="#333333",
)
subtitle.pack(pady=(0, 15))
input_frame = tk.Frame(self.root, bg="#eef4ff")
input_frame.pack(fill="x", padx=30)
self.repo_entry = tk.Entry(input_frame, font=("Arial", 12))
self.repo_entry.pack(side="left", fill="x", expand=True, ipady=6)
self.repo_entry.insert(0, "https://iux-gitea.myddns.me/owner/repo")
self.repo_entry.bind("<FocusIn>", self.clear_placeholder)
self.repo_entry.bind("<Return>", lambda event: self.analyze())
analyze_button = tk.Button(
input_frame,
text="Анализировать",
command=self.analyze,
bg="#4d8ee8",
fg="white",
font=("Arial", 11, "bold"),
relief="flat",
padx=20,
pady=7,
cursor="hand2",
)
analyze_button.pack(side="left", padx=(10, 0))
self.result_text = tk.Text(
self.root,
font=("Consolas", 11),
wrap="word",
state="disabled",
bg="#ffffff",
fg="#111111",
)
self.result_text.pack(fill="both", expand=True, padx=30, pady=20)
def clear_placeholder(self, event):
if self.repo_entry.get() == "https://iux-gitea.myddns.me/owner/repo":
self.repo_entry.delete(0, tk.END)
def set_text(self, text):
self.result_text.config(state="normal")
self.result_text.delete("1.0", tk.END)
self.result_text.insert(tk.END, text)
self.result_text.config(state="disabled")
def analyze(self):
repo_link = self.repo_entry.get().strip()
if not repo_link or repo_link == "https://iux-gitea.myddns.me/owner/repo":
messagebox.showerror("Ошибка", "Введите ссылку на репозиторий")
return
try:
self.set_text("Загрузка данных...\n")
self.root.update()
repo_data = get_repo_data(repo_link)
commits = get_commits(repo_link)
lines = get_code_lines(repo_link)
info = parse_repo_info(repo_data)
authors = parse_authors(commits)
output = []
output.append(f"Ссылка: {repo_link}\n")
output.append(info)
output.append("\nАвторы / соавторы по коммитам:\n")
if authors:
for author in sorted(authors):
output.append(f"- {author}\n")
else:
output.append("- нет данных\n")
output.append(f"\nСтрок Python-кода: {lines}\n")
self.set_text("".join(output))
except Exception as error:
self.set_text("")
messagebox.showerror("Ошибка", f"Не удалось получить данные:\n{error}")
if __name__ == "__main__":
GiteaAnalyzer()