如何从azure媒体服务帐户获取所有资产

时间:2016-04-21 06:39:26

标签: azure azure-media-services

我正在尝试从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媒体服务的所有资产?

谢谢,

2 个答案:

答案 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,也许会有所帮助。

https://msdn.microsoft.com/library/gg309461.aspx#BKMK_skip