Массовая загрузка определенных файлов из репозитория GitHub

В FreeBDS 12 нет пакета nosh. Вместо этого просто запустите dbus-uuidgen --ensureи скопируйте сгенерированный идентификатор :cp /var/lib/dbus/machine-id /etc/machine-id. Затем startkdeзапускает плазменный kde.

0
07.06.2021, 15:45
1 ответ

Сначала следует просто клонировать репозиторий с помощью git, тогда будет проще сравнивать выпуски. Это выходит за рамки данного вопроса/ответа.

Я представляю два метода :веб-подход -и специальный подход GitHub с использованием API:

Очистка веб-страниц

Вот быстрый -n -грязный -лайнер (разбитый здесь на несколько строк для удобства чтения ), требующий w3m, awk, xargsи curl. Этот специальный сценарий, вероятно, не предназначен для использования в каких-либо автоматизированных системах.

  • использование w3mдля форматирования содержимого страницы со всеми ссылками в конце,
  • awkдля извлечения только ссылок, содержащих строку /releases/download/и заканчивающихся на .tar.gzв их URL,
  • xargsдля преобразования вывода в параметры командной строки для передачи в
  • curl, чтобы загрузить их. Это даже подходит для n параллельных загрузок, если добавить -P 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.

Это будет ограничено содержимым первой страницы, поэтому не все загрузки будут доступны. Поскольку ссылка на следующую страницу требует знать содержимое (, в частности последний отображаемый выпуск на странице ), обработка этого будет слишком сложной.

Лучше использовать...

REST API GitHub

Существует GitHub API, относящийся к выпускам , который не требует каких-либо учетных данных для этой задачи и выводит результаты в формате JSON, подходящем для обработки скриптов с помощью jq(, который обычно доступен в виде дистрибутива. ). Для этого требуются curl, xargs, jq. jqбудет отображать URL-адрес загрузки для каждого имени ресурса, оканчивающегося на .tar.gz. (Изучение исходного curl дампа с помощью | 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даст тот же результат, что и в первом методе, за исключением того, что их будет 30 вместо ~6.

Как описано в API , на _страницу по умолчанию равно 30. Добавление к URL-адресу ?per_page=XXможет дать до 100 результатов. Для большего размера потребуется цикл с дополнительным параметром &page=Yи определением его окончания.

1
28.07.2021, 11:26

Теги

Похожие вопросы