Я настраиваю скрипт для экспорта всех коммитов и запросов на извлечение для большего списка репозиториев github (около 4000).
После того, как основная идея скрипта сработает, мне нужен способ перебрать все страницы коммитов для репозитория.
Я обнаружил, что могу экспортировать 100 коммитов на страницу. Для некоторых репозиториев есть еще коммиты (например, 8000), так что мне нужно 80 страниц, чтобы пройти через них.
Я не могу найти способ извлечь количество страниц из API github.
То, что я сделал до сих пор, - это установил скрипт, который проходит через все коммиты и экспортирует их в файл txt / csv.
Что мне нужно сделать, это узнать общее количество страниц, прежде чем я начну циклически повторять коммиты репо.
Здесь приведено количество страниц, которое я не могу использовать.
curl -u "user:password" -I https://api.github.com/repos/0chain/rocksdb/commits?per_page=100
РЕЗУЛЬТАТ:
Ссылка: https://api.github.com/repositories/152923130/commits?per_page=100&page=2; rel = "next", https://api.github.com/repositories/152923130/commits?per_page=100&page=75; rel = "last"
Мне нужно, чтобы значение 75 (или любое другое значение из других репо) использовалось в качестве переменной в цикле.
Вот так:
repolist=`cat repolist.txt`
repolistarray=($(echo $repolist))
repolength=$(echo "${#repolistarray[@]}")
for (( i = 0; i <= $repolength; i++ )); do
#here i need to extract the pagenumber
pagenumber=$(curl -u "user:password" -I https://api.github.com/repos/$(echo "${repolistarray[i]}")/commits?per_page=100)
for (( n = 1; n <= $pagenumber; n++ )); do
curl -u "user:password" -s https://api.github.com/repos/$(echo "${repolistarray[i]}")/commits?per_page=100&page$(echo "$n") >committest.txt
done
done
done
Как я могу получить "75" или любой другой результат из этого
Ссылка: https://api.github.com/repositories/152923130/commits?per_page=100&page=2; rel = "next", https://api.github.com/repositories/152923130/commits?per_page=100&page=75; rel = "last"
будет использоваться как "n"?