The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

iptckeyword - List and manipulate the IPTC keyword metadata stored in an image file.

SYNOPSIS

 iptckeyword [--list] args
 iptckeyword --add | --set | --remove keyword[,keyword...] args
 iptckeyword --match (keywords and booleans) args
 iptckeyword --copy source_file args
 iptckeyword --synonyms [--synfile file] args
 iptckeyword --help | --man
 (args can be files or directories)

DESCRIPTION

iptckeyword uses the Image::IPTCInfo module to list and/or manipulate the keyword information that can be stored in the IPTC headers of an image file. iptckeyword can add, set or remove keywords, or match a list of keywords in the list of files/directories given on the command line. It can also expand a list of keyword synonyms and assign those synonyms to files.

OPTIONS

--help
        Print a brief help message and exits.
--man
        Prints the manual page and exits.
--r
        Allows directory recursion in the argument list. Without the -r flag,
        iptckeyword will ignore any directories in the arg list.
        Warning: this can be dangerous, especially adding, setting, or removing
        keywords. You have been warned.
        
--list
        Lists keywords. --list is assumed if no other options are given.
        It can also be combined with other options, and will list the keywords after
        any other operations (add, remove, etc) are performed.
--add
        Adds given keywords to keywords already in the file(s).
--set
        Sets keywords in file to exact list given on command line. Use --set '' to
        clear the keywords in the file(s).
        
--remove
        Removes given keywords from file. iptckeyword will not complain if the keyword
        doesn't exist.
--copy
        Copies keywords from file given as argument to --copy to any other file(s) 
        specified.
--match
        Matches keywords given against file(s) given. Uses Text::Query::ParseAdvanced
        to parse the matchwords. This allows matches like 'horse and rider and not saddle'
        or '(cougar or puma or mountain lion) and arizona'. Words separated by spaces are
        considered to be part of the same phrase. Will match whole words only--however, 
        one word from a multi-word phrase will match ('mount' wouldn't match the phrase
        'mountain lion', but 'mountain' would). If you wish to avoid this behavior, use
        underscores instead of spaces ('mountain_lion' instead of 'mountain lion').
--synonyms
        Reads keywords in file(s) given on the command line, and looks in a synonyms file
        for a list of synonym keywords to expand out. By default, the synonyms file is the
        file .iptc_synonyms in your home directory.
        The format of the synonyms file is:
        keyword: other, keywords, that, the, first_keyword, expands to
        A keyword can expand to another keyword that also has expansions. iptckeywords parses
        them recursively, but avoids getting caught in a loop. For example:
        patas: monkey, zoo
        monkey: primate
        primate: animal
        So a file with the keyword of 'patas' will end up with patas, zoo, monkey, primate, and animal.
        This is a powerful way of adding multiple keywords that iptckeyword (or other programs) can then
        use to search by.
--synfile
        Takes the argument of an alternative synonyms file when using the --synonyms switch.

AUTHOR

    Paul Archer (paul at paularcher dot org)

DEPENDENCIES

    Image::IPTCInfo, Getopt::Long, Pod::Usage, File::Finder, Text::Query

BUGS

    Probably.

    Text::Query::ParseAdvanced throws two warnings. You'll have to modify the subroutines that contain the offending lines by removing the prototyping info in order to get rid of the warnings.

LICENSE

    iptckeyword is released under the GNU Public License (GPL).

4 POD Errors

The following errors were encountered while parsing the POD:

Around line 392:

You forgot a '=back' before '=head1'

Around line 399:

You forgot a '=back' before '=head1'

Around line 408:

You forgot a '=back' before '=head1'

Around line 411:

=over without closing =back