My goal is to read the macOS Photos.app database to find out the paths of the included photos. The album and the parent folder whose name is in the RKFolder table can be determined for each photo. This parent folder can be located in other folders. The resulting folder path can also be read out... but in the following form:
modelId 1/modelID 2/modelId 3/modelID 4
And here I can't go any further, because I don't have enough knowledge to replace the string with the true folder names. For possible solutions it should be noted that I work with a copy of the database and therefore the folder path could also be written directly into the RKFolder table.
SELECT
modelId, name,folderPath, uuid
FROM RKFolder
WHERE implicitAlbumUuid not NULL
results in (excerpt)
modelId name folderPath uuid
1 1/ LibraryFolder
2 TopLevelAlbums 1/2/ TopLevelAlbums
7 Test 1/2/7/ kbY7RDHjRLS
8 xxx 1/2/8/ bT5WAkPWQ1
9 Test 1/2/8/9/ 9PYeLZDRTne
10 ab 1/2/10/ 7Cse21+1SIag
11 abc 1/2/7/11/ pNMvzDdyS%
16 efg 1/2/7/11/16/ a6R97tAxSBW
replace like this:
modelId name folderPath uuid
1 / LibraryFolder
2 TopLevelAlbums /TopLevelAlbums/ TopLevelAlbums
7 Test /TopLevelAlbums/Test/ kbY7RDHjRLS
8 xxx /TopLevelAlbums/xxx/ bT5WAkPWQ1
9 Test /TopLevelAlbums/xxx/Test/ 9PYeLZDRTne
10 ab /TopLevelAlbums/ab/ 7Cse21+1SIag
11 abc /TopLevelAlbums/Test/abc/ pNMvzDdyS%
16 efg /TopLevelAlbums/Test/abc/efg/ a6R97tAxSBW
or even better without the TopLevelAlbums-main folder:
modelId name folderPath uuid
16 efg /Test/abc/efg/ a6R97tAxSBW
Here the script that i use so far (shortened):
SELECT
RKAlbumVersion.versionId,
RKVersion.filename,
(SELECT RKFolder.folderpath from RKFolder, RKAlbum
WHERE RKFolder.uuid = RKAlbum.folderUuid
and RKAlbum.modelID = RKAlbumVersion.albumId)
FROM RKMaster, RKAlbumVersion, RKVersion
WHERE RKVersion.modelId = RKAlbumVersion.versionId
and RKVersion.masterUuid = RKMaster.uuid
-->
Output:
77 001.JPG 1/2/7/11/16/
replace with:
77 001.JPG /Test/abc/efg/