写真編集者が私の写真の多くのタグを台無しにしてしまいました。私はこれを、Python に慣れ、タグをきれいにするためのスクリプトを書くための最後の一押しと考えました。pyexiv2 が非常に便利であることがわかり、基本的にチュートリアル ( http://tilloy.net/dev/pyexiv2/tutorial.html ) に従おうとしました。
私がやろうとしていること:
- XMP ファイルから元のデータを解析します (注意: メタデータを写真ファイルに直接書き込む代わりに、サイドカー ファイルを使用します)。
- Xmp.dc.subject から元のタグを読み取ります (デバッグのために stdout に出力します)。
- タグを新しい値に変更します (デバッグ用に新しい値を出力します)。
- 新しいデータを XMP ファイルに書き戻します
エディターで XMP ファイルをチェックするまでは、かなりうまくいっているように見えます。変更された値は表示されません。ただし、XMP ファイルは新しいタイムスタンプを取得し、XMP ファイルを読み取り専用にすると、エラー メッセージが表示されます。そのため、何かがファイルに書き込まれるようです。正しいデータではありません。
私の問題を示す最小限のスクリプトを次に示します。
import pyexiv2
key= 'Xmp.dc.subject'
metadata = pyexiv2.ImageMetadata('test.xmp')
metadata.read()
print metadata[key]
metadata[key] = ['NewTag']
print metadata[key]
metadata.write()
その出力は次のとおりです。
<Xmp.dc.subject [bag Text] = ['OldTag']>
<Xmp.dc.subject [bag Text] = ['NewTag']>
Script terminated.
ただし、XMP ファイルの関連セクションは次のようになります。
<dc:subject>
<rdf:Bag>
<rdf:li>OldTag</rdf:li>
</rdf:Bag>
</dc:subject>
では、変更されたメタデータを XMP ファイルに書き込むにはどうすればよいでしょうか?
私は Python の完全な初心者 (ただし、プログラミングの初心者) であるため、この問題は、私が認識していない些細なことが原因である可能性があることに注意してください。Debian Linux で Python 2.7.6 を実行しています。