{"id":15717914,"url":"https://github.com/rhettbull/exif2findertags","last_synced_at":"2026-03-01T07:31:27.620Z","repository":{"id":52484590,"uuid":"396807859","full_name":"RhetTbull/exif2findertags","owner":"RhetTbull","description":"Read EXIF metadata from image and video files and convert it to macOS Finder tags and/or Finder comments.","archived":false,"fork":false,"pushed_at":"2023-03-09T14:17:31.000Z","size":5370,"stargazers_count":22,"open_issues_count":10,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-10-25T06:25:17.618Z","etag":null,"topics":["exif","macos","metadata","photography","photos"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RhetTbull.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-16T13:30:04.000Z","updated_at":"2024-10-22T03:42:57.000Z","dependencies_parsed_at":"2024-10-24T14:31:07.519Z","dependency_job_id":"f74d6db3-a43d-43bd-9f86-4985b3097706","html_url":"https://github.com/RhetTbull/exif2findertags","commit_stats":{"total_commits":69,"total_committers":1,"mean_commits":69.0,"dds":0.0,"last_synced_commit":"97ff21483312482e2e9f5a3ab6edff2747f06587"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RhetTbull%2Fexif2findertags","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RhetTbull%2Fexif2findertags/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RhetTbull%2Fexif2findertags/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RhetTbull%2Fexif2findertags/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RhetTbull","download_url":"https://codeload.github.com/RhetTbull/exif2findertags/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252798833,"owners_count":21805882,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["exif","macos","metadata","photography","photos"],"created_at":"2024-10-03T21:51:36.899Z","updated_at":"2025-09-21T23:35:18.801Z","avatar_url":"https://github.com/RhetTbull.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# exif2findertags\nRead exif metadata from images with [exiftool](https://exiftool.org/) and write to MacOS Finder tags and/or Finder comments.  For example, you could use this with Final Cut Pro and its \"Keywords from Finder Tags\" import feature to allow Final Cut Pro to access EXIF metadata. This is similar to the commercial app evrX but in a free command line tool. exif2findertags makes your photo \u0026 video metadata easier to work with and makes it easier to find the right image with Spotlight.  Works on macOS only.\n\nBonus feature: exif2findertags can also use Apple's internal text detection capability to detect text in images and write the text to extended attributes or Finder comments to make it easily searchable using Spotlight.  See `{detected_text}` below in the discussion of the template system.\n\n# Installation\nI recommend you install `exif2findertags` with [pipx](https://github.com/pipxproject/pipx). If you use `pipx`, you will not need to create a virtual environment as `pipx` takes care of this. The easiest way to do this on a Mac is to use [homebrew](https://brew.sh/):\n\n- Open `Terminal` (search for `Terminal` in Spotlight or look in `Applications/Utilities`)\n- Install `homebrew` according to instructions at [https://brew.sh/](https://brew.sh/)\n- Type the following into Terminal: `brew install pipx`\n- Then type this: `pipx install git+https://github.com/RhetTbull/exif2findertags.git`\n- Now you should be able to run `exif2findertags` by typing: `exif2findertags`\n\nOnce you've installed `exif2findertags` with pipx, to upgrade to the latest version:\n\n    pipx upgrade exif2findertags\n\n`exif2findertags` uses [exiftool](https://exiftool.org) to extract metadata from photos and videos so you'll need to install exiftool.  `exif2findertags` will look in the path for exiftool.  Alternatively, you can specify the path to exiftool using the `--exiftool-path` option.  Because it uses exiftool, `exif2findertags` can read any metadata which exiftool is able to read.\n\n# Installation as a Finder service using Automator\n\nTo run exif2findertags as a macOS Finder service so you can right-click on a file and run exif2findertags, see instructions [here](https://github.com/RhetTbull/exif2findertags/issues/8).\n\n# Usage\n```\n$ exif2findertags --help\nUsage: exif2findertags [OPTIONS] [FILES]...\n\n  Create Finder tags and/or Finder comments from EXIF and other metadata in\n  media files.\n\nSpecify which metadata tags to export to Finder tags and/or comments:\n  [at least 1 required]\n  --tag TAG                Photo metadata tags to use as Finder tags; multiple\n                           tags may be specified by repeating --tag, for\n                           example: `--tag Keywords --tag ISO`. Finder tags\n                           will be in form 'TAG: VALUE', e.g. 'ISO: 80' or\n                           'IPTC:Keywords: Travel'. If the group name is\n                           specified it will be included in the Finder tag\n                           name, otherwise, just the tag name will be included.\n  --tag-value TAG          Photo metadata tags to use as Finder tags; use only\n                           tag value as keyword; multiple tags may be specified\n                           by repeating --tag-value, for example: `--tag-value\n                           Keywords --tag-value PersonInImage`.\n  --all-tags               Include all metadata found in file as Finder tags;\n                           see also, --group, --value.\n  --tag-group GROUP        Include all metadata from GROUP tag group, e.g. '--\n                           tag-group EXIF', '--tag-group XMP'; see also,\n                           --group, --value.\n  --tag-match PATTERN      Include all metadata tags whose tag name matches\n                           PATTERN, e.g. '--tag-match Exposure'; see also,\n                           --group, --value. PATTERN is case-sensitive, e.g. '\n                           --tag-match Exposure' matches EXIF:ExposureTime,\n                           EXIF:ExposureMode, etc. but '--tag-match exposure'\n                           would not; see also, --group, --value\n  --fc TAG                 Photo metadata tags to use as Finder comments;\n                           multiple tags may be specified by repeating --fc,\n                           for example: `--fc Keywords --fc ISO`. Tags will be\n                           appended to Finder comment. If the group name is\n                           specified it will be included in the Finder comment,\n                           otherwise, just the tag name will be included.\n  --fc-value TAG           Photo metadata tags to use as Finder comments; use\n                           only tag value as comment; multiple tags may be\n                           specified by repeating --fc-value, for example:\n                           `--fc-value Keywords --fc-value PersonInImage`. Tag\n                           values will be appended to Finder comment.\n  --tag-template TEMPLATE  Specify a custom template for Finder tag.  Multiple\n                           templates may be specified by repeating '--tag-\n                           template TEMPLATE'. For example, '--tag-template\n                           \"Camera: {Make|titlecase}{comma} {Model|titlecase}\"'\n                           would result in a tag of 'Camera: Nikon Corporation,\n                           Nikon D810' if 'EXIF:Make=NIKON CORPORATION' and\n                           'EXIF:Model=NIKON D810'. See Template System for\n                           additional details.\n  --fc-template TEMPLATE   Specify a custom template for Finder comments.\n                           Multiple templates may be specified by repeating '--\n                           fc-template TEMPLATE'. For example, '--fc-template\n                           \"Camera: {Make|titlecase}{comma} {Model|titlecase}\"'\n                           would result in a Finder comment of 'Camera: Nikon\n                           Corporation, Nikon D810' if 'EXIF:Make=NIKON\n                           CORPORATION' and 'EXIF:Model=NIKON D810'. See\n                           Template System for additional details.\n  --xattr-template ATTRIBUTE TEMPLATE\n                           Set extended attribute ATTRIBUTE to TEMPLATE value.\n                           Valid attributes are: 'authors', 'comment',\n                           'copyright', 'creator', 'description',\n                           'findercomment', 'headline', 'keywords',\n                           'participants', 'projects', 'rating', 'subject',\n                           'title', 'version'. For example, to set Spotlight\n                           comment (distinct from Finder comment) to the\n                           photo's title and description: '--xattr-template\n                           comment \"{Title}{newline}{ImageDescription}\" '--\n                           xattr-template' will overwrite any existing value\n                           for the specified attribute. See Extended Attributes\n                           below for additional details on this option.\n\nFormatting options:\n  --tag-format TEMPLATE    Template for specifying Finder tag format. '{GROUP}'\n                           will be replaced with group name of tag (as\n                           specified by exiftool), '{TAG}' will be replaced by\n                           tag name, and '{VALUE}' will be replaced by the tag\n                           value. Default tag template is '{GROUP}:{TAG}:\n                           {VALUE}' if tag group specified otherwise '{TAG}:\n                           {VALUE}'. See Template System for additional\n                           details.\n  --fc-format TEMPLATE     Template for specifying Finder comment format.\n                           '{GROUP}' will be replaced with group name of tag\n                           (as specified by exiftool), '{TAG}' will be replaced\n                           by tag name, and '{VALUE}' will be replaced by the\n                           tag value. Default Finder comment template is\n                           '{GROUP}:{TAG}: {VALUE}' if tag group specified\n                           otherwise '{TAG}: {VALUE}'. See Template System for\n                           additional details.\n\nOptions for use with --all-tags, --tag-group, --tag-match: [mutually exclusive]\n  -G, --group              Include tag group in Finder tag (for example,\n                           'EXIF:Make' instead of 'Make') when used with --all-\n                           tags, --tag-group, --tag-match.\n  --value                  Use only tag value (not tag name) as Finder tag when\n                           used with --all-tags, --tag-group, --tag-match.\n\nSettings:\n  -V, --verbose            Show verbose output.\n  --walk                   Recursively walk directories.\n  --exiftool-path PATH     Optional path to exiftool executable (will look in\n                           $PATH if not specified).\n  --dry-run                Dry run mode; do not actually modify any Finder\n                           metadata.\n  --overwrite-tags         Overwrite existing Finder tags (default is to append\n                           to existing).\n  --overwrite-fc           Overwrite existing Finder comments (default is to\n                           append to existing).\n\nOther options:\n  --version                Show the version and exit.\n  --help                   Show this message and exit.\n\nTag names used with --tag and --tag-value may be any tag that exiftool can\nread. For a complete list of tag values, see https://exiftool.org/TagNames/.\nTag names may be specified with or without the tag group name.  For example:\n`--tag Keywords` and `--tag IPTC:Keywords` are both valid. If specified, the\ngroup name will be output to the name of the Finder tag when used with --tag.\nFor example, `--tag IPTC:Keywords` will result in a Finder tag named\n`IPTC:Keywords: Travel` if `Travel` was one of the keywords and `--tag\nKeywords` would result in a Finder tag of `Keywords: Travel`. To use only the\ntag value as the keyword, use `--tag-value Keywords`, which would result in a\nFinder tag named `Travel`.\n\nWhen used with --tag, Finder tags will be created in format `TagName:\nTagValue`. For example, `--tag ISO` would produce something like `ISO: 100`.\n\nexiftool must be installed as it is used to read the metadata from media files.\nSee https://exiftool.org/ to download and install exiftool.\n\n\n** Extended Attributes **\n\nThe '-xattr-template' option writes additional metadata to extended attributes\nin the file.  These option will only work if the destination filesystem\nsupports extended attributes (most do).  Unlike EXIF metadata, extended\nattributes do not modify the actual file.\n\nNote: Most cloud storage services do not synch extended attributes. Dropbox\ndoes sync  them and any changes to a file's extended attributes will cause\nDropbox to re-sync the files.\n\nThe following attributes may be used with '--xattr-template':\n\n\nauthors        The author, or authors, of the contents of the file.  A list of\n               strings. (com.apple.metadata:kMDItemAuthors)\ncomment        A comment related to the file.  This differs from the Finder\n               comment, kMDItemFinderComment.  A string.\n               (com.apple.metadata:kMDItemComment)\ncopyright      The copyright owner of the file contents.  A string.\n               (com.apple.metadata:kMDItemCopyright)\ncreator        Application used to create the document content (for example\n               “Word”, “Pages”, and so on).  A string.\n               (com.apple.metadata:kMDItemCreator)\ndescription    A description of the content of the resource.  The description\n               may include an abstract, table of contents, reference to a\n               graphical representation of content or a free-text account of\n               the content.  A string. (com.apple.metadata:kMDItemDescription)\nfindercomment  Finder comments for this file.  A string.\n               (com.apple.metadata:kMDItemFinderComment)\nheadline       A publishable entry providing a synopsis of the contents of the\n               file.  A string. (com.apple.metadata:kMDItemHeadline)\nkeywords       Keywords associated with this file. For example, “Birthday”,\n               “Important”, etc. This differs from Finder tags\n               (_kMDItemUserTags) which are keywords/tags shown in the Finder\n               and searchable in Spotlight using \"tag:tag_name\".  A list of\n               strings. (com.apple.metadata:kMDItemKeywords)\nparticipants   The list of people who are visible in an image or movie or\n               written about in a document. A list of strings.\n               (com.apple.metadata:kMDItemParticipants)\nprojects       The list of projects that this file is part of. For example, if\n               you were working on a movie all of the files could be marked as\n               belonging to the project “My Movie”. A list of strings.\n               (com.apple.metadata:kMDItemProjects)\nrating         User rating of this item. For example, the stars rating of an\n               iTunes track. An integer. (com.apple.metadata:kMDItemStarRating)\nsubject        Subject of the this item. A string.\n               (com.apple.metadata:kMDItemSubject)\ntitle          The title of the file. For example, this could be the title of a\n               document, the name of a song, or the subject of an email\n               message. A string. (com.apple.metadata:kMDItemTitle)\nversion        The version number of this file. A string.\n               (com.apple.metadata:kMDItemVersion)\n\nFor additional information on extended attributes see: https://developer.apple.\ncom/documentation/coreservices/file_metadata/mditem/common_metadata_attribute_k\neys\n\n\n** Template System **\n\nexif2findertags contains a rich templating system which allows fine-grained    \ncontrol over the output format of metadata. The templating system converts one \nor template statements, written in exif2findertags metadata templating language, to one \nor more rendered values using metadata information from the photo being        \nprocessed.                                                                     \n\nIn its simplest form, a template statement has the form: \"{template_field}\",   \nfor example \"{Make}\" which would resolve to the camera make (EXIF:Make) of the \nphoto, for example \"Apple\" for a photo taken on an iPhone   .                  \n\nTemplate statements may contain one or more modifiers.  The full syntax is:    \n\n\"pretext{delim+template_field:subfield|filter[find,replace]                    \nconditional?bool_value,default}posttext\"                                       \n\nTemplate statements are white-space sensitive meaning that white space (spaces,\ntabs) changes the meaning of the template statement.                           \n\npretext and posttext are free form text.  For example, if a photo has Title    \n(e.g. XMP:Title) \"My Photo Title\". the template statement \"The title of the    \nphoto is {Title}\", resolves to \"The title of the photo is My Photo Title\".  The\npretext in this example is \"The title if the photo is \" and the template_field \nis {Title}.  Note: some punctuation such as commas cannot be used in the       \npretext or posttext.  For this reason, the template system provides special    \npunctuation templates like {comma} to insert punctuation where needed. For     \nexample: {Make}{comma}{Model} could resolve to Apple,iPhone SE.                \n\ndelim: optional delimiter string to use when expanding multi-valued template   \nvalues in-place                                                                \n\n+: If present before template name, expands the template in place.  If delim   \nnot provided, values are joined with no delimiter.                             \n\ne.g. if Photo keywords are [\"foo\",\"bar\"]:                                      \n\n • \"{keywords}\" renders to \"foo\", \"bar\"                                        \n • \"{,+keywords}\" renders to: \"foo,bar\"                                        \n • \"{; +keywords}\" renders to: \"foo; bar\"                                      \n • \"{+keywords}\" renders to \"foobar\"                                           \n\ntemplate_field: The template field to resolve.                                 \n\n:subfield: Templates may have sub-fields; reserved for future use.             \n\n|filter: You may optionally append one or more filter commands to the end of   \nthe template field using the vertical pipe ('|') symbol.  Filters may be       \ncombined, separated by '|' as in: {keyword|capitalize|parens}.                 \n\nValid filters are:                                                             \n\n • lower: Convert value to lower case, e.g. 'Value' =\u003e 'value'.                \n • upper: Convert value to upper case, e.g. 'Value' =\u003e 'VALUE'.                \n • strip: Strip whitespace from beginning/end of value, e.g. ' Value ' =\u003e      \n   'Value'.                                                                    \n • titlecase: Convert value to title case, e.g. 'my value' =\u003e 'My Value'.      \n • capitalize: Capitalize first word of value and convert other words to lower \n   case, e.g. 'MY VALUE' =\u003e 'My value'.                                        \n • braces: Enclose value in curly braces, e.g. 'value =\u003e '{value}'.            \n • parens: Enclose value in parentheses, e.g. 'value' =\u003e '(value')             \n • brackets: Enclose value in brackets, e.g. 'value' =\u003e '[value]'              \n • shell_quote: Quotes the value for safe usage in the shell, e.g. My file.jpeg\n   =\u003e 'My file.jpeg'; only adds quotes if needed.                              \n\ne.g. if Photo keywords are [\"FOO\",\"bar\"]:                                      \n\n • \"{keywords|lower}\" renders to \"foo\", \"bar\"                                  \n • \"{keywords|upper}\" renders to: \"FOO\", \"BAR\"                                 \n • \"{keywords|capitalize}\" renders to: \"Foo\", \"Bar\"                            \n • \"{keywords|lower|parens}\" renders to: \"(foo)\", \"(bar)\"                      \n\ne.g. if Photo description is \"my description\":                                 \n\n • \"{Description|titlecase}\" renders to: \"My Description\"                      \n\n[find,replace]: optional text replacement to perform on rendered template      \nvalue.  For example, to replace \"/\" in a a keyword, you could use the template \n\"{keywords[/,-]}\".  Multiple replacements can be made by appending \"|\" and     \nadding another find|replace pair.  e.g. to replace both \"/\" and \":\" in         \nkeywords: \"{keywords[/,-|:,-]}\".  find/replace pairs are not limited to single \ncharacters.  The \"|\" character cannot be used in a find/replace pair.          \n\nconditional: optional conditional expression that is evaluated as boolean      \n(True/False) for use with the ?bool_value modifier.  Conditional expressions   \ntake the form ' not operator value' where not is an optional modifier that     \nnegates the operator.  Note: the space before the conditional expression is    \nrequired if you use a conditional expression.  Valid comparison operators are: \n\n • contains: template field contains value, similar to python's in             \n • matches: template field contains exactly value, unlike contains: does not   \n   match partial matches                                                       \n • startswith: template field starts with value                                \n • endswith: template field ends with value                                    \n • \u003c=: template field is less than or equal to value                           \n • \u003e=: template field is greater than or equal to value                        \n • \u003c: template field is less than value                                        \n • \u003e: template field is greater than value                                     \n • ==: template field equals value                                             \n • !=: template field does not equal value                                     \n\nThe value part of the conditional expression is treated as a bare (unquoted)   \nword/phrase.  Multiple values may be separated by '|' (the pipe symbol).  value\nis itself a template statement so you can use one or more template fields in   \nvalue which will be resolved before the comparison occurs.                     \n\nFor example:                                                                   \n\n • {keywords matches Beach} resolves to True if 'Beach' is a keyword. It would \n   not match keyword 'BeachDay'.                                               \n • {keywords contains Beach} resolves to True if any keyword contains the word \n   'Beach' so it would match both 'Beach' and 'BeachDay'.                      \n • {ISO \u003c 100} resolves to True if the photo's ISO is \u003c 100.                   \n • {keywords|lower contains beach} uses the lower case filter to do            \n   case-insensitive matching to match any keyword that contains the word       \n   'beach'.                                                                    \n • {keywords|lower not contains beach} uses the not modifier to negate the     \n   comparison so this resolves to True if there is no keyword that matches     \n   'beach'.                                                                    \n\n?bool_value: Template fields may be evaluated as boolean (True/False) by       \nappending \"?\" after the field name or \"[find/replace]\".  If a field is True or \nhas any value, the value following the \"?\" will be used to render the template \ninstead of the actual field value.  If the template field evaluates to False or\nhas no value (e.g. photo has no title and field is \"{Title}\") then the default \nvalue following a \",\" will be used.                                            \n\ne.g. if photo has a title                                                      \n\n • \"{Title?I have a title,I do not have a title}\" renders to \"I have a title\"  \n\nand if it does not have a title:                                               \n\n • \"{Title?I have a title,I do not have a title}\" renders to \"I do not have a  \n   title\"                                                                      \n\n,default: optional default value to use if the template name has no value.     \nThis modifier is also used for the value if False for boolean-type fields (see \nabove) as well as to hold a sub-template for values like {created.strftime}.   \nIf no default value provided and the field is null, exif2findertags will skip  \nthat particular template.                                                      \n\ne.g., if photo has no title set,                                               \n\n • --tag-template \"{Title}\" would result in no Finder tag being set for this   \n   particular photo.                                                           \n • \"{title,I have no title}\" renders to \"I have no title\"                      \n\nTemplate fields such as created.strftime use the default value to pass the     \ntemplate to use for strftime.                                                  \n\ne.g., if photo date is 4 February 2020, 19:07:38,                              \n\n • \"{created.strftime,%Y-%m-%d-%H%M%S}\" renders to \"2020-02-04-190738\"         \n\nIf you want to include \"{\" or \"}\" in the output, use \"{openbrace}\" or          \n\"{closebrace}\" template substitution.                                          \n\ne.g. \"{created.year}/{openbrace}{Title}{closebrace}\" would result in           \n\"2020/{Photo Title}\".                                                          \n\nSome templates have additional modifiers that can be appended to the template  \nname. For example, the {filepath} template represents the path of the file     \nbeing processed. You can access various parts of the path using the following  \nmodifiers:                                                                     \n\n • {filepath.parent}: the parent directory                                     \n • {filepath.name}: the name of the file or final sub-directory                \n • {filepath.stem}: the name of the file without the extension                 \n • {filepath.suffix}: the suffix of the file including the leading '.'         \n\nFor example, ff the field {filepath} is '/Shared/Photos/IMG_1234.JPG':         \n\n • {filepath.parent} is '/Shared/Photos'                                       \n • {filepath.name} is 'IMG_1234.JPG'                                           \n • {filepath.stem} is 'IMG_1234'                                               \n • {filepath.suffix} is '.JPG'                                                 \n\n** Template Substitutions **\n\nSubstitution         Description\n{Group:Tag}          Any valid exiftool tag with optional group name, e.g.\n                     '{EXIF:Make}', '{Make}', '{IPTC:Keywords}', '{ISO}';\n                     invalid or missing tags will be ignored.\n{GROUP}              The tag group (as defined by exiftool) for the tag being\n                     processed, for example, 'EXIF'; for use with --tag-format.\n{TAG}                The name of the tag being processed, for example,\n                     'ImageDescription'; for use with --tag-format.\n{VALUE}              The value of the tag being processed, for example, 'My\n                     Image Description'; for use with --tag-format.\n{strip}              Use in form '{strip,TEMPLATE}'; strips whitespace from\n                     begining and end of rendered TEMPLATE value(s).\n{detected_text}      List of text strings found in the image after performing\n                     text detection. You may pass a confidence threshold value\n                     between 0.0 and 1.0 after a colon as in\n                     '{detected_text:0.5}'; The default confidence threshold is\n                     0.7. '{detected_text}' works only on macOS Catalina\n                     (10.15) or later.\n{filepath}           The full path to the file being processed.\n{created}            Photo's creation date if set in the EXIF data, otherwise\n                     null; ISO 8601 format\n{created.date}       Photo's creation date in ISO format, e.g. '2020-03-22'\n{created.year}       4-digit year of photo creation time\n{created.yy}         2-digit year of photo creation time\n{created.mm}         2-digit month of the photo creation time (zero padded)\n{created.month}      Month name in user's locale of the photo creation time\n{created.mon}        Month abbreviation in the user's locale of the photo\n                     creation time\n{created.dd}         2-digit day of the month (zero padded) of photo creation\n                     time\n{created.dow}        Day of week in user's locale of the photo creation time\n{created.doy}        3-digit day of year (e.g Julian day) of photo creation\n                     time, starting from 1 (zero padded)\n{created.hour}       2-digit hour of the photo creation time\n{created.min}        2-digit minute of the photo creation time\n{created.sec}        2-digit second of the photo creation time\n{created.strftime}   Apply strftime template to file creation date/time. Should\n                     be used in form {created.strftime,TEMPLATE} where TEMPLATE\n                     is a valid strftime template, e.g.\n                     {created.strftime,%Y-%U} would result in year-week number\n                     of year: '2020-23'. If used with no template will return\n                     null value. See https://strftime.org/ for help on strftime\n                     templates.\n{modified}           Photo's modification date if set in the EXIF data,\n                     otherwise null; ISO 8601 format\n{modified.date}      Photo's modification date in ISO format, e.g.\n                     '2020-03-22'; uses creation date if photo is not modified\n{modified.year}      4-digit year of photo modification time; uses creation\n                     date if photo is not modified\n{modified.yy}        2-digit year of photo modification time; uses creation\n                     date if photo is not modified\n{modified.mm}        2-digit month of the photo modification time (zero\n                     padded); uses creation date if photo is not modified\n{modified.month}     Month name in user's locale of the photo modification\n                     time; uses creation date if photo is not modified\n{modified.mon}       Month abbreviation in the user's locale of the photo\n                     modification time; uses creation date if photo is not\n                     modified\n{modified.dd}        2-digit day of the month (zero padded) of the photo\n                     modification time; uses creation date if photo is not\n                     modified\n{modified.dow}       Day of week in user's locale of the photo modification\n                     time; uses creation date if photo is not modified\n{modified.doy}       3-digit day of year (e.g Julian day) of photo modification\n                     time, starting from 1 (zero padded); uses creation date if\n                     photo is not modified\n{modified.hour}      2-digit hour of the photo modification time; uses creation\n                     date if photo is not modified\n{modified.min}       2-digit minute of the photo modification time; uses\n                     creation date if photo is not modified\n{modified.sec}       2-digit second of the photo modification time; uses\n                     creation date if photo is not modified\n{modified.strftime}  Apply strftime template to file modification date/time.\n                     Should be used in form {modified.strftime,TEMPLATE} where\n                     TEMPLATE is a valid strftime template, e.g.\n                     {modified.strftime,%Y-%U} would result in year-week number\n                     of year: '2020-23'. If used with no template will return\n                     null value. Uses creation date if photo is not modified.\n                     See https://strftime.org/ for help on strftime templates.\n{today.date}         Current date in iso format, e.g. '2020-03-22'\n{today.year}         4-digit year of current date\n{today.yy}           2-digit year of current date\n{today.mm}           2-digit month of the current date (zero padded)\n{today.month}        Month name in user's locale of the current date\n{today.mon}          Month abbreviation in the user's locale of the current\n                     date\n{today.dd}           2-digit day of the month (zero padded) of current date\n{today.dow}          Day of week in user's locale of the current date\n{today.doy}          3-digit day of year (e.g Julian day) of current date,\n                     starting from 1 (zero padded)\n{today.hour}         2-digit hour of the current date\n{today.min}          2-digit minute of the current date\n{today.sec}          2-digit second of the current date\n{today.strftime}     Apply strftime template to current date/time. Should be\n                     used in form {today.strftime,TEMPLATE} where TEMPLATE is a\n                     valid strftime template, e.g. {today.strftime,%Y-%U} would\n                     result in year-week number of year: '2020-23'. If used\n                     with no template will return null value. See\n                     https://strftime.org/ for help on strftime templates.\n{comma}              A comma: ','\n{semicolon}          A semicolon: ';'\n{questionmark}       A question mark: '?'\n{pipe}               A vertical pipe: '|'\n{openbrace}          An open brace: '{'\n{closebrace}         A close brace: '}'\n{openparens}         An open parentheses: '('\n{closeparens}        A close parentheses: ')'\n{openbracket}        An open bracket: '['\n{closebracket}       A close bracket: ']'\n{newline}            A newline: '\\n'\n{lf}                 A line feed: '\\n', alias for {newline}\n{cr}                 A carriage return: '\\r'\n{crlf}               a carriage return + line feed: '\\r\\n'\n```\n\nTag names must be valid names as specified in the exiftool [documentation](https://exiftool.org/TagNames/).  The group name may be omitted or included in same format as exfitool uses when run with `exiftool -G -j file.jpg`.\n\nFor example:\n\n- `--tag Keywords` or `-tag IPTC:Keywords`\n- `--tag-value PersonInImage` or `--tag-value XMP:PersonInImage`\n\n`--tag TAGNAME` will produce a Finder tag named: \"TAGNAME: Value\" in the same format as the tag name was specified (e.g. with or without group name).  For exmaple:\n\n- `Keywords: Travel` or `IPTC:Keywords: Travel`\n\n`--tag-value` will produce a Finder tag named with just the value of the specified tag without the tag name.  For example:\n\n- `Jane Smith` instead of `PersonInImage: Jane Smith`\n\n# Contributing\n\nFeedback and contributions of all kinds welcome!  Please open an [issue](https://github.com/RhetTbull/exif2findertags/issues) if you would like to suggest enhancements or bug fixes.\n\n# Related Projects\n\n- [osxphotos](https://github.com/RhetTbull/osxphotos) export photos and metadata from Apple Photos.  Includes ability to write data to Finder tags and comments like exif2findertags.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhettbull%2Fexif2findertags","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhettbull%2Fexif2findertags","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhettbull%2Fexif2findertags/lists"}