mirror of
https://github.com/gryf/ebook-converter.git
synced 2026-03-22 18:33:34 +01:00
Removed unused setup_cli_handlers function
This commit is contained in:
@@ -1,11 +1,9 @@
|
|||||||
import html
|
import html
|
||||||
import logging
|
|
||||||
import math
|
import math
|
||||||
import mimetypes
|
import mimetypes
|
||||||
import os
|
import os
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
import re
|
import re
|
||||||
import sys
|
|
||||||
|
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
@@ -67,27 +65,6 @@ def sanitize_file_name(name, substitute='_'):
|
|||||||
return one
|
return one
|
||||||
|
|
||||||
|
|
||||||
def setup_cli_handlers(logger, level):
|
|
||||||
if os.getenv('CALIBRE_WORKER') and logger.handlers:
|
|
||||||
return
|
|
||||||
logger.setLevel(level)
|
|
||||||
if level == logging.WARNING:
|
|
||||||
handler = logging.StreamHandler(sys.stdout)
|
|
||||||
handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
|
|
||||||
handler.setLevel(logging.WARNING)
|
|
||||||
elif level == logging.INFO:
|
|
||||||
handler = logging.StreamHandler(sys.stdout)
|
|
||||||
handler.setFormatter(logging.Formatter())
|
|
||||||
handler.setLevel(logging.INFO)
|
|
||||||
elif level == logging.DEBUG:
|
|
||||||
handler = logging.StreamHandler(sys.stderr)
|
|
||||||
handler.setLevel(logging.DEBUG)
|
|
||||||
handler.setFormatter(logging.Formatter('[%(levelname)s] %(filename)s:'
|
|
||||||
'%(lineno)s: %(message)s'))
|
|
||||||
|
|
||||||
logger.addHandler(handler)
|
|
||||||
|
|
||||||
|
|
||||||
def fit_image(width, height, pwidth, pheight):
|
def fit_image(width, height, pwidth, pheight):
|
||||||
"""
|
"""
|
||||||
Fit image in box of width pwidth and height pheight.
|
Fit image in box of width pwidth and height pheight.
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import sys, array, os, re, codecs, logging
|
import array
|
||||||
from itertools import chain
|
import itertools
|
||||||
|
import re
|
||||||
|
|
||||||
from ebook_converter import setup_cli_handlers
|
|
||||||
from ebook_converter.utils.config import OptionParser
|
from ebook_converter.utils.config import OptionParser
|
||||||
from ebook_converter.utils.filenames import ascii_filename
|
from ebook_converter.utils.filenames import ascii_filename
|
||||||
from ebook_converter.ebooks.lrf.meta import LRFMetaFile
|
from ebook_converter.ebooks.lrf.meta import LRFMetaFile
|
||||||
from ebook_converter.ebooks.lrf.objects import get_object, PageTree, StyleObject, \
|
from ebook_converter.ebooks.lrf.objects import get_object, PageTree, \
|
||||||
Font, Text, TOCObject, BookAttr, ruby_tags
|
StyleObject, Font, Text, TOCObject, BookAttr, ruby_tags
|
||||||
|
|
||||||
|
|
||||||
class LRFDocument(LRFMetaFile):
|
class LRFDocument(LRFMetaFile):
|
||||||
@@ -26,8 +26,9 @@ class LRFDocument(LRFMetaFile):
|
|||||||
def parse(self):
|
def parse(self):
|
||||||
self._parse_objects()
|
self._parse_objects()
|
||||||
self.metadata = LRFDocument.temp()
|
self.metadata = LRFDocument.temp()
|
||||||
for a in ('title', 'title_reading', 'author', 'author_reading', 'book_id',
|
for a in ('title', 'title_reading', 'author', 'author_reading',
|
||||||
'classification', 'free_text', 'publisher', 'label', 'category'):
|
'book_id', 'classification', 'free_text', 'publisher',
|
||||||
|
'label', 'category'):
|
||||||
setattr(self.metadata, a, getattr(self, a))
|
setattr(self.metadata, a, getattr(self, a))
|
||||||
self.doc_info = LRFDocument.temp()
|
self.doc_info = LRFDocument.temp()
|
||||||
for a in ('thumbnail', 'language', 'creator', 'producer', 'page'):
|
for a in ('thumbnail', 'language', 'creator', 'producer', 'page'):
|
||||||
@@ -40,8 +41,10 @@ class LRFDocument(LRFMetaFile):
|
|||||||
def _parse_objects(self):
|
def _parse_objects(self):
|
||||||
self.objects = {}
|
self.objects = {}
|
||||||
self._file.seek(self.object_index_offset)
|
self._file.seek(self.object_index_offset)
|
||||||
obj_array = array.array("I", self._file.read(4*4*self.number_of_objects))
|
obj_array = array.array("I",
|
||||||
if ord(array.array("i",[1]).tostring()[0:1])==0: # big-endian
|
self._file.read(4 * 4 *
|
||||||
|
self.number_of_objects))
|
||||||
|
if ord(array.array("i", [1]).tostring()[0:1]) == 0: # big-endian
|
||||||
obj_array.byteswap()
|
obj_array.byteswap()
|
||||||
for i in range(self.number_of_objects):
|
for i in range(self.number_of_objects):
|
||||||
if not self.keep_parsing:
|
if not self.keep_parsing:
|
||||||
@@ -55,7 +58,8 @@ class LRFDocument(LRFMetaFile):
|
|||||||
obj.initialize()
|
obj.initialize()
|
||||||
|
|
||||||
def _parse_object(self, objid, objoff, objsize):
|
def _parse_object(self, objid, objoff, objsize):
|
||||||
obj = get_object(self, self._file, objid, objoff, objsize, self.scramble_key)
|
obj = get_object(self, self._file, objid, objoff, objsize,
|
||||||
|
self.scramble_key)
|
||||||
self.objects[objid] = obj
|
self.objects[objid] = obj
|
||||||
if isinstance(obj, PageTree):
|
if isinstance(obj, PageTree):
|
||||||
self.page_trees.append(obj)
|
self.page_trees.append(obj)
|
||||||
@@ -73,31 +77,44 @@ class LRFDocument(LRFMetaFile):
|
|||||||
yield pt
|
yield pt
|
||||||
|
|
||||||
def write_files(self):
|
def write_files(self):
|
||||||
for obj in chain(self.image_map.values(), self.font_map.values()):
|
for obj in itertools.chain(self.image_map.values(),
|
||||||
|
self.font_map.values()):
|
||||||
with open(obj.file, 'wb') as f:
|
with open(obj.file, 'wb') as f:
|
||||||
f.write(obj.stream)
|
f.write(obj.stream)
|
||||||
|
|
||||||
def to_xml(self, write_files=True):
|
def to_xml(self, write_files=True):
|
||||||
bookinfo = '<BookInformation>\n<Info version="1.1">\n<BookInfo>\n'
|
bookinfo = ('<BookInformation>\n<Info version="1.1">\n<BookInfo>\n'
|
||||||
bookinfo += '<Title reading="%s">%s</Title>\n'%(self.metadata.title_reading, self.metadata.title)
|
'<Title reading="%s">%s</Title>\n'
|
||||||
bookinfo += '<Author reading="%s">%s</Author>\n'%(self.metadata.author_reading, self.metadata.author)
|
'<Author reading="%s">%s</Author>\n'
|
||||||
bookinfo += '<BookID>%s</BookID>\n'%(self.metadata.book_id,)
|
'<BookID>%s</BookID>\n'
|
||||||
bookinfo += '<Publisher reading="">%s</Publisher>\n'%(self.metadata.publisher,)
|
'<Publisher reading="">%s</Publisher>\n'
|
||||||
bookinfo += '<Label reading="">%s</Label>\n'%(self.metadata.label,)
|
'<Label reading="">%s</Label>\n'
|
||||||
bookinfo += '<Category reading="">%s</Category>\n'%(self.metadata.category,)
|
'<Category reading="">%s</Category>\n'
|
||||||
bookinfo += '<Classification reading="">%s</Classification>\n'%(self.metadata.classification,)
|
'<Classification reading="">%s</Classification>\n'
|
||||||
bookinfo += '<FreeText reading="">%s</FreeText>\n</BookInfo>\n<DocInfo>\n'%(self.metadata.free_text,)
|
'<FreeText reading="">%s</FreeText>\n'
|
||||||
|
'</BookInfo>\n<DocInfo>\n' %
|
||||||
|
(self.metadata.title_reading, self.metadata.title,
|
||||||
|
self.metadata.author_reading, self.metadata.author,
|
||||||
|
self.metadata.book_id, self.metadata.publisher,
|
||||||
|
self.metadata.label, self.metadata.category,
|
||||||
|
self.metadata.classification, self.metadata.free_text))
|
||||||
th = self.doc_info.thumbnail
|
th = self.doc_info.thumbnail
|
||||||
if th:
|
if th:
|
||||||
prefix = ascii_filename(self.metadata.title)
|
prefix = ascii_filename(self.metadata.title)
|
||||||
bookinfo += '<CThumbnail file="%s" />\n'%(prefix+'_thumbnail.'+self.doc_info.thumbnail_extension,)
|
bookinfo += ('<CThumbnail file="%s" />\n' %
|
||||||
|
(prefix + '_thumbnail.' +
|
||||||
|
self.doc_info.thumbnail_extension))
|
||||||
if write_files:
|
if write_files:
|
||||||
with open(prefix+'_thumbnail.'+self.doc_info.thumbnail_extension, 'wb') as f:
|
with open(prefix + '_thumbnail.' +
|
||||||
|
self.doc_info.thumbnail_extension, 'wb') as f:
|
||||||
f.write(th)
|
f.write(th)
|
||||||
bookinfo += '<Language reading="">%s</Language>\n'%(self.doc_info.language,)
|
bookinfo += ('<Language reading="">%s</Language>\n'
|
||||||
bookinfo += '<Creator reading="">%s</Creator>\n'%(self.doc_info.creator,)
|
'<Creator reading="">%s</Creator>\n'
|
||||||
bookinfo += '<Producer reading="">%s</Producer>\n'%(self.doc_info.producer,)
|
'<Producer reading="">%s</Producer>\n'
|
||||||
bookinfo += '<SumPage>%s</SumPage>\n</DocInfo>\n</Info>\n%s</BookInformation>\n'%(self.doc_info.page,self.toc)
|
'<SumPage>%s</SumPage>\n'
|
||||||
|
'</DocInfo>\n</Info>\n%s</BookInformation>\n' %
|
||||||
|
(self.doc_info.language, self.doc_info.creator,
|
||||||
|
self.doc_info.producer, self.doc_info.page, self.toc))
|
||||||
pages = ''
|
pages = ''
|
||||||
done_main = False
|
done_main = False
|
||||||
pt_id = -1
|
pt_id = -1
|
||||||
@@ -108,15 +125,16 @@ class LRFDocument(LRFMetaFile):
|
|||||||
close = '</Main>\n'
|
close = '</Main>\n'
|
||||||
pt_id = page_tree.id
|
pt_id = page_tree.id
|
||||||
else:
|
else:
|
||||||
pages += '<PageTree objid="%d">\n'%(page_tree.id,)
|
pages += '<PageTree objid="%d">\n' % (page_tree.id,)
|
||||||
close = '</PageTree>\n'
|
close = '</PageTree>\n'
|
||||||
for page in page_tree:
|
for page in page_tree:
|
||||||
pages += str(page)
|
pages += str(page)
|
||||||
pages += close
|
pages += close
|
||||||
traversed_objects = [int(i) for i in re.findall(r'objid="(\w+)"', pages)] + [pt_id]
|
traversed_objects = [int(i) for i in re.findall(r'objid="(\w+)"',
|
||||||
|
pages)] + [pt_id]
|
||||||
|
|
||||||
objects = '\n<Objects>\n'
|
objects = '\n<Objects>\n'
|
||||||
styles = '\n<Style>\n'
|
styles = '\n<Style>\n'
|
||||||
for obj in self.objects:
|
for obj in self.objects:
|
||||||
obj = self.objects[obj]
|
obj = self.objects[obj]
|
||||||
if obj.id in traversed_objects:
|
if obj.id in traversed_objects:
|
||||||
@@ -142,30 +160,3 @@ def option_parser():
|
|||||||
dest='output_resources')
|
dest='output_resources')
|
||||||
parser.add_option('--verbose', default=False, action='store_true', dest='verbose', help=_('Be more verbose'))
|
parser.add_option('--verbose', default=False, action='store_true', dest='verbose', help=_('Be more verbose'))
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def main(args=sys.argv, logger=None):
|
|
||||||
parser = option_parser()
|
|
||||||
opts, args = parser.parse_args(args)
|
|
||||||
if logger is None:
|
|
||||||
level = logging.DEBUG if opts.verbose else logging.INFO
|
|
||||||
logger = logging.getLogger('lrf2lrs')
|
|
||||||
setup_cli_handlers(logger, level)
|
|
||||||
if len(args) != 2:
|
|
||||||
parser.print_help()
|
|
||||||
return 1
|
|
||||||
if opts.out is None:
|
|
||||||
opts.out = os.path.join(os.path.dirname(args[1]), os.path.splitext(os.path.basename(args[1]))[0]+".lrs")
|
|
||||||
logger.info(_('Parsing LRF...'))
|
|
||||||
d = LRFDocument(open(args[1], 'rb'))
|
|
||||||
d.parse()
|
|
||||||
logger.info(_('Creating XML...'))
|
|
||||||
with codecs.open(os.path.abspath(os.path.expanduser(opts.out)), 'wb', 'utf-8') as f:
|
|
||||||
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
|
|
||||||
f.write(d.to_xml(write_files=opts.output_resources))
|
|
||||||
logger.info(_('LRS written to ')+opts.out)
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
sys.exit(main())
|
|
||||||
|
|||||||
Reference in New Issue
Block a user