GitHub 远程文件管理器

GitHub 远程文件管理器

MagicNue

|700

00 简介

一个名为 “GitHub 远程文件管理器” 的桌面应用程序,能够像操作本地网盘一样方便地管理其 GitHub 仓库中的文件。

特点:

  • 一个基于 CustomTkinter 构建的现代化图形用户界面
  • 使用个人访问令牌 (PAT) 连接指定的 GitHub 仓库及特定分支
  • 像操作本地网盘一样方便地管理其 GitHub 仓库中的文件

使用:

  • 在第一个框输入Github中生成的Personal access tokens (classic)
  • 第二个框输入username
  • 第三个框输入库名
  • 第四个框输入分支;留空自动选择默认分支

01 开源和发布

暂未发布

02 主要逻辑结构

  1. 导入模块 (Imports):
    • customtkinter, os, github, requests, threading, tkinter.filedialog, tkinter.messagebox, functools.partial, json
  2. 全局常量 (Global Constants):
    • CONFIG_FILE: 定义配置文件的名称。
  3. 辅助函数 (Helper Functions):
    • get_repo_contents_from_api(): 封装了从 GitHub API 获取仓库指定路径内容的逻辑,并处理常见的 API 异常。
    • download_file_thread_target(): 在单独线程中执行文件下载,并更新下载进度。
  4. 主应用程序类 (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)
      • (重命名 - 待实现)
  5. 主程序入口 (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
On this page
GitHub 远程文件管理器