[英]How to download the latest binary release from github?
我想从最新版本下载两个(.bin 和.zip)二进制文件。
我尝试使用以下命令
curl -s https://github.com/Atmosphere-NX/Atmosphere/releases/latest | grep "browser_download_url.*zip" | cut -d : -f 2,3 | tr -d "\" | wget -qi -
但没有任何反应,output 是SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
我愿意使用任何其他(wget、ecurl 等)命令。
它是否试图从 HTML 页面中提取下载链接? 这很容易出错,随时可能崩溃。
对于此类操作,请先检查他们是否提供 API。
他们这样做: https://docs.github.com/en/rest/reference/releases#get-the-latest-release
你可以写类似的东西(伪代码):
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/Atmosphere-NX/Atmosphere/releases/latest \
| jq .assets[0].browser_download_url \
| xargs wget -qi -
就像评论中建议的那样,单独测试每个命令(管道分隔)。
您可以使用GitHub CLI ,特别是release download
命令:
gh release download --repo Atmosphere-NX/Atmosphere --pattern '*.bin'
gh release download --repo Atmosphere-NX/Atmosphere --archive zip
如果不指定发布标签,该命令默认为最新版本。
只需在 url 上运行 curl 即可得到:
curl https://github.com/Atmosphere-NX/Atmosphere/releases/latest
<html><body>You are being <a href="https://github.com/Atmosphere-NX/Atmosphere/releases/tag/1.2.6">redirected</a>.</body>
因此,您很容易立即发现问题所在。 查看 curl 帮助,您可以在下面找到选项、命令来确定您需要什么:
curl --help | grep redirect
-L, --location Follow redirects
--max-redirs <num> Maximum number of redirects allowed
--proto-redir <protocols> Enable/disable PROTOCOLS on redirect
--stderr Where to redirect stderr
第一条线索是响应中的redirect
,然后我们在帮助部分看到有一个标志来处理它。
使用 th -L
命令运行它会给出预期的 output。将其通过管道传输到grep "browser_download_url.*zip"
但是什么也给不了你。 然后,您进行调查以查看正确的匹配项是什么。 但是,让我们尝试仅对 html 与 zip 进行数学运算,看看会发生什么。
curl -sL https://github.com/Atmosphere-NX/Atmosphere/releases/latest | grep "href=.*zip"
<a href="/Atmosphere-NX/Atmosphere/releases/download/1.2.6/atmosphere-1.2.6-master-173d5c2d3+hbl-2.4.1+hbmenu-3.5.0.zip" rel="nofollow" data-skip-pjax>
<a href="/Atmosphere-NX/Atmosphere/archive/refs/tags/1.2.6.zip" rel="nofollow" data-skip-pjax>
从那里您可能可以找到构建命令所需的内容。 如您所见,链接与此方法相关,因此您仍然必须向wget
(或等效的curl
)提供基数 url 才能最终下载您想要的内容。
这更像是一个让你继续解决问题的回复。 你已经有了其他答案来实际做你想做的事。 但是如果你不能安装建议的工具,你可能会这样做:
curl -sL https://github.com/Atmosphere-NX/Atmosphere/releases/latest |
awk '/releases\/download/ && done != 1 {
sub(/.*href="/, "https://github.com")
sub(/".*/, "")
print
done = 1
}' |
xargs curl -LsO
并不是说这是一个好方法,只是一种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.