Beta fix for Digikam reading XMP

This commit is contained in:
Rhet Turnbull
2021-01-18 08:55:44 -08:00
parent db430173b5
commit 3799594473
2 changed files with 101 additions and 79 deletions

View File

@@ -1,3 +1,3 @@
""" version info """ """ version info """
__version__ = "0.39.21" __version__ = "0.39.22"

View File

@@ -16,7 +16,7 @@
% else: % else:
<dc:description> <dc:description>
<rdf:Alt> <rdf:Alt>
<rdf:li xml:lang='x-default'>${desc | x}</rdf:li> <rdf:li xml:lang='x-default'>${desc | x}</rdf:li>
</rdf:Alt> </rdf:Alt>
</dc:description> </dc:description>
% endif % endif
@@ -43,7 +43,7 @@
<dc:subject> <dc:subject>
<rdf:Bag> <rdf:Bag>
% for subj in subject: % for subj in subject:
<rdf:li>${subj | x}</rdf:li> <rdf:li>${subj | x}</rdf:li>
% endfor % endfor
</rdf:Bag> </rdf:Bag>
</dc:subject> </dc:subject>
@@ -59,11 +59,11 @@
<%def name="iptc_personinimage(persons)"> <%def name="iptc_personinimage(persons)">
% if persons: % if persons:
<Iptc4xmpExt:PersonInImage> <Iptc4xmpExt:PersonInImage>
<rdf:Bag> <rdf:Bag>
% for person in persons: % for person in persons:
<rdf:li>${person | x}</rdf:li> <rdf:li>${person | x}</rdf:li>
% endfor % endfor
</rdf:Bag> </rdf:Bag>
</Iptc4xmpExt:PersonInImage> </Iptc4xmpExt:PersonInImage>
% endif % endif
</%def> </%def>
@@ -71,11 +71,11 @@
<%def name="dk_tagslist(keywords)"> <%def name="dk_tagslist(keywords)">
% if keywords: % if keywords:
<digiKam:TagsList> <digiKam:TagsList>
<rdf:Seq> <rdf:Seq>
% for keyword in keywords: % for keyword in keywords:
<rdf:li>${keyword | x}</rdf:li> <rdf:li>${keyword | x}</rdf:li>
% endfor % endfor
</rdf:Seq> </rdf:Seq>
</digiKam:TagsList> </digiKam:TagsList>
% endif % endif
</%def> </%def>
@@ -105,37 +105,44 @@
% endif % endif
</%def> </%def>
<%def name="face_regions(photo)"> <%def name="mwg_face_regions(photo)">
% if photo.face_info: % if photo.face_info:
<mwg-rs:Regions rdf:parseType="Resource"> <mwg-rs:Regions rdf:parseType="Resource">
<mwg-rs:AppliedToDimensions stDim:w=${photo.width} stDim:h=${photo.height} stDim:unit="pixel"/> <mwg-rs:AppliedToDimensions rdf:parseType="Resource">
<mwg-rs:RegionList> <stDim:unit>pixel</stDim:unit>
<rdf:Bag> </mwg-rs:AppliedToDimensions>
% for face in photo.face_info: <mwg-rs:RegionList>
<rdf:li> <rdf:Bag>
<rdf:Description % for face in photo.face_info:
mwg-rs:Rotation="${face.roll}" <rdf:li rdf:parseType="Resource">
mwg-rs:Name="${face.name}" <mwg-rs:Area rdf:parseType="Resource">
mwg-rs:Type="Face"> <stArea:h>${'{0:.6f}'.format(face.mwg_rs_area.h)}</stArea:h>
<mwg-rs:Area <stArea:w>${'{0:.6f}'.format(face.mwg_rs_area.w)}</stArea:w>
stArea:h="${'{0:.6f}'.format(face.mwg_rs_area.h)}" <stArea:x>${'{0:.6f}'.format(face.mwg_rs_area.x)}</stArea:x>
stArea:w="${'{0:.6f}'.format(face.mwg_rs_area.w)}" <stArea:y>${'{0:.6f}'.format(face.mwg_rs_area.y)}</stArea:y>
stArea:x="${'{0:.6f}'.format(face.mwg_rs_area.x)}" <stArea:unit>normalized</stArea:unit>
stArea:y="${'{0:.6f}'.format(face.mwg_rs_area.y)}" </mwg-rs:Area>
stArea:unit="normalized"/> <mwg-rs:Name>${face.name}</mwg-rs:Name>
</rdf:Description> <mwg-rs:Rotation>${face.roll}</mwg-rs:Rotation>
</rdf:li> <mwg-rs:Type>Face</mwg-rs:Type>
% endfor </rdf:li>
</rdf:Bag> % endfor
</mwg-rs:RegionList> </rdf:Bag>
</mwg-rs:RegionList>
</mwg-rs:Regions> </mwg-rs:Regions>
% endif
</%def>
<%def name="mpri_face_regions(photo)">
% if photo.face_info:
<MP:RegionInfo rdf:parseType="Resource"> <MP:RegionInfo rdf:parseType="Resource">
<MPRI:Regions> <MPRI:Regions>
<rdf:Bag> <rdf:Bag>
% for face in photo.face_info: % for face in photo.face_info:
<rdf:li <rdf:li rdf:parseType="Resource">
MPReg:Rectangle="${'{0:.6f}'.format(face.mpri_reg_rect.x)}, ${'{0:.6f}'.format(face.mpri_reg_rect.y)}, ${'{0:.6f}'.format(face.mpri_reg_rect.h)}, ${'{0:.6f}'.format(face.mpri_reg_rect.w)}" <MPReg:PersonDisplayName>${face.name}</MPReg:PersonDisplayName>
MPReg:PersonDisplayName="${face.name}"/> <MPReg:Rectangle>${'{0:.6f}'.format(face.mpri_reg_rect.x)}, ${'{0:.6f}'.format(face.mpri_reg_rect.y)}, ${'{0:.6f}'.format(face.mpri_reg_rect.h)}, ${'{0:.6f}'.format(face.mpri_reg_rect.w)}</MPReg:Rectangle>
</rdf:li>
% endfor % endfor
</rdf:Bag> </rdf:Bag>
</MPRI:Regions> </MPRI:Regions>
@@ -143,46 +150,61 @@
% endif % endif
</%def> </%def>
<?xpacket begin="${"\uFEFF"}" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="osxphotos ${version}"> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="osxphotos ${version}">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="" <rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"> xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
${photoshop_sidecar_for_extension(extension)} ${photoshop_sidecar_for_extension(extension)}
${dc_description(description)} ${dc_description(description)}
${dc_title(photo.title)} ${dc_title(photo.title)}
${dc_subject(subjects)} ${dc_subject(subjects)}
${dc_datecreated(photo.date)} ${dc_datecreated(photo.date)}
</rdf:Description> </rdf:Description>
<rdf:Description rdf:about=""
xmlns:Iptc4xmpExt='http://iptc.org/std/Iptc4xmpExt/2008-02-29/'> <rdf:Description rdf:about=""
${iptc_personinimage(persons)} xmlns:Iptc4xmpExt='http://iptc.org/std/Iptc4xmpExt/2008-02-29/'>
</rdf:Description> ${iptc_personinimage(persons)}
<rdf:Description rdf:about="" </rdf:Description>
xmlns:digiKam='http://www.digikam.org/ns/1.0/'>
${dk_tagslist(keywords)} <rdf:Description rdf:about=""
</rdf:Description> xmlns:digiKam='http://www.digikam.org/ns/1.0/'>
<rdf:Description rdf:about="" ${dk_tagslist(keywords)}
xmlns:xmp='http://ns.adobe.com/xap/1.0/'> </rdf:Description>
${adobe_createdate(photo.date)}
${adobe_modifydate(photo.date)} <rdf:Description rdf:about=""
</rdf:Description> xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
<rdf:Description rdf:about="" ${adobe_createdate(photo.date)}
xmlns:exif='http://ns.adobe.com/exif/1.0/'> ${adobe_modifydate(photo.date)}
${gps_info(*photo.location)} </rdf:Description>
</rdf:Description>
<rdf:Description rdf:about='' <rdf:Description rdf:about=""
xmlns:tiff='http://ns.adobe.com/tiff/1.0/'> xmlns:exif='http://ns.adobe.com/exif/1.0/'>
${orientation(photo.orientation)} ${gps_info(*photo.location)}
</rdf:Description> </rdf:Description>
<rdf:Description rdf:about=""
xmlns:mwg-rs="http://www.metadataworkinggroup.com/schemas/regions/" <rdf:Description rdf:about=''
xmlns:stArea="http://ns.adobe.com/xmp/sType/Area#" xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" ${orientation(photo.orientation)}
xmlns:MP="http://ns.microsoft.com/photo/1.2/" </rdf:Description>
xmlns:MPRI="http://ns.microsoft.com/photo/1.2/t/RegionInfo#"
xmlns:MPReg="http://ns.microsoft.com/photo/1.2/t/Region#"> <rdf:Description rdf:about=""
${face_regions(photo)} xmlns:mwg-rs="http://www.metadataworkinggroup.com/schemas/regions/"
</rdf:Description> xmlns:stArea="http://ns.adobe.com/xmp/sType/Area#"
</rdf:RDF> xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#">
${mwg_face_regions(photo)}
</rdf:Description>
<rdf:Description rdf:about=""
xmlns:MP="http://ns.microsoft.com/photo/1.2/"
xmlns:MPRI="http://ns.microsoft.com/photo/1.2/t/RegionInfo#"
xmlns:MPReg="http://ns.microsoft.com/photo/1.2/t/Region#">
${mpri_face_regions(photo)}
</rdf:Description>
</rdf:RDF>
</x:xmpmeta> </x:xmpmeta>
<?xpacket end="w"?>