Don't add empty Table of Contents to MOBI files

This commit is contained in:
Kovid Goyal 2009-03-14 09:41:22 -07:00
parent 14d58407da
commit 57246bfbac
2 changed files with 5 additions and 7 deletions

View File

@ -9,7 +9,6 @@ __copyright__ = '2008, Marshall T. Vandegrift <llasram@gmail.cam>'
import sys import sys
import os import os
from struct import pack from struct import pack
import functools
import time import time
import random import random
from cStringIO import StringIO from cStringIO import StringIO
@ -18,11 +17,10 @@ from itertools import izip, count
from collections import defaultdict from collections import defaultdict
from urlparse import urldefrag from urlparse import urldefrag
import logging import logging
from lxml import etree
from PIL import Image from PIL import Image
from calibre.ebooks.oeb.base import XML_NS, XHTML, XHTML_NS, OEB_DOCS, \ from calibre.ebooks.oeb.base import XML_NS, XHTML, XHTML_NS, OEB_DOCS, \
OEB_RASTER_IMAGES OEB_RASTER_IMAGES
from calibre.ebooks.oeb.base import xpath, barename, namespace, prefixname from calibre.ebooks.oeb.base import namespace, prefixname
from calibre.ebooks.oeb.base import urlnormalize from calibre.ebooks.oeb.base import urlnormalize
from calibre.ebooks.oeb.base import Logger, OEBBook from calibre.ebooks.oeb.base import Logger, OEBBook
from calibre.ebooks.oeb.profile import Context from calibre.ebooks.oeb.profile import Context
@ -33,7 +31,7 @@ from calibre.ebooks.oeb.transforms.htmltoc import HTMLTOCAdder
from calibre.ebooks.oeb.transforms.manglecase import CaseMangler from calibre.ebooks.oeb.transforms.manglecase import CaseMangler
from calibre.ebooks.mobi.palmdoc import compress_doc from calibre.ebooks.mobi.palmdoc import compress_doc
from calibre.ebooks.mobi.langcodes import iana2mobi from calibre.ebooks.mobi.langcodes import iana2mobi
from calibre.ebooks.mobi.mobiml import MBP_NS, MBP, MobiMLizer from calibre.ebooks.mobi.mobiml import MBP_NS, MobiMLizer
from calibre.customize.ui import run_plugins_on_postprocess from calibre.customize.ui import run_plugins_on_postprocess
from calibre.utils.config import Config, StringConfig from calibre.utils.config import Config, StringConfig
@ -162,7 +160,7 @@ class Serializer(object):
hrefs = self.oeb.manifest.hrefs hrefs = self.oeb.manifest.hrefs
buffer.write('<guide>') buffer.write('<guide>')
for ref in self.oeb.guide.values(): for ref in self.oeb.guide.values():
path, frag = urldefrag(ref.href) path = urldefrag(ref.href)[0]
if hrefs[path].media_type not in OEB_DOCS: if hrefs[path].media_type not in OEB_DOCS:
continue continue
buffer.write('<reference type="') buffer.write('<reference type="')
@ -412,8 +410,6 @@ class MobiWriter(object):
self._oeb.logger.info('Serializing images...') self._oeb.logger.info('Serializing images...')
images = [(index, href) for href, index in self._images.items()] images = [(index, href) for href, index in self._images.items()]
images.sort() images.sort()
metadata = self._oeb.metadata
coverid = metadata.cover[0] if metadata.cover else None
for _, href in images: for _, href in images:
item = self._oeb.manifest.hrefs[href] item = self._oeb.manifest.hrefs[href]
try: try:

View File

@ -55,6 +55,8 @@ class HTMLTOCAdder(object):
def transform(self, oeb, context): def transform(self, oeb, context):
if 'toc' in oeb.guide: if 'toc' in oeb.guide:
return return
if not getattr(getattr(oeb, 'toc', False), 'nodes', False):
return
oeb.logger.info('Generating in-line TOC...') oeb.logger.info('Generating in-line TOC...')
title = self.title or oeb.translate(DEFAULT_TITLE) title = self.title or oeb.translate(DEFAULT_TITLE)
style = self.style style = self.style