Alpha support for Monterey/macOS 12
@ -34,11 +34,12 @@ _PHOTOS_3_VERSION = "3301"
|
|||||||
|
|
||||||
# versions 5.0 and later have a different database structure
|
# versions 5.0 and later have a different database structure
|
||||||
_PHOTOS_4_VERSION = "4025" # latest Mojove version on 10.14.6
|
_PHOTOS_4_VERSION = "4025" # latest Mojove version on 10.14.6
|
||||||
_PHOTOS_5_VERSION = "6000" # seems to be current on 10.15.1 through 10.15.6
|
_PHOTOS_5_VERSION = "6000" # seems to be current on 10.15.1 through 10.15.7 (also Big Sur and Monterey which switch to model version)
|
||||||
|
|
||||||
# Ranges for model version by Photos version
|
# Ranges for model version by Photos version
|
||||||
_PHOTOS_5_MODEL_VERSION = [13000, 13999]
|
_PHOTOS_5_MODEL_VERSION = [13000, 13999]
|
||||||
_PHOTOS_6_MODEL_VERSION = [14000, 14999]
|
_PHOTOS_6_MODEL_VERSION = [14000, 14999]
|
||||||
|
_PHOTOS_7_MODEL_VERSION = [15000, 15999] # Monterey developer preview is 15134
|
||||||
|
|
||||||
# some table names differ between Photos 5 and Photos 6
|
# some table names differ between Photos 5 and Photos 6
|
||||||
_DB_TABLE_NAMES = {
|
_DB_TABLE_NAMES = {
|
||||||
@ -49,6 +50,10 @@ _DB_TABLE_NAMES = {
|
|||||||
"ALBUM_SORT_ORDER": "Z_26ASSETS.Z_FOK_34ASSETS",
|
"ALBUM_SORT_ORDER": "Z_26ASSETS.Z_FOK_34ASSETS",
|
||||||
"IMPORT_FOK": "ZGENERICASSET.Z_FOK_IMPORTSESSION",
|
"IMPORT_FOK": "ZGENERICASSET.Z_FOK_IMPORTSESSION",
|
||||||
"DEPTH_STATE": "ZGENERICASSET.ZDEPTHSTATES",
|
"DEPTH_STATE": "ZGENERICASSET.ZDEPTHSTATES",
|
||||||
|
"UTI_ORIGINAL": "ZINTERNALRESOURCE.ZUNIFORMTYPEIDENTIFIER",
|
||||||
|
"ASSET_ALBUM_JOIN": "Z_26ASSETS.Z_26ALBUMS",
|
||||||
|
"ASSET_ALBUM_TABLE": "Z_26ASSETS",
|
||||||
|
"HDR_TYPE": "ZCUSTOMRENDEREDVALUE",
|
||||||
},
|
},
|
||||||
6: {
|
6: {
|
||||||
"ASSET": "ZASSET",
|
"ASSET": "ZASSET",
|
||||||
@ -57,6 +62,22 @@ _DB_TABLE_NAMES = {
|
|||||||
"ALBUM_SORT_ORDER": "Z_26ASSETS.Z_FOK_3ASSETS",
|
"ALBUM_SORT_ORDER": "Z_26ASSETS.Z_FOK_3ASSETS",
|
||||||
"IMPORT_FOK": "null",
|
"IMPORT_FOK": "null",
|
||||||
"DEPTH_STATE": "ZASSET.ZDEPTHTYPE",
|
"DEPTH_STATE": "ZASSET.ZDEPTHTYPE",
|
||||||
|
"UTI_ORIGINAL": "ZINTERNALRESOURCE.ZUNIFORMTYPEIDENTIFIER",
|
||||||
|
"ASSET_ALBUM_JOIN": "Z_26ASSETS.Z_26ALBUMS",
|
||||||
|
"ASSET_ALBUM_TABLE": "Z_26ASSETS",
|
||||||
|
"HDR_TYPE": "ZCUSTOMRENDEREDVALUE",
|
||||||
|
},
|
||||||
|
7: {
|
||||||
|
"ASSET": "ZASSET",
|
||||||
|
"KEYWORD_JOIN": "Z_1KEYWORDS.Z_38KEYWORDS",
|
||||||
|
"ALBUM_JOIN": "Z_27ASSETS.Z_3ASSETS",
|
||||||
|
"ALBUM_SORT_ORDER": "Z_27ASSETS.Z_FOK_3ASSETS",
|
||||||
|
"IMPORT_FOK": "null",
|
||||||
|
"DEPTH_STATE": "ZASSET.ZDEPTHTYPE",
|
||||||
|
"UTI_ORIGINAL": "ZINTERNALRESOURCE.ZCOMPACTUTI",
|
||||||
|
"ASSET_ALBUM_JOIN": "Z_27ASSETS.Z_27ALBUMS",
|
||||||
|
"ASSET_ALBUM_TABLE": "Z_27ASSETS",
|
||||||
|
"HDR_TYPE": "ZHDRTYPE",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
""" version info """
|
""" version info """
|
||||||
|
|
||||||
__version__ = "0.42.47"
|
__version__ = "0.42.48"
|
||||||
|
|||||||
@ -36,7 +36,7 @@ from ..albuminfo import AlbumInfo, ImportInfo
|
|||||||
from ..personinfo import FaceInfo, PersonInfo
|
from ..personinfo import FaceInfo, PersonInfo
|
||||||
from ..phototemplate import PhotoTemplate, RenderOptions
|
from ..phototemplate import PhotoTemplate, RenderOptions
|
||||||
from ..placeinfo import PlaceInfo4, PlaceInfo5
|
from ..placeinfo import PlaceInfo4, PlaceInfo5
|
||||||
from ..uti import get_preferred_uti_extension
|
from ..uti import get_preferred_uti_extension, get_uti_for_extension
|
||||||
from ..utils import _debug, _get_resource_loc, findfiles
|
from ..utils import _debug, _get_resource_loc, findfiles
|
||||||
|
|
||||||
|
|
||||||
@ -403,14 +403,10 @@ class PhotoInfo:
|
|||||||
# Note: In Photos Version 5.0 (141.19.150), images not copied to Photos Library
|
# Note: In Photos Version 5.0 (141.19.150), images not copied to Photos Library
|
||||||
# that are missing do not always trigger is_missing = True as happens
|
# that are missing do not always trigger is_missing = True as happens
|
||||||
# in earlier version so it's possible for this check to fail, if so, return None
|
# in earlier version so it's possible for this check to fail, if so, return None
|
||||||
logging.debug(f"Error getting path to RAW file: {filepath}/{glob_str}")
|
|
||||||
photopath = None
|
photopath = None
|
||||||
else:
|
else:
|
||||||
photopath = os.path.join(filepath, raw_file[0])
|
photopath = os.path.join(filepath, raw_file[0])
|
||||||
if not os.path.isfile(photopath):
|
if not os.path.isfile(photopath):
|
||||||
logging.debug(
|
|
||||||
f"MISSING PATH: RAW photo for UUID {self._uuid} should be at {photopath} but does not appear to exist"
|
|
||||||
)
|
|
||||||
photopath = None
|
photopath = None
|
||||||
|
|
||||||
return photopath
|
return photopath
|
||||||
@ -662,13 +658,23 @@ class PhotoInfo:
|
|||||||
"""Returns Uniform Type Identifier (UTI) for the original image
|
"""Returns Uniform Type Identifier (UTI) for the original image
|
||||||
for example: public.jpeg or com.apple.quicktime-movie
|
for example: public.jpeg or com.apple.quicktime-movie
|
||||||
"""
|
"""
|
||||||
if self._db._db_version <= _PHOTOS_4_VERSION and self._info["has_raw"]:
|
try:
|
||||||
return self._info["raw_pair_info"]["UTI"]
|
return self._uti_original
|
||||||
elif self.shared:
|
except AttributeError:
|
||||||
# TODO: need reliable way to get original UTI for shared
|
if self._db._db_version <= _PHOTOS_4_VERSION and self._info["has_raw"]:
|
||||||
return self.uti
|
self._uti_original = self._info["raw_pair_info"]["UTI"]
|
||||||
else:
|
elif self.shared:
|
||||||
return self._info["UTI_original"]
|
# TODO: need reliable way to get original UTI for shared
|
||||||
|
self._uti_original = self.uti
|
||||||
|
elif self._db._photos_ver >= 7:
|
||||||
|
# Monterey+
|
||||||
|
self._uti_original = get_uti_for_extension(
|
||||||
|
pathlib.Path(self.original_filename).suffix
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self._uti_original = self._info["UTI_original"]
|
||||||
|
|
||||||
|
return self._uti_original
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def uti_edited(self):
|
def uti_edited(self):
|
||||||
|
|||||||
@ -599,7 +599,9 @@ class PhotosDB:
|
|||||||
verbose = self._verbose
|
verbose = self._verbose
|
||||||
verbose("Processing database.")
|
verbose("Processing database.")
|
||||||
verbose(f"Database version: {self._db_version}.")
|
verbose(f"Database version: {self._db_version}.")
|
||||||
|
|
||||||
|
self._photos_ver = 4 # only used in Photos 5+
|
||||||
|
|
||||||
(conn, c) = _open_sql_file(self._tmp_db)
|
(conn, c) = _open_sql_file(self._tmp_db)
|
||||||
|
|
||||||
# get info to associate persons with photos
|
# get info to associate persons with photos
|
||||||
@ -1595,10 +1597,14 @@ class PhotosDB:
|
|||||||
verbose(f"Database version: {self._db_version}, {photos_ver}.")
|
verbose(f"Database version: {self._db_version}, {photos_ver}.")
|
||||||
asset_table = _DB_TABLE_NAMES[photos_ver]["ASSET"]
|
asset_table = _DB_TABLE_NAMES[photos_ver]["ASSET"]
|
||||||
keyword_join = _DB_TABLE_NAMES[photos_ver]["KEYWORD_JOIN"]
|
keyword_join = _DB_TABLE_NAMES[photos_ver]["KEYWORD_JOIN"]
|
||||||
|
asset_album_table = _DB_TABLE_NAMES[photos_ver]["ASSET_ALBUM_TABLE"]
|
||||||
album_join = _DB_TABLE_NAMES[photos_ver]["ALBUM_JOIN"]
|
album_join = _DB_TABLE_NAMES[photos_ver]["ALBUM_JOIN"]
|
||||||
album_sort = _DB_TABLE_NAMES[photos_ver]["ALBUM_SORT_ORDER"]
|
album_sort = _DB_TABLE_NAMES[photos_ver]["ALBUM_SORT_ORDER"]
|
||||||
|
asset_album_join = _DB_TABLE_NAMES[photos_ver]["ASSET_ALBUM_JOIN"]
|
||||||
import_fok = _DB_TABLE_NAMES[photos_ver]["IMPORT_FOK"]
|
import_fok = _DB_TABLE_NAMES[photos_ver]["IMPORT_FOK"]
|
||||||
depth_state = _DB_TABLE_NAMES[photos_ver]["DEPTH_STATE"]
|
depth_state = _DB_TABLE_NAMES[photos_ver]["DEPTH_STATE"]
|
||||||
|
uti_original_column = _DB_TABLE_NAMES[photos_ver]["UTI_ORIGINAL"]
|
||||||
|
hdr_type_column = _DB_TABLE_NAMES[photos_ver]["HDR_TYPE"]
|
||||||
|
|
||||||
# Look for all combinations of persons and pictures
|
# Look for all combinations of persons and pictures
|
||||||
if _debug():
|
if _debug():
|
||||||
@ -1718,8 +1724,8 @@ class PhotosDB:
|
|||||||
{asset_table}.ZUUID,
|
{asset_table}.ZUUID,
|
||||||
{album_sort}
|
{album_sort}
|
||||||
FROM {asset_table}
|
FROM {asset_table}
|
||||||
JOIN Z_26ASSETS ON {album_join} = {asset_table}.Z_PK
|
JOIN {asset_album_table} ON {album_join} = {asset_table}.Z_PK
|
||||||
JOIN ZGENERICALBUM ON ZGENERICALBUM.Z_PK = Z_26ASSETS.Z_26ALBUMS
|
JOIN ZGENERICALBUM ON ZGENERICALBUM.Z_PK = {asset_album_join}
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1886,7 +1892,7 @@ class PhotosDB:
|
|||||||
{asset_table}.ZAVALANCHEUUID,
|
{asset_table}.ZAVALANCHEUUID,
|
||||||
{asset_table}.ZAVALANCHEPICKTYPE,
|
{asset_table}.ZAVALANCHEPICKTYPE,
|
||||||
{asset_table}.ZKINDSUBTYPE,
|
{asset_table}.ZKINDSUBTYPE,
|
||||||
{asset_table}.ZCUSTOMRENDEREDVALUE,
|
{asset_table}.{hdr_type_column},
|
||||||
ZADDITIONALASSETATTRIBUTES.ZCAMERACAPTUREDEVICE,
|
ZADDITIONALASSETATTRIBUTES.ZCAMERACAPTUREDEVICE,
|
||||||
{asset_table}.ZCLOUDASSETGUID,
|
{asset_table}.ZCLOUDASSETGUID,
|
||||||
ZADDITIONALASSETATTRIBUTES.ZREVERSELOCATIONDATA,
|
ZADDITIONALASSETATTRIBUTES.ZREVERSELOCATIONDATA,
|
||||||
@ -2250,20 +2256,33 @@ class PhotosDB:
|
|||||||
|
|
||||||
# Get info on remote/local availability for photos in shared albums
|
# Get info on remote/local availability for photos in shared albums
|
||||||
# Also get UTI of original image (zdatastoresubtype = 1)
|
# Also get UTI of original image (zdatastoresubtype = 1)
|
||||||
c.execute(
|
if self._photos_ver >= 7:
|
||||||
f""" SELECT
|
sql_missing = f""" SELECT
|
||||||
{asset_table}.ZUUID,
|
{asset_table}.ZUUID,
|
||||||
ZINTERNALRESOURCE.ZLOCALAVAILABILITY,
|
ZINTERNALRESOURCE.ZLOCALAVAILABILITY,
|
||||||
ZINTERNALRESOURCE.ZREMOTEAVAILABILITY,
|
ZINTERNALRESOURCE.ZREMOTEAVAILABILITY,
|
||||||
ZINTERNALRESOURCE.ZDATASTORESUBTYPE,
|
ZINTERNALRESOURCE.ZDATASTORESUBTYPE,
|
||||||
ZINTERNALRESOURCE.ZUNIFORMTYPEIDENTIFIER,
|
{uti_original_column},
|
||||||
|
null
|
||||||
|
FROM {asset_table}
|
||||||
|
JOIN ZADDITIONALASSETATTRIBUTES ON ZADDITIONALASSETATTRIBUTES.ZASSET = {asset_table}.Z_PK
|
||||||
|
JOIN ZINTERNALRESOURCE ON ZINTERNALRESOURCE.ZASSET = ZADDITIONALASSETATTRIBUTES.ZASSET
|
||||||
|
WHERE ZDATASTORESUBTYPE = 1 OR ZDATASTORESUBTYPE = 3 """
|
||||||
|
else:
|
||||||
|
sql_missing = f""" SELECT
|
||||||
|
{asset_table}.ZUUID,
|
||||||
|
ZINTERNALRESOURCE.ZLOCALAVAILABILITY,
|
||||||
|
ZINTERNALRESOURCE.ZREMOTEAVAILABILITY,
|
||||||
|
ZINTERNALRESOURCE.ZDATASTORESUBTYPE,
|
||||||
|
{uti_original_column},
|
||||||
ZUNIFORMTYPEIDENTIFIER.ZIDENTIFIER
|
ZUNIFORMTYPEIDENTIFIER.ZIDENTIFIER
|
||||||
FROM {asset_table}
|
FROM {asset_table}
|
||||||
JOIN ZADDITIONALASSETATTRIBUTES ON ZADDITIONALASSETATTRIBUTES.ZASSET = {asset_table}.Z_PK
|
JOIN ZADDITIONALASSETATTRIBUTES ON ZADDITIONALASSETATTRIBUTES.ZASSET = {asset_table}.Z_PK
|
||||||
JOIN ZINTERNALRESOURCE ON ZINTERNALRESOURCE.ZASSET = ZADDITIONALASSETATTRIBUTES.ZASSET
|
JOIN ZINTERNALRESOURCE ON ZINTERNALRESOURCE.ZASSET = ZADDITIONALASSETATTRIBUTES.ZASSET
|
||||||
JOIN ZUNIFORMTYPEIDENTIFIER ON ZUNIFORMTYPEIDENTIFIER.Z_PK = ZINTERNALRESOURCE.ZUNIFORMTYPEIDENTIFIER
|
JOIN ZUNIFORMTYPEIDENTIFIER ON ZUNIFORMTYPEIDENTIFIER.Z_PK = ZINTERNALRESOURCE.ZUNIFORMTYPEIDENTIFIER
|
||||||
WHERE ZDATASTORESUBTYPE = 1 OR ZDATASTORESUBTYPE = 3 """
|
WHERE ZDATASTORESUBTYPE = 1 OR ZDATASTORESUBTYPE = 3 """
|
||||||
)
|
|
||||||
|
c.execute(sql_missing)
|
||||||
|
|
||||||
# Order of results:
|
# Order of results:
|
||||||
# 0 {asset_table}.ZUUID,
|
# 0 {asset_table}.ZUUID,
|
||||||
@ -2323,8 +2342,20 @@ class PhotosDB:
|
|||||||
|
|
||||||
# get information about associted RAW images
|
# get information about associted RAW images
|
||||||
# RAW images have ZDATASTORESUBTYPE = 17
|
# RAW images have ZDATASTORESUBTYPE = 17
|
||||||
c.execute(
|
if self._photos_ver >= 7:
|
||||||
f""" SELECT
|
sql_raw = f""" SELECT
|
||||||
|
{asset_table}.ZUUID,
|
||||||
|
ZINTERNALRESOURCE.ZDATALENGTH,
|
||||||
|
null,
|
||||||
|
ZINTERNALRESOURCE.ZDATASTORESUBTYPE,
|
||||||
|
ZINTERNALRESOURCE.ZRESOURCETYPE
|
||||||
|
FROM {asset_table}
|
||||||
|
JOIN ZINTERNALRESOURCE ON ZINTERNALRESOURCE.ZASSET = ZADDITIONALASSETATTRIBUTES.ZASSET
|
||||||
|
JOIN ZADDITIONALASSETATTRIBUTES ON ZADDITIONALASSETATTRIBUTES.ZASSET = {asset_table}.Z_PK
|
||||||
|
WHERE ZINTERNALRESOURCE.ZDATASTORESUBTYPE = 17
|
||||||
|
"""
|
||||||
|
else:
|
||||||
|
sql_raw = f""" SELECT
|
||||||
{asset_table}.ZUUID,
|
{asset_table}.ZUUID,
|
||||||
ZINTERNALRESOURCE.ZDATALENGTH,
|
ZINTERNALRESOURCE.ZDATALENGTH,
|
||||||
ZUNIFORMTYPEIDENTIFIER.ZIDENTIFIER,
|
ZUNIFORMTYPEIDENTIFIER.ZIDENTIFIER,
|
||||||
@ -2335,8 +2366,10 @@ class PhotosDB:
|
|||||||
JOIN ZADDITIONALASSETATTRIBUTES ON ZADDITIONALASSETATTRIBUTES.ZASSET = {asset_table}.Z_PK
|
JOIN ZADDITIONALASSETATTRIBUTES ON ZADDITIONALASSETATTRIBUTES.ZASSET = {asset_table}.Z_PK
|
||||||
JOIN ZUNIFORMTYPEIDENTIFIER ON ZUNIFORMTYPEIDENTIFIER.Z_PK = ZINTERNALRESOURCE.ZUNIFORMTYPEIDENTIFIER
|
JOIN ZUNIFORMTYPEIDENTIFIER ON ZUNIFORMTYPEIDENTIFIER.Z_PK = ZINTERNALRESOURCE.ZUNIFORMTYPEIDENTIFIER
|
||||||
WHERE ZINTERNALRESOURCE.ZDATASTORESUBTYPE = 17
|
WHERE ZINTERNALRESOURCE.ZDATASTORESUBTYPE = 17
|
||||||
"""
|
"""
|
||||||
)
|
|
||||||
|
c.execute(sql_raw)
|
||||||
|
|
||||||
for row in c:
|
for row in c:
|
||||||
uuid = row[0]
|
uuid = row[0]
|
||||||
if uuid in self._dbphotos:
|
if uuid in self._dbphotos:
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import plistlib
|
|||||||
from .._constants import (
|
from .._constants import (
|
||||||
_PHOTOS_5_MODEL_VERSION,
|
_PHOTOS_5_MODEL_VERSION,
|
||||||
_PHOTOS_6_MODEL_VERSION,
|
_PHOTOS_6_MODEL_VERSION,
|
||||||
|
_PHOTOS_7_MODEL_VERSION,
|
||||||
_TESTED_DB_VERSIONS,
|
_TESTED_DB_VERSIONS,
|
||||||
)
|
)
|
||||||
from ..utils import _open_sql_file
|
from ..utils import _open_sql_file
|
||||||
@ -73,12 +74,12 @@ def get_db_model_version(db_file):
|
|||||||
|
|
||||||
model_ver = get_model_version(db_file)
|
model_ver = get_model_version(db_file)
|
||||||
if _PHOTOS_5_MODEL_VERSION[0] <= model_ver <= _PHOTOS_5_MODEL_VERSION[1]:
|
if _PHOTOS_5_MODEL_VERSION[0] <= model_ver <= _PHOTOS_5_MODEL_VERSION[1]:
|
||||||
db_ver = 5
|
return 5
|
||||||
elif _PHOTOS_6_MODEL_VERSION[0] <= model_ver <= _PHOTOS_6_MODEL_VERSION[1]:
|
elif _PHOTOS_6_MODEL_VERSION[0] <= model_ver <= _PHOTOS_6_MODEL_VERSION[1]:
|
||||||
db_ver = 6
|
return 6
|
||||||
|
elif _PHOTOS_7_MODEL_VERSION[0] <= model_ver <= _PHOTOS_7_MODEL_VERSION[1]:
|
||||||
|
return 7
|
||||||
else:
|
else:
|
||||||
logging.warning(f"Unknown model version: {model_ver}")
|
logging.warning(f"Unknown model version: {model_ver}")
|
||||||
# cross our fingers and try latest version
|
# cross our fingers and try latest version
|
||||||
db_ver = 6
|
return 7
|
||||||
|
|
||||||
return db_ver
|
|
||||||
|
|||||||
@ -587,6 +587,11 @@ def get_preferred_uti_extension(uti):
|
|||||||
|
|
||||||
def get_uti_for_extension(extension):
|
def get_uti_for_extension(extension):
|
||||||
"""get UTI for a given file extension"""
|
"""get UTI for a given file extension"""
|
||||||
|
|
||||||
|
# accepts extension with or without leading 0
|
||||||
|
if extension[0] == ".":
|
||||||
|
extension = extension[1:]
|
||||||
|
|
||||||
if (OS_VER, OS_MAJOR) <= (10, 16):
|
if (OS_VER, OS_MAJOR) <= (10, 16):
|
||||||
# https://developer.apple.com/documentation/coreservices/1448939-uttypecreatepreferredidentifierf
|
# https://developer.apple.com/documentation/coreservices/1448939-uttypecreatepreferredidentifierf
|
||||||
with objc.autorelease_pool():
|
with objc.autorelease_pool():
|
||||||
|
|||||||
10
tests/Test-12.0.0.dev-beta.photoslibrary/database/DataModelVersion.plist
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>LibrarySchemaVersion</key>
|
||||||
|
<integer>5001</integer>
|
||||||
|
<key>MetaSchemaVersion</key>
|
||||||
|
<integer>3</integer>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
BIN
tests/Test-12.0.0.dev-beta.photoslibrary/database/Photos.sqlite
Executable file
BIN
tests/Test-12.0.0.dev-beta.photoslibrary/database/Photos.sqlite-shm
Executable file
BIN
tests/Test-12.0.0.dev-beta.photoslibrary/database/Photos.sqlite-wal
Executable file
16
tests/Test-12.0.0.dev-beta.photoslibrary/database/Photos.sqlite.lock
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>hostname</key>
|
||||||
|
<string>ms-MacBook-Pro.local</string>
|
||||||
|
<key>hostuuid</key>
|
||||||
|
<string>793FB248-A75B-5F63-9A2E-76E4BFA8E877</string>
|
||||||
|
<key>pid</key>
|
||||||
|
<integer>391</integer>
|
||||||
|
<key>processname</key>
|
||||||
|
<string>photolibraryd</string>
|
||||||
|
<key>uid</key>
|
||||||
|
<integer>501</integer>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
BIN
tests/Test-12.0.0.dev-beta.photoslibrary/database/metaSchema.db
Executable file
BIN
tests/Test-12.0.0.dev-beta.photoslibrary/database/photos.db
Executable file
0
tests/Test-12.0.0.dev-beta.photoslibrary/database/protection
Executable file
BIN
tests/Test-12.0.0.dev-beta.photoslibrary/database/search/psi.sqlite
Executable file
BIN
tests/Test-12.0.0.dev-beta.photoslibrary/database/search/psi.sqlite-shm
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>insertAlbum</key>
|
||||||
|
<array/>
|
||||||
|
<key>insertAsset</key>
|
||||||
|
<array/>
|
||||||
|
<key>insertHighlight</key>
|
||||||
|
<array/>
|
||||||
|
<key>insertMemory</key>
|
||||||
|
<array/>
|
||||||
|
<key>insertMoment</key>
|
||||||
|
<array/>
|
||||||
|
<key>removeAlbum</key>
|
||||||
|
<array/>
|
||||||
|
<key>removeAsset</key>
|
||||||
|
<array/>
|
||||||
|
<key>removeHighlight</key>
|
||||||
|
<array/>
|
||||||
|
<key>removeMemory</key>
|
||||||
|
<array/>
|
||||||
|
<key>removeMoment</key>
|
||||||
|
<array/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>embeddingVersion</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>localeIdentifier</key>
|
||||||
|
<string>en_US</string>
|
||||||
|
<key>sceneTaxonomySHA</key>
|
||||||
|
<string>dd7ff94fd9919a493393b86581994e1db06a3553f80052c5e8343c0443848344</string>
|
||||||
|
<key>searchIndexVersion</key>
|
||||||
|
<string>15065</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
BIN
tests/Test-12.0.0.dev-beta.photoslibrary/database/search/synonymsProcess.plist
Executable file
|
After Width: | Height: | Size: 577 KiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 2.6 MiB |
|
After Width: | Height: | Size: 500 KiB |
|
After Width: | Height: | Size: 524 KiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 2.6 MiB |
|
After Width: | Height: | Size: 2.8 MiB |
|
After Width: | Height: | Size: 532 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 550 KiB |
|
After Width: | Height: | Size: 450 KiB |
|
After Width: | Height: | Size: 541 KiB |
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>MigrationService</key>
|
||||||
|
<dict>
|
||||||
|
<key>State</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
</dict>
|
||||||
|
<key>MigrationService.LastCompletedTask</key>
|
||||||
|
<integer>12</integer>
|
||||||
|
<key>MigrationService.ValidationCounts</key>
|
||||||
|
<dict>
|
||||||
|
<key>MigrationDetectedFaceprint</key>
|
||||||
|
<integer>6</integer>
|
||||||
|
<key>MigrationManagedAsset</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>MigrationSceneClassification</key>
|
||||||
|
<integer>44</integer>
|
||||||
|
<key>MigrationUnmanagedAdjustment</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>RDVersion.cloudLocalState.CPLIsNotPushed</key>
|
||||||
|
<integer>7</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CollapsedSidebarSectionIdentifiers</key>
|
||||||
|
<array/>
|
||||||
|
<key>ExpandedSidebarItemIdentifiers</key>
|
||||||
|
<array>
|
||||||
|
<string>92D68107-B6C7-453B-96D2-97B0F26D5B8B/L0/020</string>
|
||||||
|
<string>88A5F8B8-5B9A-43C7-BB85-3952B81580EB/L0/020</string>
|
||||||
|
<string>29EF7A97-7E76-4D5F-A5E0-CC0A93E8524C/L0/020</string>
|
||||||
|
<string>2C2AF115-BD1D-4434-A747-D1C8BD8E2045/L0/020</string>
|
||||||
|
<string>CB051A4C-2CB7-4B90-B59B-08CC4D0C2823/L0/020</string>
|
||||||
|
</array>
|
||||||
|
<key>Photos</key>
|
||||||
|
<dict>
|
||||||
|
<key>CollapsedSidebarSectionIdentifiers</key>
|
||||||
|
<array/>
|
||||||
|
<key>ExpandedSidebarItemIdentifiers</key>
|
||||||
|
<array>
|
||||||
|
<string>TopLevelAlbums</string>
|
||||||
|
<string>TopLevelSlideshows</string>
|
||||||
|
</array>
|
||||||
|
<key>IPXWorkspaceControllerZoomLevelsKey</key>
|
||||||
|
<dict>
|
||||||
|
<key>kZoomLevelIdentifierAlbums</key>
|
||||||
|
<integer>7</integer>
|
||||||
|
<key>kZoomLevelIdentifierVersions</key>
|
||||||
|
<integer>7</integer>
|
||||||
|
</dict>
|
||||||
|
<key>lastAddToDestination</key>
|
||||||
|
<dict>
|
||||||
|
<key>key</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>lastKnownDisplayName</key>
|
||||||
|
<string>September 28, 2018</string>
|
||||||
|
<key>type</key>
|
||||||
|
<string>album</string>
|
||||||
|
<key>uuid</key>
|
||||||
|
<string>DFFKmHt3Tk+AGzZLe2Xq+g</string>
|
||||||
|
</dict>
|
||||||
|
<key>lastKnownItemCounts</key>
|
||||||
|
<dict>
|
||||||
|
<key>other</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>photos</key>
|
||||||
|
<integer>7</integer>
|
||||||
|
<key>videos</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>BackgroundHighlightCollection</key>
|
||||||
|
<date>2021-03-13T16:38:25Z</date>
|
||||||
|
<key>BackgroundHighlightEnrichment</key>
|
||||||
|
<date>2021-03-13T16:38:24Z</date>
|
||||||
|
<key>BackgroundJobAssetRevGeocode</key>
|
||||||
|
<date>2021-03-13T16:38:25Z</date>
|
||||||
|
<key>BackgroundJobSearch</key>
|
||||||
|
<date>2021-03-13T16:38:25Z</date>
|
||||||
|
<key>BackgroundPeopleSuggestion</key>
|
||||||
|
<date>2021-03-13T16:38:23Z</date>
|
||||||
|
<key>BackgroundUserBehaviorProcessor</key>
|
||||||
|
<date>2021-03-13T16:38:25Z</date>
|
||||||
|
<key>PhotoAnalysisGraphLastBackgroundGraphConsistencyUpdateJobDateKey</key>
|
||||||
|
<date>2020-10-17T23:45:33Z</date>
|
||||||
|
<key>PhotoAnalysisGraphLastBackgroundGraphRebuildJobDate</key>
|
||||||
|
<date>2020-10-17T23:45:24Z</date>
|
||||||
|
<key>PhotoAnalysisGraphLastBackgroundMemoryGenerationJobDate</key>
|
||||||
|
<date>2021-03-13T16:38:25Z</date>
|
||||||
|
<key>SiriPortraitDonation</key>
|
||||||
|
<date>2021-03-13T16:38:25Z</date>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>revgeoprovider</key>
|
||||||
|
<string>7618</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>NumberOfFacesProcessedOnLastRun</key>
|
||||||
|
<integer>11</integer>
|
||||||
|
<key>ProcessedInQuiescentState</key>
|
||||||
|
<true/>
|
||||||
|
<key>SuggestedMeIdentifier</key>
|
||||||
|
<string></string>
|
||||||
|
<key>Version</key>
|
||||||
|
<integer>4</integer>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>FaceIDModelLastGenerationKey</key>
|
||||||
|
<date>2020-10-17T23:45:32Z</date>
|
||||||
|
<key>LastContactClassificationKey</key>
|
||||||
|
<date>2020-10-17T23:45:54Z</date>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>PVClustererBringUpState</key>
|
||||||
|
<integer>50</integer>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>IncrementalPersonProcessingStage</key>
|
||||||
|
<integer>6</integer>
|
||||||
|
<key>PersonBuilderLastMinimumFaceGroupSizeForCreatingMergeCandidates</key>
|
||||||
|
<integer>15</integer>
|
||||||
|
<key>PersonBuilderMergeCandidatesEnabled</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>PhotoAnalysisGraphLastBackgroundGraphRebuildJobDate</key>
|
||||||
|
<date>2019-08-07T02:26:15Z</date>
|
||||||
|
<key>PhotoAnalysisGraphLastBackgroundMemoryGenerationJobDate</key>
|
||||||
|
<date>2019-08-17T14:26:34Z</date>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||