Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
961220f222 |
@@ -34,12 +34,17 @@
|
|||||||
Bill Ferguson <wpferguson@gmail.com>
|
Bill Ferguson <wpferguson@gmail.com>
|
||||||
|
|
||||||
CHANGES
|
CHANGES
|
||||||
|
|
||||||
|
20251202 - fixed pattern matching bugs affecting Canon EOS R? series
|
||||||
|
styles and styles being applied twice if images are reimported
|
||||||
|
|
||||||
|
Added more debugging statements to pattern matching functions
|
||||||
]]
|
]]
|
||||||
|
|
||||||
local dt = require "darktable"
|
local dt = require "darktable"
|
||||||
local du = require "lib/dtutils"
|
local du = require "lib/dtutils"
|
||||||
-- local df = require "lib/dtutils.file"
|
-- local df = require "lib/dtutils.file"
|
||||||
-- local ds = require "lib/dtutils.string"
|
local ds = require "lib/dtutils.string"
|
||||||
-- local dtsys = require "lib/dtutils.system"
|
-- local dtsys = require "lib/dtutils.system"
|
||||||
local log = require "lib/dtutils.log"
|
local log = require "lib/dtutils.log"
|
||||||
-- local debug = require "darktable.debug"
|
-- local debug = require "darktable.debug"
|
||||||
@@ -50,7 +55,7 @@ local log = require "lib/dtutils.log"
|
|||||||
-- - - - - - - - - - - - - - - - - - - - - - - -
|
-- - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
local MODULE <const> = "apply_camera_style"
|
local MODULE <const> = "apply_camera_style"
|
||||||
local DEFAULT_LOG_LEVEL <const> = log.info
|
local DEFAULT_LOG_LEVEL <const> = log.warn
|
||||||
local TMP_DIR <const> = dt.configuration.tmp_dir
|
local TMP_DIR <const> = dt.configuration.tmp_dir
|
||||||
local STYLE_PREFIX <const> = "_l10n_darktable|_l10n_camera styles|"
|
local STYLE_PREFIX <const> = "_l10n_darktable|_l10n_camera styles|"
|
||||||
local MAKER = 3
|
local MAKER = 3
|
||||||
@@ -154,24 +159,32 @@ local function process_pattern(pattern)
|
|||||||
|
|
||||||
local log_level = set_log_level(acs.log_level)
|
local log_level = set_log_level(acs.log_level)
|
||||||
|
|
||||||
|
log.msg(log.debug, "input pattern is " .. pattern)
|
||||||
|
|
||||||
pattern = string.lower(pattern)
|
pattern = string.lower(pattern)
|
||||||
|
log.msg(log.debug, "lower case pattern is " .. pattern)
|
||||||
-- strip off series
|
-- strip off series
|
||||||
pattern = string.gsub(pattern, " series$", "?")
|
pattern = string.gsub(pattern, " series$", "?")
|
||||||
|
log.msg(log.debug, "series stripped off pattern is " .. pattern)
|
||||||
-- match a character
|
-- match a character
|
||||||
if string.match(pattern, "?$") then
|
if string.match(pattern, "r%?%?$") then
|
||||||
-- handle EOS R case
|
-- handle EOS R case
|
||||||
pattern = string.gsub(pattern, "?", ".?")
|
pattern = string.gsub(pattern, "%?%?", ".?")
|
||||||
|
log.msg(log.debug, "matched EOS R pattern is " .. pattern)
|
||||||
else
|
else
|
||||||
pattern = string.gsub(pattern, "?", ".")
|
pattern = string.gsub(pattern, "?", ".")
|
||||||
|
log.msg(log.debug, "didn't match EOS R pattern is " .. pattern)
|
||||||
end
|
end
|
||||||
pattern = string.gsub(pattern, " ", " ?")
|
|
||||||
-- escape dashes
|
-- escape dashes
|
||||||
pattern = string.gsub(pattern, "%-", "%%-")
|
pattern = string.gsub(pattern, "%-", "%%-")
|
||||||
|
log.msg(log.debug, "escape dashes conditional pattern is " .. pattern)
|
||||||
-- make spaces optional
|
-- make spaces optional
|
||||||
pattern = string.gsub(pattern, " ", " ?")
|
pattern = string.gsub(pattern, " ", " ?")
|
||||||
-- until we end up with a set, I'll defer set processing, i.e. [...]
|
-- until we end up with a set, I'll defer set processing, i.e. [...]
|
||||||
|
--log.msg(log.debug, "make spaces conditional again? pattern is " .. pattern)
|
||||||
-- anchor the pattern to ensure we don't short match
|
-- anchor the pattern to ensure we don't short match
|
||||||
pattern = "^" .. pattern .. "$"
|
pattern = "^" .. pattern .. "$"
|
||||||
|
log.msg(log.debug, "anchored pattern is " .. pattern)
|
||||||
|
|
||||||
restore_log_level(log_level)
|
restore_log_level(log_level)
|
||||||
|
|
||||||
@@ -326,9 +339,11 @@ local function has_style_tag(image, tag_name)
|
|||||||
log.msg(log.debug, "looking for tag " .. tag_name)
|
log.msg(log.debug, "looking for tag " .. tag_name)
|
||||||
|
|
||||||
for _, tag in ipairs(image:get_tags()) do
|
for _, tag in ipairs(image:get_tags()) do
|
||||||
log.msg(log.debug, "checking against " .. tag.name)
|
log.msg(log.debug, "got attached tag " .. tag.name)
|
||||||
if tag.name == tag_name then
|
local cleaned_tag_name = string.gsub(tag_name, "_l10n_", "")
|
||||||
log.msg(log.debug, "matched tag " .. tag_name)
|
log.msg(log.debug, "checking against " .. cleaned_tag_name)
|
||||||
|
if ds.sanitize_lua(tag.name) == cleaned_tag_name then
|
||||||
|
log.msg(log.debug, "matched tag " .. cleaned_tag_name)
|
||||||
result = true
|
result = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -358,7 +373,7 @@ local function mangle_model(model)
|
|||||||
model = string.gsub(model, "eos 1200d", "eos rebel t5")
|
model = string.gsub(model, "eos 1200d", "eos rebel t5")
|
||||||
model = string.gsub(model, "eos 1300d", "eos rebel t6")
|
model = string.gsub(model, "eos 1300d", "eos rebel t6")
|
||||||
model = string.gsub(model, "eos 2000d", "eos rebel t7")
|
model = string.gsub(model, "eos 2000d", "eos rebel t7")
|
||||||
log.msg(log.debug, "mandle model returning " .. model)
|
log.msg(log.debug, "mangle model returning " .. model)
|
||||||
end
|
end
|
||||||
|
|
||||||
restore_log_level(log_level)
|
restore_log_level(log_level)
|
||||||
@@ -389,14 +404,15 @@ local function apply_style_to_images(images)
|
|||||||
if acs.styles[maker] then
|
if acs.styles[maker] then
|
||||||
local no_match = true
|
local no_match = true
|
||||||
for i, pattern in ipairs(acs.styles[maker].patterns) do
|
for i, pattern in ipairs(acs.styles[maker].patterns) do
|
||||||
|
log.msg(log.debug, "pattern is " .. pattern)
|
||||||
if string.match(model, pattern) or
|
if string.match(model, pattern) or
|
||||||
(i == #acs.styles[maker].patterns and string.match(pattern, "generic")) then
|
(i == #acs.styles[maker].patterns and string.match(pattern, "generic")) then
|
||||||
local tag_name = "darktable|style|" .. acs.styles[maker].styles[i].name
|
local tag_name = "darktable|style|" .. acs.styles[maker].styles[i].name
|
||||||
if not has_style_tag(image, tag_name) then
|
if not has_style_tag(image, tag_name) then
|
||||||
image:apply_style(acs.styles[maker].styles[i])
|
image:apply_style(acs.styles[maker].styles[i])
|
||||||
no_match = false
|
|
||||||
log.msg(log.info, "applied style " .. acs.styles[maker].styles[i].name .. " to " .. image.filename)
|
log.msg(log.info, "applied style " .. acs.styles[maker].styles[i].name .. " to " .. image.filename)
|
||||||
end
|
end
|
||||||
|
no_match = false
|
||||||
log.log_level(loglevel)
|
log.log_level(loglevel)
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user