# iconfont_resource_batch_download **Repository Path**: tzboy/iconfont_resource_batch_download ## Basic Information - **Project Name**: iconfont_resource_batch_download - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-10 - **Last Updated**: 2026-09-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # iconfont-resource-batch-download 批量下载 iconfont.cn「我的项目」中的全部图标为 PNG/SVG,绕开官网单次 100 个的下载限制。 ## 安装 ```bash uv sync ``` 渲染引擎 [resvg-py](https://pypi.org/project/resvg-py/) 为预编译 wheel,无任何系统库依赖, macOS / Windows / Linux 安装即用。 ## 用法 ```bash # 项目页 URL / projectId(需 Cookie) uv run iconfont-resource-batch-download "<项目页URL或projectId>" [选项] # symbol 在线 JS 地址(公开资源,无需 Cookie) uv run iconfont-resource-batch-download "https://at.alicdn.com/t/c/font__.js" [选项] # 不带参数则进入交互式输入,逐项提示,回车用默认值(双击可执行文件即是这种用法) uv run iconfont-resource-batch-download ``` | 选项 | 说明 | 默认值 | | --- | --- | --- | | `--size` | PNG 尺寸(正方形边长) | `256` | | `--color` | 统一覆盖颜色,如 `#333333` | 保留原图颜色 | | `--out` | 输出目录 | `./icons` | | `--save-svg` | 同时保存 SVG 源文件 | 关闭 | | `--suffix` | config.json 中 `iconfont_suffix_name` 的值 | `svg` | | `--cookie` | 完整 Cookie 串 | 读 `.env` | 示例: ```bash uv run iconfont-resource-batch-download "<项目页URL>" --size 512 --color "#333333" --save-svg ``` 下载完成后输出目录会生成 `config.json`,与 iconfont 在线 JSON (`at.alicdn.com/t/c/font__.json`)格式一致,含 `font_family`、 `glyphs` 列表(`font_class` / `unicode` 等)及 `iconfont_suffix_name`(svg/png,由 `--suffix` 控制),供下游按 `font_class` 引用图标。 JS 模式下优先取同 hash 的在线 JSON,取不到则生成精简版(仅 `name` / `font_class`)。 ## 获取 Cookie(项目 URL / projectId 模式) 1. 浏览器打开项目页 → F12 → Network → 刷新 2. 任选一个 `www.iconfont.cn` 请求 → Request Headers → 复制完整 Cookie 3. 写入 `.env`(打包后放**可执行文件同目录**,源码运行放 `src/iconfont_resource_batch_download/` 下),或用环境变量 / `--cookie` 传入: ```ini ICONFONT_COOKIE="ctoken=xxx; EGGOE_SESS_ICONFONT=...; ..." ``` Windows 注意:记事本另存为时文件名写带引号的 `".env"`(否则变 `.env.txt`)、编码选 UTF-8; 不要用 PowerShell 5.x 的 `Out-File` / `>` 生成(默认 UTF-16 会读取失败,PowerShell 7 无此问题)。 ## 打包为可执行文件 ```powershell # Windows powershell -ExecutionPolicy Bypass -File build.ps1 ``` ```bash # macOS bash build.sh # Windows x64 + Linux amd64/arm64(Docker,可只构建部分: bash build-all.sh linux-amd64) bash build-all.sh ``` 产物为单文件可执行程序,无需 Python 环境。使用时把 `.env` 放到可执行文件同目录。 - `build-all.sh` 需本机 Docker Desktop(Apple Silicon 上 amd64/Windows 阶段走 Rosetta 模拟, 较慢属正常);Windows 产物在 Wine 容器里交叉构建,无需 Windows 机器 - 国内网络默认走 `docker.m.daocloud.io` 镜像和清华 PyPI 源;可直连时 `REGISTRY_MIRROR="" PIP_INDEX=https://pypi.org/simple bash build-all.sh` - PyInstaller 不支持交叉编译:在哪套系统上构建就只能在同类系统上运行 - 产物无任何系统依赖(resvg 已静态编译进去);macOS 分发时若提示「无法验证开发者」, 右键选「打开」或执行 `xattr -d com.apple.quarantine <文件>` ## 原理 调用项目的数据接口(`/api/project/detail.json`)拿到每个图标的 SVG 源码(`show_svg` 字段), 再用 resvg 在本地渲染成 PNG,因此没有数量限制。若接口未返回 SVG,会退回解析项目 symbol 在线链接(公开 JS)作为兜底数据源。