Update Kobo driver to allow sending kepubs

Kepubs need to have the name and extension ending in ".kepub.epub".
Fixes #1252688 [Update Kobo driver to allow sending kepubs](https://bugs.launchpad.net/calibre/+bug/1252688)
This commit is contained in:
David Forrester 2013-11-19 21:42:10 +11:00 committed by Kovid Goyal
parent b71674436e
commit 786a337736

View File

@ -28,7 +28,8 @@ from calibre.ptempfile import PersistentTemporaryFile
from calibre.constants import DEBUG from calibre.constants import DEBUG
from calibre.utils.config_base import prefs from calibre.utils.config_base import prefs
EPUB_EXT = '.epub' EPUB_EXT = '.epub'
KEPUB_EXT = '.kepub'
# Implementation of QtQHash for strings. This doesn't seem to be in the Python implementation. # Implementation of QtQHash for strings. This doesn't seem to be in the Python implementation.
@ -889,7 +890,7 @@ class KOBO(USBMS):
return collections return collections
def sync_booklists(self, booklists, end_session=True): def sync_booklists(self, booklists, end_session=True):
debug_print('KOBO: started sync_booklists') debug_print('KOBO:sync_booklists - start')
paths = self.get_device_paths() paths = self.get_device_paths()
blists = {} blists = {}
@ -911,7 +912,7 @@ class KOBO(USBMS):
self.update_device_database_collections(blist, collections, oncard) self.update_device_database_collections(blist, collections, oncard)
USBMS.sync_booklists(self, booklists, end_session=end_session) USBMS.sync_booklists(self, booklists, end_session=end_session)
debug_print('KOBO: finished sync_booklists') debug_print('KOBO:sync_booklists - end')
def rebuild_collections(self, booklist, oncard): def rebuild_collections(self, booklist, oncard):
collections_attributes = [] collections_attributes = []
@ -1250,14 +1251,16 @@ class KOBOTOUCH(KOBO):
min_dbversion_externalid = 65 min_dbversion_externalid = 65
min_dbversion_archive = 71 min_dbversion_archive = 71
min_dbversion_images_on_sdcard = 77 min_dbversion_images_on_sdcard = 77
min_dbversion_activiy = 77 min_dbversion_activity = 77
min_dbversion_keywords = 82 min_dbversion_keywords = 82
max_supported_fwversion = (3, 0, 0) max_supported_fwversion = (3, 0, 0)
min_fwversion_images_on_sdcard = (2,4,1) min_fwversion_shelves = (2, 0, 0)
min_fwversion_images_tree = (2,9,0) # Cover images stored in tree under .kobo-images min_fwversion_images_on_sdcard = (2, 4, 1)
min_fwversion_images_tree = (2, 9, 0) # Cover images stored in tree under .kobo-images
has_kepubs = True has_kepubs = True
FORMATS = ['kepub', 'epub', 'cbr', 'cbz', 'pdf', 'txt']
booklist_class = KTCollectionsBookList booklist_class = KTCollectionsBookList
book_class = Book book_class = Book
@ -1982,6 +1985,17 @@ class KOBOTOUCH(KOBO):
return True return True
def filename_callback(self, path, mi):
debug_print("KoboTouch:filename_callback:Path - {0}".format(path))
idx = path.rfind('.')
ext = path[idx:]
if ext == KEPUB_EXT:
path = path + EPUB_EXT
debug_print("KoboTouch:filename_callback:New path - {0}".format(path))
return path
def delete_via_sql(self, ContentID, ContentType): def delete_via_sql(self, ContentID, ContentType):
imageId = super(KOBOTOUCH, self).delete_via_sql(ContentID, ContentType) imageId = super(KOBOTOUCH, self).delete_via_sql(ContentID, ContentType)
@ -2177,7 +2191,7 @@ class KOBOTOUCH(KOBO):
if self.dbversion < 53: if self.dbversion < 53:
debug_print("KoboTouch:update_device_database_collections - calling reset_readstatus") debug_print("KoboTouch:update_device_database_collections - calling reset_readstatus")
self.reset_readstatus(connection, oncard) self.reset_readstatus(connection, oncard)
if self.dbversion >= 14: if self.dbversion >= 14 and self.fwversion < self.min_fwversion_shelves:
debug_print("KoboTouch:update_device_database_collections - calling reset_favouritesindex") debug_print("KoboTouch:update_device_database_collections - calling reset_favouritesindex")
self.reset_favouritesindex(connection, oncard) self.reset_favouritesindex(connection, oncard)
@ -2251,7 +2265,7 @@ class KOBOTOUCH(KOBO):
debug_print("No Collections - reseting ReadStatus") debug_print("No Collections - reseting ReadStatus")
if self.dbversion < 53: if self.dbversion < 53:
self.reset_readstatus(connection, oncard) self.reset_readstatus(connection, oncard)
if self.dbversion >= 14: if self.dbversion >= 14 and self.fwversion < self.min_fwversion_shelves:
debug_print("No Collections - resetting FavouritesIndex") debug_print("No Collections - resetting FavouritesIndex")
self.reset_favouritesindex(connection, oncard) self.reset_favouritesindex(connection, oncard)
@ -2811,7 +2825,7 @@ class KOBOTOUCH(KOBO):
return self.dbversion >= self.min_dbversion_externalid return self.dbversion >= self.min_dbversion_externalid
def has_activity_table(self): def has_activity_table(self):
return self.dbversion >= self.min_dbversion_activiy return self.dbversion >= self.min_dbversion_activity
def modify_database_check(self, function): def modify_database_check(self, function):
# Checks to see whether the database version is supported # Checks to see whether the database version is supported