def _get_metadata(self, book, pdf_stats): ''' Return a populated Book object with available metadata ''' from calibre.ebooks.metadata import author_to_author_sort, authors_to_string, title_sort from calibre.ebooks.metadata.pdf import get_metadata self._log_location(repr(book)) pdf_path = os.path.join(self.temp_dir, pdf_stats['path']) with open(pdf_path, 'rb') as f: stream = cStringIO.StringIO(f.read()) mi = get_metadata(stream, cover=False) this_book = Book(mi.title, authors=mi.authors) this_book.author_sort = author_to_author_sort(mi.authors[0]) this_book.datetime = datetime.fromtimestamp( int(pdf_stats['stats']['st_birthtime'])).timetuple() this_book.dateadded = int(pdf_stats['stats']['st_birthtime']) this_book.path = book this_book.size = int(pdf_stats['stats']['st_size']) this_book.thumbnail = self._get_goodreader_thumb(book) if this_book.thumbnail: this_book.thumb_data = base64.b64encode(this_book.thumbnail) else: this_book.thumb_data = None this_book.title_sort = title_sort(mi.title) this_book.uuid = None return this_book
def _get_metadata(self, book, pdf_stats): """ Return a populated Book object with available metadata """ from calibre.ebooks.metadata import author_to_author_sort, authors_to_string, title_sort from calibre.ebooks.metadata.pdf import get_metadata self._log_location(repr(book)) pdf_path = os.path.join(self.temp_dir, pdf_stats["path"]) with open(pdf_path, "rb") as f: stream = cStringIO.StringIO(f.read()) mi = get_metadata(stream, cover=False) this_book = Book(mi.title, " & ".join(mi.authors)) this_book.author_sort = author_to_author_sort(mi.authors[0]) this_book.datetime = datetime.fromtimestamp(int(pdf_stats["stats"]["st_birthtime"])).timetuple() this_book.dateadded = int(pdf_stats["stats"]["st_birthtime"]) this_book.path = book this_book.size = int(pdf_stats["stats"]["st_size"]) this_book.thumbnail = self._get_goodreader_thumb(book) if this_book.thumbnail: this_book.thumb_data = base64.b64encode(this_book.thumbnail) else: this_book.thumb_data = None this_book.title_sort = title_sort(mi.title) this_book.uuid = None return this_book
def _add_heft_to_db(self, heft: Heft, pdf_file: str): with open(pdf_file, "rb") as file: mi = get_metadata(file) mi.title = self.title_template.format(heft=heft) mi.authors = ["fluter Redaktion"] mi.languages = ["Deutsch"] mi.publisher = "Bundeszentrale für politische Bildung (bpb)" mi.series = "fluter" mi.series_index = heft.number ids, dups = self._db.add_books([(mi, { "PDF": pdf_file })], add_duplicates=False) return len(ids)
def _get_metadata(self, book, book_stats): ''' Return a populated Book object with available metadata ''' from calibre.ebooks.metadata import author_to_author_sort, authors_to_string, title_sort from calibre.ebooks.metadata.mobi import get_metadata self._log_location(repr(book)) mobi_path = os.path.join(self.temp_dir, book_stats['path']) with open(mobi_path, 'rb') as f: stream = cStringIO.StringIO(f.read()) mi = get_metadata(stream) if False: ''' Perform a bit of voodoo to match Kindle multiple author style ''' ks_authors = [] for a in mi.authors: if "," in a: # Already ln, fn ks_authors.append(a) else: ks_authors.append(author_to_author_sort(a)) this_book = Book(mi.title, '; '.join(mi.authors)) this_book.author_sort = '; '.join(mi.authors) this_book.datetime = datetime.fromtimestamp(int(book_stats['stats']['st_birthtime'])).timetuple() this_book.dateadded = int(book_stats['stats']['st_birthtime']) this_book.path = book this_book.size = int(book_stats['stats']['st_size']) this_book.thumbnail = self._get_kindle_thumb(mi.cover_data[1]) if this_book.thumbnail: this_book.thumb_data = base64.b64encode(this_book.thumbnail) else: this_book.thumb_data = None this_book.title_sort = title_sort(mi.title) this_book.uuid = None return this_book