diff --git a/cps/helper.py b/cps/helper.py index b3fdba73..b0ea7ff7 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -74,40 +74,33 @@ log = logger.create() def convert_book_format(book_id, calibrepath, old_book_format, new_book_format, user_id, kindle_mail=None): book = calibre_db.get_book(book_id) data = calibre_db.get_book_format(book.id, old_book_format) + file_path = os.path.join(calibrepath, book.path, data.name) if not data: error_message = _(u"%(format)s format not found for book id: %(book)d", format=old_book_format, book=book_id) log.error("convert_book_format: %s", error_message) return error_message if config.config_use_google_drive: - df = gd.getFileFromEbooksFolder(book.path, data.name + "." + old_book_format.lower()) - if df: - datafile = os.path.join(calibrepath, book.path, data.name + u"." + old_book_format.lower()) - if not os.path.exists(os.path.join(calibrepath, book.path)): - os.makedirs(os.path.join(calibrepath, book.path)) - df.GetContentFile(datafile) - else: + if not gd.getFileFromEbooksFolder(book.path, data.name + "." + old_book_format.lower()): error_message = _(u"%(format)s not found on Google Drive: %(fn)s", format=old_book_format, fn=data.name + "." + old_book_format.lower()) return error_message - file_path = os.path.join(calibrepath, book.path, data.name) - if os.path.exists(file_path + "." + old_book_format.lower()): - # read settings and append converter task to queue - if kindle_mail: - settings = config.get_mail_settings() - settings['subject'] = _('Send to Kindle') # pretranslate Subject for e-mail - settings['body'] = _(u'This e-mail has been sent via Calibre-Web.') - # text = _(u"%(format)s: %(book)s", format=new_book_format, book=book.title) - else: - settings = dict() - txt = (u"%s -> %s: %s" % (old_book_format, new_book_format, book.title)) - settings['old_book_format'] = old_book_format - settings['new_book_format'] = new_book_format - WorkerThread.add(user_id, TaskConvert(file_path, book.id, txt, settings, kindle_mail, user_id)) - return None else: - error_message = _(u"%(format)s not found: %(fn)s", - format=old_book_format, fn=data.name + "." + old_book_format.lower()) - return error_message + if not os.path.exists(file_path + "." + old_book_format.lower()): + error_message = _(u"%(format)s not found: %(fn)s", + format=old_book_format, fn=data.name + "." + old_book_format.lower()) + return error_message + # read settings and append converter task to queue + if kindle_mail: + settings = config.get_mail_settings() + settings['subject'] = _('Send to Kindle') # pretranslate Subject for e-mail + settings['body'] = _(u'This e-mail has been sent via Calibre-Web.') + else: + settings = dict() + txt = (u"%s -> %s: %s" % (old_book_format, new_book_format, book.title)) + settings['old_book_format'] = old_book_format + settings['new_book_format'] = new_book_format + WorkerThread.add(user_id, TaskConvert(file_path, book.id, txt, settings, kindle_mail, user_id)) + return None def send_test_mail(kindle_mail, user_name): diff --git a/cps/tasks/convert.py b/cps/tasks/convert.py index 35aceddb..a41c5ee1 100644 --- a/cps/tasks/convert.py +++ b/cps/tasks/convert.py @@ -32,11 +32,31 @@ class TaskConvert(CalibreTask): def run(self, worker_thread): self.worker_thread = worker_thread + if config.config_use_google_drive: + cur_book = calibre_db.get_book(self.bookid) + data = calibre_db.get_book_format(self.bookid, self.settings['old_book_format']) + df = gdriveutils.getFileFromEbooksFolder(cur_book.path, + data.name + "." + self.settings['old_book_format'].lower()) + if df: + datafile = os.path.join(config.config_calibre_dir, + cur_book.path, + data.name + u"." + self.settings['old_book_format'].lower()) + if not os.path.exists(os.path.join(config.config_calibre_dir, cur_book.path)): + os.makedirs(os.path.join(config.config_calibre_dir, cur_book.path)) + df.GetContentFile(datafile) + else: + error_message = _(u"%(format)s not found on Google Drive: %(fn)s", + format=self.settings['old_book_format'], + fn=data.name + "." + self.settings['old_book_format'].lower()) + return error_message + filename = self._convert_ebook_format() if filename: if config.config_use_google_drive: + # Upload files to gdrive gdriveutils.updateGdriveCalibreFromLocal() + self._handleSuccess() if self.kindle_mail: # if we're sending to kindle after converting, create a one-off task and run it immediately # todo: figure out how to incorporate this into the progress @@ -99,7 +119,8 @@ class TaskConvert(CalibreTask): self.results['title'] = cur_book.title if config.config_use_google_drive: os.remove(file_path + format_old_ext) - self._handleSuccess() + else: + self._handleSuccess() return os.path.basename(file_path + format_new_ext) else: error_message = _('%(format)s format not found on disk', format=format_new_ext.upper()) @@ -175,6 +196,8 @@ class TaskConvert(CalibreTask): progress = re.search(r"(\d+)%\s.*", nextline) if progress: self.progress = int(progress.group(1)) / 100 + if config.config_use_google_drive: + self.progress *= 0.9 # process returncode check = p.returncode diff --git a/cps/templates/book_edit.html b/cps/templates/book_edit.html index 01f6772d..16c02fae 100644 --- a/cps/templates/book_edit.html +++ b/cps/templates/book_edit.html @@ -12,7 +12,9 @@ {% if book.data|length > 1 %}