Merge lit2oeb fixes from llasram

This commit is contained in:
Kovid Goyal 2008-08-18 10:58:56 -07:00
commit ca20f6c4e4
2 changed files with 15 additions and 10 deletions

View File

@ -643,11 +643,14 @@ class LitReader(object):
self.drmlevel = 1
else:
return
msdes.deskey(self._calculate_deskey(), msdes.DE1)
bookkey = msdes.des(self.get_file('/DRMStorage/DRMSealed'))
if bookkey[0] != '\000':
raise LitError('Unable to decrypt title key!')
self.bookkey = bookkey[1:9]
if self.drmlevel < 5:
msdes.deskey(self._calculate_deskey(), msdes.DE1)
bookkey = msdes.des(self.get_file('/DRMStorage/DRMSealed'))
if bookkey[0] != '\000':
raise LitError('Unable to decrypt title key!')
self.bookkey = bookkey[1:9]
else:
raise LitError('Cannot extract content from a DRM protected ebook')
def _calculate_deskey(self):
hashfiles = ['/meta', '/DRMStorage/DRMSource']
@ -710,8 +713,6 @@ class LitReader(object):
return content
def _decrypt(self, content):
if self.drmlevel == 5:
raise LitError('Cannot extract content from a DRM protected ebook')
msdes.deskey(self.bookkey, msdes.DE1)
return msdes.des(content)

View File

@ -1,10 +1,11 @@
import cStringIO
__license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
import uuid
'''Read/Write metadata from Open Packaging Format (.opf) files.'''
import sys, re, os, glob
import cStringIO
import uuid
from urllib import unquote, quote
from calibre import __appname__
from calibre.ebooks.metadata import MetaInformation
@ -25,7 +26,10 @@ class ManifestItem(Resource):
@staticmethod
def from_opf_manifest_item(item, basedir):
if item.has_key('href'):
res = ManifestItem(item['href'], basedir=basedir, is_path=False)
href = item['href']
if unquote(href) == href:
href = quote(href)
res = ManifestItem(href, basedir=basedir, is_path=False)
mt = item.get('media-type', '').strip()
if mt:
res.mime_type = mt