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

@@ -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()