以下のスクリプトをPython2.xでコンパイルしました。このスクリプトは、ディレクトリを再帰的に検索し、見つかったJPEGごとに、メタデータを解析して辞書に配置します。現在、出力は単にコンソールに出力されます:-
import os
import fnmatch
import pyexiv2
matches = []
dict1 = {}
# The aim of this script is to recursively search across a directory for all
# JPEG files. Each time a JPEG image is detected, the script used the PYEXIV2
# module to extract all EXIF, IPTC and XMP data from the image. Once extracted
# the key (ie. "camera make" is generated and it's respective value
# (ie. Canon) is then added as the value in a dictionary.
for root, dirnames, filenames in os.walk('C:\Users\XXX\Desktop'):
for filename in fnmatch.filter(filenames, '*.jpg'):
matches.append(os.path.join(root, filename))
for entry in matches:
metadata = pyexiv2.ImageMetadata(entry)
metadata.read()
keys = metadata.exif_keys + metadata.iptc_keys + metadata.xmp_keys
for key in keys:
dict1[key] = metadata[key].raw_value
print entry
print str(dict1)
私が探しているのは、結果をMySQLDBに出力することです。さて、私の問題は、メタデータヘッダーの無期限のリストがなく、実際に1つを見つけるのに苦労していることです。そのため、テーブルの行ヘッダーについて、辞書キーの各値(つまり、日付)を比較しようとしています。取得、作成、モデル化など)、テーブルに存在しない場合は、ヘッダーとしてテーブルに追加し、EXIFデータ(キー値)をそれぞれの列に入力します。私は以前にPythonを介してMySQLを試してみましたが、行ヘッダーを比較したり、変数から新しいヘッダーを動的に作成したりすることはありませんでした。
誰かが私を正しい方向に向けることができますか?