Release 0.51.7, support for reading iPhone Photos.sqlite
This commit is contained in:
parent
3cb4be4254
commit
b5b7a28539
@ -1,5 +1,5 @@
|
||||
[bumpversion]
|
||||
current_version = 0.51.6
|
||||
current_version = 0.51.7
|
||||
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)
|
||||
serialize = {major}.{minor}.{patch}
|
||||
|
||||
|
||||
@ -1932,6 +1932,7 @@ cog.out(get_template_field_table())
|
||||
|{edited}|True if photo has been edited (has adjustments), otherwise False; use in format '{edited?VALUE_IF_TRUE,VALUE_IF_FALSE}'|
|
||||
|{edited_version}|True if template is being rendered for the edited version of a photo, otherwise False. |
|
||||
|{favorite}|Photo has been marked as favorite?; True/False value, use in format '{favorite?VALUE_IF_TRUE,VALUE_IF_FALSE}'|
|
||||
|{created}|Photo's creation date in ISO format, e.g. '2020-03-22'|
|
||||
|{created.date}|Photo's creation date in ISO format, e.g. '2020-03-22'|
|
||||
|{created.year}|4-digit year of photo creation time|
|
||||
|{created.yy}|2-digit year of photo creation time|
|
||||
@ -1945,6 +1946,7 @@ cog.out(get_template_field_table())
|
||||
|{created.min}|2-digit minute of the photo creation time|
|
||||
|{created.sec}|2-digit second of the photo creation time|
|
||||
|{created.strftime}|Apply strftime template to file creation date/time. Should be used in form {created.strftime,TEMPLATE} where TEMPLATE is a valid strftime template, e.g. {created.strftime,%Y-%U} would result in year-week number of year: '2020-23'. If used with no template will return null value. See https://strftime.org/ for help on strftime templates.|
|
||||
|{modified}|Photo's modification date in ISO format, e.g. '2020-03-22'; uses creation date if photo is not modified|
|
||||
|{modified.date}|Photo's modification date in ISO format, e.g. '2020-03-22'; uses creation date if photo is not modified|
|
||||
|{modified.year}|4-digit year of photo modification time; uses creation date if photo is not modified|
|
||||
|{modified.yy}|2-digit year of photo modification time; uses creation date if photo is not modified|
|
||||
@ -1958,6 +1960,7 @@ cog.out(get_template_field_table())
|
||||
|{modified.min}|2-digit minute of the photo modification time; uses creation date if photo is not modified|
|
||||
|{modified.sec}|2-digit second of the photo modification time; uses creation date if photo is not modified|
|
||||
|{modified.strftime}|Apply strftime template to file modification date/time. Should be used in form {modified.strftime,TEMPLATE} where TEMPLATE is a valid strftime template, e.g. {modified.strftime,%Y-%U} would result in year-week number of year: '2020-23'. If used with no template will return null value. Uses creation date if photo is not modified. See https://strftime.org/ for help on strftime templates.|
|
||||
|{today}|Current date in iso format, e.g. '2020-03-22'|
|
||||
|{today.date}|Current date in iso format, e.g. '2020-03-22'|
|
||||
|{today.year}|4-digit year of current date|
|
||||
|{today.yy}|2-digit year of current date|
|
||||
@ -2009,7 +2012,7 @@ cog.out(get_template_field_table())
|
||||
|{cr}|A carriage return: '\r'|
|
||||
|{crlf}|A carriage return + line feed: '\r\n'|
|
||||
|{tab}|:A tab: '\t'|
|
||||
|{osxphotos_version}|The osxphotos version, e.g. '0.51.6'|
|
||||
|{osxphotos_version}|The osxphotos version, e.g. '0.51.7'|
|
||||
|{osxphotos_cmd_line}|The full command line used to run osxphotos|
|
||||
|{album}|Album(s) photo is contained in|
|
||||
|{folder_album}|Folder path + album photo is contained in. e.g. 'Folder/Subfolder/Album' or just 'Album' if no enclosing folder|
|
||||
|
||||
14
README.md
14
README.md
@ -1775,6 +1775,8 @@ Substitution Description
|
||||
{favorite} Photo has been marked as favorite?;
|
||||
True/False value, use in format
|
||||
'{favorite?VALUE_IF_TRUE,VALUE_IF_FALSE}'
|
||||
{created} Photo's creation date in ISO format, e.g.
|
||||
'2020-03-22'
|
||||
{created.date} Photo's creation date in ISO format, e.g.
|
||||
'2020-03-22'
|
||||
{created.year} 4-digit year of photo creation time
|
||||
@ -1804,6 +1806,9 @@ Substitution Description
|
||||
with no template will return null value. See
|
||||
https://strftime.org/ for help on strftime
|
||||
templates.
|
||||
{modified} Photo's modification date in ISO format,
|
||||
e.g. '2020-03-22'; uses creation date if
|
||||
photo is not modified
|
||||
{modified.date} Photo's modification date in ISO format,
|
||||
e.g. '2020-03-22'; uses creation date if
|
||||
photo is not modified
|
||||
@ -1848,6 +1853,8 @@ Substitution Description
|
||||
Uses creation date if photo is not modified.
|
||||
See https://strftime.org/ for help on
|
||||
strftime templates.
|
||||
{today} Current date in iso format, e.g.
|
||||
'2020-03-22'
|
||||
{today.date} Current date in iso format, e.g.
|
||||
'2020-03-22'
|
||||
{today.year} 4-digit year of current date
|
||||
@ -1996,7 +2003,7 @@ Substitution Description
|
||||
{cr} A carriage return: '\r'
|
||||
{crlf} A carriage return + line feed: '\r\n'
|
||||
{tab} :A tab: '\t'
|
||||
{osxphotos_version} The osxphotos version, e.g. '0.51.6'
|
||||
{osxphotos_version} The osxphotos version, e.g. '0.51.7'
|
||||
{osxphotos_cmd_line} The full command line used to run osxphotos
|
||||
|
||||
The following substitutions may result in multiple values. Thus if specified
|
||||
@ -2400,6 +2407,7 @@ The following template field substitutions are availabe for use the templating s
|
||||
|{edited}|True if photo has been edited (has adjustments), otherwise False; use in format '{edited?VALUE_IF_TRUE,VALUE_IF_FALSE}'|
|
||||
|{edited_version}|True if template is being rendered for the edited version of a photo, otherwise False. |
|
||||
|{favorite}|Photo has been marked as favorite?; True/False value, use in format '{favorite?VALUE_IF_TRUE,VALUE_IF_FALSE}'|
|
||||
|{created}|Photo's creation date in ISO format, e.g. '2020-03-22'|
|
||||
|{created.date}|Photo's creation date in ISO format, e.g. '2020-03-22'|
|
||||
|{created.year}|4-digit year of photo creation time|
|
||||
|{created.yy}|2-digit year of photo creation time|
|
||||
@ -2413,6 +2421,7 @@ The following template field substitutions are availabe for use the templating s
|
||||
|{created.min}|2-digit minute of the photo creation time|
|
||||
|{created.sec}|2-digit second of the photo creation time|
|
||||
|{created.strftime}|Apply strftime template to file creation date/time. Should be used in form {created.strftime,TEMPLATE} where TEMPLATE is a valid strftime template, e.g. {created.strftime,%Y-%U} would result in year-week number of year: '2020-23'. If used with no template will return null value. See https://strftime.org/ for help on strftime templates.|
|
||||
|{modified}|Photo's modification date in ISO format, e.g. '2020-03-22'; uses creation date if photo is not modified|
|
||||
|{modified.date}|Photo's modification date in ISO format, e.g. '2020-03-22'; uses creation date if photo is not modified|
|
||||
|{modified.year}|4-digit year of photo modification time; uses creation date if photo is not modified|
|
||||
|{modified.yy}|2-digit year of photo modification time; uses creation date if photo is not modified|
|
||||
@ -2426,6 +2435,7 @@ The following template field substitutions are availabe for use the templating s
|
||||
|{modified.min}|2-digit minute of the photo modification time; uses creation date if photo is not modified|
|
||||
|{modified.sec}|2-digit second of the photo modification time; uses creation date if photo is not modified|
|
||||
|{modified.strftime}|Apply strftime template to file modification date/time. Should be used in form {modified.strftime,TEMPLATE} where TEMPLATE is a valid strftime template, e.g. {modified.strftime,%Y-%U} would result in year-week number of year: '2020-23'. If used with no template will return null value. Uses creation date if photo is not modified. See https://strftime.org/ for help on strftime templates.|
|
||||
|{today}|Current date in iso format, e.g. '2020-03-22'|
|
||||
|{today.date}|Current date in iso format, e.g. '2020-03-22'|
|
||||
|{today.year}|4-digit year of current date|
|
||||
|{today.yy}|2-digit year of current date|
|
||||
@ -2477,7 +2487,7 @@ The following template field substitutions are availabe for use the templating s
|
||||
|{cr}|A carriage return: '\r'|
|
||||
|{crlf}|A carriage return + line feed: '\r\n'|
|
||||
|{tab}|:A tab: '\t'|
|
||||
|{osxphotos_version}|The osxphotos version, e.g. '0.51.6'|
|
||||
|{osxphotos_version}|The osxphotos version, e.g. '0.51.7'|
|
||||
|{osxphotos_cmd_line}|The full command line used to run osxphotos|
|
||||
|{album}|Album(s) photo is contained in|
|
||||
|{folder_album}|Folder path + album photo is contained in. e.g. 'Folder/Subfolder/Album' or just 'Album' if no enclosing folder|
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 3970263dccbb7309de27e8472f5b557a
|
||||
config: ca8753a41a9bea6f1866398ac2f3750d
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="../genindex.html" /><link rel="search" title="Search" href="../search.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/>
|
||||
<title>Overview: module code - osxphotos 0.51.6 documentation</title>
|
||||
<title>Overview: module code - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/copybutton.css" />
|
||||
@ -123,7 +123,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../index.html"><div class="brand">osxphotos 0.51.6 documentation</div></a>
|
||||
<a href="../index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -146,7 +146,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.6 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="../../genindex.html" /><link rel="search" title="Search" href="../../search.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/>
|
||||
<title>osxphotos.photoexporter - osxphotos 0.50.13 documentation</title>
|
||||
<title>osxphotos.photoexporter - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
|
||||
@ -123,7 +123,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../index.html"><div class="brand">osxphotos 0.50.13 documentation</div></a>
|
||||
<a href="../../index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -146,7 +146,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.50.13 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
@ -441,6 +441,36 @@
|
||||
<div class="viewcode-block" id="ExportResults"><a class="viewcode-back" href="../../reference.html#osxphotos.ExportResults">[docs]</a><span class="k">class</span> <span class="nc">ExportResults</span><span class="p">:</span>
|
||||
<span class="sd">"""Results class which holds export results for export"""</span>
|
||||
|
||||
<span class="vm">__slots__</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="s2">"_datetime"</span><span class="p">,</span>
|
||||
<span class="s2">"converted_to_jpeg"</span><span class="p">,</span>
|
||||
<span class="s2">"deleted_directories"</span><span class="p">,</span>
|
||||
<span class="s2">"deleted_files"</span><span class="p">,</span>
|
||||
<span class="s2">"error"</span><span class="p">,</span>
|
||||
<span class="s2">"exif_updated"</span><span class="p">,</span>
|
||||
<span class="s2">"exiftool_error"</span><span class="p">,</span>
|
||||
<span class="s2">"exiftool_warning"</span><span class="p">,</span>
|
||||
<span class="s2">"exported"</span><span class="p">,</span>
|
||||
<span class="s2">"exported_album"</span><span class="p">,</span>
|
||||
<span class="s2">"metadata_changed"</span><span class="p">,</span>
|
||||
<span class="s2">"missing"</span><span class="p">,</span>
|
||||
<span class="s2">"missing_album"</span><span class="p">,</span>
|
||||
<span class="s2">"new"</span><span class="p">,</span>
|
||||
<span class="s2">"sidecar_exiftool_skipped"</span><span class="p">,</span>
|
||||
<span class="s2">"sidecar_exiftool_written"</span><span class="p">,</span>
|
||||
<span class="s2">"sidecar_json_skipped"</span><span class="p">,</span>
|
||||
<span class="s2">"sidecar_json_written"</span><span class="p">,</span>
|
||||
<span class="s2">"sidecar_xmp_skipped"</span><span class="p">,</span>
|
||||
<span class="s2">"sidecar_xmp_written"</span><span class="p">,</span>
|
||||
<span class="s2">"skipped"</span><span class="p">,</span>
|
||||
<span class="s2">"skipped_album"</span><span class="p">,</span>
|
||||
<span class="s2">"to_touch"</span><span class="p">,</span>
|
||||
<span class="s2">"touched"</span><span class="p">,</span>
|
||||
<span class="s2">"updated"</span><span class="p">,</span>
|
||||
<span class="s2">"xattr_skipped"</span><span class="p">,</span>
|
||||
<span class="s2">"xattr_written"</span><span class="p">,</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">converted_to_jpeg</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
@ -450,11 +480,11 @@
|
||||
<span class="n">exif_updated</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">exiftool_error</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">exiftool_warning</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">exported_album</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">exported</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">exported_album</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">metadata_changed</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">missing_album</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">missing</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">missing_album</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">new</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">sidecar_exiftool_skipped</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">sidecar_exiftool_written</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
@ -462,8 +492,8 @@
|
||||
<span class="n">sidecar_json_written</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">sidecar_xmp_skipped</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">sidecar_xmp_written</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">skipped_album</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">skipped</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">skipped_album</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">to_touch</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">touched</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">updated</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
@ -471,36 +501,22 @@
|
||||
<span class="n">xattr_written</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">datetime</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span>
|
||||
<span class="n">local_vars</span> <span class="o">=</span> <span class="nb">locals</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_datetime</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">:</span>
|
||||
<span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="n">local_vars</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[])</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">converted_to_jpeg</span> <span class="o">=</span> <span class="n">converted_to_jpeg</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">deleted_directories</span> <span class="o">=</span> <span class="n">deleted_directories</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">deleted_files</span> <span class="o">=</span> <span class="n">deleted_files</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">error</span> <span class="o">=</span> <span class="n">error</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exif_updated</span> <span class="o">=</span> <span class="n">exif_updated</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exiftool_error</span> <span class="o">=</span> <span class="n">exiftool_error</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exiftool_warning</span> <span class="o">=</span> <span class="n">exiftool_warning</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exported</span> <span class="o">=</span> <span class="n">exported</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exported_album</span> <span class="o">=</span> <span class="n">exported_album</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">metadata_changed</span> <span class="o">=</span> <span class="n">metadata_changed</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">missing</span> <span class="o">=</span> <span class="n">missing</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">missing_album</span> <span class="o">=</span> <span class="n">missing_album</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">new</span> <span class="o">=</span> <span class="n">new</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_exiftool_skipped</span> <span class="o">=</span> <span class="n">sidecar_exiftool_skipped</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_exiftool_written</span> <span class="o">=</span> <span class="n">sidecar_exiftool_written</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_json_skipped</span> <span class="o">=</span> <span class="n">sidecar_json_skipped</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_json_written</span> <span class="o">=</span> <span class="n">sidecar_json_written</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_xmp_skipped</span> <span class="o">=</span> <span class="n">sidecar_xmp_skipped</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_xmp_written</span> <span class="o">=</span> <span class="n">sidecar_xmp_written</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">skipped</span> <span class="o">=</span> <span class="n">skipped</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">skipped_album</span> <span class="o">=</span> <span class="n">skipped_album</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">to_touch</span> <span class="o">=</span> <span class="n">to_touch</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">touched</span> <span class="o">=</span> <span class="n">touched</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">updated</span> <span class="o">=</span> <span class="n">updated</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">xattr_skipped</span> <span class="o">=</span> <span class="n">xattr_skipped</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">xattr_written</span> <span class="o">=</span> <span class="n">xattr_written</span> <span class="ow">or</span> <span class="p">[]</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">attributes</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
|
||||
<span class="sd">"""Return list of attributes tracked by ExportResults"""</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">attr</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__slots__</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">attr</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)]</span>
|
||||
|
||||
<div class="viewcode-block" id="ExportResults.all_files"><a class="viewcode-back" href="../../reference.html#osxphotos.ExportResults.all_files">[docs]</a> <span class="k">def</span> <span class="nf">all_files</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">datetime</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
<span class="sd">"""Return datetime when ExportResults was created"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_datetime</span>
|
||||
|
||||
<div class="viewcode-block" id="ExportResults.all_files"><a class="viewcode-back" href="../../reference.html#osxphotos.ExportResults.all_files">[docs]</a> <span class="k">def</span> <span class="nf">all_files</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
|
||||
<span class="sd">"""return all filenames contained in results"""</span>
|
||||
<span class="n">files</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exported</span>
|
||||
@ -522,65 +538,23 @@
|
||||
<span class="n">files</span> <span class="o">+=</span> <span class="p">[</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">exiftool_error</span><span class="p">]</span>
|
||||
<span class="n">files</span> <span class="o">+=</span> <span class="p">[</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="p">]</span>
|
||||
|
||||
<span class="n">files</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">files</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">files</span></div>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">files</span><span class="p">))</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__iadd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exported</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">exported</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">new</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">new</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">updated</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">updated</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">skipped</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">skipped</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exif_updated</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">exif_updated</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">touched</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">touched</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">to_touch</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">to_touch</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">converted_to_jpeg</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">converted_to_jpeg</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_json_written</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">sidecar_json_written</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_json_skipped</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">sidecar_json_skipped</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_exiftool_written</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">sidecar_exiftool_written</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_exiftool_skipped</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">sidecar_exiftool_skipped</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_xmp_written</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">sidecar_xmp_written</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidecar_xmp_skipped</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">sidecar_xmp_skipped</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">missing</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">missing</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">error</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">error</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exiftool_warning</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">exiftool_warning</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exiftool_error</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">exiftool_error</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">deleted_files</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">deleted_files</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">deleted_directories</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">deleted_directories</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exported_album</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">exported_album</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">skipped_album</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">skipped_album</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">missing_album</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">missing_album</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">metadata_changed</span> <span class="o">+=</span> <span class="n">other</span><span class="o">.</span><span class="n">metadata_changed</span>
|
||||
<span class="k">def</span> <span class="fm">__iadd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="o">-></span> <span class="s2">"ExportResults"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> <span class="o">!=</span> <span class="n">ExportResults</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">"Can only add ExportResults to ExportResults"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">attribute</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">:</span>
|
||||
<span class="nb">setattr</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span> <span class="n">attribute</span><span class="p">,</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attribute</span><span class="p">)</span> <span class="o">+</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">attribute</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="s2">"ExportResults("</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">"datetime=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">datetime</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",exported=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">exported</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",new=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">new</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",updated=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">updated</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",skipped=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">skipped</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",exif_updated=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">exif_updated</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",touched=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">touched</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",to_touch=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">to_touch</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",converted_to_jpeg=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">converted_to_jpeg</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",sidecar_json_written=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sidecar_json_written</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",sidecar_json_skipped=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sidecar_json_skipped</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",sidecar_exiftool_written=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sidecar_exiftool_written</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",sidecar_exiftool_skipped=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sidecar_exiftool_skipped</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",sidecar_xmp_written=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sidecar_xmp_written</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",sidecar_xmp_skipped=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sidecar_xmp_skipped</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",missing=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">missing</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",error=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">error</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",exiftool_warning=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">exiftool_warning</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",exiftool_error=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">exiftool_error</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",deleted_files=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">deleted_files</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",deleted_directories=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">deleted_directories</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",exported_album=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">exported_album</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",skipped_album=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">skipped_album</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",missing_album=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">missing_album</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">",metadata_changed=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">metadata_changed</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="o">+</span> <span class="sa">f</span><span class="s2">"datetime=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_datetime</span><span class="si">}</span><span class="s2">, "</span>
|
||||
<span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">attr</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attr</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="p">])</span>
|
||||
<span class="o">+</span> <span class="s2">")"</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="../../genindex.html" /><link rel="search" title="Search" href="../../search.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/>
|
||||
<title>osxphotos.photosalbum - osxphotos 0.51.0 documentation</title>
|
||||
<title>osxphotos.photosalbum - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
|
||||
@ -123,7 +123,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../index.html"><div class="brand">osxphotos 0.51.0 documentation</div></a>
|
||||
<a href="../../index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -146,7 +146,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.0 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
@ -208,45 +208,6 @@
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"PhotosAlbum"</span><span class="p">,</span> <span class="s2">"PhotosAlbumPhotoScript"</span><span class="p">]</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PhotosAlbum"><a class="viewcode-back" href="../../reference.html#osxphotos.PhotosAlbum">[docs]</a><span class="k">class</span> <span class="nc">PhotosAlbum</span><span class="p">:</span>
|
||||
<span class="sd">"""Add osxphotos.photoinfo.PhotoInfo objects to album"""</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">verbose</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span> <span class="o">=</span> <span class="n">verbose</span> <span class="ow">or</span> <span class="n">noop</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">library</span> <span class="o">=</span> <span class="n">photoscript</span><span class="o">.</span><span class="n">PhotosLibrary</span><span class="p">()</span>
|
||||
|
||||
<span class="n">album</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">library</span><span class="o">.</span><span class="n">album</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">album</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Creating Photos album '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||||
<span class="n">album</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">library</span><span class="o">.</span><span class="n">create_album</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">album</span> <span class="o">=</span> <span class="n">album</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">photo</span><span class="p">:</span> <span class="n">PhotoInfo</span><span class="p">):</span>
|
||||
<span class="n">photo_</span> <span class="o">=</span> <span class="n">photoscript</span><span class="o">.</span><span class="n">Photo</span><span class="p">(</span><span class="n">photo</span><span class="o">.</span><span class="n">uuid</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">album</span><span class="o">.</span><span class="n">add</span><span class="p">([</span><span class="n">photo_</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Added </span><span class="si">{</span><span class="n">photo</span><span class="o">.</span><span class="n">original_filename</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">photo</span><span class="o">.</span><span class="n">uuid</span><span class="si">}</span><span class="s2">) to album </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">add_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">photo_list</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">PhotoInfo</span><span class="p">]):</span>
|
||||
<span class="n">photos</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">photo_list</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">photos</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">photoscript</span><span class="o">.</span><span class="n">Photo</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">uuid</span><span class="p">))</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error creating Photo object for photo </span><span class="si">{</span><span class="n">p</span><span class="o">.</span><span class="n">uuid</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">photolist</span> <span class="ow">in</span> <span class="n">chunked</span><span class="p">(</span><span class="n">photos</span><span class="p">,</span> <span class="mi">10</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">album</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">photolist</span><span class="p">)</span>
|
||||
<span class="n">photo_len</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">photo_list</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Added </span><span class="si">{</span><span class="n">photo_len</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">pluralize</span><span class="p">(</span><span class="n">photo_len</span><span class="p">,</span> <span class="s1">'photo'</span><span class="p">,</span> <span class="s1">'photos'</span><span class="p">)</span><span class="si">}</span><span class="s2"> to album </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">photos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">album</span><span class="o">.</span><span class="n">photos</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">folder_by_path</span><span class="p">(</span><span class="n">folders</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">verbose</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Folder</span><span class="p">:</span>
|
||||
<span class="sd">"""Get (and create if necessary) a Photos Folder by path (passed as list of folder names)"""</span>
|
||||
<span class="n">library</span> <span class="o">=</span> <span class="n">PhotosLibrary</span><span class="p">()</span>
|
||||
@ -277,57 +238,108 @@
|
||||
<span class="n">album_name</span> <span class="o">=</span> <span class="n">folders_album</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
||||
<span class="n">folder</span> <span class="o">=</span> <span class="n">folder_by_path</span><span class="p">(</span><span class="n">folders_album</span><span class="p">,</span> <span class="n">verbose</span><span class="p">)</span>
|
||||
<span class="n">album</span> <span class="o">=</span> <span class="n">folder</span><span class="o">.</span><span class="n">album</span><span class="p">(</span><span class="n">album_name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">album</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">album</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">verbose</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Creating album '</span><span class="si">{</span><span class="n">album_name</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||||
<span class="n">album</span> <span class="o">=</span> <span class="n">folder</span><span class="o">.</span><span class="n">create_album</span><span class="p">(</span><span class="n">album_name</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># only have album name</span>
|
||||
<span class="n">album_name</span> <span class="o">=</span> <span class="n">folders_album</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">album</span> <span class="o">=</span> <span class="n">library</span><span class="o">.</span><span class="n">album</span><span class="p">(</span><span class="n">album_name</span><span class="p">,</span> <span class="n">top_level</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">album</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">album</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">verbose</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Creating album '</span><span class="si">{</span><span class="n">album_name</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||||
<span class="n">album</span> <span class="o">=</span> <span class="n">library</span><span class="o">.</span><span class="n">create_album</span><span class="p">(</span><span class="n">album_name</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">album</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PhotosAlbumPhotoScript"><a class="viewcode-back" href="../../reference.html#osxphotos.PhotosAlbumPhotoScript">[docs]</a><span class="k">class</span> <span class="nc">PhotosAlbumPhotoScript</span><span class="p">:</span>
|
||||
<span class="sd">"""Add photoscript.Photo objects to album"""</span>
|
||||
<div class="viewcode-block" id="PhotosAlbum"><a class="viewcode-back" href="../../reference.html#osxphotos.PhotosAlbum">[docs]</a><span class="k">class</span> <span class="nc">PhotosAlbum</span><span class="p">:</span>
|
||||
<span class="sd">"""Add osxphotos.photoinfo.PhotoInfo objects to album"""</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">verbose</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">split_folder</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
||||
<span class="n">verbose</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">split_folder</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">rich</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""Return a PhotosAlbumPhotoScript object, creating the album if necessary</span>
|
||||
<span class="sd">"""Return a PhotosAlbum object, creating the album if necessary</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> name: Name of album</span>
|
||||
<span class="sd"> verbose: optional callable to print verbose output</span>
|
||||
<span class="sd"> split_folder: if set, split album name on value of split_folder to create folders if necessary,</span>
|
||||
<span class="sd"> e.g. if name = 'folder1/folder2/album' and split_folder='/', </span>
|
||||
<span class="sd"> e.g. if name = 'folder1/folder2/album' and split_folder='/',</span>
|
||||
<span class="sd"> then folders 'folder1' and 'folder2' will be created and album 'album' will be created in 'folder2';</span>
|
||||
<span class="sd"> if not set, album 'folder1/folder2/album' will be created</span>
|
||||
<span class="sd"> rich: if True, use rich themes for verbose output</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span> <span class="o">=</span> <span class="n">verbose</span> <span class="ow">or</span> <span class="n">noop</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">library</span> <span class="o">=</span> <span class="n">PhotosLibrary</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">library</span> <span class="o">=</span> <span class="n">photoscript</span><span class="o">.</span><span class="n">PhotosLibrary</span><span class="p">()</span>
|
||||
|
||||
<span class="n">folders_album</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">split_folder</span><span class="p">)</span> <span class="k">if</span> <span class="n">split_folder</span> <span class="k">else</span> <span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">album</span> <span class="o">=</span> <span class="n">album_by_path</span><span class="p">(</span><span class="n">folders_album</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">rich</span> <span class="o">=</span> <span class="n">rich</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">photo</span><span class="p">:</span> <span class="n">PhotoInfo</span><span class="p">):</span>
|
||||
<span class="n">photo_</span> <span class="o">=</span> <span class="n">photoscript</span><span class="o">.</span><span class="n">Photo</span><span class="p">(</span><span class="n">photo</span><span class="o">.</span><span class="n">uuid</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">album</span><span class="o">.</span><span class="n">add</span><span class="p">([</span><span class="n">photo_</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Added </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_format_name</span><span class="p">(</span><span class="n">photo</span><span class="o">.</span><span class="n">original_filename</span><span class="p">)</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_format_uuid</span><span class="p">(</span><span class="n">photo</span><span class="o">.</span><span class="n">uuid</span><span class="p">)</span><span class="si">}</span><span class="s2">) to album </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_format_album</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">add_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">photo_list</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">PhotoInfo</span><span class="p">]):</span>
|
||||
<span class="n">photos</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">photo_list</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">photos</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">photoscript</span><span class="o">.</span><span class="n">Photo</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">uuid</span><span class="p">))</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Error creating Photo object for photo </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_format_uuid</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">uuid</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">photolist</span> <span class="ow">in</span> <span class="n">chunked</span><span class="p">(</span><span class="n">photos</span><span class="p">,</span> <span class="mi">10</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">album</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">photolist</span><span class="p">)</span>
|
||||
<span class="n">photo_len</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">photo_list</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Added </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_format_num</span><span class="p">(</span><span class="n">photo_len</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">pluralize</span><span class="p">(</span><span class="n">photo_len</span><span class="p">,</span> <span class="s1">'photo'</span><span class="p">,</span> <span class="s1">'photos'</span><span class="p">)</span><span class="si">}</span><span class="s2"> to album </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_format_album</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">photos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">album</span><span class="o">.</span><span class="n">photos</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_format_uuid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uuid</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
<span class="sd">""" "Format uuid for verbose output"""</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"[uuid]</span><span class="si">{</span><span class="n">uuid</span><span class="si">}</span><span class="s2">[/uuid]"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rich</span> <span class="k">else</span> <span class="n">uuid</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_format_album</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">album</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
<span class="sd">""" "Format album name for verbose output"""</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"[filepath]</span><span class="si">{</span><span class="n">album</span><span class="si">}</span><span class="s2">[/filepath]"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rich</span> <span class="k">else</span> <span class="n">album</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_format_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
<span class="sd">""" "Format name for verbose output"""</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"[filename]</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">[/filename]"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rich</span> <span class="k">else</span> <span class="n">name</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_format_num</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
<span class="sd">""" "Format number for verbose output"""</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"[num]</span><span class="si">{</span><span class="n">num</span><span class="si">}</span><span class="s2">[/num]"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rich</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">num</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PhotosAlbumPhotoScript"><a class="viewcode-back" href="../../reference.html#osxphotos.PhotosAlbumPhotoScript">[docs]</a><span class="k">class</span> <span class="nc">PhotosAlbumPhotoScript</span><span class="p">(</span><span class="n">PhotosAlbum</span><span class="p">):</span>
|
||||
<span class="sd">"""Add photoscript.Photo objects to album"""</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">photo</span><span class="p">:</span> <span class="n">Photo</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">album</span><span class="o">.</span><span class="n">add</span><span class="p">([</span><span class="n">photo</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Added </span><span class="si">{</span><span class="n">photo</span><span class="o">.</span><span class="n">filename</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">photo</span><span class="o">.</span><span class="n">uuid</span><span class="si">}</span><span class="s2">) to album </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Added </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_format_name</span><span class="p">(</span><span class="n">photo</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_format_uuid</span><span class="p">(</span><span class="n">photo</span><span class="o">.</span><span class="n">uuid</span><span class="p">)</span><span class="si">}</span><span class="s2">) to album </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_format_album</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">add_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">photo_list</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Photo</span><span class="p">]):</span>
|
||||
<span class="k">for</span> <span class="n">photolist</span> <span class="ow">in</span> <span class="n">chunked</span><span class="p">(</span><span class="n">photo_list</span><span class="p">,</span> <span class="mi">10</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">album</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">photolist</span><span class="p">)</span>
|
||||
<span class="n">photo_len</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">photo_list</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"Added </span><span class="si">{</span><span class="n">photo_len</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">pluralize</span><span class="p">(</span><span class="n">photo_len</span><span class="p">,</span> <span class="s1">'photo'</span><span class="p">,</span> <span class="s1">'photos'</span><span class="p">)</span><span class="si">}</span><span class="s2"> to album </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">photos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">album</span><span class="o">.</span><span class="n">photos</span><span class="p">()</span></div>
|
||||
<span class="sa">f</span><span class="s2">"Added </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_format_num</span><span class="p">(</span><span class="n">photo_len</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">pluralize</span><span class="p">(</span><span class="n">photo_len</span><span class="p">,</span> <span class="s1">'photo'</span><span class="p">,</span> <span class="s1">'photos'</span><span class="p">)</span><span class="si">}</span><span class="s2"> to album </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_format_album</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span></div>
|
||||
</pre></div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="../../../genindex.html" /><link rel="search" title="Search" href="../../../search.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/>
|
||||
<title>osxphotos.photosdb.photosdb - osxphotos 0.50.13 documentation</title>
|
||||
<title>osxphotos.photosdb.photosdb - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/copybutton.css" />
|
||||
@ -123,7 +123,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../../index.html"><div class="brand">osxphotos 0.50.13 documentation</div></a>
|
||||
<a href="../../../index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -146,7 +146,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../../index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.50.13 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
@ -286,7 +286,14 @@
|
||||
<span class="n">labels_normalized_as_dict</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dbfile</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">exiftool</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">rich</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">dbfile</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">verbose</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">exiftool</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">rich</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">_skip_searchinfo</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""Create a new PhotosDB object.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
@ -294,6 +301,7 @@
|
||||
<span class="sd"> verbose: optional callable function to use for printing verbose text during processing; if None (default), does not print output.</span>
|
||||
<span class="sd"> exiftool: optional path to exiftool for methods that require this (e.g. PhotoInfo.exiftool); if not provided, will search PATH</span>
|
||||
<span class="sd"> rich: use rich with verbose output</span>
|
||||
<span class="sd"> _skip_searchinfo: if True, will not process search data from psi.sqlite; useful for processing standalone Photos.sqlite file</span>
|
||||
|
||||
<span class="sd"> Raises:</span>
|
||||
<span class="sd"> FileNotFoundError if dbfile is not a valid Photos library.</span>
|
||||
@ -315,6 +323,7 @@
|
||||
<span class="k">elif</span> <span class="ow">not</span> <span class="n">callable</span><span class="p">(</span><span class="n">verbose</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">"verbose must be callable"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_verbose</span> <span class="o">=</span> <span class="n">verbose</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_skip_searchinfo</span> <span class="o">=</span> <span class="n">_skip_searchinfo</span>
|
||||
|
||||
<span class="c1"># define functions for adding markup</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span> <span class="o">=</span> <span class="n">add_rich_markup_tag</span><span class="p">(</span><span class="s2">"filepath"</span><span class="p">,</span> <span class="n">rich</span><span class="o">=</span><span class="n">rich</span><span class="p">)</span>
|
||||
@ -1976,9 +1985,9 @@
|
||||
<span class="s2">"parentfolder"</span><span class="p">:</span> <span class="n">album</span><span class="p">[</span><span class="mi">7</span><span class="p">],</span>
|
||||
<span class="s2">"pk"</span><span class="p">:</span> <span class="n">album</span><span class="p">[</span><span class="mi">8</span><span class="p">],</span>
|
||||
<span class="s2">"intrash"</span><span class="p">:</span> <span class="kc">False</span> <span class="k">if</span> <span class="n">album</span><span class="p">[</span><span class="mi">9</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<span class="s2">"creation_date"</span><span class="p">:</span> <span class="n">album</span><span class="p">[</span><span class="mi">10</span><span class="p">],</span>
|
||||
<span class="s2">"start_date"</span><span class="p">:</span> <span class="n">album</span><span class="p">[</span><span class="mi">11</span><span class="p">],</span>
|
||||
<span class="s2">"end_date"</span><span class="p">:</span> <span class="n">album</span><span class="p">[</span><span class="mi">12</span><span class="p">],</span>
|
||||
<span class="s2">"creation_date"</span><span class="p">:</span> <span class="n">album</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="ow">or</span> <span class="mi">0</span><span class="p">,</span> <span class="c1"># iPhone Photos.sqlite can have null value</span>
|
||||
<span class="s2">"start_date"</span><span class="p">:</span> <span class="n">album</span><span class="p">[</span><span class="mi">11</span><span class="p">]</span> <span class="ow">or</span> <span class="mi">0</span><span class="p">,</span>
|
||||
<span class="s2">"end_date"</span><span class="p">:</span> <span class="n">album</span><span class="p">[</span><span class="mi">12</span><span class="p">]</span> <span class="ow">or</span> <span class="mi">0</span><span class="p">,</span>
|
||||
<span class="s2">"customsortascending"</span><span class="p">:</span> <span class="n">album</span><span class="p">[</span><span class="mi">13</span><span class="p">],</span>
|
||||
<span class="s2">"customsortkey"</span><span class="p">:</span> <span class="n">album</span><span class="p">[</span><span class="mi">14</span><span class="p">],</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="../../genindex.html" /><link rel="search" title="Search" href="../../search.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/>
|
||||
<title>osxphotos.phototemplate - osxphotos 0.51.4 documentation</title>
|
||||
<title>osxphotos.phototemplate - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
|
||||
@ -123,7 +123,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="../../index.html"><div class="brand">osxphotos 0.51.4 documentation</div></a>
|
||||
<a href="../../index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -146,7 +146,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="../../index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.4 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="../../search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
@ -267,6 +267,7 @@
|
||||
<span class="s2">"</span><span class="si">{edited}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"True if photo has been edited (has adjustments), otherwise False; use in format '{edited?VALUE_IF_TRUE,VALUE_IF_FALSE}'"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{edited_version}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"True if template is being rendered for the edited version of a photo, otherwise False. "</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{favorite}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"Photo has been marked as favorite?; True/False value, use in format '{favorite?VALUE_IF_TRUE,VALUE_IF_FALSE}'"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{created}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"Photo's creation date in ISO format, e.g. '2020-03-22'"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{created.date}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"Photo's creation date in ISO format, e.g. '2020-03-22'"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{created.year}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"4-digit year of photo creation time"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{created.yy}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"2-digit year of photo creation time"</span><span class="p">,</span>
|
||||
@ -284,6 +285,7 @@
|
||||
<span class="o">+</span> <span class="s2">"{created.strftime,%Y-%U} would result in year-week number of year: '2020-23'. "</span>
|
||||
<span class="o">+</span> <span class="s2">"If used with no template will return null value. "</span>
|
||||
<span class="o">+</span> <span class="s2">"See https://strftime.org/ for help on strftime templates."</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{modified}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"Photo's modification date in ISO format, e.g. '2020-03-22'; uses creation date if photo is not modified"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{modified.date}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"Photo's modification date in ISO format, e.g. '2020-03-22'; uses creation date if photo is not modified"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{modified.year}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"4-digit year of photo modification time; uses creation date if photo is not modified"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{modified.yy}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"2-digit year of photo modification time; uses creation date if photo is not modified"</span><span class="p">,</span>
|
||||
@ -301,6 +303,7 @@
|
||||
<span class="o">+</span> <span class="s2">"{modified.strftime,%Y-%U} would result in year-week number of year: '2020-23'. "</span>
|
||||
<span class="o">+</span> <span class="s2">"If used with no template will return null value. Uses creation date if photo is not modified. "</span>
|
||||
<span class="o">+</span> <span class="s2">"See https://strftime.org/ for help on strftime templates."</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{today}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"Current date in iso format, e.g. '2020-03-22'"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{today.date}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"Current date in iso format, e.g. '2020-03-22'"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{today.year}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"4-digit year of current date"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{today.yy}</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"2-digit year of current date"</span><span class="p">,</span>
|
||||
@ -1011,10 +1014,10 @@
|
||||
|
||||
<div class="viewcode-block" id="PhotoTemplate.get_template_value"><a class="viewcode-back" href="../../reference.html#osxphotos.PhotoTemplate.get_template_value">[docs]</a> <span class="k">def</span> <span class="nf">get_template_value</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">field</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="p">,</span>
|
||||
<span class="n">subfield</span><span class="p">,</span>
|
||||
<span class="n">field_arg</span><span class="p">,</span>
|
||||
<span class="n">field</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
|
||||
<span class="n">subfield</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
|
||||
<span class="n">field_arg</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""lookup value for template field (single-value template substitutions)</span>
|
||||
|
||||
@ -1041,38 +1044,8 @@
|
||||
|
||||
<span class="c1"># wouldn't a switch/case statement be nice...</span>
|
||||
<span class="c1"># handle the fields that don't require a PhotoInfo object first</span>
|
||||
<span class="k">if</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.date"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">date</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.year"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">year</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.yy"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">yy</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.mm"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">mm</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.month"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">month</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.mon"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">mon</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.dd"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">dd</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.dow"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">dow</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.doy"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">doy</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.hour"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">hour</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.min"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">min</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.sec"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">)</span><span class="o">.</span><span class="n">sec</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"today.strftime"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">default</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">default</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid strftime template: '</span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="n">field</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"today"</span><span class="p">):</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">format_date_field</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">today</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">default</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="ow">in</span> <span class="n">PUNCTUATION</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">PUNCTUATION</span><span class="p">[</span><span class="n">field</span><span class="p">]</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"osxphotos_version"</span><span class="p">:</span>
|
||||
@ -1103,189 +1076,15 @@
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="s2">"edited_version"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">edited_version</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"favorite"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="s2">"favorite"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">favorite</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.date"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">date</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.year"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">year</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.yy"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">yy</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.mm"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">mm</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.month"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">month</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.mon"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">mon</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.dd"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">dd</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.dow"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">dow</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.doy"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">doy</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.hour"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">hour</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.min"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">min</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.sec"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">sec</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"created.strftime"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">default</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">default</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid strftime template: '</span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.date"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">date</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">date</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.year"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">year</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">year</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.yy"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">yy</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">yy</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.mm"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">mm</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">mm</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.month"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">month</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">month</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.mon"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">mon</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">mon</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.dd"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">dd</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">dd</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.dow"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">dow</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">dow</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.doy"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">doy</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">doy</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.hour"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">hour</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">hour</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.min"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">min</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">min</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.sec"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span><span class="p">)</span><span class="o">.</span><span class="n">sec</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span>
|
||||
<span class="k">else</span> <span class="n">DateTimeFormatter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">)</span><span class="o">.</span><span class="n">sec</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"modified.strftime"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">default</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">date</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">default</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid strftime template: '</span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.name"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">name</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.country_code"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">country_code</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.name.country"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">country</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">country</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.name.state_province"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">state_province</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">state_province</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.name.city"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">city</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">city</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.name.area_of_interest"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">area_of_interest</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">area_of_interest</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.address"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address_str</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address_str</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.address.street"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">street</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">street</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.address.city"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">city</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">city</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.address.state_province"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">state_province</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">state_province</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.address.postal_code"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">postal_code</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">postal_code</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.address.country"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">country</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">country</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"place.address.country_code"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">iso_country_code</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">iso_country_code</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">field</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"created"</span><span class="p">):</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">format_date_field</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">default</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"modified"</span><span class="p">):</span>
|
||||
<span class="c1"># if no modified date, use photo.date</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">format_date_field</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date_modified</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">date</span><span class="p">,</span> <span class="n">field</span><span class="p">,</span> <span class="n">default</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"place"</span><span class="p">):</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">get_place_value</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"searchinfo.season"</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">search_info</span><span class="o">.</span><span class="n">season</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="o">.</span><span class="n">search_info</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">field</span> <span class="o">==</span> <span class="s2">"exif.camera_make"</span><span class="p">:</span>
|
||||
@ -1758,7 +1557,7 @@
|
||||
<span class="c1"># if no uuid, then template is being validated but not actually run</span>
|
||||
<span class="c1"># so don't run the function</span>
|
||||
<span class="n">values</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">elif</span> <span class="n">caller</span> <span class="o">==</span> <span class="s2">"export"</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">caller</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"export"</span><span class="p">,</span> <span class="s2">"query"</span><span class="p">]:</span>
|
||||
<span class="c1"># function signature is:</span>
|
||||
<span class="c1"># def example(photo: PhotoInfo, options: ExportOptions, args: Optional[str] = None, **kwargs) -> Union[List, str]:</span>
|
||||
<span class="n">values</span> <span class="o">=</span> <span class="n">template_func</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">photo</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="n">field_arg</span><span class="p">)</span>
|
||||
@ -1939,19 +1738,18 @@
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_album_by_name</span><span class="p">(</span><span class="n">photo</span><span class="p">,</span> <span class="n">album</span><span class="p">):</span>
|
||||
<span class="sd">"""Finds first album named album that photo is in and returns the AlbumInfo object, otherwise returns None"""</span>
|
||||
<span class="k">for</span> <span class="n">album_info</span> <span class="ow">in</span> <span class="n">photo</span><span class="o">.</span><span class="n">album_info</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">album_info</span><span class="o">.</span><span class="n">title</span> <span class="o">==</span> <span class="n">album</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">album_info</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="nb">next</span><span class="p">(</span>
|
||||
<span class="p">(</span><span class="n">album_info</span> <span class="k">for</span> <span class="n">album_info</span> <span class="ow">in</span> <span class="n">photo</span><span class="o">.</span><span class="n">album_info</span> <span class="k">if</span> <span class="n">album_info</span><span class="o">.</span><span class="n">title</span> <span class="o">==</span> <span class="n">album</span><span class="p">),</span>
|
||||
<span class="kc">None</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_album_by_path</span><span class="p">(</span><span class="n">photo</span><span class="p">,</span> <span class="n">folder_album_path</span><span class="p">):</span>
|
||||
<span class="sd">"""finds the first album whose folder_album path matches and folder_album_path and returns the AlbumInfo object, otherwise, returns None"""</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">album_info</span> <span class="ow">in</span> <span class="n">photo</span><span class="o">.</span><span class="n">album_info</span><span class="p">:</span>
|
||||
<span class="c1"># following code is how {folder_album} builds the folder path</span>
|
||||
<span class="n">folder</span> <span class="o">=</span> <span class="s2">"/"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sanitize_dirname</span><span class="p">(</span><span class="n">f</span><span class="p">)</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">album_info</span><span class="o">.</span><span class="n">folder_names</span><span class="p">)</span>
|
||||
<span class="n">folder</span> <span class="o">+=</span> <span class="s2">"/"</span> <span class="o">+</span> <span class="n">sanitize_dirname</span><span class="p">(</span><span class="n">album_info</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
|
||||
<span class="n">folder</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"/</span><span class="si">{</span><span class="n">sanitize_dirname</span><span class="p">(</span><span class="n">album_info</span><span class="o">.</span><span class="n">title</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="k">if</span> <span class="n">folder_album_path</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="n">folder</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">album_info</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
@ -2014,6 +1812,85 @@
|
||||
<span class="k">with</span> <span class="n">suppress</span><span class="p">(</span><span class="ne">ValueError</span><span class="p">):</span>
|
||||
<span class="n">float_values</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">v</span><span class="p">)))</span>
|
||||
<span class="k">return</span> <span class="n">float_values</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">format_date_field</span><span class="p">(</span><span class="n">dt</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">,</span> <span class="n">field</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">args</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
<span class="sd">"""Format a date template field in format 'created', 'create.year' etc.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> dt: datetime object</span>
|
||||
<span class="sd"> field: the field to format, e.g. 'created.year', 'today.strftime'</span>
|
||||
<span class="sd"> args: the argument to the field, e.g. '%Y' for strftime</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">fields</span> <span class="o">=</span> <span class="n">field</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">fields</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="c1"># no subfield, just return the formatted date str</span>
|
||||
<span class="k">return</span> <span class="n">dt</span><span class="o">.</span><span class="n">date</span><span class="p">()</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">fields</span><span class="p">)</span> <span class="o">></span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unhandled template value: </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">subfield</span> <span class="o">=</span> <span class="n">fields</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">subfield</span> <span class="o">==</span> <span class="s2">"strftime"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">args</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">dt</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">except</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid strftime template: '</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">DateTimeFormatter</span><span class="p">(</span><span class="n">dt</span><span class="p">),</span> <span class="n">subfield</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unhandled template value: </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="kn">from</span> <span class="nn">e</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_place_value</span><span class="p">(</span><span class="n">photo</span><span class="p">:</span> <span class="s2">"PhotoInfo"</span><span class="p">,</span> <span class="n">field</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<span class="sd">"""Get the value of a 'place' field by attribute</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> photo: the PhotoInfo object</span>
|
||||
<span class="sd"> field: the field to get, e.g. 'place.name'</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
|
||||
<span class="n">fields</span> <span class="o">=</span> <span class="n">field</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"."</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">fields</span><span class="p">)</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid place field: </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">subfields</span> <span class="o">=</span> <span class="n">fields</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="k">if</span> <span class="n">subfields</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"name"</span><span class="p">,</span> <span class="s2">"country_code"</span><span class="p">]</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">subfields</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="p">,</span> <span class="n">subfields</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">or</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">subfields</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"name"</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">subfields</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">subfields</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"country"</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">country</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">country</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">subfields</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"state_province"</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">state_province</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">state_province</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">subfields</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"city"</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">city</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">city</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">subfields</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"area_of_interest"</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">area_of_interest</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">names</span><span class="o">.</span><span class="n">area_of_interest</span>
|
||||
<span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">subfields</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"address"</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">subfields</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address_str</span>
|
||||
<span class="k">elif</span> <span class="n">subfields</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span>
|
||||
<span class="s2">"street"</span><span class="p">,</span>
|
||||
<span class="s2">"city"</span><span class="p">,</span>
|
||||
<span class="s2">"state_province"</span><span class="p">,</span>
|
||||
<span class="s2">"postal_code"</span><span class="p">,</span>
|
||||
<span class="s2">"country"</span><span class="p">,</span>
|
||||
<span class="p">]:</span>
|
||||
<span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">subfields</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="ow">or</span> <span class="kc">None</span>
|
||||
<span class="k">elif</span> <span class="n">subfields</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"country_code"</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">photo</span><span class="o">.</span><span class="n">place</span><span class="o">.</span><span class="n">address</span><span class="o">.</span><span class="n">iso_country_code</span> <span class="ow">or</span> <span class="kc">None</span>
|
||||
<span class="c1"># did not find a match</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unhandled template value: </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
@ -196,6 +196,8 @@ Template Substitutions
|
||||
- True if template is being rendered for the edited version of a photo, otherwise False.
|
||||
* - {favorite}
|
||||
- Photo has been marked as favorite?; True/False value, use in format '{favorite?VALUE_IF_TRUE,VALUE_IF_FALSE}'
|
||||
* - {created}
|
||||
- Photo's creation date in ISO format, e.g. '2020-03-22'
|
||||
* - {created.date}
|
||||
- Photo's creation date in ISO format, e.g. '2020-03-22'
|
||||
* - {created.year}
|
||||
@ -222,6 +224,8 @@ Template Substitutions
|
||||
- 2-digit second of the photo creation time
|
||||
* - {created.strftime}
|
||||
- Apply strftime template to file creation date/time. Should be used in form {created.strftime,TEMPLATE} where TEMPLATE is a valid strftime template, e.g. {created.strftime,%Y-%U} would result in year-week number of year: '2020-23'. If used with no template will return null value. See https://strftime.org/ for help on strftime templates.
|
||||
* - {modified}
|
||||
- Photo's modification date in ISO format, e.g. '2020-03-22'; uses creation date if photo is not modified
|
||||
* - {modified.date}
|
||||
- Photo's modification date in ISO format, e.g. '2020-03-22'; uses creation date if photo is not modified
|
||||
* - {modified.year}
|
||||
@ -248,6 +252,8 @@ Template Substitutions
|
||||
- 2-digit second of the photo modification time; uses creation date if photo is not modified
|
||||
* - {modified.strftime}
|
||||
- Apply strftime template to file modification date/time. Should be used in form {modified.strftime,TEMPLATE} where TEMPLATE is a valid strftime template, e.g. {modified.strftime,%Y-%U} would result in year-week number of year: '2020-23'. If used with no template will return null value. Uses creation date if photo is not modified. See https://strftime.org/ for help on strftime templates.
|
||||
* - {today}
|
||||
- Current date in iso format, e.g. '2020-03-22'
|
||||
* - {today.date}
|
||||
- Current date in iso format, e.g. '2020-03-22'
|
||||
* - {today.year}
|
||||
@ -351,7 +357,7 @@ Template Substitutions
|
||||
* - {tab}
|
||||
- :A tab: '\t'
|
||||
* - {osxphotos_version}
|
||||
- The osxphotos version, e.g. '0.51.6'
|
||||
- The osxphotos version, e.g. '0.51.7'
|
||||
* - {osxphotos_cmd_line}
|
||||
- The full command line used to run osxphotos
|
||||
* - {album}
|
||||
|
||||
2
docs/_static/documentation_options.js
vendored
2
docs/_static/documentation_options.js
vendored
@ -1,6 +1,6 @@
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
|
||||
VERSION: '0.51.6',
|
||||
VERSION: '0.51.7',
|
||||
LANGUAGE: 'None',
|
||||
COLLAPSE_INDEX: false,
|
||||
BUILDER: 'html',
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="OSXPhotos Template System" href="template_help.html" /><link rel="prev" title="OSXPhotos Tutorial" href="tutorial.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/>
|
||||
<title>OSXPhotos Command Line Interface (CLI) - osxphotos 0.51.6 documentation</title>
|
||||
<title>OSXPhotos Command Line Interface (CLI) - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css" />
|
||||
@ -124,7 +124,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.6 documentation</div></a>
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -147,7 +147,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.6 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1"/>
|
||||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="#" /><link rel="search" title="Search" href="search.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/><title>Index - osxphotos 0.51.6 documentation</title>
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/><title>Index - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css" />
|
||||
@ -122,7 +122,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.6 documentation</div></a>
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -145,7 +145,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.6 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
@ -2476,6 +2476,8 @@
|
||||
<li><a href="reference.html#osxphotos.SearchInfo.asdict">(osxphotos.SearchInfo method)</a>
|
||||
</li>
|
||||
</ul></li>
|
||||
<li><a href="reference.html#osxphotos.ExportResults.attributes">attributes (osxphotos.ExportResults property)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
</section>
|
||||
@ -2565,6 +2567,8 @@
|
||||
<li><a href="reference.html#osxphotos.PhotoInfo.date_modified">date_modified (osxphotos.PhotoInfo property)</a>
|
||||
</li>
|
||||
<li><a href="reference.html#osxphotos.PhotoInfo.date_trashed">date_trashed (osxphotos.PhotoInfo property)</a>
|
||||
</li>
|
||||
<li><a href="reference.html#osxphotos.ExportResults.datetime">datetime (osxphotos.ExportResults property)</a>
|
||||
</li>
|
||||
<li>
|
||||
DB2
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="OSXPhotos" href="overview.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/>
|
||||
<title>osxphotos 0.51.6 documentation</title>
|
||||
<title>osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css" />
|
||||
@ -124,7 +124,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="#"><div class="brand">osxphotos 0.51.6 documentation</div></a>
|
||||
<a href="#"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -147,7 +147,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="#">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.6 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
|
||||
BIN
docs/objects.inv
BIN
docs/objects.inv
Binary file not shown.
@ -6,7 +6,7 @@
|
||||
<link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="OSXPhotos Tutorial" href="tutorial.html" /><link rel="prev" title="Welcome to OSXPhotos’s documentation!" href="index.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/>
|
||||
<title>OSXPhotos - osxphotos 0.51.6 documentation</title>
|
||||
<title>OSXPhotos - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css" />
|
||||
@ -124,7 +124,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.6 documentation</div></a>
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -147,7 +147,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.6 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="OSXPhotos python API" href="reference.html" /><link rel="prev" title="OSXPhotos Template System" href="template_help.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/>
|
||||
<title>OSXPhotos Python Package Overview - osxphotos 0.51.6 documentation</title>
|
||||
<title>OSXPhotos Python Package Overview - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css" />
|
||||
@ -124,7 +124,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.6 documentation</div></a>
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -147,7 +147,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.6 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1"/>
|
||||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/><title>Python Module Index - osxphotos 0.51.6 documentation</title>
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/><title>Python Module Index - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css" />
|
||||
@ -122,7 +122,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.6 documentation</div></a>
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -145,7 +145,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.6 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -4,7 +4,7 @@
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1"/>
|
||||
<meta name="color-scheme" content="light dark"><link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="#" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/><title>Search - osxphotos 0.51.6 documentation</title><link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/><title>Search - osxphotos 0.51.7 documentation</title><link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?digest=30d1aed668e5c3a91c3e3bf6a60b675221979f0e" />
|
||||
@ -121,7 +121,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.6 documentation</div></a>
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -144,7 +144,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.6 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="#" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -6,7 +6,7 @@
|
||||
<link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="OSXPhotos Python Package Overview" href="package_overview.html" /><link rel="prev" title="OSXPhotos Command Line Interface (CLI)" href="cli.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/>
|
||||
<title>OSXPhotos Template System - osxphotos 0.51.6 documentation</title>
|
||||
<title>OSXPhotos Template System - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css" />
|
||||
@ -124,7 +124,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.6 documentation</div></a>
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -147,7 +147,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.6 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
@ -363,45 +363,51 @@
|
||||
<tr class="row-odd"><td><p>{favorite}</p></td>
|
||||
<td><p>Photo has been marked as favorite?; True/False value, use in format ‘{favorite?VALUE_IF_TRUE,VALUE_IF_FALSE}’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{created.date}</p></td>
|
||||
<tr class="row-even"><td><p>{created}</p></td>
|
||||
<td><p>Photo’s creation date in ISO format, e.g. ‘2020-03-22’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{created.year}</p></td>
|
||||
<tr class="row-odd"><td><p>{created.date}</p></td>
|
||||
<td><p>Photo’s creation date in ISO format, e.g. ‘2020-03-22’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{created.year}</p></td>
|
||||
<td><p>4-digit year of photo creation time</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{created.yy}</p></td>
|
||||
<tr class="row-odd"><td><p>{created.yy}</p></td>
|
||||
<td><p>2-digit year of photo creation time</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{created.mm}</p></td>
|
||||
<tr class="row-even"><td><p>{created.mm}</p></td>
|
||||
<td><p>2-digit month of the photo creation time (zero padded)</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{created.month}</p></td>
|
||||
<tr class="row-odd"><td><p>{created.month}</p></td>
|
||||
<td><p>Month name in user’s locale of the photo creation time</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{created.mon}</p></td>
|
||||
<tr class="row-even"><td><p>{created.mon}</p></td>
|
||||
<td><p>Month abbreviation in the user’s locale of the photo creation time</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{created.dd}</p></td>
|
||||
<tr class="row-odd"><td><p>{created.dd}</p></td>
|
||||
<td><p>2-digit day of the month (zero padded) of photo creation time</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{created.dow}</p></td>
|
||||
<tr class="row-even"><td><p>{created.dow}</p></td>
|
||||
<td><p>Day of week in user’s locale of the photo creation time</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{created.doy}</p></td>
|
||||
<tr class="row-odd"><td><p>{created.doy}</p></td>
|
||||
<td><p>3-digit day of year (e.g Julian day) of photo creation time, starting from 1 (zero padded)</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{created.hour}</p></td>
|
||||
<tr class="row-even"><td><p>{created.hour}</p></td>
|
||||
<td><p>2-digit hour of the photo creation time</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{created.min}</p></td>
|
||||
<tr class="row-odd"><td><p>{created.min}</p></td>
|
||||
<td><p>2-digit minute of the photo creation time</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{created.sec}</p></td>
|
||||
<tr class="row-even"><td><p>{created.sec}</p></td>
|
||||
<td><p>2-digit second of the photo creation time</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{created.strftime}</p></td>
|
||||
<tr class="row-odd"><td><p>{created.strftime}</p></td>
|
||||
<td><p>Apply strftime template to file creation date/time. Should be used in form {created.strftime,TEMPLATE} where TEMPLATE is a valid strftime template, e.g. {created.strftime,%Y-%U} would result in year-week number of year: ‘2020-23’. If used with no template will return null value. See <a class="reference external" href="https://strftime.org/">https://strftime.org/</a> for help on strftime templates.</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{modified}</p></td>
|
||||
<td><p>Photo’s modification date in ISO format, e.g. ‘2020-03-22’; uses creation date if photo is not modified</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{modified.date}</p></td>
|
||||
<td><p>Photo’s modification date in ISO format, e.g. ‘2020-03-22’; uses creation date if photo is not modified</p></td>
|
||||
</tr>
|
||||
@ -441,157 +447,160 @@
|
||||
<tr class="row-odd"><td><p>{modified.strftime}</p></td>
|
||||
<td><p>Apply strftime template to file modification date/time. Should be used in form {modified.strftime,TEMPLATE} where TEMPLATE is a valid strftime template, e.g. {modified.strftime,%Y-%U} would result in year-week number of year: ‘2020-23’. If used with no template will return null value. Uses creation date if photo is not modified. See <a class="reference external" href="https://strftime.org/">https://strftime.org/</a> for help on strftime templates.</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{today.date}</p></td>
|
||||
<tr class="row-even"><td><p>{today}</p></td>
|
||||
<td><p>Current date in iso format, e.g. ‘2020-03-22’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{today.year}</p></td>
|
||||
<tr class="row-odd"><td><p>{today.date}</p></td>
|
||||
<td><p>Current date in iso format, e.g. ‘2020-03-22’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{today.year}</p></td>
|
||||
<td><p>4-digit year of current date</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{today.yy}</p></td>
|
||||
<tr class="row-odd"><td><p>{today.yy}</p></td>
|
||||
<td><p>2-digit year of current date</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{today.mm}</p></td>
|
||||
<tr class="row-even"><td><p>{today.mm}</p></td>
|
||||
<td><p>2-digit month of the current date (zero padded)</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{today.month}</p></td>
|
||||
<tr class="row-odd"><td><p>{today.month}</p></td>
|
||||
<td><p>Month name in user’s locale of the current date</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{today.mon}</p></td>
|
||||
<tr class="row-even"><td><p>{today.mon}</p></td>
|
||||
<td><p>Month abbreviation in the user’s locale of the current date</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{today.dd}</p></td>
|
||||
<tr class="row-odd"><td><p>{today.dd}</p></td>
|
||||
<td><p>2-digit day of the month (zero padded) of current date</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{today.dow}</p></td>
|
||||
<tr class="row-even"><td><p>{today.dow}</p></td>
|
||||
<td><p>Day of week in user’s locale of the current date</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{today.doy}</p></td>
|
||||
<tr class="row-odd"><td><p>{today.doy}</p></td>
|
||||
<td><p>3-digit day of year (e.g Julian day) of current date, starting from 1 (zero padded)</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{today.hour}</p></td>
|
||||
<tr class="row-even"><td><p>{today.hour}</p></td>
|
||||
<td><p>2-digit hour of the current date</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{today.min}</p></td>
|
||||
<tr class="row-odd"><td><p>{today.min}</p></td>
|
||||
<td><p>2-digit minute of the current date</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{today.sec}</p></td>
|
||||
<tr class="row-even"><td><p>{today.sec}</p></td>
|
||||
<td><p>2-digit second of the current date</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{today.strftime}</p></td>
|
||||
<tr class="row-odd"><td><p>{today.strftime}</p></td>
|
||||
<td><p>Apply strftime template to current date/time. Should be used in form {today.strftime,TEMPLATE} where TEMPLATE is a valid strftime template, e.g. {today.strftime,%Y-%U} would result in year-week number of year: ‘2020-23’. If used with no template will return null value. See <a class="reference external" href="https://strftime.org/">https://strftime.org/</a> for help on strftime templates.</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{place.name}</p></td>
|
||||
<tr class="row-even"><td><p>{place.name}</p></td>
|
||||
<td><p>Place name from the photo’s reverse geolocation data, as displayed in Photos</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{place.country_code}</p></td>
|
||||
<tr class="row-odd"><td><p>{place.country_code}</p></td>
|
||||
<td><p>The ISO country code from the photo’s reverse geolocation data</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{place.name.country}</p></td>
|
||||
<tr class="row-even"><td><p>{place.name.country}</p></td>
|
||||
<td><p>Country name from the photo’s reverse geolocation data</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{place.name.state_province}</p></td>
|
||||
<tr class="row-odd"><td><p>{place.name.state_province}</p></td>
|
||||
<td><p>State or province name from the photo’s reverse geolocation data</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{place.name.city}</p></td>
|
||||
<tr class="row-even"><td><p>{place.name.city}</p></td>
|
||||
<td><p>City or locality name from the photo’s reverse geolocation data</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{place.name.area_of_interest}</p></td>
|
||||
<tr class="row-odd"><td><p>{place.name.area_of_interest}</p></td>
|
||||
<td><p>Area of interest name (e.g. landmark or public place) from the photo’s reverse geolocation data</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{place.address}</p></td>
|
||||
<tr class="row-even"><td><p>{place.address}</p></td>
|
||||
<td><p>Postal address from the photo’s reverse geolocation data, e.g. ‘2007 18th St NW, Washington, DC 20009, United States’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{place.address.street}</p></td>
|
||||
<tr class="row-odd"><td><p>{place.address.street}</p></td>
|
||||
<td><p>Street part of the postal address, e.g. ‘2007 18th St NW’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{place.address.city}</p></td>
|
||||
<tr class="row-even"><td><p>{place.address.city}</p></td>
|
||||
<td><p>City part of the postal address, e.g. ‘Washington’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{place.address.state_province}</p></td>
|
||||
<tr class="row-odd"><td><p>{place.address.state_province}</p></td>
|
||||
<td><p>State/province part of the postal address, e.g. ‘DC’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{place.address.postal_code}</p></td>
|
||||
<tr class="row-even"><td><p>{place.address.postal_code}</p></td>
|
||||
<td><p>Postal code part of the postal address, e.g. ‘20009’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{place.address.country}</p></td>
|
||||
<tr class="row-odd"><td><p>{place.address.country}</p></td>
|
||||
<td><p>Country name of the postal address, e.g. ‘United States’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{place.address.country_code}</p></td>
|
||||
<tr class="row-even"><td><p>{place.address.country_code}</p></td>
|
||||
<td><p>ISO country code of the postal address, e.g. ‘US’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{searchinfo.season}</p></td>
|
||||
<tr class="row-odd"><td><p>{searchinfo.season}</p></td>
|
||||
<td><p>Season of the year associated with a photo, e.g. ‘Summer’; (Photos 5+ only, applied automatically by Photos’ image categorization algorithms).</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{exif.camera_make}</p></td>
|
||||
<tr class="row-even"><td><p>{exif.camera_make}</p></td>
|
||||
<td><p>Camera make from original photo’s EXIF information as imported by Photos, e.g. ‘Apple’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{exif.camera_model}</p></td>
|
||||
<tr class="row-odd"><td><p>{exif.camera_model}</p></td>
|
||||
<td><p>Camera model from original photo’s EXIF information as imported by Photos, e.g. ‘iPhone 6s’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{exif.lens_model}</p></td>
|
||||
<tr class="row-even"><td><p>{exif.lens_model}</p></td>
|
||||
<td><p>Lens model from original photo’s EXIF information as imported by Photos, e.g. ‘iPhone 6s back camera 4.15mm f/2.2’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{moment}</p></td>
|
||||
<tr class="row-odd"><td><p>{moment}</p></td>
|
||||
<td><p>The moment title of the photo</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{uuid}</p></td>
|
||||
<tr class="row-even"><td><p>{uuid}</p></td>
|
||||
<td><p>Photo’s internal universally unique identifier (UUID) for the photo, a 36-character string unique to the photo, e.g. ‘128FB4C6-0B16-4E7D-9108-FB2E90DA1546’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{shortuuid}</p></td>
|
||||
<tr class="row-odd"><td><p>{shortuuid}</p></td>
|
||||
<td><p>A shorter representation of photo’s internal universally unique identifier (UUID) for the photo, a 22-character string unique to the photo, e.g. ‘JYsxugP9UjetmCbBCHXcmu’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{id}</p></td>
|
||||
<tr class="row-even"><td><p>{id}</p></td>
|
||||
<td><p>A unique number for the photo based on its primary key in the Photos database. A sequential integer, e.g. 1, 2, 3…etc. Each asset associated with a photo (e.g. an image and Live Photo preview) will share the same id. May be formatted using a python string format code. For example, to format as a 5-digit integer and pad with zeros, use ‘{id:05d}’ which results in 00001, 00002, 00003…etc.</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{album_seq}</p></td>
|
||||
<tr class="row-odd"><td><p>{album_seq}</p></td>
|
||||
<td><p>An integer, starting at 0, indicating the photo’s index (sequence) in the containing album. Only valid when used in a ‘–filename’ template and only when ‘{album}’ or ‘{folder_album}’ is used in the ‘–directory’ template. For example ‘–directory “{folder_album}” –filename “{album<em>seq}</em>{original_name}”’. To start counting at a value other than 0, append append ‘(starting_value)’ to the field name. For example, to start counting at 1 instead of 0: ‘{album_seq(1)}’. May be formatted using a python string format code. For example, to format as a 5-digit integer and pad with zeros, use ‘{album_seq:05d}’ which results in 00000, 00001, 00002…etc. To format while also using a starting value: ‘{album_seq:05d(1)}’ which results in 0001, 00002…etc.This may result in incorrect sequences if you have duplicate albums with the same name; see also ‘{folder_album_seq}’.</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{folder_album_seq}</p></td>
|
||||
<tr class="row-even"><td><p>{folder_album_seq}</p></td>
|
||||
<td><p>An integer, starting at 0, indicating the photo’s index (sequence) in the containing album and folder path. Only valid when used in a ‘–filename’ template and only when ‘{folder_album}’ is used in the ‘–directory’ template. For example ‘–directory “{folder_album}” –filename “{folder_album<em>seq}</em>{original_name}”’. To start counting at a value other than 0, append ‘(starting_value)’ to the field name. For example, to start counting at 1 instead of 0: ‘{folder_album_seq(1)}’ May be formatted using a python string format code. For example, to format as a 5-digit integer and pad with zeros, use ‘{folder_album_seq:05d}’ which results in 00000, 00001, 00002…etc. To format while also using a starting value: ‘{folder_album_seq:05d(1)}’ which results in 0001, 00002…etc.This may result in incorrect sequences if you have duplicate albums with the same name in the same folder; see also ‘{album_seq}’.</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{comma}</p></td>
|
||||
<tr class="row-odd"><td><p>{comma}</p></td>
|
||||
<td><p>A comma: ‘,’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{semicolon}</p></td>
|
||||
<tr class="row-even"><td><p>{semicolon}</p></td>
|
||||
<td><p>A semicolon: ‘;’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{questionmark}</p></td>
|
||||
<tr class="row-odd"><td><p>{questionmark}</p></td>
|
||||
<td><p>A question mark: ‘?’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{pipe}</p></td>
|
||||
<tr class="row-even"><td><p>{pipe}</p></td>
|
||||
<td><p>A vertical pipe: ‘|’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{openbrace}</p></td>
|
||||
<tr class="row-odd"><td><p>{openbrace}</p></td>
|
||||
<td><p>An open brace: ‘{’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{closebrace}</p></td>
|
||||
<tr class="row-even"><td><p>{closebrace}</p></td>
|
||||
<td><p>A close brace: ‘}’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{openparens}</p></td>
|
||||
<tr class="row-odd"><td><p>{openparens}</p></td>
|
||||
<td><p>An open parentheses: ‘(’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{closeparens}</p></td>
|
||||
<tr class="row-even"><td><p>{closeparens}</p></td>
|
||||
<td><p>A close parentheses: ‘)’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{openbracket}</p></td>
|
||||
<tr class="row-odd"><td><p>{openbracket}</p></td>
|
||||
<td><p>An open bracket: ‘[’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{closebracket}</p></td>
|
||||
<tr class="row-even"><td><p>{closebracket}</p></td>
|
||||
<td><p>A close bracket: ‘]’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{newline}</p></td>
|
||||
<tr class="row-odd"><td><p>{newline}</p></td>
|
||||
<td><p>A newline: ‘n’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{lf}</p></td>
|
||||
<tr class="row-even"><td><p>{lf}</p></td>
|
||||
<td><p>A line feed: ‘n’, alias for {newline}</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{cr}</p></td>
|
||||
<tr class="row-odd"><td><p>{cr}</p></td>
|
||||
<td><p>A carriage return: ‘r’</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{crlf}</p></td>
|
||||
<tr class="row-even"><td><p>{crlf}</p></td>
|
||||
<td><p>A carriage return + line feed: ‘rn’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{tab}</p></td>
|
||||
<tr class="row-odd"><td><p>{tab}</p></td>
|
||||
<td><dl class="field-list simple">
|
||||
<dt class="field-odd">A tab</dt>
|
||||
<dd class="field-odd"><p>‘t’</p>
|
||||
@ -599,73 +608,73 @@
|
||||
</dl>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{osxphotos_version}</p></td>
|
||||
<td><p>The osxphotos version, e.g. ‘0.51.6’</p></td>
|
||||
<tr class="row-even"><td><p>{osxphotos_version}</p></td>
|
||||
<td><p>The osxphotos version, e.g. ‘0.51.7’</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{osxphotos_cmd_line}</p></td>
|
||||
<tr class="row-odd"><td><p>{osxphotos_cmd_line}</p></td>
|
||||
<td><p>The full command line used to run osxphotos</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{album}</p></td>
|
||||
<tr class="row-even"><td><p>{album}</p></td>
|
||||
<td><p>Album(s) photo is contained in</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{folder_album}</p></td>
|
||||
<tr class="row-odd"><td><p>{folder_album}</p></td>
|
||||
<td><p>Folder path + album photo is contained in. e.g. ‘Folder/Subfolder/Album’ or just ‘Album’ if no enclosing folder</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{project}</p></td>
|
||||
<tr class="row-even"><td><p>{project}</p></td>
|
||||
<td><p>Project(s) photo is contained in (such as greeting cards, calendars, slideshows)</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{album_project}</p></td>
|
||||
<tr class="row-odd"><td><p>{album_project}</p></td>
|
||||
<td><p>Album(s) and project(s) photo is contained in; treats projects as regular albums</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{folder_album_project}</p></td>
|
||||
<tr class="row-even"><td><p>{folder_album_project}</p></td>
|
||||
<td><p>Folder path + album (includes projects as albums) photo is contained in. e.g. ‘Folder/Subfolder/Album’ or just ‘Album’ if no enclosing folder</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{keyword}</p></td>
|
||||
<tr class="row-odd"><td><p>{keyword}</p></td>
|
||||
<td><p>Keyword(s) assigned to photo</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{person}</p></td>
|
||||
<tr class="row-even"><td><p>{person}</p></td>
|
||||
<td><p>Person(s) / face(s) in a photo</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{label}</p></td>
|
||||
<tr class="row-odd"><td><p>{label}</p></td>
|
||||
<td><p>Image categorization label associated with a photo (Photos 5+ only). Labels are added automatically by Photos using machine learning algorithms to categorize images. These are not the same as {keyword} which refers to the user-defined keywords/tags applied in Photos.</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{label_normalized}</p></td>
|
||||
<tr class="row-even"><td><p>{label_normalized}</p></td>
|
||||
<td><p>All lower case version of ‘label’ (Photos 5+ only)</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{comment}</p></td>
|
||||
<tr class="row-odd"><td><p>{comment}</p></td>
|
||||
<td><p>Comment(s) on shared Photos; format is ‘Person name: comment text’ (Photos 5+ only)</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{exiftool}</p></td>
|
||||
<tr class="row-even"><td><p>{exiftool}</p></td>
|
||||
<td><p>Format: ‘{exiftool:GROUP:TAGNAME}’; use exiftool (https://exiftool.org) to extract metadata, in form GROUP:TAGNAME, from image. E.g. ‘{exiftool:EXIF:Make}’ to get camera make, or {exiftool:IPTC:Keywords} to extract keywords. See https://exiftool.org/TagNames/ for list of valid tag names. You must specify group (e.g. EXIF, IPTC, etc) as used in <code class="docutils literal notranslate"><span class="pre">exiftool</span> <span class="pre">-G</span></code>. exiftool must be installed in the path to use this template.</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{searchinfo.holiday}</p></td>
|
||||
<tr class="row-odd"><td><p>{searchinfo.holiday}</p></td>
|
||||
<td><p>Holiday names associated with a photo, e.g. ‘Christmas Day’; (Photos 5+ only, applied automatically by Photos’ image categorization algorithms).</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{searchinfo.activity}</p></td>
|
||||
<tr class="row-even"><td><p>{searchinfo.activity}</p></td>
|
||||
<td><p>Activities associated with a photo, e.g. ‘Sporting Event’; (Photos 5+ only, applied automatically by Photos’ image categorization algorithms).</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{searchinfo.venue}</p></td>
|
||||
<tr class="row-odd"><td><p>{searchinfo.venue}</p></td>
|
||||
<td><p>Venues associated with a photo, e.g. name of restaurant; (Photos 5+ only, applied automatically by Photos’ image categorization algorithms).</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{searchinfo.venue_type}</p></td>
|
||||
<tr class="row-even"><td><p>{searchinfo.venue_type}</p></td>
|
||||
<td><p>Venue types associated with a photo, e.g. ‘Restaurant’; (Photos 5+ only, applied automatically by Photos’ image categorization algorithms).</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{photo}</p></td>
|
||||
<tr class="row-odd"><td><p>{photo}</p></td>
|
||||
<td><p>Provides direct access to the PhotoInfo object for the photo. Must be used in format ‘{photo.property}’ where ‘property’ represents a PhotoInfo property. For example: ‘{photo.favorite}’ is the same as ‘{favorite}’ and ‘{photo.place.name}’ is the same as ‘{place.name}’. ‘{photo}’ provides access to properties that are not available as separate template fields but it assumes some knowledge of the underlying PhotoInfo class. See <a class="reference external" href="https://rhettbull.github.io/osxphotos/">https://rhettbull.github.io/osxphotos/</a> for additional documentation on the PhotoInfo class.</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{detected_text}</p></td>
|
||||
<tr class="row-even"><td><p>{detected_text}</p></td>
|
||||
<td><p>List of text strings found in the image after performing text detection. Using ‘{detected_text}’ will cause osxphotos to perform text detection on your photos using the built-in macOS text detection algorithms which will slow down your export. The results for each photo will be cached in the export database so that future exports with ‘–update’ do not need to reprocess each photo. You may pass a confidence threshold value between 0.0 and 1.0 after a colon as in ‘{detected_text:0.5}’; The default confidence threshold is 0.75. ‘{detected_text}’ works only on macOS Catalina (10.15) or later. Note: this feature is not the same thing as Live Text in macOS Monterey, which osxphotos does not yet support.</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{shell_quote}</p></td>
|
||||
<tr class="row-odd"><td><p>{shell_quote}</p></td>
|
||||
<td><p>Use in form ‘{shell_quote,TEMPLATE}’; quotes the rendered TEMPLATE value(s) for safe usage in the shell, e.g. My file.jpeg => ‘My file.jpeg’; only adds quotes if needed.</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{strip}</p></td>
|
||||
<tr class="row-even"><td><p>{strip}</p></td>
|
||||
<td><p>Use in form ‘{strip,TEMPLATE}’; strips whitespace from begining and end of rendered TEMPLATE value(s).</p></td>
|
||||
</tr>
|
||||
<tr class="row-even"><td><p>{format}</p></td>
|
||||
<tr class="row-odd"><td><p>{format}</p></td>
|
||||
<td><p>Use in form, ‘{format:TYPE:FORMAT,TEMPLATE}’; converts TEMPLATE value to TYPE then formats the value using Python string formatting codes specified by FORMAT; TYPE is one of: ‘int’, ‘float’, or ‘str’. For example, ‘{format:float:.1f,{exiftool:EXIF:FocalLength}}’ will format focal length to 1 decimal place (e.g. ‘100.0’).</p></td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td><p>{function}</p></td>
|
||||
<tr class="row-even"><td><p>{function}</p></td>
|
||||
<td><p>Execute a python function from an external file and use return value as template substitution. Use in format: {function:file.py::function_name} where ‘file.py’ is the name of the python file and ‘function_name’ is the name of the function to call. The function will be passed the PhotoInfo object for the photo. See https://github.com/RhetTbull/osxphotos/blob/master/examples/template_function.py for an example of how to implement a template function.</p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="OSXPhotos Command Line Interface (CLI)" href="cli.html" /><link rel="prev" title="OSXPhotos" href="overview.html" />
|
||||
|
||||
<meta name="generator" content="sphinx-4.4.0, furo 2022.04.07"/>
|
||||
<title>OSXPhotos Tutorial - osxphotos 0.51.6 documentation</title>
|
||||
<title>OSXPhotos Tutorial - osxphotos 0.51.7 documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?digest=68f4518137b9aefe99b631505a2064c3c42c9852" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/copybutton.css" />
|
||||
@ -124,7 +124,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.6 documentation</div></a>
|
||||
<a href="index.html"><div class="brand">osxphotos 0.51.7 documentation</div></a>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<div class="theme-toggle-container theme-toggle-header">
|
||||
@ -147,7 +147,7 @@
|
||||
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
|
||||
|
||||
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.6 documentation</span>
|
||||
<span class="sidebar-brand-text">osxphotos 0.51.7 documentation</span>
|
||||
|
||||
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
|
||||
<input class="sidebar-search" placeholder=Search name="q" aria-label="Search">
|
||||
|
||||
@ -196,6 +196,8 @@ Template Substitutions
|
||||
- True if template is being rendered for the edited version of a photo, otherwise False.
|
||||
* - {favorite}
|
||||
- Photo has been marked as favorite?; True/False value, use in format '{favorite?VALUE_IF_TRUE,VALUE_IF_FALSE}'
|
||||
* - {created}
|
||||
- Photo's creation date in ISO format, e.g. '2020-03-22'
|
||||
* - {created.date}
|
||||
- Photo's creation date in ISO format, e.g. '2020-03-22'
|
||||
* - {created.year}
|
||||
@ -222,6 +224,8 @@ Template Substitutions
|
||||
- 2-digit second of the photo creation time
|
||||
* - {created.strftime}
|
||||
- Apply strftime template to file creation date/time. Should be used in form {created.strftime,TEMPLATE} where TEMPLATE is a valid strftime template, e.g. {created.strftime,%Y-%U} would result in year-week number of year: '2020-23'. If used with no template will return null value. See https://strftime.org/ for help on strftime templates.
|
||||
* - {modified}
|
||||
- Photo's modification date in ISO format, e.g. '2020-03-22'; uses creation date if photo is not modified
|
||||
* - {modified.date}
|
||||
- Photo's modification date in ISO format, e.g. '2020-03-22'; uses creation date if photo is not modified
|
||||
* - {modified.year}
|
||||
@ -248,6 +252,8 @@ Template Substitutions
|
||||
- 2-digit second of the photo modification time; uses creation date if photo is not modified
|
||||
* - {modified.strftime}
|
||||
- Apply strftime template to file modification date/time. Should be used in form {modified.strftime,TEMPLATE} where TEMPLATE is a valid strftime template, e.g. {modified.strftime,%Y-%U} would result in year-week number of year: '2020-23'. If used with no template will return null value. Uses creation date if photo is not modified. See https://strftime.org/ for help on strftime templates.
|
||||
* - {today}
|
||||
- Current date in iso format, e.g. '2020-03-22'
|
||||
* - {today.date}
|
||||
- Current date in iso format, e.g. '2020-03-22'
|
||||
* - {today.year}
|
||||
@ -351,7 +357,7 @@ Template Substitutions
|
||||
* - {tab}
|
||||
- :A tab: '\t'
|
||||
* - {osxphotos_version}
|
||||
- The osxphotos version, e.g. '0.51.6'
|
||||
- The osxphotos version, e.g. '0.51.7'
|
||||
* - {osxphotos_cmd_line}
|
||||
- The full command line used to run osxphotos
|
||||
* - {album}
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
""" version info """
|
||||
|
||||
__version__ = "0.51.6"
|
||||
__version__ = "0.51.7"
|
||||
|
||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user