Fixes for comic reader
This commit is contained in:
parent
0a92d79ec0
commit
9bc085a23e
7 changed files with 31 additions and 39 deletions
|
@ -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")
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in a new issue