我有一個圖像列表,我運行mini_exiftool
從圖像中提取各種屬性(EXIF & IPTC)。我已經成功創建了一個LiquidTag。它接受路徑和我想要的EXIF屬性,並返回(我認爲是)字符串。Jekyll - 訪問液體的插件對象
但是,mini_exiftool
是慢。目前我每個圖像多次插入標籤。我想每個圖像運行一次,並將所有數據(數組?對象?)存儲在一個變量中。小小的免責聲明 - 除了我學會了解這個問題之外,我幾乎不知道任何Ruby。
這是我如何使用插件:
{% exif path, title %}
{% exif path, lens %}
這是插件,猜測和代碼的大雜燴網上找到:
require 'mini_exiftool'
module Jekyll
class Exif < Liquid::Tag
def initialize(tag_name, params, token)
super
args = params.split(",").map(&:strip)
@filename = args[0]
@property = args[1]
end
def lookup(context, name)
lookup = context
name.split(".").each { |value| lookup = lookup[value] }
lookup
end
def render(context)
path = lookup(context, @filename)
exif = MiniExiftool.new(path)
return exif[@property]
end
end
end
Liquid::Template.register_tag('exif', Jekyll::Exif)
感謝您的回覆!我會閱讀發電機,我認爲這可能會解決我的問題。我更新了我的問題,這個問題有點不清楚,你在大多數賬戶上都猜到了。 ;-) – Henrik
很高興聽到Henrik。如果您對Jekyll有更深的興趣,我現在做一些無恥的自我推廣,並將這個鏈接提供給我正在編寫的書籍項目(當我有時間時:-)):https://www.jekyll.io – Christian
由於我已經使用shell腳本來處理文件,因此我可以在exiftool中添加一個額外的調用並將其輸出到JSON數據文件。如果我在jekyll運行時需要數據,我會用一個發生器去掉。現在我擁有了所有的數據和零開銷。乾杯! – Henrik