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 _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 self._log_location(repr(book)) format = book.rsplit('.')[1].lower() if format == 'mobi': from calibre.ebooks.metadata.mobi import get_metadata as get_mobi_metadata path = os.path.join(self.temp_dir, book_stats['path']) with open(path, 'rb') as f: stream = cStringIO.StringIO(f.read()) mi = get_mobi_metadata(stream) elif format == 'pdf': from calibre.ebooks.metadata.pdf import get_metadata as get_pdf_metadata path = os.path.join(self.temp_dir, book_stats['path']) with open(path, 'rb') as f: stream = cStringIO.StringIO(f.read()) mi = get_pdf_metadata(stream) else: self._log("unsupported format: '{}'".format(format)) return Book() 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
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 self._log_location(repr(book)) format = book.rsplit('.')[1].lower() if format == 'mobi': from calibre.ebooks.metadata.mobi import get_metadata as get_mobi_metadata path = os.path.join(self.temp_dir, book_stats['path']) with open(path, 'rb') as f: stream = cStringIO.StringIO(f.read()) mi = get_mobi_metadata(stream) elif format == 'pdf': from calibre.ebooks.metadata.pdf import get_metadata as get_pdf_metadata path = os.path.join(self.temp_dir, book_stats['path']) with open(path, 'rb') as f: stream = cStringIO.StringIO(f.read()) mi = get_pdf_metadata(stream) else: self._log("unsupported format: '{}'".format(format)) return Book() 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
def _create_new_book(self, fpath, metadata, thumb): ''' ''' from calibre.ebooks.metadata import authors_to_string self._log_location(metadata.title) format = fpath.rpartition('.')[2].lower() this_book = Book(metadata.title, '; '.join(metadata.authors)) this_book.author_sort = metadata.author_sort this_book.dateadded = time.mktime(time.gmtime()) this_book.datetime = datetime.fromtimestamp( this_book.dateadded).timetuple() this_book.path = self.path_template.format(metadata.title, metadata.authors[0], format) this_book.size = os.path.getsize(fpath) this_book.thumbnail = self._cover_to_thumb(metadata) this_book.thumb_data = base64.b64encode(this_book.thumbnail) this_book.title_sort = metadata.title_sort this_book.uuid = metadata.uuid if False: self._log("%s by %s" % (this_book.title, '; '.join(this_book.authors))) self._log("path: %s" % this_book.path) self._log("author_sort: %s" % this_book.author_sort) self._log("title_sort: %s" % this_book.title_sort) return this_book
def _create_new_book(self, fpath, metadata, thumb): """ """ from calibre.ebooks.metadata import authors_to_string self._log_location(metadata.title) this_book = Book(metadata.title, " & ".join(metadata.authors)) this_book.author_sort = metadata.author_sort this_book.dateadded = time.mktime(time.gmtime()) this_book.datetime = datetime.fromtimestamp(this_book.dateadded).timetuple() this_book.path = self.path_template.format(metadata.title) this_book.size = os.path.getsize(fpath) this_book.thumbnail = self._cover_to_thumb(metadata) this_book.thumb_data = base64.b64encode(this_book.thumbnail) this_book.title_sort = metadata.title_sort this_book.uuid = metadata.uuid if False: self._log("%s by %s" % (this_book.title, " & ".join(this_book.authors))) self._log("path: %s" % this_book.path) self._log("author_sort: %s" % this_book.author_sort) self._log("title_sort: %s" % this_book.title_sort) return this_book