Autodetect binaries
This commit is contained in:
		
							parent
							
								
									0a02caad04
								
							
						
					
					
						commit
						41960ada4a
					
				| 
						 | 
				
			
			@ -117,17 +117,12 @@ class _Settings(_Base):
 | 
			
		|||
    config_ldap_group_members_field = Column(String, default='memberUid')
 | 
			
		||||
    config_ldap_group_name = Column(String, default='calibreweb')
 | 
			
		||||
 | 
			
		||||
    # config_ebookconverter = Column(Integer, default=0)
 | 
			
		||||
    config_kepubifypath = Column(String)
 | 
			
		||||
    config_converterpath = Column(String)
 | 
			
		||||
    config_kepubifypath = Column(String, default=None)
 | 
			
		||||
    config_converterpath = Column(String, default=None)
 | 
			
		||||
    config_calibre = Column(String)
 | 
			
		||||
    config_rarfile_location = Column(String)
 | 
			
		||||
    config_rarfile_location = Column(String, default=None)
 | 
			
		||||
    config_upload_formats = Column(String, default=','.join(constants.EXTENSIONS_UPLOAD))
 | 
			
		||||
 | 
			
		||||
    config_automatic_kepub = Column(Boolean, default=False)
 | 
			
		||||
    config_kepubify_path = Column(String)
 | 
			
		||||
    config_kepub_cache_dir = Column(String)
 | 
			
		||||
 | 
			
		||||
    config_updatechannel = Column(Integer, default=constants.UPDATE_STABLE)
 | 
			
		||||
 | 
			
		||||
    config_reverse_proxy_login_header_name = Column(String)
 | 
			
		||||
| 
						 | 
				
			
			@ -271,7 +266,8 @@ class _ConfigSQL(object):
 | 
			
		|||
                setattr(self, k, v)
 | 
			
		||||
 | 
			
		||||
        if self.config_google_drive_watch_changes_response:
 | 
			
		||||
            self.config_google_drive_watch_changes_response = json.loads(self.config_google_drive_watch_changes_response)
 | 
			
		||||
            self.config_google_drive_watch_changes_response = \
 | 
			
		||||
                json.loads(self.config_google_drive_watch_changes_response)
 | 
			
		||||
 | 
			
		||||
        have_metadata_db = bool(self.config_calibre_dir)
 | 
			
		||||
        if have_metadata_db:
 | 
			
		||||
| 
						 | 
				
			
			@ -280,6 +276,16 @@ class _ConfigSQL(object):
 | 
			
		|||
                have_metadata_db = os.path.isfile(db_file)
 | 
			
		||||
        self.db_configured = have_metadata_db
 | 
			
		||||
 | 
			
		||||
        if self.config_converterpath == None:
 | 
			
		||||
            self.config_converterpath = autodetect_calibre_binary()
 | 
			
		||||
 | 
			
		||||
        if self.config_kepubifypath == None:
 | 
			
		||||
            self.config_kepubifypath = autodetect_kepubify_binary()
 | 
			
		||||
 | 
			
		||||
        if self.config_rarfile_location == None:
 | 
			
		||||
            self.config_rarfile_location = autodetect_unrar_binary()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        logger.setup(self.config_logfile, self.config_log_level)
 | 
			
		||||
 | 
			
		||||
    def save(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -337,6 +343,7 @@ def _migrate_table(session, orm_class):
 | 
			
		|||
    if changed:
 | 
			
		||||
        session.commit()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def autodetect_calibre_binary():
 | 
			
		||||
    if sys.platform == "win32":
 | 
			
		||||
        calibre_path = ["C:\\program files\calibre\calibre-convert.exe",
 | 
			
		||||
| 
						 | 
				
			
			@ -346,8 +353,29 @@ def autodetect_calibre_binary():
 | 
			
		|||
    for element in calibre_path:
 | 
			
		||||
        if os.path.isfile(element) and os.access(element, os.X_OK):
 | 
			
		||||
            return element
 | 
			
		||||
    return None
 | 
			
		||||
    return ""
 | 
			
		||||
 | 
			
		||||
def autodetect_unrar_binary():
 | 
			
		||||
    if sys.platform == "win32":
 | 
			
		||||
        calibre_path = ["C:\\program files\\WinRar\\unRAR.exe",
 | 
			
		||||
                        "C:\\program files(x86)\\WinRar\\unRAR.exe"]
 | 
			
		||||
    else:
 | 
			
		||||
        calibre_path = ["/usr/bin/unrar"]
 | 
			
		||||
    for element in calibre_path:
 | 
			
		||||
        if os.path.isfile(element) and os.access(element, os.X_OK):
 | 
			
		||||
            return element
 | 
			
		||||
    return ""
 | 
			
		||||
 | 
			
		||||
def autodetect_kepubify_binary():
 | 
			
		||||
    if sys.platform == "win32":
 | 
			
		||||
        calibre_path = ["C:\\program files\\kepubify\\kepubify-windows-64Bit.exe",
 | 
			
		||||
                        "C:\\program files(x86)\\kepubify\\kepubify-windows-64Bit.exe"]
 | 
			
		||||
    else:
 | 
			
		||||
        calibre_path = ["/opt/kepubify/kepubify-linux-64bit", "/opt/kepubify/kepubify-linux-32bit"]
 | 
			
		||||
    for element in calibre_path:
 | 
			
		||||
        if os.path.isfile(element) and os.access(element, os.X_OK):
 | 
			
		||||
            return element
 | 
			
		||||
    return ""
 | 
			
		||||
 | 
			
		||||
def _migrate_database(session):
 | 
			
		||||
    # make sure the table is created, if it does not exist
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ from __future__ import division, print_function, unicode_literals
 | 
			
		|||
import os
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
import json
 | 
			
		||||
from shutil import move, copyfile
 | 
			
		||||
from shutil import copyfile
 | 
			
		||||
from uuid import uuid4
 | 
			
		||||
 | 
			
		||||
from flask import Blueprint, request, flash, redirect, url_for, abort, Markup, Response
 | 
			
		||||
| 
						 | 
				
			
			@ -267,19 +267,27 @@ def render_edit_book(book_id):
 | 
			
		|||
 | 
			
		||||
    # Option for showing convertbook button
 | 
			
		||||
    valid_source_formats=list()
 | 
			
		||||
    allowed_conversion_formats = list()
 | 
			
		||||
    kepub_possible=None
 | 
			
		||||
    if config.config_converterpath:
 | 
			
		||||
        for file in book.data:
 | 
			
		||||
            if file.format.lower() in constants.EXTENSIONS_CONVERT:
 | 
			
		||||
                valid_source_formats.append(file.format.lower())
 | 
			
		||||
    if config.config_kepubifypath and 'epub' in [file.format.lower() for file in book.data]:
 | 
			
		||||
        kepub_possible = True
 | 
			
		||||
        if not config.config_converterpath:
 | 
			
		||||
            valid_source_formats.append('epub')
 | 
			
		||||
 | 
			
		||||
    # Determine what formats don't already exist
 | 
			
		||||
    allowed_conversion_formats = constants.EXTENSIONS_CONVERT.copy()
 | 
			
		||||
    for file in book.data:
 | 
			
		||||
        try:
 | 
			
		||||
            allowed_conversion_formats.remove(file.format.lower())
 | 
			
		||||
        except Exception:
 | 
			
		||||
            log.warning('%s already removed from list.', file.format.lower())
 | 
			
		||||
 | 
			
		||||
    if config.config_converterpath:
 | 
			
		||||
        allowed_conversion_formats = constants.EXTENSIONS_CONVERT.copy()
 | 
			
		||||
        for file in book.data:
 | 
			
		||||
            try:
 | 
			
		||||
                allowed_conversion_formats.remove(file.format.lower())
 | 
			
		||||
            except Exception:
 | 
			
		||||
                log.warning('%s already removed from list.', file.format.lower())
 | 
			
		||||
    if kepub_possible:
 | 
			
		||||
        allowed_conversion_formats.append('kepub')
 | 
			
		||||
    return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
 | 
			
		||||
                                 title=_(u"edit metadata"), page="editbook",
 | 
			
		||||
                                 conversion_formats=allowed_conversion_formats,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,6 +107,11 @@ def get_sidebar_config(kwargs=None):
 | 
			
		|||
        {"glyph": "glyphicon-trash", "text": _('Archived Books'), "link": 'web.books_list', "id": "archived",
 | 
			
		||||
         "visibility": constants.SIDEBAR_ARCHIVED, 'public': (not g.user.is_anonymous), "page": "archived",
 | 
			
		||||
         "show_text": _('Show archived books'), "config_show": content})
 | 
			
		||||
    sidebar.append(
 | 
			
		||||
        {"glyph": "glyphicon-th-list", "text": _('Books List'), "link": 'web.books_list', "id": "list",
 | 
			
		||||
         "visibility": constants.SIDEBAR_LIST, 'public': (not g.user.is_anonymous), "page": "list",
 | 
			
		||||
         "show_text": _('Show Books List'), "config_show": content})
 | 
			
		||||
 | 
			
		||||
    return sidebar
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user