def get_album_art_path(self, book, size): query = ArtworkCacheModel.select().where( ArtworkCacheModel.book == book.id) if query.exists(): try: uuid = query.first().uuid except Exception as e: reporter.error( "artwork_cache", "load_pixbuf_from_cache: query exists but query.first().uuid crashed." ) return None else: return None cache_dir = os.path.join(get_cache_dir(), "artwork") cache_dir = os.path.join(cache_dir, uuid) try: if os.path.exists(cache_dir): file_path = os.path.join(cache_dir, str(size) + ".jpg") if os.path.exists(file_path): return file_path else: return None except Exception as e: log.warning(e) return None return None
def __load_pixbuf_from_cache(book, size): """ """ pixbuf = None query = ArtworkCache.select().where(ArtworkCache.book == book.id) if query.exists(): uuid = query.first().uuid else: return None cache_dir = os.path.join(get_cache_dir(), "artwork") cache_dir = os.path.join(cache_dir, uuid) try: if os.path.exists(cache_dir): file_path = os.path.join(cache_dir, str(size) + ".jpg") if os.path.exists(file_path): pixbuf = GdkPixbuf.Pixbuf.new_from_file(os.path.join(cache_dir, str(size) + ".jpg")) else: return None except Exception as e: log.warning(e) return None return pixbuf
def __create_artwork_cache(book, pixbuf, size): """ Creates a resized cache version of the given pixbuf and saves it in the cozy cache folder under a unique identifier. :param book: Book which the artwork is from :param pixbuf: Pixbuf to be cached :param size: Size for the cached version :return: Resized pixbuf """ query = ArtworkCache.select().where(ArtworkCache.book == book.id) gen_uuid = "" if query.exists(): gen_uuid = str(query.first().uuid) else: gen_uuid = str(uuid.uuid4()) ArtworkCache.create(book = book, uuid=gen_uuid) cache_dir = os.path.join(os.path.join(get_cache_dir(), "artwork"), gen_uuid) if not os.path.exists(cache_dir): os.makedirs(cache_dir) resized_pixbuf = __resize_pixbuf(pixbuf, size) file_path = os.path.join(cache_dir, str(size) + ".jpg") if not os.path.exists(file_path): try: resized_pixbuf.savev(file_path, "jpeg", ["quality", None], ["95"]) except Exception as e: log.warning("Failed to save resized cache albumart for following uuid: " + gen_uuid) log.warning(e) return resized_pixbuf
def __update_metadata(self, track): if track is None: track = get_current_track() if track is None: self.__metadata = { "mpris:trackid": GLib.Variant("o", "/org/mpris/MediaPlayer2/TrackList/NoTrack") } self.refresh = True else: self.__metadata["mpris:trackid"] = self.__track_id track_number = track.number if track_number is None: track_number = 1 self.__metadata["xesam:trackNumber"] = GLib.Variant( "i", track_number) self.__metadata["xesam:title"] = GLib.Variant("s", track.name) self.__metadata["xesam:album"] = GLib.Variant("s", track.book.name) self.__metadata["xesam:artist"] = GLib.Variant( "as", [track.book.author]) self.__metadata["mpris:length"] = GLib.Variant( "x", track.length * 1000 * 1000) self.__metadata["xesam:url"] = GLib.Variant( "s", "file:///" + track.file) query = ArtworkCache.select().where( ArtworkCache.book == track.book.id) if query.exists(): uuid = query.first().uuid cache_dir = get_cache_dir() cache_dir = os.path.join(cache_dir, uuid) file_path = os.path.join(cache_dir, "180.jpg") if file_path: self.__metadata["mpris:artUrl"] = GLib.Variant( "s", "file://" + file_path)
def delete_cache(self): """ Deletes the entire offline cache files. Doesn't delete anything from the cozy.db. """ cache_dir = os.path.join(get_cache_dir(), "offline") import shutil shutil.rmtree(cache_dir)
def __init__(self): self.ui = cozy.ui.main_view.CozyUI() self.cache_dir = os.path.join(get_cache_dir(), "offline") if not os.path.exists(self.cache_dir): os.makedirs(self.cache_dir) self._start_processing() cozy.ui.settings.Settings().add_listener(self.__on_settings_changed)
def delete_artwork_cache(self): """ Deletes the artwork cache completely. """ cache_dir = os.path.join(get_cache_dir(), "artwork") import shutil if os.path.exists(cache_dir): shutil.rmtree(cache_dir) q = ArtworkCacheModel.delete() q.execute()
def __init__(self): super().__init__() self.ui = cozy.ui.main_view.CozyUI() from cozy.media.importer import Importer self._importer = inject.instance(Importer) self._importer.add_listener(self._on_importer_event) self.cache_dir = os.path.join(get_cache_dir(), "offline") if not os.path.exists(self.cache_dir): os.makedirs(self.cache_dir) self._start_processing() inject.instance(cozy.ui.settings.Settings).add_listener(self.__on_settings_changed)
def __update_db_6(db): migrator = SqliteMigrator(db) db.create_tables([OfflineCache]) external = BooleanField(default=False) offline = BooleanField(default=False) downloaded = BooleanField(default=False) migrate(migrator.add_column('storage', 'external', external), migrator.add_column('book', 'offline', offline), migrator.add_column('book', 'downloaded', downloaded)) Settings.update(version=6).execute() import shutil shutil.rmtree(get_cache_dir())