Compare commits

..

5 Commits
1.4.1 ... main

1 changed files with 27 additions and 28 deletions

View File

@ -1,4 +1,5 @@
import os
import sys
import webbrowser
import threading
import tkinter as tk
@ -9,7 +10,7 @@ import subprocess
import logging
import requests
logging.basicConfig(
logging.basicConfig( # 配置日志记录器
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
handlers=[
@ -18,6 +19,17 @@ logging.basicConfig(
],
)
proxy = {"http": None, "https": None} # Requests代理设置
def format_size(size): # 格式化文件/目录大小
units = ["B", "KB", "MB", "GB", "TB"]
index = 0
while size >= 1024 and index < len(units) - 1:
size /= 1024.0
index += 1
return f"{size:.2f} {units[index]}"
class FolderScanner(threading.Thread):
def __init__(self, start_path, queue, progress_queue):
@ -45,7 +57,7 @@ class FolderScanner(threading.Thread):
self.queue.put((folder_path, size, dirpath, "folder"))
scanned_items += 1
self.update_progress(scanned_items, folder_path)
logging.info(f"扫描目录: {folder_path} 大小: {size} 字节")
logging.info(f"扫描目录: {folder_path} 大小: {format_size(size)} ")
for filename in filenames:
file_path = os.path.join(dirpath, filename)
@ -53,7 +65,7 @@ class FolderScanner(threading.Thread):
self.queue.put((file_path, size, dirpath, "file"))
scanned_items += 1
self.update_progress(scanned_items, file_path)
logging.info(f"扫描文件: {file_path} 大小: {size} 字节")
logging.info(f"扫描文件: {file_path} 大小: {format_size(size)} ")
def get_size(self, path): # 获取文件/目录大小
total_size = 0
@ -74,7 +86,7 @@ class App(tk.Tk):
def __init__(self, start_path): # 初始化
super().__init__()
self.withdraw()
self.title("目录扫描器 V1.4.1")
self.title("目录扫描器 V1.4.3")
self.start_path = start_path
self.queue = Queue()
self.progress_queue = Queue()
@ -169,7 +181,7 @@ class App(tk.Tk):
try:
# 发送 GET 请求获取最新的 Release
response = requests.get(
f"{base_url}/{repo_owner}/{repo_name}/releases/latest"
f"{base_url}/{repo_owner}/{repo_name}/releases/latest", proxies=proxy
)
if response.status_code == 200:
@ -223,7 +235,7 @@ class App(tk.Tk):
def show_about(self):
messagebox.showinfo(
"关于",
"一款开源的文件/目录扫描工具\n可以直观地展示目录的文件结构以及文件大小\n\n软件版本 V1.4.1\n作者 ahdoawhfo\n",
"一款开源的文件/目录扫描工具\n可以直观地展示目录的文件结构以及文件大小\n\n软件版本 V1.4.3\n作者 ahdoawhfo\n",
)
def on_double_click(self, event): # V1.2 Update当双击的是文件时打开文件
@ -243,17 +255,9 @@ class App(tk.Tk):
self.start_path = new_path
self.refresh_tree()
def format_size(self, size): # 格式化文件/目录大小
units = ["B", "KB", "MB", "GB", "TB"]
index = 0
while size >= 1024 and index < len(units) - 1:
size /= 1024.0
index += 1
return f"{size:.2f} {units[index]}"
def populate_root(self): # 初始化根目录
size = self.scanner.get_size(self.start_path)
formatted_size = self.format_size(size)
formatted_size = format_size(size)
self.tree.insert(
"",
"end",
@ -273,7 +277,7 @@ class App(tk.Tk):
return
path, size, parent, tag = item
formatted_size = self.format_size(size)
formatted_size = format_size(size)
parent_iid = self.get_iid(parent)
if parent == self.start_path:
parent_iid = self.start_path
@ -462,8 +466,7 @@ class App(tk.Tk):
def on_close(self): # 关闭程序
if self.scanner.is_alive():
self.scanner.join()
root.destroy()
exit()
sys.exit(0)
def set_window_size(self): # 设置窗口大小
screen_width = self.winfo_screenwidth()
@ -526,12 +529,12 @@ class UpdateManager:
repo_owner = "ahdoawhfo"
repo_name = "SpaceSniffer"
base_url = "https://git.a6.wiki/api/v1/repos"
current_version = "1.4.1" # 替换成你的当前软件版本
current_version = "1.4.3" # 替换成你的当前软件版本
try:
# 发送 GET 请求获取最新的 Release
response = requests.get(
f"{base_url}/{repo_owner}/{repo_name}/releases/latest"
f"{base_url}/{repo_owner}/{repo_name}/releases/latest", proxies=proxy
)
if response.status_code == 200:
@ -575,8 +578,6 @@ class UpdateManager:
def show_message(self, title, message):
if self.root:
messagebox.showinfo(title, message)
else:
print(f"{title}: {message}")
def clear_log_file():
@ -584,9 +585,8 @@ def clear_log_file():
try:
with open(log_file, "w", encoding="utf-8") as f:
f.truncate(0) # 清空文件内容
print(f"已清空日志文件 {log_file} 的内容")
except Exception as e:
print(f"清空日志文件内容时发生错误: {e}")
messagebox.showinfo("Error", f"清空日志文件内容时发生错误: {e}")
if __name__ == "__main__":
@ -596,13 +596,12 @@ if __name__ == "__main__":
update_manager = UpdateManager(root, is_startup=True)
proceed = update_manager.check_latest_release()
if not proceed:
root.destroy()
exit()
sys.exit(0)
messagebox.showinfo("提示", "请选择你要扫描的目录")
start_path = filedialog.askdirectory()
if start_path:
app = App(start_path)
app.mainloop()
else:
messagebox.showinfo("提示", "没有选中任何目录,程序即将退出")
root.destroy()
exit()
sys.exit(0)