Hi,
I have 30000 different pictures in many folders. Some of this pictures have no exif data, but they have at least an created file date or last changes file data, so i am lookong for a function that first looks for the oldes date (exif date, file creation date, last change file date) and then this function should set all these dates to this oldest date:
- the exif date
- the created file date
- the last changes file date
(speziel treatment to files with dates like 1.1.1970)
is this possible ??
---------------------
german:
1. zunächst soll das älteste vorhanden Datum ermittelt werden aus den Dateiangaben (Created / geändert / erstellt) sowie eventuell vorhandenen Exif Datums.
2. Dieses ermittelte älteste Datum ist meist dann das wirkliche Fotograftierdatum. Zumindest kommt dieses datum den Fotografierdatum immer am nähesten. Darum soll diese Funktion nun alle Datei Angaben (zumindest aber das File created Datum) auf dieses älteste gefundene Datum setzen:
- Windows Created Datum
- Windows geändert-Datumsangabe
- Exif Datum
(Sonderfälle ergeben sich natürlich, wenn alte Dateidaten wie 1.1.1970 drinstehen, die nicht stimmen können)
lg von Andreas
Yes, this is possible. The best solution would be to create a Composite user-defined tag based on all of the date/time tags you are interested in. This may include any complex logic that you want. I don't have time right now to help any more other than pointing you to the sample config file (https://exiftool.org/config.html) (take a look at the Composite tags there).
- Phil
I had a look at this and I think below config file content will do what you want:
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
# Select oldest date from a number of date tags
OldestDateTime => {
Desire => {
0 => 'FileModifyDate',
1 => 'MDItemFSContentChangeDate',
2 => 'FileCreateDate',
3 => 'MDItemFSCreationDate',
4 => 'ModifyDate',
5 => 'CreateDate',
6 => 'DateTimeCreated',
7 => 'DateTimeOriginal',
},
ValueConv => q{
my $oldest = undef;
for my $date (@val) {
$date =~ s/[+-]\d{2}:\d{2}$//; # Strip TimeZone
if ($date && (!$oldest || $date lt $oldest)) {
$oldest = $date;
}
}
return $oldest;
},
},
},
);
1;
If you save this (include the 1; at the end!) to file (e.g. oldest_datetime_config) and tell exiftool to use that config file you can now request the oldest date from the 8 fields listed (extend this list if necessary, but I think I covered the usual suspects and even made sure it can be used on both Mac and Windows).
For example:
exiftool -config oldest_datetime_config -filename -OldestDateTime FILEorDIR
If you want to use that oldest date to set e.g., the DateTimeOriginal of the file, you can use something like this:
exiftool -config oldest_datetime_config -filename "-DateTimeOrignal<OldestDateTime" FILEorDIR
If you have any questions, let us know.
P.S. I don't think any special treatment of dates before 1970 is required.
Thanks Hayo,
I think that ignoring 1970 dates is what Andreas wanted:
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
# Select oldest date from a number of date tags
OldestDateTime => {
Desire => {
0 => 'FileModifyDate',
1 => 'MDItemFSContentChangeDate',
2 => 'FileCreateDate',
3 => 'MDItemFSCreationDate',
4 => 'ModifyDate',
5 => 'CreateDate',
6 => 'DateTimeCreated',
7 => 'DateTimeOriginal',
},
ValueConv => q{
my $oldest = undef;
for my $date (@val) {
next if not defined $date or $date lt '1970:01:02';
$date =~ s/[+-]\d{2}:\d{2}$//; # Strip TimeZone
if ($date && (!$oldest || $date lt $oldest)) {
$oldest = $date;
}
}
return $oldest;
},
},
},
);
1;
I have problems myself with file system date/times getting reset occasionally to Jan 1, 1970 too. With time zone offsets they sometimes show up as 1969, so I ignore everything before Jan 2, 1970.
- Phil
Edit: Add this line to the tag definition for using OldestDateTime with the -d option:
PrintConv => '$self->ConvertDateTime($val)',
Quote from: Phil Harvey on January 13, 2017, 07:16:46 AM
I have problems myself with file system date/times getting reset occasionally to Jan 1, 1970 too. With time zone offsets they sometimes show up as 1969, so I ignore everything before Jan 2, 1970.
Is that on a Mac or windows? I've never seen (nor even heard of) this issue myself. IMO It would be
very bad if the file system did this to you...
It has happened for me on a Mac when using "touch" to set the date/time for a file on a FAT32-formatted thumb drive. The date/time information on these is questionable to begin with (it stores local time, not UTC, so it changes with time zone and daylight savings time). The problem has never occurred for me when using a real file system.
I run into this problem occasionally because I have a script that backs up and restores files to/from a thumb drive.
- Phil
Quote from: Phil Harvey on January 14, 2017, 10:31:09 AM
It has happened for me on a Mac when using "touch" to set the date/time for a file on a FAT32-formatted thumb drive. The date/time information on these is questionable to begin with (it stores local time, not UTC, so it changes with time zone and daylight savings time). The problem has never occurred for me when using a real file system.
I run into this problem occasionally because I have a script that backs up and restores files to/from a thumb drive.
Ah, you were talking FAT32 file systems here, that explains ;)
Hi guys,
I've finally had some time to hammer some code for my specific needs: avoid dates into the future and too old dates to be considered.
What is the exiftool mechanism to print color for warnings and errors? And is this a good perl-exiftool way to determine current date?
# TODO: test if this works
#use warnings;
#use strict;
#use Win32::Console;
use TermANSIColor::lib::Term::ANSIColor;
# TODO : test if this works
use POSIX qw(strftime);
my $force_move_even_if_invalid_dates_found = false;
# source: https://exiftool.org/forum/index.php?topic=9686.0
# https://exiftool.org/forum/index.php?topic=7986.0
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
# Select oldest date from a number of date tags
oldest_date => {
Desire => {
0 => 'DateTimeOriginal', # para fotos: "Date Taken"
1 => 'CreateDate', # para videos: "Media Created" or "Date Acquired"
2 => 'filename', # nome do ficheiro: ex: VID-20191220-WA0011.mp4 TODO: test this!
3 => 'zipmodifydate', # para fotos HEIC : é mais antigo que date
4 => 'FileModifyDate', # data de criação original do ficheiro "Date" (do video/imagem)
5 => 'FileCreateDate', # "Date created" que é a data criada na cópia (do [File:System])
6 => 'ModifyDate', # ?data de modificação "Date modified" (do [File:System]) ?
7 => 'DateTimeCreated',
8 => 'MDItemFSContentChangeDate',
9 => 'MDItemFSCreationDate',
},
ValueConv => q{
my $oldest = undef;
my $oldest_with_bad = undef;
my $min_date_threshold = '2005:01:01';
my $now = strftime "%Y/%m/%d", localtime;
#my $nu = -1;
for my $date (@val) {
$date =~ s/[+-]\d{2}:\d{2}$//; # Strip TimeZone
#$nu++;
#print "Data: $date\n"; #DEBUG
if($date && (!$oldest_with_bad || $date lt $oldest_with_bad)) {
$oldest_with_bad = $date;
}
# Avoid Invalid dates like "1900:01:00 00:00:00" or "1725:04" or "0000:00:00 00:00:00".
# Actually, for our purpose, we can accept only after 2020 (plus back some time, due to old photos (google photos) being reshared):
if( not defined $date or $date lt $min_date_threshold ){
if( $force_move_even_if_invalid_dates_found ){
print colored( "WARNING: date ($date) is undefined or smaller than threshold ($min_date_threshold).", 'yellow' ), "\n";
next;
} else {
print colored( "ERROR: date ($date) is undefined or smaller than threshold ($min_date_threshold).", 'red' ), "\n";
exit;
}
}
# give error if date into the future + STOP execution and wait user to run with force parameter
if( $date gt $now ){
if( $force_move_even_if_invalid_dates_found ){
print colored( "WARNING: date $date is bigger than today ($now).", 'yellow' ), "\n";
next;
} else {
print colored( "ERROR: date $date is bigger than today ($now).", 'red' ), "\n";
exit;
}
}
#print "$Desire[$nu] : $date\n";
print "Data (valid): $date\n";
if ($date && (!$oldest || $date lt $oldest)) {
$oldest = $date;
}
}
if ($oldest_with_bad ne $oldest) {
# give warning showing current threshold that avoided date to be considered
print "WARNING: oldest valid date $oldest doens't match with older one found: $oldest_with_bad. ( Min Date threshold = $min_date_threshold )";
print colored( "WARNING: oldest valid date $oldest doens't match with older one found: $oldest_with_bad. ( Min Date threshold = $min_date_threshold )", 'yellow' ), "\n";
}
return $oldest;
},
PrintConv => '$self->ConvertDateTime($val)',
},
},
);
#------------------------------------------------------------------------------
1; #end
Quote from: pedroreis on October 17, 2021, 02:16:32 PM
What is the exiftool mechanism to print color for warnings and errors?
There isn't any. You'll have to look into adding ANSI escape codes to your print output. I found this page (https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797) which might help.
Any advice on the
"And is this a good perl-exiftool way to determine current date?"
part?
I'm not sure what you're asking. Do you want the current date or the oldest date?
You can set a time stamp to the current date/time with now
exiftool -DateTimeOriginal=now file.jpg
But if your config is working correctly, then go with it.
Quote from: Phil Harvey on January 13, 2017, 07:16:46 AM
Thanks Hayo,
I think that ignoring 1970 dates is what Andreas wanted:
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
# Select oldest date from a number of date tags
OldestDateTime => {
Desire => {
0 => 'FileModifyDate',
1 => 'MDItemFSContentChangeDate',
2 => 'FileCreateDate',
3 => 'MDItemFSCreationDate',
4 => 'ModifyDate',
5 => 'CreateDate',
6 => 'DateTimeCreated',
7 => 'DateTimeOriginal',
},
ValueConv => q{
my $oldest = undef;
for my $date (@val) {
next if not defined $date or $date lt '1970:01:02';
$date =~ s/[+-]\d{2}:\d{2}$//; # Strip TimeZone
if ($date && (!$oldest || $date lt $oldest)) {
$oldest = $date;
}
}
return $oldest;
},
},
},
);
1;
I have problems myself with file system date/times getting reset occasionally to Jan 1, 1970 too. With time zone offsets they sometimes show up as 1969, so I ignore everything before Jan 2, 1970.
- Phil
Edit: Add this line to the tag definition for using OldestDateTime with the -d option:
PrintConv => '$self->ConvertDateTime($val)',
Hi, I tried to use this function but I got error that DateTimeOrignal does not exist. how can I get updated DateTimeOrignal with the oldest found date time in all metadata even if this one it's not present ? and what about the -d parameter you suggested ? Thank You
What was the command you used?
It should be something like this:
exiftool -config oldest_datetime_config "-DateTimeOrignal<OldestDateTime" DIR
I don't see how this could give the error you mentioned.
- Phil
exiftool -config /path/to/script/oldest_datetime_config "-DateTimeOrignal<OldestDateTime" "/path/to/photo/IMG.jpg"
And i got this : Warning: Tag 'datetimeorignal' is not defined
So I tried to change the tag destination with one already present in this file just for test : FileAccessDate
And got this error : Warning: Sorry, fileaccessdate is not writable
Available tag in this photo :
exiftool -time:all -s /path/to/photo/IMG.jpg
FileModifyDate : 2021:06:20 12:55:08+02:00
FileAccessDate : 2022:02:04 18:08:42+01:00
FileInodeChangeDate : 2022:02:04 11:58:44+01:00
What I'm trying to do is batch replace 80.000+ photos to recover real date because of MacOS not recognizing the real date when import photos to Apple Photos App.
( I don't had this problem when all photos were in Google Photos, Google choosed each time the correct (oldest) date in all tags available I suppose )
What I understand is that the DateTimeOrignal tag does not exist in this photo.
So what is the best way to update all photos with the correct (oldest) date even if the destination tag does not exists ?
Thank You for your help.
DateTimeOriginal, not DateTimeOrignal
I'm sorry. You're right. Thank You. Stupid mistake.
So I tried the command and now the tag was created well, but it seems lost the UTC value :
Command :
exiftool -time:all -s /path/to/photo/IMG.jpg
got :
FileModifyDate : 2021:06:20 12:55:08+02:00
FileAccessDate : 2022:02:04 18:31:05+01:00
FileInodeChangeDate : 2022:02:04 11:58:44+01:00
Run oldest_datetime_config :
Command :
exiftool -config /path/to/oldest_datetime_config "-DateTimeOriginal<OldestDateTime" "/path/to/photo/IMG.jpg"
got :
1 image files updated
Command :
exiftool -time:all -s /path/to/photo/IMG.jpg
got :
FileModifyDate : 2022:02:04 18:33:59+01:00
FileAccessDate : 2022:02:04 18:34:00+01:00
FileInodeChangeDate : 2022:02:04 18:33:59+01:00
DateTimeOriginal : 2021:06:20 12:55:08
The "+02:00" disappeared
How can I solve this ?
Thanks
You can't. The DateTimeOriginal cannot contain a time zone.
You can write to SubSecDateTimeOriginal and that will save the date/time in DateTimeOriginal and the time zone in OffsetTimeOriginal, which is the EXIF tag that holds time zones. You can also write to XMP:DateCreated, which is the XMP equivalent of the EXIF:DateTimeOriginal and can hold a time zone. Best solution would be to write both
exiftool -config /path/to/oldest_datetime_config "-SubSecDateTimeOriginal<OldestDateTime" "-XMP:DateCreated<OldestDateTime" "/path/to/photo/IMG.jpg"
Ah ok. Thank You. So I will use this command you suggested.
One more thing : In this thread Phil told to use the -d parameter and add a line :
Add this line to the tag definition for using OldestDateTime with the -d option:
Code: [Select]
PrintConv => '$self->ConvertDateTime($val)',
Where goes this line in the script and how add the -d parameter to the command line you suggested me ?
Thank You.
I think I found the answer myself.
I just modified the function like this :
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
# Select oldest date from a number of date tags
OldestDateTime => {
Desire => {
0 => 'FileModifyDate',
1 => 'MDItemFSContentChangeDate',
2 => 'FileCreateDate',
3 => 'MDItemFSCreationDate',
4 => 'ModifyDate',
5 => 'CreateDate',
6 => 'DateTimeCreated',
7 => 'DateTimeOriginal',
},
ValueConv => q{
my $oldest = undef;
for my $date ($self->ConvertDateTime(@val)) {
next if not defined $date or $date lt '1970:01:02';
# $date =~ s/[+-]\d{2}:\d{2}$//; # Strip TimeZone
if ($date && (!$oldest || $date lt $oldest)) {
$oldest = $date;
}
}
return $oldest;
},
},
},
);
1;
And now when I execute the command :
exiftool -config /path/to/oldest_datetime_config "-SubSecDateTimeOriginal<OldestDateTime" "-XMP:DateCreated<OldestDateTime" "/path/to/photo/IMG.jpg"
I got :
FileModifyDate : 2022:02:04 19:55:55+01:00
FileAccessDate : 2022:02:04 19:55:57+01:00
FileInodeChangeDate : 2022:02:04 19:55:55+01:00
DateTimeOriginal : 2021:06:20 12:55:08
OffsetTimeOriginal : +02:00
DateCreated : 2021:06:20 12:55:08+02:00
SubSecDateTimeOriginal : 2021:06:20 12:55:08+02:00
So I think it's okay like this for me.
Maybe using the -d parameter is even better.
In the function, I just commented the regex to keep the timezone in the $date variable and get well formated datetime with $self->ConvertDateTime(@val) instead of just @val.
Thank You guys.
The PrintConv line should go in the config file after the closing brace of the ValueConv definition. But this is only useful if you want to format the dates using the -d option, which you aren't doing. So don't worry about this. What you have done with ConvertDateTime is wrong, and will break the config file so only FileModifyDate is used.
- Phil
Okay, So if I rollback the config file, how can I modify it to get what I tried to do : preserve time zone to get -SubSecDateTimeOriginal and -XMP:DateCreated updated without loosing time zone information ?
Thanks.
It should work fine with the original config file with the line to strip out the time zone removed. Your original command lost the time zone because you were writing DateTimeOriginal instead of SubSecDateTimeOriginal.
- Phil
Yep that's what I finally did, added PrintConv as mentioned and commented time zone strip.
And yes, with SubSecDateTimeOriginal it's okay.
Thank You.
Corrected config maybe it will help someone :
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
# Select oldest date from a number of date tags
OldestDateTime => {
Desire => {
0 => 'FileModifyDate',
1 => 'MDItemFSContentChangeDate',
2 => 'FileCreateDate',
3 => 'MDItemFSCreationDate',
4 => 'ModifyDate',
5 => 'CreateDate',
6 => 'DateTimeCreated',
7 => 'DateTimeOriginal',
},
ValueConv => q{
my $oldest = undef;
for my $date (@val) {
next if not defined $date or $date lt '1970:01:02';
#$date =~ s/[+-]\d{2}:\d{2}$//; # Strip TimeZone
if ($date && (!$oldest || $date lt $oldest)) {
$oldest = $date;
}
}
return $oldest;
},
PrintConv => '$self->ConvertDateTime($val)',
},
},
);
1;
Command to update files with the oldest date :
exiftool -config /path/to/oldest_datetime_config "-SubSecDateTimeOriginal<OldestDateTime" "-XMP:DateCreated<OldestDateTime" "/path/to/photo/IMG.jpg"
Quote from: StarGeek on November 09, 2021, 10:52:54 AM
I'm not sure what you're asking. Do you want the current date or the oldest date?
You can set a time stamp to the current date/time with now
exiftool -DateTimeOriginal=now file.jpg
But if your config is working correctly, then go with it.
Hi!
I'm trying to find the oldest date and also detect problems like date being in the future, as already happened in some files.
So I was trying to get today's date and compare .
It seems is possible to have
use POSIX qw(strftime);
$now = strftime "%Y:%m:%d", localtime;
print "Todays' date is $now\n";
outside the
%Image::ExifTool::UserDefined = (
block.
But:
1) breaks execution when inside it.
(get this warning, as well : exiftool.exe : Warning: No writable tags set from ./IMG_20220610_134025.jpg)
2) I also get an error when trying to use the $now variable created outside!
Is this impossible to do?
Hi.
I have many files without EXIF information, and with EXIF.
All the files are placed in subfolders. All the subfolders' names begin with a date, for example - "1902_01_15 Birthday uncle".
The script sets the "DateTimeOriginal" TAG, if the exif is absent or blank.
The value of the DateTimeOriginal field is taken from the subfolder's name, where the file is placed.
Files with set value of DateTimeOriginal will not changed!!!
Below text bat(cmd) file for windows.
**********************
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO OFF
REM Path for exiftool.exe
SET AppPath=d:\w\exiftool\exiftool.exe
for /f "tokens=*" %%G in ('DIR /B /AD') do CALL :OBR "%%G"
GOTO END
:OBR
SET fld=%1
SET datat=%fld:~1,4%:%fld:~6,2%:%fld:~9,2%
"%AppPath%" -m -quiet -if "$DateTimeOriginal eq ''" "-DateTimeOriginal=%datat% 00:00:00" %1
GOTO :EOF
:END
pause
This is my first batch file.
StarGeek Edit: Edited to correct formatting. Please use the (https://exiftool.org/forum/Themes/default/images/bbc/tele.gif) button for commands and (https://exiftool.org/forum/Themes/default/images/bbc/code.gif) button for sample exiftool output and code.
This batch file calls exiftool once for each file. This is Common Mistake #3 (https://exiftool.org/mistakes.html#M3). Exiftool's greatest performance hit is the startup time and calling exiftool once for each file will significantly increase the processing time.
A better option would be to pipe the output of dir directly into exiftool, so the entire loop could be replaced with this (I think, I haven't tested it)
DIR /B /AD | "%AppPath%" -m -quiet -if "$DateTimeOriginal eq ''" "-DateTimeOriginal=%datat% 00:00:00" -@ -
The -@ (Argfile) option (https://exiftool.org/exiftool_pod.html#ARGFILE) with - as the filename will read the file list directly from the pipe.
Hi, I added the commands based on the config provided by djcroustibat here: https://github.com/pratyushtewari/exif-scripts/blob/master/README.md
Hi there,
I had a ransomware issue on my NAS.
I was able to recover my files from multiple sources of external storage (absolutely not possible to pay).
With over 100k files to reorganize and new to exiftool, I make myself a basic bat script to reorganize this automatically with oldest date.
My first way of working was going to last several days (4 or 5), it launched exiftool with each file.
So I changed the way of processing the files and it's now really faster, I can't imagine having that much difference in processing time. On my last test it does 2000 files in 9 minutes 30 so something like 8/9h for my 100k! (definitely improvable because I'm not a real and good programmer)
I put you my last version for those who wish to have a base or decide to use it as it is.
What the script does:
1 - Checks if all paths are correct or if some problems occur
2 - Save all EXIF data in text files
3 - Analyze all txt files to determine the oldest date
4 - Move and rename my files to year/month/[date] (time) counter.extension
5 - Delete all empty folders at the end.
It is possible to define file extensions to process, EXIFs TAGs and some dates to ignore.
It also writes an xml file, I find it easier to do some manual checks later by opening this file in excel.
Quote from: RVis on September 09, 2022, 07:14:38 PMit launched exiftool with each file.
So I changed the way of processing the files and it's now really faster, I can't imagine having that much difference in processing time.
This is Common Mistake #3 (https://exiftool.org/mistakes.html#M3). The startup time for exiftool is significant, as it has to set up the internal data for all 25,000+ tags it can read among other things. Exiftool is still a Perl program and Perl is an interpreted language. Even the Windows executable is the Perl code and a basic Perl interpreter.
Quote from: Hayo Baan on January 13, 2017, 03:39:16 AMbelow config file content will do what you want
Thanks, that works fine. I added Keys:CreationDate for movie support to the oldest_datetime_config:
%Image::ExifTool::UserDefined = (
'Image::ExifTool::Composite' => {
# Select oldest date from a number of date tags
OldestDateTime => {
Desire => {
0 => 'FileModifyDate',
1 => 'MDItemFSContentChangeDate',
2 => 'FileCreateDate',
3 => 'MDItemFSCreationDate',
4 => 'ModifyDate',
5 => 'CreateDate',
6 => 'DateTimeCreated',
7 => 'DateTimeOriginal',
8 => 'CreationDate',
},
ValueConv => q{
my $oldest = undef;
for my $date (@val) {
$date =~ s/[+-]\d{2}:\d{2}$//; # Strip TimeZone
if ($date && (!$oldest || $date lt $oldest)) {
$oldest = $date;
}
}
return $oldest;
},
},
},
);
1;
So for example, check the oldest image or movie datetime (with '-api RequestAll=2' also FileCreateDate is factored in):
exiftool -config oldest_datetime_config -a -G1 -s -fileOrder5 FileName -api QuickTimeUTC=1 -api RequestAll=2 -FileName -OldestDateTime .
To set all image dates to that oldest date, use something like this (I prefer to set all relevant dates the same so spotting a wrong date is easier):
exiftool -config oldest_datetime_config -m -overwrite_original_in_place -wm w -api RequestAll=2 '-AllDates<OldestDateTime' '-DateCreated<OldestDateTime' '-TimeCreated<OldestDateTime' '-DigitalCreationDate<OldestDateTime' '-DigitalCreationTime<OldestDateTime' '-FileCreateDate<OldestDateTime' '-FileModifyDate<OldestDateTime' image.jpg
To set all movie dates to that oldest date, use something like this:
exiftool -config oldest_datetime_config -m -overwrite_original_in_place -wm w -api QuickTimeUTC=1 -api RequestAll=2 '-AllDates<OldestDateTime' '-Track*Date<OldestDateTime' '-Media*Date<OldestDateTime' '-Keys:CreationDate<OldestDateTime' '-FileCreateDate<OldestDateTime' '-FileModifyDate<OldestDateTime' movie.mp4
On macOS 13.4 that works down to year 1904 with QuickTime:CreateDate, and to 1677:09:21 with other tags. But I'd be careful with dates before 1970 anyway because some apps might be picky about earlier dates and non-Mac filesystems might have corrupted the file dates.
- Matti
I have now read the entire threat and would like to thank you very much for all the information :)
I also have a lot of files (mixed images [jpeg, jpg] and videos [avi, mp4]) and would like to use the oldest date for -AllDates
In this article the user-config is often mentioned and modified.
Therefore I would like to ask, which config is the most suitable for my needs now?
The last one by @wywh would be fine. If you're not on a Mac, it may have some additionally entries that would be ignored on Windows, but it would still work without problems.
Quote from: StarGeek on February 03, 2025, 10:40:10 AMThe last one by @wywh would be fine.
great - thank you so much.
All worked like a charme :D