2012-12-08 56 views
3

我有一個擁有JPEG文件集合的用戶,位於Windows 7 NTFS文件系統上。使用Ruby從Windows文件中提取選定的元數據

用戶使用Windows 7「詳細信息」對話框註釋了這些圖像。對於每個文件,他們都添加了標題,評論(可能與標題不同)和標籤字段。

看來標題作爲EXIF數據的一部分存儲在每個JPEG文件中。

但是,評論和標籤字段不是。

我在替代數據流中尋找它們;沒有禮物。我看不到它們是否屬於NTFS擴展屬性,因爲我找不到一個專門列出這些屬性的工具。

我的問題是:這個元數據存儲在哪裏,以及如何從Ruby內部訪問它?

回答

1

埃裏克的答案接近(謝謝埃裏克)。

答案是Windows uses XMP embedded in the file來存儲這些信息。其他部分存儲在EXIF中。

XMP是Adobe最初開發的一種RDF格式。

但是,在Ruby中提取和操作XMP的支持很差 - 在github上有一些庫,但沒有很好的集成。

  • xmpleton不顯示所有元數據;
  • xmp在Microsoft的元數據上崩潰;
  • fasttrack未整合到rubygem.org基礎架構中。

三個字段,我感興趣的是:

  • 「註釋」 被存儲在EXIF場 「XPComment」。
  • 「標題」存儲在EXIF下的字段「XPTitle」和XMP下的DC名稱空間下的「描述」字段
  • 「標籤」存儲在EXIF下的字段「XPKeyword」和XMP中DC名稱空間作爲「主題」字段的列表。

我使用的方法是mini_exiftool,它包裝了基於Perl的EXIFTool程序。

2

從Vista開始,似乎存在一個屬性系統(12),其中的屬性存儲在文件本身中以便攜帶,與存儲在替代數據流中的數據形成對比。請參閱Alex Martelli在this question的答案,這與Python類似。如果我已經理解了這個答案,那麼您將希望找到一種方法來掛鉤到Windows Search API並查詢System.KeywordsSystem.Comment屬性。

PowerShell可能是在這種情況下去的路;例如,在「Windows桌面搜索cmdlet」部分at this link中有一個示例。但是,您可能能夠與來自Ruby的COM對象或WMI交談。

相關問題