function "dtutils.string.substitute()" fails when no time data is provided in Exif data
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 78/100
Piste de recherche
Commencez dans lua/lib/dtutils/string.lua par lire build_substitute_list et exiftime2systime, puis exécutez le script de substitution signalé avec une image ne contenant aucune donnée temporelle EXIF. C’est terminé lorsque l’horodatage par défaut est accepté sans erreur os.time sur le système concerné.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
When running a script using "dtutils.string.substitute()" function on a file without any time data in Exif, the "dtutils.string.substitute()" function fails.
190.9832 LUA ERROR : ...\AppData\Local\darktable/lua/lib/dtutils\string.lua:748: time result cannot be represented in this installation
stack traceback:
[C]: in ?
[C]: in function 'os.time'
...AppData\Local\darktable/lua/lib/dtutils\string.lua:748: in upvalue 'exiftime2systime'
...AppData\Local\darktable/lua/lib/dtutils\string.lua:843: in function 'lib/dtutils.string.build_substitute_list'
...AppData\Local\darktable/lua/lib/dtutils\string.lua:1298: in function 'lib/dtutils.string.substitute'
After looking at the "string.lua" code, it seems that "build_substitute_list" function tries to use "0000:00:00 00:00:00" as default value if the exif time is not available, but the "os.time{}" conversion called later through "exiftime2systime(datetime_taken)" does not like it. The minimum time value accepted on several systems is January 1st, 1970. I updated the "string.lua" code on my installation (replacing "0000:00:00 00:00:00" with "1970:01:01 00:00:00") and this fixes the issue.
Code from string.lua :
local function exiftime2systime(exiftime)
local yr,mo,dy,h,m,s = string.match(exiftime, "(%d-):(%d-):(%d-) (%d-):(%d-):(%d+)")
return(os.time{year=yr, month=mo, day=dy, hour=h, min=m, sec=s})
end
[...]
function dtutils_string.build_substitute_list(image, sequence, variable_string, username, pic_folder, home, desktop)
[...]
if image.exif_datetime_taken and image.exif_datetime_taken ~= "" then
datetime_taken = image.exif_datetime_taken
else
if use_millisecs then
datetime_taken = "0000:00:00 00:00:00.0"
else
datetime_taken = "0000:00:00 00:00:00"
end
end
[...]
I see this issue on Windows 11, DarkTable 5.4.0. Other systems could behave the same, or not.
- Langage dominant
- Lua
- Étoiles
- 219
- Forks
- 142
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de darktable-org/lua-scripts
-
dtutils.string: build_substitute_list errors when a metadata field (e.g. rights) has been removed Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
darktable-org/lua-scripts#716 · 2 commentaires ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 63/100
darktable-org/lua-scripts#706 ·
-
bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 65/100
darktable-org/lua-scripts#618 · 3 commentaires ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 52/100
darktable-org/lua-scripts#710 · 3 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
darktable-org/lua-scripts#708 · 1 commentaire ·
Toutes les issues de darktable-org/lua-scripts
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
api7/lua-resty-saml#62 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
nvim-tree/nvim-tree.lua#3357 · 1 commentaire ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 94/100
codymikol/multiverse.nvim#320 ·
-
Brewfest are no longer available OuverteData Correction tbc
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100