UpdateFetch - GitHub & F-Droid 软件版本更新定期检查与下载

UpdateFetch 能根据用户的设定，每日检查 GitHub、F-Droid 等平台的软件，若有更新则下载，并提供链接，方便在特殊网络环境中分享、下载软件，配合 UpdateFetchWeb 更方便使用。可以前往演示网页体验： UpdateFetch Web (vfly2.com)

项目地址： AhFeil/UpdateFetch: 定期检查和下载软件的最新版，方便在特殊网络环境中分享、下载软件 (github.com)

创建这个项目的需求动力是在 “长城防火墙” 下，国内机子想装个 serverstatus 探针都要梯子，虽然可以手动上传，但是不方便写脚本。后来又发现这个项目还方便给其他人分享 GitHub 上的好用 APP 等，他们也方便自行更新软件，于是又写了 UpdateFetchWeb 作为前端。

功能

方便在国内直接下载软件，如 xray、serverstatus-rust ，不用每次都加代理

方便给一般用户分享软件，以及方便他们更新，如 Bitwarden 、Element

使用

首先安装： 定期检查和下载软件的最新版 UpdateFetch 的安装步骤 - 技焉洲 (vfly2.com)

然后编写自己的下载项，这样程序每天执行就会检查、更新。

下载项配置文件

为了方便管理，本项目会重命名下载后的文件，格式为： 软件名 - 系统 - 架构 - 版本。后缀名，每个部分用 - 连接，因此软件名不能带有 - ，会导致程序出错。

GitHub 网站 release 下载

本项目最初参考 Linux 下的自动下载最新版的 shell 脚本，因此 GitHub 下载器是模仿这种脚本思路来的

Copy
# 以 xray 为例
xray_binary: # 下载项的名称，在上传时，会创建同名目录；以及在下载器会用到
name: xray # 软件名，用于重命名下载后的文件，推荐全小写，不能带有 -
website: github # 用哪个下载器
project_name: XTLS/Xray-core
sample_url: https://github.com/XTLS/Xray-core/releases/download/${tag}/Xray-${system}-${ARCHITECTURE}${suffix_name} # release 中的下载链接，${} 包裹的在下载时会被替换成实际值
system: # 软件要下载哪些系统的，左边是用于重命名的标准名称，右边的列表里，左项是 sample_url 中应该实际填写的，右边是对应的后缀名
windows: [windows, .zip]
linux: [linux, .zip]
architecture: # 软件要下载哪些架构的，左边是用于重命名的标准名称，右边是 sample_url 中应该实际填写的
arm64: arm64-v8a
amd64: '64'

# 最终，下载器会组合出 4 个下载链接，并下载，假设查到的最新版是 v1.8.7， 4 个网址分别是
# https://github.com/XTLS/Xray-core/releases/download/v1.8.7/Xray-windows-arm64-v8a.zip
# https://github.com/XTLS/Xray-core/releases/download/v1.8.7/Xray-windows-64.zip
# https://github.com/XTLS/Xray-core/releases/download/v1.8.7/Xray-linux-arm64-v8a.zip
# https://github.com/XTLS/Xray-core/releases/download/v1.8.7/Xray-linux-64.zip

FDroid 下载

Copy
SchildChat:
name: schildchat
website: fdroid
project_name: de.spiritcroc.riotx # 这个到软件在 FDroid 网站的页面，其网址最后一部分就是
# 因为 FDroid 上都是 Android 平台的 APP，因此不必填写系统
architecture:
arm64: arm64-v8a

安装 UpdateFetchWeb

项目地址： AhFeil/updatefetchWeb: 在网页上展示 UpdateFetch 下载的内容，方便使用。updatefetchWeb is the front-end of UpdateFetch. (github.com)

UpdateFetch 只是用于下载，没有用户能交互的界面，而 UpdateFetchWeb 是在网页上展示它下载的内容，方便使用。演示网页： UpdateFetch Web (vfly2.com)

添加前端网页需要额外几步

安装 UpdateFetchWeb，并添加用户、分类和 token

在 UpdateFetch 的配置文件将上一步的 token 和网址填入

运行 UpdateFetch，就可以将更新信息自动传到网页了

安装流程： updatefetchWeb 的安装步骤 - 技焉洲 (vfly2.com)

除此之外，UpdateFetchWeb 还有一个更实用的功能，以一定格式自动跳转到最新版的下载网址。

比如要获取 xray 的 Windows 平台 AMD64 架构的文件，可以直接访问 http://ip:7699/xray-win-amd64 ，本程序会跳转到最新的网址

格式为： 软件名-系统 - 架构，软件名必须是第一个。系统和架构有别名，Windows 可以填 win 或 windows，具体查看 settings.py 中的设置。

配合 bash 脚本的示例：

Copy
url="http://updatefetch.vfly2.com/xray-linux-arm64"
# 获取最终的重定向URL
redirect_url=$(curl -Ls -o /dev/null -w %{url_effective} $url)
# 下载文件
curl -LO "$redirect_url"