mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
1) Re-enable subdirs in lpaths
2) Make backloading into library work
This commit is contained in:
parent
cf6a1711f4
commit
42213fc01e
@ -8,6 +8,7 @@ Created on 29 Jun 2012
|
|||||||
@author: charles
|
@author: charles
|
||||||
'''
|
'''
|
||||||
import socket, select, json, inspect, os, traceback, time, sys, random
|
import socket, select, json, inspect, os, traceback, time, sys, random
|
||||||
|
import posixpath
|
||||||
import hashlib, threading
|
import hashlib, threading
|
||||||
from base64 import b64encode, b64decode
|
from base64 import b64encode, b64decode
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
@ -26,6 +27,7 @@ from calibre.ebooks.metadata import title_sort
|
|||||||
from calibre.ebooks.metadata.book.base import Metadata
|
from calibre.ebooks.metadata.book.base import Metadata
|
||||||
from calibre.ebooks.metadata.book.json_codec import JsonCodec
|
from calibre.ebooks.metadata.book.json_codec import JsonCodec
|
||||||
from calibre.library import current_library_name
|
from calibre.library import current_library_name
|
||||||
|
from calibre.ptempfile import PersistentTemporaryFile
|
||||||
from calibre.utils.ipc import eintr_retry_call
|
from calibre.utils.ipc import eintr_retry_call
|
||||||
from calibre.utils.config import from_json, tweaks
|
from calibre.utils.config import from_json, tweaks
|
||||||
from calibre.utils.date import isoformat, now
|
from calibre.utils.date import isoformat, now
|
||||||
@ -70,14 +72,15 @@ class SMART_DEVICE_APP(DeviceConfig, DevicePlugin):
|
|||||||
DEVICE_PLUGBOARD_NAME = 'SMART_DEVICE_APP'
|
DEVICE_PLUGBOARD_NAME = 'SMART_DEVICE_APP'
|
||||||
CAN_SET_METADATA = []
|
CAN_SET_METADATA = []
|
||||||
CAN_DO_DEVICE_DB_PLUGBOARD = False
|
CAN_DO_DEVICE_DB_PLUGBOARD = False
|
||||||
SUPPORTS_SUB_DIRS = False
|
SUPPORTS_SUB_DIRS = True
|
||||||
MUST_READ_METADATA = True
|
MUST_READ_METADATA = True
|
||||||
NEWS_IN_FOLDER = False
|
NEWS_IN_FOLDER = False
|
||||||
SUPPORTS_USE_AUTHOR_SORT = False
|
SUPPORTS_USE_AUTHOR_SORT = False
|
||||||
WANTS_UPDATED_THUMBNAILS = True
|
WANTS_UPDATED_THUMBNAILS = True
|
||||||
MAX_PATH_LEN = 100
|
MAX_PATH_LEN = 250
|
||||||
THUMBNAIL_HEIGHT = 160
|
THUMBNAIL_HEIGHT = 160
|
||||||
PREFIX = ''
|
PREFIX = ''
|
||||||
|
BACKLOADING_ERROR_MESSAGE = None
|
||||||
|
|
||||||
# Some network protocol constants
|
# Some network protocol constants
|
||||||
BASE_PACKET_LEN = 4096
|
BASE_PACKET_LEN = 4096
|
||||||
@ -206,25 +209,6 @@ class SMART_DEVICE_APP(DeviceConfig, DevicePlugin):
|
|||||||
print()
|
print()
|
||||||
self.debug_time = time.time()
|
self.debug_time = time.time()
|
||||||
|
|
||||||
# Various methods required by the plugin architecture
|
|
||||||
@classmethod
|
|
||||||
def _default_save_template(cls):
|
|
||||||
from calibre.library.save_to_disk import config
|
|
||||||
st = cls.SAVE_TEMPLATE if cls.SAVE_TEMPLATE else \
|
|
||||||
config().parse().send_template
|
|
||||||
if st:
|
|
||||||
st = os.path.basename(st)
|
|
||||||
return st
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def save_template(cls):
|
|
||||||
st = cls.settings().save_template
|
|
||||||
if st:
|
|
||||||
st = os.path.basename(st)
|
|
||||||
else:
|
|
||||||
st = cls._default_save_template()
|
|
||||||
return st
|
|
||||||
|
|
||||||
# local utilities
|
# local utilities
|
||||||
|
|
||||||
# copied from USBMS. Perhaps this could be a classmethod in usbms?
|
# copied from USBMS. Perhaps this could be a classmethod in usbms?
|
||||||
@ -286,6 +270,7 @@ class SMART_DEVICE_APP(DeviceConfig, DevicePlugin):
|
|||||||
extra_components.append(sanitize(fname))
|
extra_components.append(sanitize(fname))
|
||||||
else:
|
else:
|
||||||
extra_components[-1] = sanitize(extra_components[-1]+ext)
|
extra_components[-1] = sanitize(extra_components[-1]+ext)
|
||||||
|
self._debug('1', extra_components)
|
||||||
|
|
||||||
if extra_components[-1] and extra_components[-1][0] in ('.', '_'):
|
if extra_components[-1] and extra_components[-1][0] in ('.', '_'):
|
||||||
extra_components[-1] = 'x' + extra_components[-1][1:]
|
extra_components[-1] = 'x' + extra_components[-1][1:]
|
||||||
@ -318,7 +303,7 @@ class SMART_DEVICE_APP(DeviceConfig, DevicePlugin):
|
|||||||
|
|
||||||
extra_components = list(map(remove_trailing_periods, extra_components))
|
extra_components = list(map(remove_trailing_periods, extra_components))
|
||||||
components = shorten_components_to(maxlen, extra_components)
|
components = shorten_components_to(maxlen, extra_components)
|
||||||
filepath = os.path.join(*components)
|
filepath = posixpath.join(*components)
|
||||||
return filepath
|
return filepath
|
||||||
|
|
||||||
def _strip_prefix(self, path):
|
def _strip_prefix(self, path):
|
||||||
@ -964,6 +949,15 @@ class SMART_DEVICE_APP(DeviceConfig, DevicePlugin):
|
|||||||
else:
|
else:
|
||||||
raise ControlError(desc='request for book data failed')
|
raise ControlError(desc='request for book data failed')
|
||||||
|
|
||||||
|
@synchronous('sync_lock')
|
||||||
|
def prepare_addable_books(self, paths):
|
||||||
|
for idx, path in enumerate(paths):
|
||||||
|
(ign, ext) = os.path.splitext(path)
|
||||||
|
tf = PersistentTemporaryFile(suffix=ext)
|
||||||
|
self.get_file(path, tf)
|
||||||
|
paths[idx] = tf.name
|
||||||
|
return paths
|
||||||
|
|
||||||
@synchronous('sync_lock')
|
@synchronous('sync_lock')
|
||||||
def set_plugboards(self, plugboards, pb_func):
|
def set_plugboards(self, plugboards, pb_func):
|
||||||
self._debug()
|
self._debug()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user