import osxphotos import os.path def main(): db = osxphotos.utils.get_system_library_path() if db is None: # Note: get_system_library_path only works on MacOS 10.15+ db = os.path.expanduser("~/Pictures/Photos Library.photoslibrary") photosdb = osxphotos.PhotosDB(db) print(f"db file = {photosdb.db_path}") print(f"db version = {photosdb.db_version}") print(photosdb.keywords) print(photosdb.persons) print(photosdb.albums) print(photosdb.keywords_as_dict) print(photosdb.persons_as_dict) print(photosdb.albums_as_dict) # find all photos with Keyword = Kids and containing person Katie photos = photosdb.photos(keywords=["Kids"], persons=["Katie"]) print(f"found {len(photos)} photos") # find all photos that include Katie but do not contain the keyword wedding photos = [ p for p in photosdb.photos(persons=["Katie"]) if p not in photosdb.photos(keywords=["wedding"]) ] # get all photos in the database photos = photosdb.photos() for p in photos: print( p.uuid, p.filename, p.date, p.description, p.title, p.keywords, p.albums, p.persons, p.path, p.ismissing, p.hasadjustments, ) if __name__ == "__main__": main()