我正在尝试从azure媒体服务帐户获取所有资产,这是我的代码:
MediaContract mediaService = MediaService.create(MediaConfiguration.configureWithOAuthAuthentication(
mediaServiceUri, oAuthUri, AMSAccountName, AMSAccountKey, scope));
List<AssetInfo> info = mediaService.list(Asset.list());
然而,这只给了我1000个,而且帐户中肯定有更多。
在Azure表查询中,如果2-way bindings,则会有一个令牌用于获取更多条目。
有谁知道如何获得azure媒体服务的所有资产?
谢谢,
答案 0 :(得分:3)
在Alex的帮助下,我能够以与{{3}}相同的方式破解java-sdk
以下是代码:
List<AssetInfo> allAssets = new ArrayList<>();
int skip = 0;
while (true) {
List<AssetInfo> curAssets = mediaService.list(getAllAssetPage(skip));
if (curAssets.size() > 0) {
allAssets.addAll(curAssets);
if (curAssets.size() == 1000) {
System.out.println(String.format("Got %d assets.", allAssets.size()));
skip += 1000;
} else {
break;
}
} else {
break;
}
}
private static DefaultListOperation<AssetInfo> getAllAssetPage(int skip) {
return new DefaultListOperation<AssetInfo>("Assets",
new GenericType<ListResult<AssetInfo>>() {
}).setSkip(skip);
}
答案 1 :(得分:1)
it is the built-in limit由于性能原因(和REST v2),我相信。我认为没有办法通过一个查询检索所有这些。 但是,有可能to use take and skip 1000乘1000等。
但是我看到你使用MediaContract类,我在.NET存储库中找不到它 - 我猜它是Java的?我不能对此发表评论,但我认为该方法应该与文章(skip / take)中描述的方法相同。 我找到了PHP implementation,也许会有所帮助。