Kobo driver: Sideloaded kepubs not added from device properly

When a sideloaded kepub is added from a Kobo device to the calibre
library, it is added as an epub, but the file copied is corrupt.
Fixes #1221035 [Sideloaded kepubs not added to library correctly](https://bugs.launchpad.net/calibre/+bug/1221035)
This commit is contained in:
David Forrester 2013-09-05 15:39:44 +10:00 committed by Kovid Goyal
parent 80887a8a14
commit 0aeec73eae

View File

@ -13,7 +13,7 @@ Originally developed by Timothy Legge <timlegge@gmail.com>.
Extended to support Touch firmware 2.0.0 and later and newer devices by David Forrester <davidfor@internode.on.net> Extended to support Touch firmware 2.0.0 and later and newer devices by David Forrester <davidfor@internode.on.net>
''' '''
import os, time import os, time, shutil
from contextlib import closing from contextlib import closing
from calibre.devices.usbms.books import BookList from calibre.devices.usbms.books import BookList
@ -1001,9 +1001,10 @@ class KOBO(USBMS):
''' '''
for idx, path in enumerate(paths): for idx, path in enumerate(paths):
if path.find('kepub') >= 0: if path.find('kepub') >= 0:
with closing(open(path)) as r: with closing(open(path, 'rb')) as r:
tf = PersistentTemporaryFile(suffix='.epub') tf = PersistentTemporaryFile(suffix='.epub')
tf.write(r.read()) shutil.copyfileobj(r, tf)
# tf.write(r.read())
paths[idx] = tf.name paths[idx] = tf.name
return paths return paths