tunasync-scripts icon indicating copy to clipboard operation
tunasync-scripts copied to clipboard

github-release脚本获取仓库所有release

Open jimorsm opened this issue 2 years ago • 10 comments

解决github-release脚本不能获取仓库所有release问题 #170

jimorsm avatar Jan 15 '24 08:01 jimorsm

请分离出具体的代码改动,不要把格式化和改动混合在一个 commit 中

Harry-Chen avatar Jan 15 '24 08:01 Harry-Chen

请分离出具体的代码改动,不要把格式化和改动混合在一个 commit 中

还原了格式化的代码

jimorsm avatar Jan 19 '24 07:01 jimorsm

大概清楚问题了。Github 的 releases api 具有分页的特性,要全部获取 releases 需要程序处理分页的逻辑。

但是,如果应用该补丁,可能会造成服务器下载过多的资源。

可以考虑将这个特性作为可选的,默认不开启,只下载第一页的 releases。

shankerwangmiao avatar Jan 19 '24 08:01 shankerwangmiao

大概清楚问题了。Github 的 releases api 具有分页的特性,要全部获取 releases 需要程序处理分页的逻辑。

但是,如果应用该补丁,可能会造成服务器下载过多的资源。

可以考虑将这个特性作为可选的,默认不开启,只下载第一页的 releases。

原始代码里就包含了下载的release数量限制,参考:

jimorsm avatar Jan 19 '24 10:01 jimorsm

原始代码里就包含了下载的release数量限制,参考:

@shankerwangmiao 的意思有可能是设置限制来避免翻了太多页的情况。考虑到 GitHub API 有 rate limit(尽管相对较大),再添加一个限制也是合理的,如果在指定的页里面都没有找到 release,那么就还是按照原来的逻辑。

taoky avatar Jan 22 '24 09:01 taoky

嗯,我看从功能上已经没什么问题了。但是,希望你能改进一下解析 next_url 的方法。你现在的做法看上去有点不是很健壮。这个位置其它有这种功能的库是怎么解析的?

shankerwangmiao avatar Jan 23 '24 03:01 shankerwangmiao

嗯,我看从功能上已经没什么问题了。但是,希望你能改进一下解析 next_url 的方法。你现在的做法看上去有点不是很健壮。这个位置其它有这种功能的库是怎么解析的?

参考GitHub API 文档 创建分页方法的示例 改进了下代码,通过正则获取next_url

jimorsm avatar Jan 23 '24 11:01 jimorsm

@shankerwangmiao @taoky 还有什么问题嘛?

jimorsm avatar Jan 30 '24 11:01 jimorsm

我在我们自己的服务器上测试了这个脚本,发现获取分页的逻辑是有问题的:

当 Releases 数量并不足以分页时,GitHub API 并没有返回 Link 这个标头 我发现你的脚本试图处理这个问题了,但是实际上这会报错并被 try 捕获

由于我不会 Python,并不能提交正确的代码,希望作者更正这个错误

Muska-Ami avatar Aug 24 '24 19:08 Muska-Ami

@jimorsm 请进一步根据问题修正脚本

Harry-Chen avatar Aug 27 '24 06:08 Harry-Chen