bitbucket API 2.0 页面参数使用非默认 pagelen

bitbucket API 2.0 page parameters using non-default pagelen

我 运行 遇到了 bitbucket API 2.0 的繁琐限制 - 我希望有办法让它更有用。

当想要从 bitbucket API 2.0 中检索存储库列表时,可以使用 url:

https://api.bitbucket.org/2.0/repositories/{teamname}

这是列表中的前 10 个回购 returns。要访问下 10 个,只需添加一个页面参数:

https://api.bitbucket.org/2.0/repositories/{teamname}?page=2

这个returns下10个。也可以使用pagelen参数调整返回的结果数,像这样:

https://api.bitbucket.org/2.0/repositories/{teamname}?pagelen=100

每个帐户的最大数量可能有所不同,但 100 是任何团队每次 API 呼叫可以请求的最大数量。麻烦的部分是我无法找到 pagelen 为 100 的第 2 页的方法。我尝试了以下变体:

https://api.bitbucket.org/2.0/repositories/{teamname}?pagelen=100&page=2
https://api.bitbucket.org/2.0/repositories/{teamname}?page=2&pagelen=100

我也尝试过使用 limitsize 等参数,但均无济于事。我寻求的行为是否可能? Some relevant documentation can be found here.

编辑: 看起来这种行为是可能的,但是 bitbucket 2.0 API 只有在整个 url 都在引号中时才能识别多个参数。

示例:

curl "https://api.bitbucket.org/2.0/repositories/{teamname}?pagelen=100&page=2"

原始答案: 我可以通过创建一个 bash 脚本来解决这个问题,该脚本循环遍历每页 10 个结果,将每个新的 10 个回购添加到临时文件,然后克隆到这 10 个存储库中。唯一需要做的手动操作是将 for 循环中的上限更新为预期的最后一页。

这是一个示例脚本:

for thisPage in {1..23}
    do
        curl https://api.bitbucket.org/2.0/repositories/[organization]?page=$thisPage -u [username]:[password] > repoinfo

        for repo_name in `cat repoinfo | sed -r 's/("slug": )/\n/g' | sed -r 's/"slug": "(.*)"//' | sed -e 's/{//' | cut -f1 -d\" | tr '\n' ' '`
            do
                echo "Cloning " $repo_name
                git clone https://[username]@bitbucket.org/[organization]/$repo_name
                echo "---"
            done
    done

从以下方面获得了很多帮助: https://haroldsoh.com/2011/10/07/clone-all-repos-from-a-bitbucket-source/ http://adomingues.github.io/2015/01/10/clone-all-repositories-from-a-user-bitbucket/ 谢谢!