PHP

Azure Media Services(以下AMS)公式PHP SDK(正確にはazure-sdk-for-phpに含まれるMedia Services用ライブラリ)を使って条件指定でアセット一覧情報を取得するための方法について簡単に説明したい。2015年12月の時点でAMS PHP SDKが持っているBuilt-inのアセット一覧情報取得インターフェースはgetAssetList() のみとなっており様々な条件指定でアセット一覧情報を取得するための機能が存在しないためここでの説明は今回新しく用意したカスタム関数の追加を前提としている。

追加カスタム関数

上述のとおり2015年12月の時点でAMS PHP SDKが持っているBuild-inインターフェースでは条件指定によるアセット一覧の取得ができない。例えば次のような取得ができない:

– オフセット指定
– フィールド名の完全、前方、後方一致といったフィルター条件指定(AMS REST APIはOData v3をベースとしている)
– 一度に取得するアセット数やソート条件指定

よって、ここではMediaServicesRestProxy.phpに下記のgetAssetListByParam()関数を追加して条件指定によるアセット一覧取得を実現する。尚、この修正は既にGithub上の個人開発用ブランチにコミット済みでありマスターブランチとの差分はこちら。この修正についてはPull Req#766でプルリクエスト中なので無事通れば将来的にはマスターブランチに反映されるかもしれません。

    /**
    * Get asset list by params
    *
    * @param array of parameters to be added to request URL as query string
    * such as $skip, $filter, $top, and so on
    *
    * @return array of Models\Asset
    */

    public function getAssetListByParams($params)
    {
        $p = array();
        foreach($params as $k => $v){
            $p[] = $k.'='.$v;
        }
        $paramstr = implode('&', $p);
        $propertyList = $this->_getEntityList("Assets()?" . $paramstr );
        $result       = array();
        foreach ($propertyList as $properties) {
            $result[] = Asset::createFromOptions($properties);
        }
        return $result;
    }

使用例

例1: 1000件目以降の一覧情報取得
以前「TIPS: Azure Media Servicesでの利用アカウントの全アセット一覧の取得」で触れたとおりAzure Media Servicesではパフォーマンス上の理由から一度に返却できるアセット数の制限が1000に設定されている。よって、アセット数が1000以上ある場合、1000件以降のアセット一覧情報を取得するためにはオフセットの位置を調整する必要がある。ここでは$skipパラメータを使用してオフセット位置を調整している。

例2: アセット名が完全一致する一覧情報取得
$filterパラメータを使用してアセット名(Nameフィールド)が指定した名前と完全マッチするアセット情報一覧を取得する。

例3: アセット名が前方部分一致する最初のアセット情報を取得
$filterパラメータを使用してアセット名(Nameフィールド)が指定した名前と前方一致するアセット情報一覧を取得する。ここではさらに$topパラメータで最初の1件のみを取得している。

LINKS