使用Powershell下载随机GitHub存储库

我想抽样随机GitHub公共存储库,逐个下载它们用于统计目的 . 我尝试使用以下Powershell代码:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$id = Get-Random -Minimum 0 -Maximum 500
$jsonContent = Invoke-WebRequest "http://api.github.com/repositories?since=$id" | ConvertFrom-Json

我确实得到了一个公共存储库列表,但我无法限制它们的数量 . 我尝试了 ?page=1&per_page=1 ,但它没有用 . 我只是想将 clone_url 解析为 git clone .

有任何想法吗?其他从github下载随机回购的解决方案也受到欢迎 .

回答(1)

2 years ago

你很亲密这应该工作:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$id = Get-Random -Minimum 0 -Maximum 99
$jsonContent = Invoke-WebRequest "http://api.github.com/repositories?since=1" | ConvertFrom-Json

$gitUrl = Invoke-WebRequest -Uri ($jsonContent[$id].url) | ConvertFrom-Json |  Select-Object -ExpandProperty git_url

git clone $gitUrl

如果要通过ssh克隆,请务必将 git_url 更改为 ssh_url .

解释

http://api.github.com/repositories?since=x allways的调用代表相同的最后100个回购,因此无需随机化数字 .

第一次调用的列表为您提供了100 Repos的api URL . 因此,随机检查其中一个并使用另一个WebRequest克隆该URL以克隆到存储库的api URL .