Working cover upload for the Nook.

This commit is contained in:
John Schember 2009-12-20 08:52:40 -05:00
parent 80ce4c5b4d
commit 170e579673
3 changed files with 27 additions and 22 deletions

View File

@ -47,8 +47,11 @@ class CYBOOKG3(USBMS):
DELETE_EXTS = ['.mbp', '.dat', '_6090.t2b'] DELETE_EXTS = ['.mbp', '.dat', '_6090.t2b']
SUPPORTS_SUB_DIRS = True SUPPORTS_SUB_DIRS = True
def upload_cover(self, path, name, coverdata, metadata): def upload_cover(self, path, filename, metadata):
with open('%s_6090.t2b' % os.path.join(path, name), 'wb') as t2bfile: coverdata = metadata.get('cover', None)
if coverdata:
coverdata = coverdata[2]
with open('%s_6090.t2b' % os.path.join(path, filename), 'wb') as t2bfile:
t2b.write_t2b(t2bfile, coverdata) t2b.write_t2b(t2bfile, coverdata)
@classmethod @classmethod

View File

@ -10,9 +10,8 @@ Device driver for Barns and Nobel's Nook
try: try:
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
Image
except ImportError: except ImportError:
import Image import Image, ImageDraw
import cStringIO import cStringIO
@ -46,23 +45,30 @@ class NOOK(USBMS):
EBOOK_DIR_MAIN = 'my documents' EBOOK_DIR_MAIN = 'my documents'
SUPPORTS_SUB_DIRS = True SUPPORTS_SUB_DIRS = True
def upload_cover(self, path, name, coverdata, metadata): def upload_cover(self, path, filename, metadata):
if not coverdata: coverdata = metadata.get('cover', None)
if coverdata:
cover = Image.open(cStringIO.StringIO(coverdata[2]))
cover.thumbnail((96, 144), Image.ANTIALIAS)
else:
coverdata = open(I('library.png'), 'rb').read() coverdata = open(I('library.png'), 'rb').read()
im = Image.open(cStringIO.StringIO(coverdata)) cover = Image.new('RGB', (96, 144), 'black')
im.thumbnail((96, 144), Image.ANTIALIAS) im = Image.open(cStringIO.StringIO(coverdata))
im.thumbnail((96, 144), Image.ANTIALIAS)
if not coverdata: x, y = im.size
draw = ImageDraw.Draw(im) cover.paste(im, ((96-x)/2, (144-y)/2))
draw.text((0, 29), metadata.title)
draw.text((0, 115), ', '.join(metadata.authors)) draw = ImageDraw.Draw(cover)
draw.text((1, 15), metadata.title)
draw.text((1, 115), ', '.join(metadata.authors))
data = cStringIO.StringIO() data = cStringIO.StringIO()
im.save(data, 'JPG') cover.save(data, 'JPEG')
coverdata = data.getvalue() coverdata = data.getvalue()
with open('%s.jpg' % os.path.join(path, name), 'wb') as coverfile: with open('%s.jpg' % os.path.join(path, filename), 'wb') as coverfile:
coverfile.write(coverdata) coverfile.write(coverdata)
def windows_sort_drives(self, drives): def windows_sort_drives(self, drives):

View File

@ -111,11 +111,7 @@ class USBMS(CLI, Device):
paths.append(filepath) paths.append(filepath)
self.put_file(infile, filepath, replace_file=True) self.put_file(infile, filepath, replace_file=True)
self.upload_cover(os.path.dirname(filepath), os.path.splitext(os.path.basename(filepath))[0], mdata)
coverdata = mdata.get('cover', None)
if coverdata:
coverdata = coverdata[2]
self.upload_cover(os.path.dirname(filepath), os.path.splitext(os.path.basename(filepath))[0], coverdata, mdata)
self.report_progress((i+1) / float(len(files)), _('Transferring books to device...')) self.report_progress((i+1) / float(len(files)), _('Transferring books to device...'))
@ -123,11 +119,11 @@ class USBMS(CLI, Device):
return zip(paths, cycle([on_card])) return zip(paths, cycle([on_card]))
def upload_cover(self, path, name, coverdata): def upload_cover(self, path, filename, metadata):
''' '''
:path: the full path were the associated book is located. :path: the full path were the associated book is located.
:name: the name of the book file without the extension. :filename: the name of the book file without the extension.
:coverdata: cover data in jpeg format. :metatdata: metadata belonging to the book. metadata.cover[2] for coverdata.
''' '''
pass pass