single.php

C# WinUI3で[ファイルのプロパティ]の[タグ(Keywords)]の取得と追加

C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで[ファイルのプロパティ|詳細]で表示される[タグ]にアクセスする手順です。

[FileProperties]名前空間

映像や音声などのメディアファイルや、ドキュメントファイルの[プロパティ|詳細]画面で表示される[タグ]には[FileProperties]名前空間の[VideoProperties]クラスや[DocumentProperties]クラスからアクセスできます。

他の形式ファイルにも用意されたクラスがありますが、[タグ]項目が無い場合もあるので調べておく必要があります。

[Tag]ではなく[Keywords]

Windowsの英語版では、どんな表示になっているのかまで調べていませんが、日本語版の[ファイルのプロパティ|詳細]に表示される[タグ]部分は、[VideoProperties]クラスや[DocumentProperties]クラスでは[Keywords]という名前になっています。

まあ、エクスプローラーなどから検索する際の[キーワード]という扱いだと考えられます。(おそらく日本語化した際に、意訳された感があります)

VideoProperties]クラスを使って、動画ファイルの[タグ]プロパティにアクセスする場合は、次のような感じになります。

private async void GetFileTagProperty(string path)
{
  List<string> keywords = new List<string>();
  Windows.Storage.StorageFile file = await Windows.Storage.StorageFile.GetFileFromPathAsync(path);
  if (file != null)
  {
    VideoProperties videoProperties = await file.Properties.GetVideoPropertiesAsync();
    foreach (string keyword in videoProperties.Keywords)
    {
      keywords.Add(keyword);
    }
  }
}

[タイトル]や[サブタイトル]と違って配列として取得されます。

反対に[タグ]プロパティにキーワードを新しく追加する場合は、こんな感じです。

private async void SetFileProperty(string path, List<string> keywords)
{
  Windows.Storage.StorageFile file = await Windows.Storage.StorageFile.GetFileFromPathAsync(path);
  if (file != null)
  {
    VideoProperties videoProperties = await file.Properties.GetVideoPropertiesAsync();
    videoProperties.Keywords.Clear();
    foreach (string keyword in keywords)
    {
      videoProperties.Keywords.Add(keyword);
    }
    await videoProperties.SavePropertiesAsync();
  }
}

まとめ

今回は、WinUI3プロジェクトで[ファイルのプロパティ|詳細]で表示される[タグ]にアクセスする手順について紹介しました。

C#で扱える[FileProperties]名前空間に、映像ファイル向けの[VideoProperties]クラス、ドキュメントファイル向けの[DocumentProperties]クラスが用意されています。

[ファイルのプロパティ]に表示される[タグ]項目はすべての形式ファイルで表示される訳ではないので注意が必要ですが、用意されたクラスが利用できれば取得や設定が可能です。

WinUI 3で音声や映像形式ファイルの[ファイルのプロパティ]画面の[タグ]設定にアクセスしたい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です