Writable Tags Not Set - Install Issue?

Started by robertoleonardo, February 04, 2021, 03:14:46 PM

Previous topic - Next topic

robertoleonardo

Hi - I have had a config file set up which had worked fine writing custom tags for several years.  I just noticed it hasn't been running for that the last few months of photos (I have them process automatically with a batch file as I import from my phone - so i didn't notice right away).  It looks like the date the config file stopped working coincides with when I got my new computer so I suspect it's an install issue.  Now that I'm aware of the issue i've tried running the commands manually - attached is a screen shot of what I'm getting.

I've deleted the self executing version of exiftool (including the PAR temp folder) and reinstalled, and as you see in the screen shot - i've also tried with the OB installer version - still no dice.  Any ideas?

PS - I have intentionally put some syntax errors in my config file to make sure it's even loading.  When i do that, i do get notification of the error in the file in my command prompt - so the config file does seem to be found and is loading, but it just isn't writing the tags for some reason.  And i've also tried the full path to the config file instead of environment variable - same error.  Happy to post snippets of my config file if helpful - but it was working fine, and now it's not, and nothing in it changed in that file, so i'm not sure it would be helpful.  Unless something changed ~ October 2020 on exiftool's end which requires something different in the config file.

(and yes, in the example in the screen shot - the subject field is definitely set)

StarGeek

Did you make sure that the Subject tag actually contains data?  The problem here isn't that there is an error in the way "RJLKeywords" is defined, for that you would get a Tag 'RJLKeywords' is not defined error.  The No writable tags set from error means that there is no data in Subject to copy from.

Not related to your question, is your "RJLKeywords" a list type tag or a string?  The way you're copying Subject to it forces Subject into a string context, so the data that's copied won't be as a list.
* Did you read FAQ #3 and use the command listed there?
* Please use the Code button for exiftool code/output.
 
* Please include your OS, Exiftool version, and type of file you're processing (MP4, JPG, etc).

robertoleonardo

Thanks StarGeek - right, so, yes, subject field is filled.  That was just an admittedly arbitrary example but I'm getting the same thing for any of my custom tags.  As to types, I have them defined as below.  But as I said - it was working fine for a few years, and then suddenly it wasn't.  So irrespective of whether there is a more sensible way to define the tags and run the commands (which i'm always happy to hear - i'm just kind of stumbling my way through learning this stuff, so i'm sure my methods are inelegant), it seems like there's a broader issue.

%Image::ExifTool::UserDefined = (
    'Image::ExifTool::XMP::xmp' => {
        RJLOldDate => { Writable => 'lang-alt' },
        RJLImportDate => { Writable => 'lang-alt' },
        RJLImportFilename => { Writable => 'lang-alt' },
        RJLParentFolder => { Writable => 'lang-alt' },
        RJLPhotosMoment => { Writable => 'lang-alt' },
        RJLAlbum => { List => 'Bag' },
        RJLKeywords => { List => 'Bag' },
        RJLHashtags => { List => 'Bag' },
        RJLMediaType => { Writable => 'lang-alt' },
        RJLExtension => { Writable => 'lang-alt' },
        RJLOriginalFilename => { Writable => 'lang-alt' },
        RJLDateFromFolder => { Writable => 'lang-alt' },
        RJLCaption => { Writable => 'lang-alt' },
        RJLConverted => { Writable => 'lang-alt' },
        RJLLivePhotoIndex => { Writable => 'lang-alt' },
        RJLNewFilename => { Writable => 'lang-alt' },
        RJLOriginalVideoEncoding => { Writable => 'lang-alt' },
        RJLVideoEncoding => { Writable => 'lang-alt' },
        RJLConvertedNotes => { Writable => 'lang-alt' },
        RJLImportFolder => { Writable => 'lang-alt' },
        RJLContentIdentifier => { Writable => 'lang-alt' },
    },
);

StarGeek

I'm not sure what might be wrong.  I copy/pasted you config and it worked correctly here
C:\>exiftool -g1 -a -s -subject y:\!temp\Test4.jpg
---- XMP-dc ----
Subject                         : One, Two, Three

C:\>exiftool -config RJL.config -P -overwrite_original  "-RJLKeywords<subject" y:\!temp\Test4.jpg
    1 image files updated

C:\>exiftool -g1 -a -s -subject -RJLKeywords y:\!temp\Test4.jpg
---- XMP-dc ----
Subject                         : One, Two, Three
---- XMP-xmp ----
RJLKeywords                     : One, Two, Three


Config I used
%Image::ExifTool::UserDefined = (
    'Image::ExifTool::XMP::xmp' => {
        RJLOldDate => { Writable => 'lang-alt' },
        RJLImportDate => { Writable => 'lang-alt' },
        RJLImportFilename => { Writable => 'lang-alt' },
        RJLParentFolder => { Writable => 'lang-alt' },
        RJLPhotosMoment => { Writable => 'lang-alt' },
        RJLAlbum => { List => 'Bag' },
        RJLKeywords => { List => 'Bag' },
        RJLHashtags => { List => 'Bag' },
        RJLMediaType => { Writable => 'lang-alt' },
        RJLExtension => { Writable => 'lang-alt' },
        RJLOriginalFilename => { Writable => 'lang-alt' },
        RJLDateFromFolder => { Writable => 'lang-alt' },
        RJLCaption => { Writable => 'lang-alt' },
        RJLConverted => { Writable => 'lang-alt' },
        RJLLivePhotoIndex => { Writable => 'lang-alt' },
        RJLNewFilename => { Writable => 'lang-alt' },
        RJLOriginalVideoEncoding => { Writable => 'lang-alt' },
        RJLVideoEncoding => { Writable => 'lang-alt' },
        RJLConvertedNotes => { Writable => 'lang-alt' },
        RJLImportFolder => { Writable => 'lang-alt' },
        RJLContentIdentifier => { Writable => 'lang-alt' },
    },
);


The reason you don't want to use $Subject to copy from is Common Mistake 5b
    Also, values of list-type and shortcut tags are concatenated in the string rather than being copied individually

The only thing I can suggest is to start at the basic command, run on the command line, and add things in one by one.  Use the full path to the config file, not the ENV variable.  Make sure there isn't a duplicated Subject definition tag in your .ExifTool_config.  Make sure you're not mistaking Keywords for Subject.
* Did you read FAQ #3 and use the command listed there?
* Please use the Code button for exiftool code/output.
 
* Please include your OS, Exiftool version, and type of file you're processing (MP4, JPG, etc).

robertoleonardo

Thanks - also I figured out the config issue.  False alarm - it was in fact an error in the config file.  Back in the fall (even before i got a new computer), I'd added the below - apparently that screwed up my ability to write my custom xmp tags and I just didn't notice.   But I see and have fixed the issue - i shouldn't have repeated the %Image::Exiftool... line as reflected below (since it was already used above with respect to the RJL tags).  Now that I've put the below (minus the userdefined line and close paren) inside of the original userdefined block - it's working again.  Having two blocks of UserDefined tags was screwing it up. 

Thanks for your help StarGeek - sorry for false alarm - this was totally just user error.


%Image::ExifTool::UserDefined = (
    'Image::ExifTool::PDF::Info' => {
        Bates => { Writable => 'string' },
        DateName => { Writable => 'string' },
        Deponent  => { Writable => 'string' },
        DepEx => { Writable => 'string' },
        Marked => { Writable => 'string' },
        PreservedName => { Writable => 'string' },
        Tab => { Writable => 'string' },
        Description => { Writable => 'string' },
    },
);