Refactor update osxmetadata (#804)

* Updated osxmetadata to use v1.0.0

* Added README_DEV

* fix for missing detected_text xattr

* fix for missing detected_text xattr
This commit is contained in:
Rhet Turnbull
2022-10-15 22:12:11 -07:00
committed by GitHub
parent 0ba8bc3eb9
commit 5665cf1804
9 changed files with 142 additions and 69 deletions

View File

@@ -6514,7 +6514,7 @@ def test_export_finder_tag_keywords():
md = OSXMetaData(CLI_FINDER_TAGS[uuid]["File:FileName"])
keywords = CLI_FINDER_TAGS[uuid]["IPTC:Keywords"]
keywords = [keywords] if type(keywords) != list else keywords
expected = [Tag(x) for x in keywords]
expected = [Tag(x, 0) for x in keywords]
assert sorted(md.tags) == sorted(expected)
# run again with --update, should skip writing extended attributes
@@ -6536,7 +6536,7 @@ def test_export_finder_tag_keywords():
md = OSXMetaData(CLI_FINDER_TAGS[uuid]["File:FileName"])
keywords = CLI_FINDER_TAGS[uuid]["IPTC:Keywords"]
keywords = [keywords] if type(keywords) != list else keywords
expected = [Tag(x) for x in keywords]
expected = [Tag(x, 0) for x in keywords]
assert sorted(md.tags) == sorted(expected)
# clear tags and run again, should update extended attributes
@@ -6560,7 +6560,7 @@ def test_export_finder_tag_keywords():
md = OSXMetaData(CLI_FINDER_TAGS[uuid]["File:FileName"])
keywords = CLI_FINDER_TAGS[uuid]["IPTC:Keywords"]
keywords = [keywords] if type(keywords) != list else keywords
expected = [Tag(x) for x in keywords]
expected = [Tag(x, 0) for x in keywords]
assert sorted(md.tags) == sorted(expected)
@@ -6589,7 +6589,7 @@ def test_export_finder_tag_template():
md = OSXMetaData(CLI_FINDER_TAGS[uuid]["File:FileName"])
keywords = CLI_FINDER_TAGS[uuid]["XMP:PersonInImage"]
keywords = [keywords] if type(keywords) != list else keywords
expected = [Tag(x) for x in keywords]
expected = [Tag(x, 0) for x in keywords]
assert sorted(md.tags) == sorted(expected)
# run again with --update, should skip writing extended attributes
@@ -6612,7 +6612,7 @@ def test_export_finder_tag_template():
md = OSXMetaData(CLI_FINDER_TAGS[uuid]["File:FileName"])
keywords = CLI_FINDER_TAGS[uuid]["XMP:PersonInImage"]
keywords = [keywords] if type(keywords) != list else keywords
expected = [Tag(x) for x in keywords]
expected = [Tag(x, 0) for x in keywords]
assert sorted(md.tags) == sorted(expected)
# clear tags and run again, should update extended attributes
@@ -6637,7 +6637,7 @@ def test_export_finder_tag_template():
md = OSXMetaData(CLI_FINDER_TAGS[uuid]["File:FileName"])
keywords = CLI_FINDER_TAGS[uuid]["XMP:PersonInImage"]
keywords = [keywords] if type(keywords) != list else keywords
expected = [Tag(x) for x in keywords]
expected = [Tag(x, 0) for x in keywords]
assert sorted(md.tags) == sorted(expected)
@@ -6670,7 +6670,7 @@ def test_export_finder_tag_template_multiple():
keywords = [keywords] if type(keywords) != list else keywords
persons = CLI_FINDER_TAGS[uuid]["XMP:PersonInImage"]
persons = [persons] if type(persons) != list else persons
expected = [Tag(x) for x in set(keywords + persons)]
expected = [Tag(x, 0) for x in set(keywords + persons)]
assert sorted(md.tags) == sorted(expected)
@@ -6702,7 +6702,7 @@ def test_export_finder_tag_template_keywords():
keywords = [keywords] if type(keywords) != list else keywords
persons = CLI_FINDER_TAGS[uuid]["XMP:PersonInImage"]
persons = [persons] if type(persons) != list else persons
expected = [Tag(x) for x in set(keywords + persons)]
expected = [Tag(x, 0) for x in set(keywords + persons)]
assert sorted(md.tags) == sorted(expected)
@@ -6731,17 +6731,23 @@ def test_export_finder_tag_template_multi_field():
md = OSXMetaData(CLI_FINDER_TAGS[uuid]["File:FileName"])
title = CLI_FINDER_TAGS[uuid]["XMP:Title"] or ""
descr = CLI_FINDER_TAGS[uuid]["XMP:Description"] or ""
expected = [Tag(f"{title};{descr}")]
expected = [Tag(f"{title};{descr}", 0)]
assert sorted(md.tags) == sorted(expected)
def test_export_xattr_template():
"""test --xattr template"""
# Note: this test does not actually test that the metadata attributes get correctly
# written by osxmetadata as osxmetadata doesn't work reliably when run by pytest
# (but does appear to work correctly in practice)
# Reference: https://github.com/RhetTbull/osxmetadata/issues/68
runner = CliRunner()
cwd = os.getcwd()
# pylint: disable=not-context-manager
with runner.isolated_filesystem():
test_dir = os.getcwd()
for uuid in CLI_FINDER_TAGS:
result = runner.invoke(
export,
@@ -6750,8 +6756,8 @@ def test_export_xattr_template():
".",
"-V",
"--xattr-template",
"keywords",
"{person}",
"copyright",
"osxphotos 2022",
"--xattr-template",
"comment",
"{title};{descr}",
@@ -6760,14 +6766,8 @@ def test_export_xattr_template():
],
)
assert result.exit_code == 0
md = OSXMetaData(CLI_FINDER_TAGS[uuid]["File:FileName"])
expected = CLI_FINDER_TAGS[uuid]["XMP:PersonInImage"]
expected = [expected] if type(expected) != list else expected
assert sorted(md.keywords) == sorted(expected)
title = CLI_FINDER_TAGS[uuid]["XMP:Title"] or ""
descr = CLI_FINDER_TAGS[uuid]["XMP:Description"] or ""
assert md.comment == f"{title};{descr}"
assert "Writing extended attribute copyright" in result.output
assert "Writing extended attribute comment" in result.output
# run again with --update, should skip writing extended attributes
result = runner.invoke(
@@ -6777,8 +6777,8 @@ def test_export_xattr_template():
".",
"-V",
"--xattr-template",
"keywords",
"{person}",
"copyright",
"osxphotos 2022",
"--xattr-template",
"comment",
"{title};{descr}",
@@ -6788,11 +6788,12 @@ def test_export_xattr_template():
],
)
assert result.exit_code == 0
assert "Skipping extended attribute keywords" in result.output
assert "Skipping extended attribute comment" in result.output
# clear tags and run again, should update extended attributes
md.keywords = None
md = OSXMetaData(
os.path.join(test_dir, CLI_FINDER_TAGS[uuid]["File:FileName"])
)
md.copyright = None
md.comment = None
result = runner.invoke(
@@ -6802,8 +6803,8 @@ def test_export_xattr_template():
".",
"-V",
"--xattr-template",
"keywords",
"{person}",
"copyright",
"osxphotos 2022",
"--xattr-template",
"comment",
"{title}",
@@ -6813,14 +6814,6 @@ def test_export_xattr_template():
],
)
assert result.exit_code == 0
assert "Writing extended attribute keyword" in result.output
assert "Writing extended attribute comment" in result.output
md = OSXMetaData(CLI_FINDER_TAGS[uuid]["File:FileName"])
expected = CLI_FINDER_TAGS[uuid]["XMP:PersonInImage"]
expected = [expected] if type(expected) != list else expected
assert sorted(md.keywords) == sorted(expected)
assert md.comment == CLI_FINDER_TAGS[uuid]["XMP:Title"]
def test_export_jpeg_ext():