1. メディア処理スクリプト

メディア処理スクリプトの例

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

処理作業者がアセットを処理するたびに実行されるメディア処理スクリプトの例を以下に挙げます。このスクリプトによってコンテキストからメタデータ プロパティが抽出され、アセットに追加されます。

ユース ケース

  1. ユーザーが新しいアセットをアップロードします。
  2. このアセットが処理されると、以下のスクリプトによって、ファイルのメタデータが CSV としてアセットの Metadata プロパティに出力されます。

スクリプト

using System.Linq;

var masterFileRelation = await Context.File.GetRelationAsync<IChildToManyParentsRelation>("MasterFile");

if (!masterFileRelation.Parents.Any() || !masterFileRelation.Parents.Contains(Context.Asset.Id.Value))
{
return;
}

string ToCsvValue(object source)
{
var str = source.ToString();
if (str.Contains(","))
{
return "\"" + str + "\"";
}
return str;
}

var headers = string.Join(", ", Context.MetadataProperties.Keys.Select(ToCsvValue));
var values = string.Join(", ", Context.MetadataProperties.Values.Select(ToCsvValue));

var metadataProp = await Context.Asset.GetPropertyAsync<ICultureInsensitiveProperty>("Metadata");
metadataProp.SetValue(headers + "\n" + values);

await MClient.Entities.SaveAsync(Context.Asset);

スクリプトの説明

  1. スクリプトで使用するライブラリをインクルードします。

    using System.Linq;
  2. アセットの MasterFile リレーションを取得します。

    var masterFileRelation = await Context.File.GetRelationAsync<IChildToManyParentsRelation>("MasterFile");
  3. 現在のファイルがマスター ファイルであるかどうかを確認します。マスター ファイルであれば、このメタデータのみをコピーします。

    if (!masterFileRelation.Parents.Any() || !masterFileRelation.Parents.Contains(Context.Asset.Id.Value))
    {
    return;
    }
  4. プロパティにコンマが使用されているかどうか、使用されている場合は疑問符でエスケープされているかどうかを確認するメソッドを作成します。

    string ToCsvValue(object source)
    {
    var str = source.ToString();
    if (str.Contains(","))
    {
    return "\"" + str + "\"";
    }
    return str;
    }
  5. メタデータのヘッダーを csv に変換します。

    var headers = string.Join(", ", Context.MetadataProperties.Keys.Select(ToCsvValue));
  6. メタデータの値を csv に変換します。

    var values = string.Join(", ", Context.MetadataProperties.Values.Select(ToCsvValue));
  7. アセットのメタデータ プロパティ フィールドを取得します。

    var metadataProp = await Context.Asset.GetPropertyAsync<ICultureInsensitiveProperty>("Metadata");
  8. メタデータをアセットに保存します。

    metadataProp.SetValue(headers + "\n" + values);
  9. アセットを保存します。

    await MClient.Entities.SaveAsync(Context.Asset);

設定

  1. M.Asset 定義に、Metadata を名前とする string プロパティを作成します。また、content typeMultiple lines に設定します。

  2. 上記のソース コードを使用したメタデータ処理スクリプトを作成し、パブリッシュして有効にします。

この記事を改善するための提案がある場合は、 お知らせください!