Fixes for comic reader

This commit is contained in:
Ozzieisaacs 2020-05-02 09:32:53 +02:00
parent 0a92d79ec0
commit 9bc085a23e
7 changed files with 31 additions and 39 deletions

View file

@ -89,6 +89,7 @@ def stats():
authors = db.session.query(db.Authors).count() authors = db.session.query(db.Authors).count()
categorys = db.session.query(db.Tags).count() categorys = db.session.query(db.Tags).count()
series = db.session.query(db.Series).count() series = db.session.query(db.Series).count()
_VERSIONS['ebook converter'] = _(converter.get_version()) _VERSIONS['ebook converter'] = _(converter.get_calibre_version())
_VERSIONS['unrar'] = _(converter.get_version())
return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=_VERSIONS, return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=_VERSIONS,
categorycounter=categorys, seriecounter=series, title=_(u"Statistics"), page="stat") categorycounter=categorys, seriecounter=series, title=_(u"Statistics"), page="stat")

View file

@ -48,10 +48,15 @@ def _get_command_version(path, pattern, argument=None):
return _NOT_INSTALLED return _NOT_INSTALLED
def get_version(): def get_calibre_version():
version = None version = None
if config.config_ebookconverter == 1: if config.config_ebookconverter == 2:
version = _get_command_version(config.config_converterpath, r'Amazon kindlegen\(') version = _get_command_version(config.config_converterpath, r'ebook-convert.*\(calibre', '--version')
elif config.config_ebookconverter == 2: return version or _NOT_CONFIGURED
def get_unrar_version():
version = None
if config.config_ebookconverter == 2:
version = _get_command_version(config.config_converterpath, r'ebook-convert.*\(calibre', '--version') version = _get_command_version(config.config_converterpath, r'ebook-convert.*\(calibre', '--version')
return version or _NOT_CONFIGURED return version or _NOT_CONFIGURED

View file

@ -719,7 +719,6 @@ def upload():
os.path.join(filepath, "cover.jpg")) os.path.join(filepath, "cover.jpg"))
else: else:
has_cover = 1 has_cover = 1
move(meta.cover, os.path.join(filepath, "cover.jpg"))
# handle authors # handle authors
is_author = db.session.query(db.Authors).filter(db.Authors.name == authr).first() is_author = db.session.query(db.Authors).filter(db.Authors.name == authr).first()
@ -796,6 +795,10 @@ def upload():
if config.config_use_google_drive: if config.config_use_google_drive:
gdriveutils.updateGdriveCalibreFromLocal() gdriveutils.updateGdriveCalibreFromLocal()
error = helper.update_dir_stucture(book.id, config.config_calibre_dir) error = helper.update_dir_stucture(book.id, config.config_calibre_dir)
# move cover to final directory, including book id
if has_cover:
move(meta.cover, os.path.join(filepath+ ' ({})'.format(book_id), "cover.jpg"))
db.session.commit() db.session.commit()
if config.config_use_google_drive: if config.config_use_google_drive:
gdriveutils.updateGdriveCalibreFromLocal() gdriveutils.updateGdriveCalibreFromLocal()

View file

@ -173,14 +173,13 @@ def check_send_to_kindle(entry):
bookformats.append({'format': 'Pdf', bookformats.append({'format': 'Pdf',
'convert': 0, 'convert': 0,
'text': _('Send %(format)s to Kindle', format='Pdf')}) 'text': _('Send %(format)s to Kindle', format='Pdf')})
if config.config_ebookconverter >= 1: if config.config_ebookconverter == 2:
if 'EPUB' in formats and not 'MOBI' in formats: if 'EPUB' in formats and not 'MOBI' in formats:
bookformats.append({'format': 'Mobi', bookformats.append({'format': 'Mobi',
'convert':1, 'convert':1,
'text': _('Convert %(orig)s to %(format)s and send to Kindle', 'text': _('Convert %(orig)s to %(format)s and send to Kindle',
orig='Epub', orig='Epub',
format='Mobi')}) format='Mobi')})
if config.config_ebookconverter == 2:
if 'AZW3' in formats and not 'MOBI' in formats: if 'AZW3' in formats and not 'MOBI' in formats:
bookformats.append({'format': 'Mobi', bookformats.append({'format': 'Mobi',
'convert': 2, 'convert': 2,

View file

@ -949,12 +949,15 @@ def HandleInitRequest():
book_uuid="{ImageId}", book_uuid="{ImageId}",
width="{width}", width="{width}",
height="{height}", height="{height}",
Quality='{Quality}',
isGreyscale='isGreyscale',
_external=True)) _external=True))
kobo_resources["image_url_template"] = unquote(url_for("kobo.HandleCoverImageRequest", kobo_resources["image_url_template"] = unquote(url_for("kobo.HandleCoverImageRequest",
auth_token=kobo_auth.get_auth_token(), auth_token=kobo_auth.get_auth_token(),
book_uuid="{ImageId}", book_uuid="{ImageId}",
width="{width}", width="{width}",
height="{height}", height="{height}",
isGreyscale='false',
_external=True)) _external=True))

View file

@ -329,8 +329,6 @@
<div class="form-group"> <div class="form-group">
<div><input type="radio" name="config_ebookconverter" id="converter0" value="0" {% if config.config_ebookconverter == 0 %}checked{% endif %}> <div><input type="radio" name="config_ebookconverter" id="converter0" value="0" {% if config.config_ebookconverter == 0 %}checked{% endif %}>
<label for="converter0">{{_('No Converter')}}</label></div> <label for="converter0">{{_('No Converter')}}</label></div>
<div><input type="radio" name="config_ebookconverter" id="converter1" value="1" {% if config.config_ebookconverter == 1 %}checked{% endif %}>
<label for="converter1">{{_('Use Kindlegen')}}</label></div>
<div><input type="radio" name="config_ebookconverter" id="converter2" value="2" {% if config.config_ebookconverter == 2 %}checked{% endif %}> <div><input type="radio" name="config_ebookconverter" id="converter2" value="2" {% if config.config_ebookconverter == 2 %}checked{% endif %}>
<label for="converter2">{{_('Use calibre\'s ebook converter')}}</label></div> <label for="converter2">{{_('Use calibre\'s ebook converter')}}</label></div>
</div> </div>

View file

@ -297,11 +297,6 @@ class WorkerThread(threading.Thread):
return return
try: try:
# check which converter to use kindlegen is "1"
if format_old_ext == '.epub' and format_new_ext == '.mobi':
if config.config_ebookconverter == 1:
command = [config.config_converterpath, file_path + u'.epub']
quotes = [1]
if config.config_ebookconverter == 2: if config.config_ebookconverter == 2:
# Linux py2.7 encode as list without quotes no empty element for parameters # Linux py2.7 encode as list without quotes no empty element for parameters
# linux py3.x no encode and as list without quotes no empty element for parameters # linux py3.x no encode and as list without quotes no empty element for parameters
@ -324,28 +319,17 @@ class WorkerThread(threading.Thread):
self._handleError(_(u"Ebook-converter failed: %(error)s", error=e)) self._handleError(_(u"Ebook-converter failed: %(error)s", error=e))
return return
if config.config_ebookconverter == 1: while p.poll() is None:
nextline = p.communicate()[0] nextline = p.stdout.readline()
# Format of error message (kindlegen translates its output texts): if os.name == 'nt' and sys.version_info < (3, 0):
# Error(prcgen):E23006: Language not recognized in metadata.The dc:Language field is mandatory.Aborting. nextline = nextline.decode('windows-1252')
conv_error = re.search(r".*\(.*\):(E\d+):\s(.*)", nextline, re.MULTILINE) elif os.name == 'posix' and sys.version_info < (3, 0):
# If error occoures, store error message for logfile nextline = nextline.decode('utf-8')
if conv_error: log.debug(nextline.strip('\r\n'))
error_message = _(u"Kindlegen failed with Error %(error)s. Message: %(message)s", # parse progress string from calibre-converter
error=conv_error.group(1), message=conv_error.group(2).strip()) progress = re.search(r"(\d+)%\s.*", nextline)
log.debug("convert_kindlegen: %s", nextline) if progress:
else: self.UIqueue[index]['progress'] = progress.group(1) + ' %'
while p.poll() is None:
nextline = p.stdout.readline()
if os.name == 'nt' and sys.version_info < (3, 0):
nextline = nextline.decode('windows-1252')
elif os.name == 'posix' and sys.version_info < (3, 0):
nextline = nextline.decode('utf-8')
log.debug(nextline.strip('\r\n'))
# parse progress string from calibre-converter
progress = re.search(r"(\d+)%\s.*", nextline)
if progress:
self.UIqueue[index]['progress'] = progress.group(1) + ' %'
# process returncode # process returncode
check = p.returncode check = p.returncode
@ -361,8 +345,7 @@ class WorkerThread(threading.Thread):
# 0 = Info(prcgen):I1036: Mobi file built successfully # 0 = Info(prcgen):I1036: Mobi file built successfully
# 1 = Info(prcgen):I1037: Mobi file built with WARNINGS! # 1 = Info(prcgen):I1037: Mobi file built with WARNINGS!
# 2 = Info(prcgen):I1038: MOBI file could not be generated because of errors! # 2 = Info(prcgen):I1038: MOBI file could not be generated because of errors!
if (check < 2 and config.config_ebookconverter == 1) or \ if check == 0 and config.config_ebookconverter == 2:
(check == 0 and config.config_ebookconverter == 2):
cur_book = db.session.query(db.Books).filter(db.Books.id == bookid).first() cur_book = db.session.query(db.Books).filter(db.Books.id == bookid).first()
if os.path.isfile(file_path + format_new_ext): if os.path.isfile(file_path + format_new_ext):
new_format = db.Data(name=cur_book.data[0].name, new_format = db.Data(name=cur_book.data[0].name,