*.tar.gz
すべて一括/順次ダウンロードは可能ですか?GitHubリポジトリ?すべてをダウンロードするために使用できる特定のコマンドはありますか?それとも、すべてを手動でダウンロードする代わりにスクリプトを作成する必要がありますか?私はLinuxを使用しています。
答え1
まず、単にストレージの複製を検討する必要がありますgit
。これにより、バージョン間の比較が容易になります。これはこのQ&Aの範囲外です。
私は、WebベースのアプローチとAPIを使用するGitHub専用のアプローチという2つのアプローチを提案します。
Webスクレイピング
w3m
これは、awk
およびが必要な迅速で汚れた一行スクリプトです(読みやすくするためにここでは複数行に分割)。この一時スクリプトは、自動化されたタスクでの使用には適していない可能性があります。xargs
curl
w3m
最後にすべてのリンクを含むページコンテンツをフォーマットするために使用されます。awk
/releases/download/
.tar.gz
文字列を含み、URLで終わるリンクのみを抽出します。xargs
出力をコマンドライン引数に変換して提供curl
ダウンロードしてください。以下を追加すると、-P n
n個の並列ダウンロードにも適していますxargs
。
。
w3m -o display_link_number=1 -dump https://github.com/GloriousEggroll/proton-ge-custom/releases |
awk '$1 ~ /\[[0-9]+\]/ && $2 ~ /\/releases\/download\/.*\.tar\.gz$/ { print $2 }' |
xargs -n 1 curl -JRLO
echo
実際にダウンロードが発生しないように以前に挿入した場合、curl
出力は次のようになります。
curl -JRLO https://github.com/GloriousEggroll/proton-ge-custom/releases/download/6.10-GE-1/Proton-6.10-GE-1.tar.gz
curl -JRLO https://github.com/GloriousEggroll/proton-ge-custom/releases/download/6.9-GE-2-github-actions-test/Proton-6.9-GE-2-github-actions-test.tar.gz
curl -JRLO https://github.com/GloriousEggroll/proton-ge-custom/releases/download/6.9-GE-2/Proton-6.9-GE-2.tar.gz
curl -JRLO https://github.com/GloriousEggroll/proton-ge-custom/releases/download/6.9-GE-1/Proton-6.9-GE-1.tar.gz
curl -JRLO https://github.com/GloriousEggroll/proton-ge-custom/releases/download/6.8-GE-2/Proton-6.8-GE-2.tar.gz
curl -JRLO https://github.com/GloriousEggroll/proton-ge-custom/releases/download/6.8-GE-1/Proton-6.8-GE-1.tar.gz
注:この-o display_link_number=1
オプションは実際には文書化されていませんが、例として表示されます。w3m
マニュアルページ。
これは最初のページのコンテンツに制限されているため、すべてのダウンロードが可能ではありません。次のページリンクはコンテンツ(特にページに表示される最後のバージョン)を知る必要があるため、これを処理するのは複雑すぎます。
使用するのに最適です...
GitHub REST API
一つあるリリース関連のGitHub APIジョブに資格情報が必要ないように見え、結果をスクリプトに適したJSON形式で出力します。jq
(通常配布パッケージで提供されます。) これにはcurl
、、が必要ですxargs
。名前で終わる各アセットのダウンロードURLが表示されます。 (まず初期値を確認してください。jq
jq
.tar.gz
カールダンプを| jq .
使用すると、便利な部品を見つけることができます。)
curl -H 'Accept: application/vnd.github.v3+json' 'https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases' |
jq -r '
.[].assets[] | if .name | endswith(".tar.gz") then
.browser_download_url
else
empty
end' |
xargs -n 1 curl -JRLO
echo
最後の方法の前に挿入すると、curl
〜6の代わりに30があることを除いて、最初の方法と同じ出力が提供されます。
〜のようにAPIで説明されているように、ページあたりデフォルトは30です。?per_page=XX
最大100件の結果を表示するには、URLに追加してください。大きい方には追加のパラメータが含まれ、&page=Y
終了時点を検出するループが必要です。