Skip to content

Latest commit

History

92 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

better-github-api

Better, Eazy, Access Anywhere

介绍

基于 gh-proxy + Jsdelivr + cnpmjs + cloudflare workers 的 GitHub Serverless API 工具。

cdn.js:仅含 gh-proxy 中的CDN功能,URL后加上GitHub各种资源(源码、Release文件等)的下载链接跳转为对应CDN加速的链接。

api.js:本项目的核心,提供API服务,部署时只用修改最开始的几个变量参数。

问题

  • GitHub资源下载龟速,你我都有办法,但是用户没有,而分发存储到其他地方也可能会增加开支和麻烦。
  • GitHub的API没有办法直接获得 Release 的某个附件,如提供过滤选项在众多Assets中筛选想要的附件,获取最新版本的某个附件只能通过解析API进一步操作,而实际应提供一个固定、简短的API。
  • Jsdelivr很好用,可结合GitHub Actions自动搬运资源,但是有~20MB/文件限制。

优势

  • 使用 Jsdelivr 等CDN加速资源下载,Release文件加速无大小限制;
  • 提供简明的API,可作为程序分发的固定下载链接;
  • 开销低,每个账号CloudFlare Workers 免费请求额度为 ~1k次/小时~100k次/天,5$付费版 ~10m次/天,且可开多个账号。

如需用自己的域名,应使用CloudFlare的DNS服务(maybe可用CNAME跳转Worker的域名)

路线

  • repo
  • get
  • bucket
  • submit
  • list
  • submit可视化提交界面

使用

如果有配置好的API服务可以直接使用,API参考这里,这里给出可用的域名,请尽量自己搭建减少这里的压力,毕竟是免费的,也可提交你的域名

下面是使用举例:

含义URL
获取advancedfx仓库的最新版本号https://api.upup.cool/repo/advancedfx/advancedfx/version
获取advancedfx仓库的最新版本包含hlae字符串的zip压缩包https://api.upup.cool/repo/advancedfx/advancedfx/&hlae&&&.zip
获取advancedfx仓库的最新版本号v2.115.0的HLAE_Setup.exe安装器https://api.upup.cool/repo/advancedfx/advancedfx/v2.115.0/&HLAE_Setup.exe
获取本仓库最新源代码https://api.upup.cool/repo/One-Studio/better-github-api/source
获取本仓库最新简化信息https://api.upup.cool/repo/One-Studio/better-github-api/info
获取...上述zip压缩包,使用KV键值对预先存好的信息https://api.upup.cool/get/hlae
获取advancedfx仓库的最新版本号https://api.upup.cool/get/hlae/version

部署

登录 Cloudflare Workers 注册,登陆,选择Workers,创建Worker。下面的服务可自由选择。

CDN服务

  1. 复制项目文件中cdn.js的内容到左侧代码框;
  2. 修改 ASSET_URL, Config, PREFIX
  3. 保存并部署;
  4. (可选)修改Worker的域名/路由。

API服务

  1. 复制项目文件中api.js的内容到左侧代码框,保存并部署
  2. 修改 HOME_PAGE,请求不加参数时跳转到主页;
  3. 保存并部署;
  4. 返回Workers界面,点击KV设置命名空间,添加两个命名空间:KVBUCKET(可修改),回到Worker的设置页绑定命名空间,注意变量名称必须是KVBUCKET

    BUCKET 功能未完成,可以只添加KV

  5. 提交KV键值对:给刚才绑定KV变量名的命名空间添加键值对(仓库简称-值)以使用get方法,参照这里
  6. (可选)修改Worker的域名/路由。

配置参数说明:

HOME_PAGE,请求不加参数时跳转到主页ASSET_URL 修改为Worker的域名,如用自定义域名也要改成对应的。

域名修改说明:

如果有自己的域名,可以给CDN和API服务分配分配到两个子域名中。使用CloudFlare做域名的DNS服务器之后,按下表设置DNS:

类型名称内容
Aapi8.8.8.8
Acdn8.8.8.8

然后在域名设置页找到Workers,添加路由,路由格式:

api.upup.cool/*
cdn.upup.cool/*

API设计

KV(Key-Value)键值对:CloudFlare提供了免费1GB的键值对存储功能,可以设置多个命名空间,Workers可以读写这些键值实现一些功能

一级API

参数含义
/repo获取GitHub仓库信息
/get利用KV中已有的键值对快速获取GitHub仓库信息
/bucket与get类似,使用KV缓存的键值信息简化参数复杂度,加快响应
/submit向KV提交键值对
/list列出KV键值对

二级API

/repo

API含义
/仓库主/仓库名获取该仓库的最新版本的唯一附件
/仓库主/仓库名/version获取该仓库的最新版本的版本号
/仓库主/仓库名/source获取该仓库的最新版本的源代码下载地址
/仓库主/仓库名/info获取该仓库的最新版本的信息,如版本号和附件
/仓库主/仓库名/过滤器获取该仓库的最新版本的附件,同时过滤附件名得到唯一附件
/仓库主/仓库名/版本获取该仓库的给定版本的唯一附件
/仓库主/仓库名/版本/version获取该仓库的给定版本的唯一附件
/仓库主/仓库名/版本/source获取该仓库的给定版本的源代码下载地址
/仓库主/仓库名/版本/info获取该仓库的给定版本的信息,如版本号和附件
/仓库主/仓库名/版本/过滤器获取该仓库的给定版本的附件,同时过滤附件名得到唯一附件
仓库信息类型示例
仓库主stringOne-Studio
仓库名stringbetter-github-api
版本含义示例
latest最新版本latest
其他指定的其他版本v2.116.0
info成员类型含义
versionstring版本号
sourcestring源代码URL
assetsasset array附件
logstring更新日志
asset成员类型含义
namestring附件名
sizeint附件大小
browser_download_urlstring附件下载链接 (TODO 原始 or 加速后?)

filter用&分隔的过滤器各个部分,必须&开头,格式为 &include&exclude&start&end ,可用格式的示例如下:

  • &hlae&&&.zip
  • &HLAE_Setup.exe
  • &HLAE_Setup.exe&&&
  • &hlae&.exe
  • &hlae&.exe&&

右侧连通的空白部分&可省去。

过滤器部分含义
include包含字符串hlae
exclude排除字符串
start开头字符串
end结尾字符串.zip

/get

仓库简称后的API与repo一致,区别在使用KV存储的信息(仓库主、仓库名、filter等)简化API。

API含义
/get/仓库简称获取该仓库的最新版本的唯一附件
/get/仓库简称/version获取该仓库的最新版本的版本号
/get/仓库简称/source获取该仓库的最新版本的源代码下载地址
/get/仓库简称/info获取该仓库的最新版本的信息,如版本号和附件
/get/仓库简称/过滤器获取该仓库的最新版本的附件,同时过滤附件名得到唯一附件
/get/仓库简称/版本获取该仓库的给定版本的唯一附件
/get/仓库简称/版本/version获取该仓库的给定版本的唯一附件
/get/仓库简称/版本/source获取该仓库的给定版本的源代码下载地址
/get/仓库简称/版本/info获取该仓库的给定版本的信息,如版本号和附件
/get/仓库简称/版本/过滤器获取该仓库的给定版本的附件,同时过滤附件名得到唯一附件

至于KV里如何存简称-全称的对应关系:

类型含义
repostring仓库主/仓库名advancedfx/advancedfx
filterstring附件名过滤器&hlae&&&.zip
infoobjectKV键值对信息(多语言){"zh_CN": "hlae的zip安装包", "zh_TW": "hlae的zip安裝器"}

举例:键为 hlae,值为:

{
"repo": "advancedfx/advancedfx",
"filter": "&hlae&&&.zip",
"info": {
"zh_CN": "hlae的zip安装包",
"zh_TW": "hlae的zip安裝包"
}
}

之后使用URL如https://api.upup.cool/get/hlae即可直接下载hlae的最新zip安装包,同时包含CDN服务,避免了很多访问速度的问题。

/bucket (未完成)

API示例含义
/bucket获取所有bucket信息
/bucket/hlae获取hlae最新安装包
/bucket/hlae/version
/bucket/ffmpeg/win/
/bucket/ffmpeg/win/
/get/hlae

/submit(未完成)

About

基于 gh-proxy + Jsdelivr+ cnpmjs + cloudflare workers 的 GitHub Serverless API 工具。

Resources

Stars

14 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages