mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-11-03 19:17:02 -05:00 
			
		
		
		
	GwR improved diagnostics for metadata, cover failures
This commit is contained in:
		
							parent
							
								
									a00acf999e
								
							
						
					
					
						commit
						5091859c49
					
				@ -4,7 +4,7 @@ __copyright__ = '2010, Greg Riker <griker@hotmail.com>'
 | 
			
		||||
__docformat__ = 'restructuredtext en'
 | 
			
		||||
 | 
			
		||||
''' Read/write metadata from Amazon's topaz format '''
 | 
			
		||||
import StringIO, sys
 | 
			
		||||
import os, StringIO, sys
 | 
			
		||||
from struct import pack
 | 
			
		||||
 | 
			
		||||
from calibre.ebooks.metadata import MetaInformation
 | 
			
		||||
@ -83,7 +83,7 @@ class MetadataUpdater(object):
 | 
			
		||||
 | 
			
		||||
        sig = self.data[:4]
 | 
			
		||||
        if not sig.startswith('TPZ'):
 | 
			
		||||
            raise ValueError('Not a Topaz file')
 | 
			
		||||
            raise ValueError("'%s': unexpected Topaz signature '%s'" % (os.path.basename(stream.name),self.data[:4]))
 | 
			
		||||
        offset = 4
 | 
			
		||||
 | 
			
		||||
        self.header_records, consumed = self.decode_vwi(self.data[offset:offset+4])
 | 
			
		||||
@ -92,13 +92,13 @@ class MetadataUpdater(object):
 | 
			
		||||
 | 
			
		||||
        # First integrity test - metadata header
 | 
			
		||||
        if not 'metadata' in self.topaz_headers:
 | 
			
		||||
            raise ValueError('Invalid Topaz format - no metadata record')
 | 
			
		||||
            raise ValueError("'%s': Topaz metadata record missing" % os.path.basename(stream.name))
 | 
			
		||||
 | 
			
		||||
        # Second integrity test - metadata body
 | 
			
		||||
        md_offset = self.topaz_headers['metadata']['blocks'][0]['offset']
 | 
			
		||||
        md_offset += self.base
 | 
			
		||||
        if self.data[md_offset+1:md_offset+9] != 'metadata':
 | 
			
		||||
            raise ValueError('Damaged metadata record')
 | 
			
		||||
            raise ValueError("'%s': damaged Topaz metadata record" % os.path.basename(stream.name))
 | 
			
		||||
 | 
			
		||||
    def book_length(self):
 | 
			
		||||
        ''' convenience method for retrieving book length '''
 | 
			
		||||
 | 
			
		||||
@ -833,7 +833,7 @@ def get_metadata(stream):
 | 
			
		||||
    try:
 | 
			
		||||
        im = PILImage.open(buf)
 | 
			
		||||
    except:
 | 
			
		||||
        log.exception('Failed to read MOBI cover')
 | 
			
		||||
        log.exception("Failed to read MOBI cover: '%s'" % os.path.basename(stream.name))
 | 
			
		||||
    else:
 | 
			
		||||
        obuf = cStringIO.StringIO()
 | 
			
		||||
        im.convert('RGB').save(obuf, format='JPEG')
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user