# auto-update-channel
**Repository Path**: Capsion-ST-PLugins/auto-update-channel
## Basic Information
- **Project Name**: auto-update-channel
- **Description**: sublimeText每次打开插件市场都要重新下载channel_v3.json文件,这是一个可以自动更新channel_v3.json,同时自动关联到配置的插件。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-11-24
- **Last Updated**: 2026-04-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: sublimeText, sublimetext-plugin, cps, Channel, package-control
## README
## 简介|Introductions
SublimeText 每次打开插件市场都要重新下载 `channel_v3.json` 文件,由于国内网络原因,有些时候无法正确下载,或者速度太慢被ST判断为下载超时无法使用。本插件可以定期自动或者手动触发更新 `channel_v3.json` 和 `channel_v4.json` 文件,并将其下载到本地进行离线关联,从此秒开 `Ctrl + Shfit + P`。
> - 本插件为团队内部打造使用,不对外更新负责,
> - 2023年了,前端建议采用**VSCode**。
## 功能|Feature


- 快捷键:`alt+u`,此时后台会自动下载最新的 `channel_v4.json` 和 `channel_v3.json`,具体进度会在最下方的 `statusBar` 显示。
- 自动更新文件路径到 `Package Control.sublime-settings` 的 `"channels"` 字段中,优先使用 `channel_v4.json`
- 支持代理和无代理下载模式,提高下载成功率
- 添加缓存层,先下载到缓存目录,再复制到用户目录,提高下载可靠性
- 详细的状态提示和日志输出,便于了解当前操作状态
## 安装|Install
```bash
# 打开 SublimeText3的插件目录,并在该目录下打开shell
菜单栏 > Preferences > Browse Packages...
# 在插件目录运行shell,下载插件
# gitee
git clone --depth=1 git@gitee.com:Capsion-ST-PLugins/auto-update-channel.git auto-update-channel
# or github
git clone --depth=1 git@github.com:Capsion-ST-PLugins/auto-update-channel.git auto-update-channel
# 打开控制台查看更新进度
Ctrl + `
# 重启ST 通过快捷键调用(前提要打开一个有效文件)
Ctrl + u
```
## 从此告别

全世界都知道 sublimetext 国内访问插件市场时,有一些地区基本时连不上的,因为 sublimetext 每次搜索插件,安装插件前都会访问一次 `https://packagecontrol.io/channel_v3.json`,下载 `channel_v3.json` 文件。
由于 packagecontrol.io 是国外服务器,访问很慢,有些同事下载只有几 kb 每秒。而且 `channel_v3.json` 由于存储了所有插件对应的项目地址,文件自身越来越大(截至 2022 年 1 月该文件为 3.7mb),特意写一个后台下载该文件的插件,下载完成后文件会保存在 User 文件夹中。
同时插件可以设置更新周期,一般默认 7 天更新一次。
## **配置文件|Configure**
### 快捷键
- `alt +u`:手动触发更新 `channel_v4.json` 和 `channel_v3.json` 文件
```js
[
{
"keys": ["alt+u"],
"command": "cps_update_channel"
}
]
```
### 插件配置
- `Packages/User/cps.sublime-settings`
```js
{
"auto_update_channel":{
"enable":true, // 插件开关
"auto_update": true, // 是否自动更新
"update_interval": 7, // 多少天更新一次
}
}
```
## 项目架构|Tree
```ini
auto-update-channel/ # 插件根目录
├── .sublime/ # Sublime Text 配置文件
│ ├── Default.sublime-keymap # 快捷键配置
│ ├── CpsUpdateChannel.sublime-commands # 命令配置
│ └── Context.sublime-menu # 上下文菜单配置
├── cache/ # 缓存目录
├── commands/ # 命令处理
│ └── update_channel.py # 更新channel命令
├── core/ # 核心功能模块
│ ├── config.py # 配置管理(Sublime Text 环境适配)
│ ├── core.py # 核心功能(不依赖 Sublime Text 环境)
│ ├── downloader.py # 下载管理
│ ├── settings.py # 配置文件加载
│ ├── updater.py # 更新管理(Sublime Text 环境适配)
│ └── utils.py # 工具函数
├── screenshot/ # 截图目录
├── .gitignore # Git忽略文件
├── config.json # 配置文件
├── README.md # 项目说明
├── TODO.md # 任务列表
└── main.py # 插件入口
```
## 核心功能|Core Features
1. **Channel 文件管理**
- 支持下载和更新 `channel_v4.json`(优先使用)和 `channel_v3.json`
- 采用缓存机制,提高下载可靠性
- 自动检查文件更新状态,根据配置的更新间隔进行更新
2. **Package Control 配置管理**
- 自动更新 `Package Control.sublime-settings` 中的 `channels` 配置
- 确保 `channel_v4.json` 在列表最前面,优先使用
3. **下载功能**
- 支持代理和无代理下载模式
- 提供详细的下载进度报告
- 自动切换下载模式,提高下载成功率
4. **错误处理**
- 完善的异常捕获和处理
- 详细的错误信息输出
5. **状态提示**
- 控制台详细日志输出
- 状态栏简洁状态提示
## 测试|Testing
本项目包含了完整的测试用例,确保核心功能的正确性:
1. **配置文件加载测试**:测试配置文件的加载和解析
2. **下载功能测试**:测试 URL 检查和文件下载
3. **核心功能测试**:测试路径初始化、缓存管理和配置更新
测试命令:
```bash
# 运行配置文件加载测试
python core/settings.py
# 运行下载功能测试
python core/downloader.py
# 运行核心功能测试
python core/core.py
# 检查代码语法
python -m py_compile main.py core/*.py commands/*.py
```
## 技术栈|Tech Stack
- **Python 3.8+**:核心语言
- **Sublime Text Plugin API**:插件环境
- **urllib**:文件下载
- **JSON**:配置管理
- **Type Hints**:类型注解,提高代码可读性
## 联系方式|Contact
- **373704015 (qq、wechat、email)**