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
我也尝试过使用 limit
或 size
等参数,但均无济于事。我寻求的行为是否可能? 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/ 谢谢!
我 运行 遇到了 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
我也尝试过使用 limit
或 size
等参数,但均无济于事。我寻求的行为是否可能? 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/ 谢谢!