# sysasset-extractor **Repository Path**: deepin20/sysasset-extractor ## Basic Information - **Project Name**: sysasset-extractor - **Description**: 系统素材提取器:统信 UOS / deepin 资源提取工具。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-21 - **Last Updated**: 2026-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 系统素材提取器 / SysAsset Extractor > 统信 UOS / deepin 资源提取工具 ## 目录 - [简介](#简介) - [功能特性](#功能特性) - [界面预览](#界面预览) - [环境要求](#环境要求) - [安装与运行](#安装与运行) - [使用流程](#使用流程) - [输出结构](#输出结构) - [项目结构](#项目结构) - [开发与测试](#开发与测试) - [打包与发布](#打包与发布) - [常见问题](#常见问题) - [版权提醒](#版权提醒) - [许可协议](#许可协议) --- ## 简介 **系统素材提取器 / SysAsset Extractor** 是一款面向 **统信 UOS / deepin** 系统的图形化资源提取工具。 它可以将系统内自带的 Logo、壁纸、软件图标、字体、音效、光标主题、 Plymouth 启动主题、GRUB 主题、登录界面背景、.desktop 应用入口等资源, 一键复制到指定目录,并支持打包 ZIP、导出清单报告、实时统计等功能。 软件采用 Python 3 + tkinter 开发,**仅依赖 Python 标准库**,无需额外安装第三方包。 --- ## 功能特性 ### 资源提取 | 类别 | 说明 | |------|------| | 系统 Logo | 统信 UOS、deepin 官方 Logo(SVG/PNG) | | 系统壁纸 | 内置壁纸、背景图 | | 软件图标 | 所有图标主题下的应用图标 | | 系统字体 | TTF/OTF/TTC/WOFF 等字体文件 | | 系统音效 | WAV/OGG/MP3 等音效文件 | | 光标主题 | 鼠标指针主题 | | Plymouth | 开机启动动画主题 | | GRUB | 启动菜单主题 | | 登录界面背景 | 登录/锁屏相关背景图 | | .desktop 入口 | 应用启动器文件 | | 自定义路径 | 用户手动指定的任意目录 | ### 实用功能 - **图标主题筛选**:只提取指定主题(如 hicolor、Adwaita) - **自定义路径扫描**:添加任意目录,统一提取其中的素材 - **ZIP 打包**:任务完成后自动打包为 ZIP - **清单报告**:导出 CSV(逐文件清单)+ TXT(分类摘要) - **实时统计面板**:显示文件数、总大小、错误数、分类统计 - **中途取消**:任务运行期间可随时取消 - **自动去重**:同名文件自动添加数字后缀,避免覆盖 - **中文环境兼容**:自动识别 `~/Desktop` 与 `~/桌面` --- ## 界面预览 主窗口分为三个选项卡: ``` ┌─ 系统素材提取器 - SysAsset Extractor ─────────────────────┐ │ 系统素材提取器 │ │ SysAsset Extractor · 统信 UOS / deepin 资源提取工具 │ │ ┌─ 提取设置 ─┬─ 统计与操作 ─┬─ 运行日志 ─┐ │ │ │ 输出目录 [桌面] [浏览][打开] │ │ │ 提取内容:☑Logo ☑壁纸 ☑图标 ☐字体 ☐音效 ... │ │ │ 图标主题筛选:[hicolor ▼] [刷新][清空] │ │ │ 自定义路径:[添加][移除][清空] │ │ │ 附加选项:☐打包ZIP ☑导出清单 │ │ │ [开始提取][取消][导出清单][打包ZIP][关于] │ │ └──────────────────────────────────────────────────────────┘ └────────────────────────────────────────────────────────────┘ ``` - **提取设置**:配置输出目录、勾选资源、筛选图标主题、添加自定义路径 - **统计与操作**:实时统计、开始/取消/导出/打包按钮、进度条 - **运行日志**:实时输出每一步动作 --- ## 环境要求 | 项目 | 要求 | |------|------| | 操作系统 | 统信 UOS / deepin / 其他 Linux 发行版 | | Python | 3.8 及以上 | | GUI 库 | tkinter(Python 标准库自带) | | 桌面环境 | 需要图形界面(X11 或 Wayland) | | 权限 | 一般无需 root,部分系统目录需 sudo | > **提示**:若提示 tkinter 缺失,可执行: > ```bash > sudo apt install python3-tk > ``` --- ## 安装与运行 ### 方式 1:使用脚本(推荐) ```bash bash scripts/run.sh ``` ### 方式 2:直接运行模块 ```bash cd sysasset-extractor export PYTHONPATH=src python3 -m sysasset_extractor ``` ### 方式 3:安装后运行 ```bash # 安装到当前用户环境 bash scripts/install.sh # 之后可直接通过命令启动 sysasset-extractor ``` ### 方式 4:一键创建项目骨架 ```bash python3 create_project.py -d ~/projects ``` --- ## 使用流程 1. **启动软件**:`bash scripts/run.sh` 2. **确认输出目录**:默认桌面,可点“浏览...”修改 3. **勾选提取内容**:根据需要勾选 Logo、壁纸、图标等 4. **(可选)筛选图标主题**:只提取指定主题 5. **(可选)添加自定义路径**:扫描额外目录 6. **开始提取**:切到“统计与操作”页,点“开始提取” 7. **观察进度**:统计面板与日志实时更新,可点“取消”中止 8. **查看结果**:完成后打开输出目录,查看素材、清单或 ZIP --- ## 输出结构 ``` 输出目录/ ├── uos_logo.svg # Logo 文件 ├── deepin-launcher.svg ├── Wallpapers/ # 壁纸 ├── SoftwareIcons/ # 图标(保留主题结构) ├── Fonts/ # 字体 ├── Sounds/ # 音效 ├── Cursors/ # 光标主题 ├── Plymouth/ # 启动主题 ├── GRUB/ # GRUB 主题 ├── Greeter/ # 登录背景 ├── DesktopEntries/ # .desktop 文件 ├── Custom/ # 自定义路径内容 ├── manifest_YYYYMMDD_HHMMSS.csv # 逐文件清单 └── summary_YYYYMMDD_HHMMSS.txt # 分类摘要 ``` --- ## 项目结构 ``` sysasset-extractor/ ├── README.md ├── LICENSE ├── CHANGELOG.md ├── requirements.txt ├── setup.py ├── pyproject.toml ├── .gitignore ├── create_project.py # 一键创建项目骨架 │ ├── src/ │ └── sysasset_extractor/ │ ├── __init__.py # 包元信息 │ ├── __main__.py # python -m 入口 │ ├── app.py # GUI 启动入口 │ │ │ ├── core/ # 核心逻辑(无 GUI 依赖) │ │ ├── utils.py # 通用工具 │ │ ├── paths.py # 路径检测 │ │ ├── stats.py # 统计对象 │ │ ├── searcher.py # 资源搜索 │ │ ├── extractor.py # 资源提取 │ │ ├── reporter.py # 报告导出 │ │ └── packer.py # ZIP 打包 │ │ │ ├── config/ # 配置常量 │ │ ├── constants.py # 名称、版本、扩展名 │ │ └── search_paths.py # 搜索路径 │ │ │ ├── gui/ # 图形界面 │ │ ├── main_window.py # 主窗口 │ │ ├── tabs/ # 选项卡 │ │ ├── dialogs/ # 对话框 │ │ └── widgets/ # 可复用组件 │ │ │ └── assets/ # 程序资源 │ ├── icons/ │ └── styles/ │ ├── tests/ # 单元测试 │ ├── test_utils.py │ ├── test_paths.py │ ├── test_stats.py │ ├── test_searcher.py │ ├── test_extractor.py │ └── test_reporter.py │ ├── docs/ # 文档 │ ├── 使用说明.md │ └── 开发文档.md │ └── scripts/ # 辅助脚本 ├── run.sh ├── build.sh └── install.sh ``` ### 模块职责 | 模块 | 职责 | |------|------| | `core/` | 核心业务逻辑,可独立测试与复用 | | `config/` | 集中管理路径、扩展名、版本号等常量 | | `gui/` | 图形界面,每个 Tab 独立成文件 | | `tests/` | 单元测试,覆盖 core 各模块 | | `scripts/` | 运行、构建、安装脚本 | --- ## 开发与测试 ### 开发环境准备 ```bash cd sysasset-extractor export PYTHONPATH=src ``` ### 运行 ```bash python3 -m sysasset_extractor ``` ### 单元测试 ```bash export PYTHONPATH=src pytest tests/ -v ``` 或使用 unittest: ```bash export PYTHONPATH=src python3 -m unittest discover -s tests -v ``` ### 扩展新资源类型 1. 在 `config/constants.py` 中添加扩展名集合与输出子目录名 2. 在 `config/search_paths.py` 中添加搜索路径 3. 在 `core/searcher.py` 中添加对应的搜索方法 4. 在 `core/extractor.py` 中添加 `extract_xxx` 方法 5. 在 `gui/tabs/extract_tab.py` 的 `TASK_DEFS` 中注册 6. 在 `gui/main_window.py` 的 `mapping` 中注册 --- ## 打包与发布 ### 生成分发包 ```bash bash scripts/build.sh ``` 产物位于 `dist/`: - `sysasset_extractor-1.0.0-py3-none-any.whl` - `sysasset_extractor-1.0.0.tar.gz` ### 安装到用户环境 ```bash pip install --user . ``` ### 生成 deb 包(统信 UOS / deepin 适用) 可结合 `dh_make` + `dpkg-buildpackage`,或使用 `PyInstaller` 生成独立可执行文件: ```bash pip install pyinstaller pyinstaller --name sysasset-extractor --windowed \ --add-data "src/sysasset_extractor/assets:sysasset_extractor/assets" \ src/sysasset_extractor/app.py ``` --- ## 常见问题 ### Q1:提示“无法启动图形界面”? 说明当前环境没有图形桌面(如 SSH 远程会话)。请在有图形界面的终端中运行。 ### Q2:找不到任何 Logo / 壁纸? 可能是系统版本较新,路径与默认列表不同。可手动查找: ```bash find /usr/share -iname '*logo*' 2>/dev/null | grep -i -E 'uos|deepin' find /usr/share -iname '*wallpaper*' -o -iname '*background*' 2>/dev/null ``` 然后将结果所在目录添加到“自定义路径”。 ### Q3:图标提取数量太多、耗时太长? - 在“图标主题筛选”中指定某个主题,例如 `hicolor` - 或取消勾选“软件图标”,仅提取其他资源 ### Q4:复制过程中出现“权限不足”? 部分系统目录(如 `/boot/grub/themes`)需要 root 读取: ```bash sudo -E bash scripts/run.sh ``` > 注意:使用 sudo 后,复制出的文件属主会变为 root,可通过 `chown` 修改回当前用户。 ### Q5:ZIP 打包文件在哪里? ZIP 文件生成在**输出目录的同级目录**,文件名为: ``` <输出目录名>_YYYYMMDD_HHMMSS.zip ``` ### Q6:报告文件在哪里? 生成在输出目录内: - `manifest_*.csv`:每行一个文件的来源、目标、大小 - `summary_*.txt`:分类统计摘要 ### Q7:如何卸载? 如果通过 `pip install --user .` 安装: ```bash pip uninstall sysasset-extractor ``` 如果只使用脚本运行,直接删除项目目录即可。 --- ## 版权提醒 - 本工具提取的 **Logo、壁纸、图标、字体、音效、启动主题** 等资源, 版权归 **统信软件、deepin 社区及各自权利人** 所有。 - 请仅将提取结果用于 **个人学习、研究或已获授权的场景**。 - **商业使用** 前,请联系统信软件或相关版权方获取正式授权。 - 本工具本身采用 **GPLv3** 协议开源,可自由使用、修改和分发, 但需保留原始协议声明。 --- ## 许可协议 本项目采用 **GPLv3** 协议开源。 ``` Copyright (C) 2024 SysAsset Extractor Contributors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ``` 完整协议文本: --- **系统素材提取器 / SysAsset Extractor** 统信 UOS / deepin 资源提取工具 版本 1.0.0