Added uti_raw for 10.14, added tests

This commit is contained in:
Rhet Turnbull 2020-10-04 21:29:53 -07:00
parent ae0166da04
commit 0ddd5234b2
60 changed files with 41 additions and 22 deletions

View File

@ -1161,6 +1161,9 @@ Returns Uniform Type Identifier (UTI) for the current version of the image, for
#### `uti_original`
Returns Uniform Type Identifier (UTI) for the original image, for example: 'public.jpeg' or 'com.apple.quicktime-movie'.
#### `uti_edited`
Returns Uniform Type Identifier (UTI) for the edited image, for example: 'public.jpeg'. Returns None if the photo does not have adjustments.
#### `uti_raw`
Returns Uniform Type Identifier (UTI) for the associated RAW image, if there is one; for example, 'com.canon.cr2-raw-image'.

View File

@ -197,7 +197,7 @@ class PhotoInfo:
filename = f"{self._uuid}_1_201_a.jpeg"
else:
# could be a heic or a jpeg
if self.uti == 'public.heic':
if self.uti == "public.heic":
filename = f"{self._uuid}_1_201_a.heic"
else:
filename = f"{self._uuid}_1_201_a.jpeg"
@ -234,7 +234,7 @@ class PhotoInfo:
if self._db._db_version > _PHOTOS_4_VERSION:
raise RuntimeError("Wrong database format!")
photopath = None
if self._info["hasAdjustments"]:
edit_id = self._info["edit_resource_id"]
@ -506,7 +506,12 @@ class PhotoInfo:
""" Returns Uniform Type Identifier (UTI) for the image
for example: public.jpeg or com.apple.quicktime-movie
"""
return self._info["UTI"]
if self._db._db_version <= _PHOTOS_4_VERSION:
return (
self._info["UTI_edited"] if self.hasadjustments else self._info["UTI"]
)
else:
return self._info["UTI"]
@property
def uti_original(self):
@ -515,6 +520,17 @@ class PhotoInfo:
"""
return self._info["UTI_original"]
@property
def uti_edited(self):
""" Returns Uniform Type Identifier (UTI) for the edited image
if the photo has been edited, otherwise None;
for example: public.jpeg
"""
if self._db._db_version >= _PHOTOS_5_VERSION:
return self.uti if self.hasadjustments else None
else:
return self._info["UTI_edited"]
@property
def uti_raw(self):
""" Returns Uniform Type Identifier (UTI) for the RAW image if there is one

View File

@ -989,9 +989,13 @@ class PhotosDB:
self._dbphotos[uuid]["UTI"] = row[22]
# TODO: need to update this for Photos 4
# The UTI in RKMaster will always be UTI of the original
# Unlike Photos 5 which changes the UTI to match latest edit
self._dbphotos[uuid]["UTI_original"] = row[22]
# UTI edited will be read from RKModelResource
self._dbphotos[uuid]["UTI_edited"] = None
# handle burst photos
# if burst photo, determine whether or not it's a selected burst photo
self._dbphotos[uuid]["burstUUID"] = row[23]
@ -1129,7 +1133,6 @@ class PhotosDB:
info["isMissing"] = row[3]
info["originalFilename"] = row[4]
info["UTI"] = row[5]
info["UTI_original"] = None # filled in later
info["modelID"] = row[6]
info["fileSize"] = row[7]
info["isTrulyRAW"] = row[8]
@ -1163,7 +1166,6 @@ class PhotosDB:
if (
row[1] != "UNADJUSTEDNONRAW"
and row[1] != "UNADJUSTED"
# and row[4] == "public.jpeg"
and row[6] == 2
):
if "edit_resource_id" in self._dbphotos[uuid]:
@ -1177,6 +1179,7 @@ class PhotosDB:
# should we return all edits or just most recent one?
# For now, return most recent edit
self._dbphotos[uuid]["edit_resource_id"] = row[2]
self._dbphotos[uuid]["UTI_edited"] = row[4]
# get details on external edits
c.execute(
@ -1249,7 +1252,7 @@ class PhotosDB:
)
# Order of results
# 0 RKMaster.uuid,
# 0 RKVersion.uuid,
# 1 RKMaster.cloudLibraryState,
# 2 RKCloudResource.available,
# 3 RKCloudResource.status
@ -1332,6 +1335,7 @@ class PhotosDB:
if info["has_raw"]:
raw_uuid = info["raw_master_uuid"]
info["raw_info"] = self._dbphotos_master[raw_uuid]
info["UTI_raw"] = self._dbphotos_master[raw_uuid]["UTI"]
# done with the database connection
conn.close()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -36,7 +36,7 @@
<key>other</key>
<integer>0</integer>
<key>photos</key>
<integer>6</integer>
<integer>11</integer>
<key>videos</key>
<integer>0</integer>
</dict>

View File

@ -3,8 +3,8 @@
<plist version="1.0">
<dict>
<key>PhotoAnalysisGraphLastBackgroundGraphRebuildJobDate</key>
<date>2020-07-27T03:16:28Z</date>
<date>2020-10-04T23:43:21Z</date>
<key>PhotoAnalysisGraphLastBackgroundMemoryGenerationJobDate</key>
<date>2020-07-27T12:35:43Z</date>
<date>2020-10-05T04:14:45Z</date>
</dict>
</plist>

View File

@ -2,11 +2,7 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ProcessedInQuiescentState</key>
<true/>
<key>SuggestedMeIdentifier</key>
<string></string>
<key>Version</key>
<integer>3</integer>
</dict>
</plist>

View File

@ -5,7 +5,7 @@
<key>LithiumMessageTracer</key>
<dict>
<key>LastReportedDate</key>
<date>2020-07-27T03:18:40Z</date>
<date>2020-10-04T23:49:39Z</date>
</dict>
</dict>
</plist>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

View File

@ -11,6 +11,6 @@
<key>PLLastRevGeoForcedProviderOutOfDateCheckVersionKey</key>
<integer>1</integer>
<key>PLLastRevGeoVerFileFetchDateKey</key>
<date>2020-07-27T03:16:25Z</date>
<date>2020-10-04T23:43:17Z</date>
</dict>
</plist>

View File

@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>LastHistoryRowId</key>
<integer>707</integer>
<integer>943</integer>
<key>LibraryBuildTag</key>
<string>D8C4AAA1-3AB6-4A65-BEBD-99CC3E5D433E</string>
<key>LibrarySchemaVersion</key>

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 KiB

View File

@ -9,7 +9,7 @@
<key>HistoricalMarker</key>
<dict>
<key>LastHistoryRowId</key>
<integer>707</integer>
<integer>943</integer>
<key>LibraryBuildTag</key>
<string>D8C4AAA1-3AB6-4A65-BEBD-99CC3E5D433E</string>
<key>LibrarySchemaVersion</key>
@ -24,7 +24,7 @@
<key>SnapshotCompletedDate</key>
<date>2019-07-27T13:16:43Z</date>
<key>SnapshotLastValidated</key>
<date>2020-07-27T03:18:40Z</date>
<date>2020-10-04T23:49:39Z</date>
<key>SnapshotTables</key>
<dict/>
</dict>

BIN
tests/test-images/IMG_1994.JPG Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

BIN
tests/test-images/IMG_1994.cr2 Executable file

Binary file not shown.

BIN
tests/test-images/IMG_1997.JPG Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

BIN
tests/test-images/IMG_1997.cr2 Executable file

Binary file not shown.

View File

@ -41,7 +41,7 @@ UUID_DICT = {
"favorite": "6bxcNnzRQKGnK4uPrCJ9UQ",
"not_favorite": "8SOE9s0XQVGsuq4ONohTng",
"date_invalid": "YZFCPY24TUySvpu7owiqxA",
"intrash": "3tljdX43R8+k6peNHVrJNQ",
"intrash": "td4yIljYS8aRAgzlsRRDtQ",
"not_intrash": "6bxcNnzRQKGnK4uPrCJ9UQ",
"has_adjustments": "6bxcNnzRQKGnK4uPrCJ9UQ",
}
@ -53,8 +53,8 @@ ALBUM_SORT_ORDER = [
]
ALBUM_KEY_PHOTO = "15uNd7%8RguTEgNPKHfTWw"
PHOTOS_DB_LEN = 8
PHOTOS_NOT_IN_TRASH_LEN = 7
PHOTOS_DB_LEN = 13
PHOTOS_NOT_IN_TRASH_LEN = 12
PHOTOS_IN_TRASH_LEN = 1