This commit is contained in:
Kovid Goyal 2009-04-01 21:32:18 -07:00
commit 8d7553f2f0
4 changed files with 56 additions and 14 deletions

View File

@ -265,12 +265,13 @@ class MOBIMetadataWriter(MetadataWriterPlugin):
from calibre.ebooks.epub.input import EPUBInput from calibre.ebooks.epub.input import EPUBInput
from calibre.ebooks.mobi.input import MOBIInput from calibre.ebooks.mobi.input import MOBIInput
from calibre.ebooks.txt.input import TXTInput
from calibre.ebooks.oeb.output import OEBOutput from calibre.ebooks.oeb.output import OEBOutput
from calibre.ebooks.txt.output import TXTOutput from calibre.ebooks.txt.output import TXTOutput
from calibre.ebooks.pdf.output import PDFOutput from calibre.ebooks.pdf.output import PDFOutput
from calibre.customize.profiles import input_profiles, output_profiles from calibre.customize.profiles import input_profiles, output_profiles
plugins = [HTML2ZIP, EPUBInput, MOBIInput, OEBOutput, TXTOutput, PDFOutput] plugins = [HTML2ZIP, EPUBInput, MOBIInput, TXTInput, OEBOutput, TXTOutput, PDFOutput]
plugins += [x for x in list(locals().values()) if isinstance(x, type) and \ plugins += [x for x in list(locals().values()) if isinstance(x, type) and \
x.__name__.endswith('MetadataReader')] x.__name__.endswith('MetadataReader')]
plugins += [x for x in list(locals().values()) if isinstance(x, type) and \ plugins += [x for x in list(locals().values()) if isinstance(x, type) and \

View File

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
from __future__ import with_statement
__license__ = 'GPL 3'
__copyright__ = '2009, John Schember <john@nachtimwald.com>'
__docformat__ = 'restructuredtext en'
import os
from calibre.customize.conversion import InputFormatPlugin
from calibre.ebooks.markdown import markdown
from calibre.ebooks.metadata.opf import OPFCreator
from calibre.ebooks.metadata import MetaInformation
#from calibre.ebooks.metadata.meta import metadata_from_formats
class TXTInput(InputFormatPlugin):
name = 'TXT Input'
author = 'John Schember'
description = 'Convert TXT files to HTML'
file_types = set(['txt'])
def convert(self, stream, options, file_ext, log,
accelerators):
txt = stream.read()
md = markdown.Markdown(
extensions=['footnotes', 'tables', 'toc'],
safe_mode=False,)
html = '<html><body>'+md.convert(txt)+'</body></html>'
with open('index.html', 'wb') as index:
index.write(html.encode('utf-8'))
#mi = metadata_from_formats([stream.name])
mi = MetaInformation(_('Unknown'), _('Unknown'))
opf = OPFCreator(os.getcwd(), mi)
opf.create_manifest([('index.html', None)])
opf.create_spine(['index.html'])
with open('metadata.opf', 'wb') as opffile:
opf.render(opffile)
return os.path.join(os.getcwd(), 'metadata.opf')

View File

@ -39,9 +39,9 @@ class TXTOutput(OutputFormatPlugin):
def convert(self, oeb_book, output_path, input_plugin, opts, log): def convert(self, oeb_book, output_path, input_plugin, opts, log):
metadata = TxtMetadata() metadata = TxtMetadata()
if opts.prepend_author.lower() == 'true': if opts.prepend_author.lower() == 'true':
metadata.author = opts.authors if opts.authors else authors_to_string(oeb_book.metadata.authors) metadata.author = opts.authors if opts.authors else authors_to_string(oeb_book.metadata.authors.value) if oeb_book.metadata.authors != [] else _('Unknown')
if opts.prepend_title.lower() == 'true': if opts.prepend_title.lower() == 'true':
metadata.title = opts.title if opts.title else oeb_book.metadata.title metadata.title = opts.title if opts.title else oeb_book.metadata.title[0].value if oeb_book.metadata.title != [] else _('Unknown')
writer = TxtWriter(TxtNewlines(opts.newline).newline, log) writer = TxtWriter(TxtNewlines(opts.newline).newline, log)
txt = writer.dump(oeb_book.spine, metadata) txt = writer.dump(oeb_book.spine, metadata)

View File

@ -22,16 +22,15 @@ class TxtWriter(object):
def dump(self, spine, metadata): def dump(self, spine, metadata):
out = u'' out = u''
for item in spine: for item in spine:
with open(item, 'r') as itemf: content = unicode(item)
content = itemf.read().decode(item.encoding) # Convert newlines to unix style \n for processing. These
# Convert newlines to unix style \n for processing. These # will be changed to the specified type later in the process.
# will be changed to the specified type later in the process. content = self.unix_newlines(content)
content = self.unix_newlines(content) content = self.strip_html(content)
content = self.strip_html(content) content = self.replace_html_symbols(content)
content = self.replace_html_symbols(content) content = self.cleanup_text(content)
content = self.cleanup_text(content) content = self.specified_newlines(content)
content = self.specified_newlines(content) out += content
out += content
# Prepend metadata # Prepend metadata
if metadata.author != None and metadata.author != '': if metadata.author != None and metadata.author != '':