Пакетное скачивание репозиториев с GitHub
GitHub отображает только ограниченное число репозиториев на одной странице, поэтому для получения всех 815 репозиториев необходимо обработать все страницы с помощью автоматического перехода по ссылкам пагинации.
Решение через curl и grep для нескольких страниц
GitHub добавляет параметр ?page= в URL для перехода к следующей странице. Мы можем пройтись по всем страницам, чтобы собрать полный список репозиториев.
1. Скачиваем и парсим все страницы
for page in {1..50}; do
echo "Fetching page $page..."
curl -s "https://github.com/orgs/YunoHost-Apps/repositories?page=$page" >> all_repos.html
done
2. Извлекаем все ссылки на репозитории
grep -o '/YunoHost-Apps/[a-zA-Z0-9._-]*' all_repos.html | sed 's|^|https://github.com|' | sort -u > repos.txt
Убедимся, что всё корректно
Проверьте, сколько строк в файле repos.txt:
wc -l repos.txt
Если их близко к 815, можно переходить к клонированию.
Клонируем репозитории:
while read -r repo; do
git clone "$repo"
done < repos.txt
Почему не все репозитории?
Если ссылок всё равно меньше, возможно:
Некоторые репозитории могут быть скрыты (приватные), и без авторизации их не видно.
GitHub ограничивает показ определённого числа элементов для неавторизованных запросов.
Чтобы гарантировать получение всех репозиториев, рекомендуется использовать API (с токеном), как описано выше. Но даже без регистрации, этот метод должен покрыть большинство публичных репозиториев.
No Comments