def _load_all_books(self): with self._db: for book_db_obj in BookModel.select(BookModel.id): try: self._books.append(Book(self._db, book_db_obj.id)) except BookIsEmpty: pass
def _load_all_books(self): for book_db_obj in BookModel.select(BookModel.id): try: book = Book(self._db, book_db_obj.id) book.add_listener(self._on_book_event) self._books.append(book) except BookIsEmpty: pass
def _update_book_position(self, book: BookModel, progress: int): try: book_model = Book(self._db, book.id) except BookIsEmpty: log.error("Could not restore book position because book is empty") return completed_chapter_length = 0 for chapter in book_model.chapters: old_position = progress if completed_chapter_length + chapter.length > old_position: chapter.position = chapter.start_position + ( (old_position - completed_chapter_length) * 10**9) book_model.position = chapter.id return else: completed_chapter_length += chapter.length book_model.position = 0
def _prepare_track_db_objects( self, media_files: Set[MediaFile]) -> Set[TrackInsertRequest]: book_db_objects: Set[BookModel] = set() for media_file in media_files: if not media_file: continue book = next((book for book in book_db_objects if is_same_book(book.name, media_file.book_name)), None) file_query = File.select().where(File.path == media_file.path) if not file_query.exists(): log.error("No file object with path present: {}".format( media_file.path)) continue file = file_query.get() if not book: book = self._import_or_update_book(media_file) book_db_objects.add(book) try: book_model = Book(self._db, book.id) progress = book_model.progress except BookIsEmpty: progress = 0 self._delete_tracks_from_db(media_file) tracks = self._get_track_list_for_db(media_file, book) for track in tracks: start_at = track.pop("startAt") yield TrackInsertRequest(track, file, start_at) update_position_request_present = any( b.book_id == book.id for b in self._book_update_positions) if progress > 0 and not update_position_request_present: self._book_update_positions.append( BookUpdatePositionRequest(book.id, progress))