mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Bug #1174147 - Kobo driver can writes covers to wrong place for OSX when using SD card
- Change to use os.path.abspath to normalise paths for comparisons. - FIxed some other path manipulation to use os.path methods. - Added fix for bug #1174126 - covers not sent to kobo SD card if images subdirectory missing
This commit is contained in:
commit
9cc3925471
@ -35,7 +35,7 @@ class KOBO(USBMS):
|
|||||||
gui_name = 'Kobo Reader'
|
gui_name = 'Kobo Reader'
|
||||||
description = _('Communicate with the Kobo Reader')
|
description = _('Communicate with the Kobo Reader')
|
||||||
author = 'Timothy Legge and David Forrester'
|
author = 'Timothy Legge and David Forrester'
|
||||||
version = (2, 0, 8)
|
version = (2, 0, 9)
|
||||||
|
|
||||||
dbversion = 0
|
dbversion = 0
|
||||||
fwversion = 0
|
fwversion = 0
|
||||||
@ -1193,8 +1193,11 @@ class KOBO(USBMS):
|
|||||||
db.set_comment(db_id, mi.comments)
|
db.set_comment(db_id, mi.comments)
|
||||||
|
|
||||||
# Add bookmark file to db_id
|
# Add bookmark file to db_id
|
||||||
db.add_format_with_hooks(db_id, bm.value.bookmark_extension,
|
# NOTE: As it is, this copied the book from the device back to the library. That meant it replaced the
|
||||||
bm.value.path, index_is_id=True)
|
# existing file. Taking this out for that reason, but some books have a ANNOT file that could be
|
||||||
|
# copied.
|
||||||
|
# db.add_format_with_hooks(db_id, bm.value.bookmark_extension,
|
||||||
|
# bm.value.path, index_is_id=True)
|
||||||
|
|
||||||
|
|
||||||
class KOBOTOUCH(KOBO):
|
class KOBOTOUCH(KOBO):
|
||||||
@ -1366,7 +1369,7 @@ class KOBOTOUCH(KOBO):
|
|||||||
prefix = self._card_a_prefix if oncard == 'carda' else \
|
prefix = self._card_a_prefix if oncard == 'carda' else \
|
||||||
self._card_b_prefix if oncard == 'cardb' \
|
self._card_b_prefix if oncard == 'cardb' \
|
||||||
else self._main_prefix
|
else self._main_prefix
|
||||||
debug_print("KoboTouch:books - prefix='%s'"%oncard)
|
debug_print("KoboTouch:books - oncard='%s', prefix='%s'"%(oncard, prefix))
|
||||||
|
|
||||||
# Determine the firmware version
|
# Determine the firmware version
|
||||||
try:
|
try:
|
||||||
@ -2100,7 +2103,8 @@ class KOBOTOUCH(KOBO):
|
|||||||
:param filepath: The full path to the ebook file
|
:param filepath: The full path to the ebook file
|
||||||
|
|
||||||
'''
|
'''
|
||||||
# debug_print("KoboTouch:upload_cover - path='%s' filename='%s'"%(path, filename))
|
debug_print("KoboTouch:upload_cover - path='%s' filename='%s' "%(path, filename))
|
||||||
|
debug_print(" filepath='%s' "%(filepath))
|
||||||
|
|
||||||
opts = self.settings()
|
opts = self.settings()
|
||||||
if not self.copying_covers():
|
if not self.copying_covers():
|
||||||
@ -2109,7 +2113,7 @@ class KOBOTOUCH(KOBO):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Only upload covers to SD card if that is supported
|
# Only upload covers to SD card if that is supported
|
||||||
if self._card_a_prefix and path.startswith(self._card_a_prefix) and not self.supports_covers_on_sdcard():
|
if self._card_a_prefix and os.path.abspath(path).startswith(os.path.abspath(self._card_a_prefix)) and not self.supports_covers_on_sdcard():
|
||||||
return
|
return
|
||||||
|
|
||||||
if not opts.extra_customization[self.OPT_UPLOAD_GRAYSCALE_COVERS]:
|
if not opts.extra_customization[self.OPT_UPLOAD_GRAYSCALE_COVERS]:
|
||||||
@ -2133,12 +2137,13 @@ class KOBOTOUCH(KOBO):
|
|||||||
|
|
||||||
|
|
||||||
def images_path(self, path):
|
def images_path(self, path):
|
||||||
if self._card_a_prefix and path.startswith(self._card_a_prefix) and self.supports_covers_on_sdcard():
|
if self._card_a_prefix and os.path.abspath(path).startswith(os.path.abspath(self._card_a_prefix)) and self.supports_covers_on_sdcard():
|
||||||
path_prefix = 'koboExtStorage/images/'
|
path_prefix = 'koboExtStorage/images/'
|
||||||
path = self._card_a_prefix + path_prefix
|
path = os.path.join(self._card_a_prefix, path_prefix)
|
||||||
else:
|
else:
|
||||||
path_prefix = '.kobo/images/'
|
path_prefix = '.kobo/images/'
|
||||||
path = self._main_prefix + path_prefix
|
path = os.path.join(self._main_prefix, path_prefix)
|
||||||
|
|
||||||
return path
|
return path
|
||||||
|
|
||||||
def _upload_cover(self, path, filename, metadata, filepath, uploadgrayscale, keep_cover_aspect=False):
|
def _upload_cover(self, path, filename, metadata, filepath, uploadgrayscale, keep_cover_aspect=False):
|
||||||
@ -2181,11 +2186,16 @@ class KOBOTOUCH(KOBO):
|
|||||||
cursor.close()
|
cursor.close()
|
||||||
|
|
||||||
if ImageID != None:
|
if ImageID != None:
|
||||||
path = self.images_path(path) + ImageID
|
path = os.path.join(self.images_path(path), ImageID)
|
||||||
|
|
||||||
if show_debug:
|
if show_debug:
|
||||||
debug_print("KoboTouch:_upload_cover - About to loop over cover endings")
|
debug_print("KoboTouch:_upload_cover - About to loop over cover endings")
|
||||||
|
|
||||||
|
image_dir = os.path.dirname(os.path.abspath(path))
|
||||||
|
if not os.path.exists(image_dir):
|
||||||
|
debug_print("KoboTouch:_upload_cover - Image directory does not exust. Creating path='%s'" % (image_dir))
|
||||||
|
os.makedirs(image_dir)
|
||||||
|
|
||||||
for ending, cover_options in self.cover_file_endings().items():
|
for ending, cover_options in self.cover_file_endings().items():
|
||||||
resize, min_dbversion, max_dbversion, isFullsize = cover_options
|
resize, min_dbversion, max_dbversion, isFullsize = cover_options
|
||||||
if show_debug:
|
if show_debug:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user