
GitHub 远程文件管理器

00 简介
一个名为 “GitHub 远程文件管理器” 的桌面应用程序,能够像操作本地网盘一样方便地管理其 GitHub 仓库中的文件。
特点:
- 一个基于 CustomTkinter 构建的现代化图形用户界面
- 使用个人访问令牌 (PAT) 连接指定的 GitHub 仓库及特定分支
- 像操作本地网盘一样方便地管理其 GitHub 仓库中的文件
使用:
- 在第一个框输入Github中生成的Personal access tokens (classic)
- 第二个框输入username
- 第三个框输入库名
- 第四个框输入分支;留空自动选择默认分支
01 开源和发布
02 主要逻辑结构
- 导入模块 (Imports):
- customtkinter, os, github, requests, threading, tkinter.filedialog, tkinter.messagebox, functools.partial, json
- 全局常量 (Global Constants):
- CONFIG_FILE: 定义配置文件的名称。
- 辅助函数 (Helper Functions):
- get_repo_contents_from_api(): 封装了从 GitHub API 获取仓库指定路径内容的逻辑,并处理常见的 API 异常。
- download_file_thread_target(): 在单独线程中执行文件下载,并更新下载进度。
- 主应用程序类 (GitHubFileManagerApp(ctk.CTk)):
- init(self):
- 初始化窗口、设置主题。
- 初始化实例变量 (如 github_instance, repo_instance, current_repo_path 等)。
- 调用 _build_ui() 构建界面。
- 调用 _load_configuration() 加载保存的配置。
- UI 构建 (_build_ui(self)):
- 创建并布局所有界面组件 (输入框、按钮、标签、可滚动框架等)。
- 状态更新 (update_status_async(self, message)):
- 异步更新底部状态栏的文本。
- 配置管理:
- _load_configuration(self): 从 JSON 文件加载配置。
- _save_configuration(self): 将当前配置保存到 JSON 文件 (不保存 PAT)。
- 连接逻辑:
- _start_connect_thread(self): 启动连接到 GitHub 的线程。
- _connect_to_repo_target(self): 实际执行连接的线程目标函数,包括认证、获取仓库和分支信息。
- _reset_connection_ui_on_fail(self): 连接失败时重置 UI 状态。
- _finalize_connection_success(self): 连接成功后更新 UI 状态。
- 内容显示与导航:
- _clear_content_frame(self): 清空文件列表区域。
- _start_load_contents_thread(self): 启动加载仓库内容的线程。
- _load_repo_contents_target(self): 实际加载仓库内容的线程目标函数。
- _populate_content_frame(self, contents_data): 将获取到的仓库内容填充到 UI 列表。
- _on_item_single_click(self, item_frame_widget, event=None): 处理文件/文件夹单击事件 (选中)。
- _on_item_double_click(self, item_frame_widget, event=None): 处理文件夹双击事件 (进入目录)。
- _go_back(self): 返回上一级目录。
- _update_nav_ui(self): 更新导航栏 (路径显示、返回按钮状态)。
- 操作按钮状态管理 (_update_action_buttons_state(self)):
- 根据当前连接状态和是否选中项目,更新下载、上传、删除等按钮的可用性。
- 文件/文件夹操作 (每个操作通常包含一个 start…_thread 和一个 _…_target 方法):
- 下载: _start_download_thread(self)
- 上传: _start_upload_thread(self), _upload_file_target(self, local_file_path)
- 创建文件夹: _start_create_folder_thread(self), _create_folder_target(self, folder_name)
- 删除: _start_delete_thread(self), _delete_item_target(self, item_data_to_delete), _recursive_delete_dir_target(self, dir_path_api, commit_msg_prefix_for_dir)
- (重命名 - 待实现)
- init(self):
- 主程序入口 (if name == “main“:):
- 创建 GitHubFileManagerApp 实例。
- 运行 app.mainloop() 启动应用事件循环。
- Title: GitHub 远程文件管理器
- Author: MagicNue
- Created at : 2025-05-20 00:00:00
- Updated at : 2025-05-19 14:59:44
- Link: https://magicnue.top/2025_/20250520 【工具】把Github Repo作为网盘使用/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments