fixed PhotoInfo
This commit is contained in:
@@ -495,12 +495,12 @@ class PhotosDB:
|
|||||||
|
|
||||||
def photos(self, keywords=[], uuid=[], persons=[], albums=[]):
|
def photos(self, keywords=[], uuid=[], persons=[], albums=[]):
|
||||||
#TODO: combine photos and photos_sets, I think only one needed
|
#TODO: combine photos and photos_sets, I think only one needed
|
||||||
photos = [] # list of photos (PhotoInfo objects) that will be returned
|
# photos = [] # list of photos (PhotoInfo objects) that will be returned
|
||||||
photos_sets = [] # list of sets to perform intersection of
|
photos_sets = [] # list of sets to perform intersection of
|
||||||
if not keywords and not uuid and not persons and not albums:
|
if not keywords and not uuid and not persons and not albums:
|
||||||
# return all the photos
|
# return all the photos
|
||||||
logger.debug("return all photos")
|
logger.debug("return all photos")
|
||||||
photos = list(self._dbphotos.keys())
|
photos_sets.append(set(self._dbphotos.keys()))
|
||||||
else:
|
else:
|
||||||
if albums:
|
if albums:
|
||||||
for album in albums:
|
for album in albums:
|
||||||
@@ -549,6 +549,7 @@ class PhotosDB:
|
|||||||
for p in set.intersection(*photos_sets):
|
for p in set.intersection(*photos_sets):
|
||||||
logger.debug(f"p={p}")
|
logger.debug(f"p={p}")
|
||||||
info = PhotoInfo(db=self, uuid=p, info=self._dbphotos[p])
|
info = PhotoInfo(db=self, uuid=p, info=self._dbphotos[p])
|
||||||
|
logger.debug(f"info={info}")
|
||||||
photoinfo.append(info)
|
photoinfo.append(info)
|
||||||
return photoinfo
|
return photoinfo
|
||||||
|
|
||||||
@@ -561,15 +562,15 @@ including keywords, persons, albums, uuid, path, etc.
|
|||||||
|
|
||||||
class PhotoInfo:
|
class PhotoInfo:
|
||||||
def __init__(self, db=None, uuid=None, info=None):
|
def __init__(self, db=None, uuid=None, info=None):
|
||||||
self.uuid = uuid
|
self.__uuid = uuid
|
||||||
self.info = info
|
self.__info = info
|
||||||
self.db = db
|
self.__db = db
|
||||||
|
|
||||||
def filename(self):
|
def filename(self):
|
||||||
return self.info["filename"]
|
return self.__info["filename"]
|
||||||
|
|
||||||
def date(self):
|
def date(self):
|
||||||
return self.info["imageDate"]
|
return self.__info["imageDate"]
|
||||||
|
|
||||||
""" returns true if photo is missing from disk (which means it's not been downloaded from iCloud)
|
""" returns true if photo is missing from disk (which means it's not been downloaded from iCloud)
|
||||||
NOTE: the photos.db database uses an asynchrounous write-ahead log so changes in Photos
|
NOTE: the photos.db database uses an asynchrounous write-ahead log so changes in Photos
|
||||||
@@ -582,41 +583,44 @@ class PhotoInfo:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def ismissing(self):
|
def ismissing(self):
|
||||||
return self.info["isMissing"]
|
return self.__info["isMissing"]
|
||||||
|
|
||||||
def path(self):
|
def path(self):
|
||||||
photopath = ""
|
photopath = ""
|
||||||
|
|
||||||
vol = self.info["volume"]
|
vol = self.__info["volume"]
|
||||||
if vol is not None:
|
if vol is not None:
|
||||||
photopath = os.path.join("/Volumes", vol, self.info["imagePath"])
|
photopath = os.path.join("/Volumes", vol, self.__info["imagePath"])
|
||||||
else:
|
else:
|
||||||
photopath = os.path.join(self.db._masters_path, self.info["imagePath"])
|
photopath = os.path.join(self.__db._masters_path, self.__info["imagePath"])
|
||||||
|
|
||||||
if self.info["isMissing"] == 1:
|
if self.__info["isMissing"] == 1:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
f"Skipping photo, not yet downloaded from iCloud: {photopath}"
|
f"Skipping photo, not yet downloaded from iCloud: {photopath}"
|
||||||
)
|
)
|
||||||
print(self.info)
|
logger.debug(self.__info)
|
||||||
photopath = None # path would be meaningless until downloaded
|
photopath = None # path would be meaningless until downloaded
|
||||||
# TODO: Is there a way to use applescript to force the download in this
|
# TODO: Is there a way to use applescript to force the download in this
|
||||||
|
|
||||||
return photopath
|
return photopath
|
||||||
|
|
||||||
def description(self):
|
def description(self):
|
||||||
return self.info["extendedDescription"]
|
return self.__info["extendedDescription"]
|
||||||
|
|
||||||
def persons(self):
|
def persons(self):
|
||||||
return self.info["persons"]
|
return self.__info["persons"]
|
||||||
|
|
||||||
def albums(self):
|
def albums(self):
|
||||||
return self.info["albums"]
|
return self.__info["albums"]
|
||||||
|
|
||||||
def keywords(self):
|
def keywords(self):
|
||||||
return self.info["keywords"]
|
return self.__info["keywords"]
|
||||||
|
|
||||||
def name(self):
|
def name(self):
|
||||||
return self.info["name"]
|
return self.__info["name"]
|
||||||
|
|
||||||
|
def uuid(self):
|
||||||
|
return self.__uuid
|
||||||
|
|
||||||
# compare two PhotoInfo objects for equality
|
# compare two PhotoInfo objects for equality
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
|
|||||||
Reference in New Issue
Block a user