mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
FB2 Output: Produce correct metadata header.
This commit is contained in:
parent
fc39c1ad11
commit
bc669a1f98
@ -10,6 +10,7 @@ Transform OEB content into FB2 markup
|
|||||||
|
|
||||||
import cStringIO
|
import cStringIO
|
||||||
from base64 import b64encode
|
from base64 import b64encode
|
||||||
|
from datetime import datetime
|
||||||
import re
|
import re
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -79,38 +80,54 @@ class FB2MLizer(object):
|
|||||||
return text
|
return text
|
||||||
|
|
||||||
def fb2_header(self):
|
def fb2_header(self):
|
||||||
author_first = u''
|
metadata = {}
|
||||||
author_middle = u''
|
metadata['author_first'] = u''
|
||||||
author_last = u''
|
metadata['author_middle'] = u''
|
||||||
|
metadata['author_last'] = u''
|
||||||
|
metadata['title'] = self.oeb_book.metadata.title[0].value
|
||||||
|
metadata['appname'] = __appname__
|
||||||
|
metadata['version'] = __version__
|
||||||
|
metadata['date'] = '%i.%i.%i' % (datetime.now().day, datetime.now().month, datetime.now().year)
|
||||||
|
metadata['lang'] = u''.join(self.oeb_book.metadata.lang) if self.oeb_book.metadata.lang else 'en'
|
||||||
|
|
||||||
author_parts = self.oeb_book.metadata.creator[0].value.split(' ')
|
author_parts = self.oeb_book.metadata.creator[0].value.split(' ')
|
||||||
|
|
||||||
if len(author_parts) == 1:
|
if len(author_parts) == 1:
|
||||||
author_last = author_parts[0]
|
metadata['author_last'] = author_parts[0]
|
||||||
elif len(author_parts) == 2:
|
elif len(author_parts) == 2:
|
||||||
author_first = author_parts[0]
|
metadata['author_first'] = author_parts[0]
|
||||||
author_last = author_parts[1]
|
metadata['author_last'] = author_parts[1]
|
||||||
else:
|
else:
|
||||||
author_first = author_parts[0]
|
metadata['author_first'] = author_parts[0]
|
||||||
author_middle = ' '.join(author_parts[1:-2])
|
metadata['author_middle'] = ' '.join(author_parts[1:-2])
|
||||||
author_last = author_parts[-1]
|
metadata['author_last'] = author_parts[-1]
|
||||||
|
|
||||||
|
for key, value in metadata.items():
|
||||||
|
metadata[key] = prepare_string_for_xml(value)
|
||||||
|
|
||||||
return u'<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:xlink="http://www.w3.org/1999/xlink">' \
|
return u'<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:xlink="http://www.w3.org/1999/xlink">' \
|
||||||
'<description>' \
|
'<description>' \
|
||||||
'<title-info>' \
|
'<title-info>' \
|
||||||
'<genre></genre>' \
|
'<genre>antique</genre>' \
|
||||||
'<author>' \
|
'<author>' \
|
||||||
'<first-name>%s</first-name>' \
|
'<first-name>%(author_first)s</first-name>' \
|
||||||
'<middle-name>%s</middle-name>' \
|
'<middle-name>%(author_middle)s</middle-name>' \
|
||||||
'<last-name>%s</last-name>' \
|
'<last-name>%(author_last)s</last-name>' \
|
||||||
'</author>' \
|
'</author>' \
|
||||||
'<book-title>%s</book-title>' \
|
'<book-title>%(title)s</book-title>' \
|
||||||
'<annotation><p/></annotation>' \
|
'<lang>%(lang)s</lang>' \
|
||||||
'</title-info>' \
|
'</title-info>' \
|
||||||
'<document-info>' \
|
'<document-info>' \
|
||||||
'<program-used>%s %s</program-used>' \
|
'<author>' \
|
||||||
|
'<first-name></first-name>' \
|
||||||
|
'<middle-name></middle-name>' \
|
||||||
|
'<last-name></last-name>' \
|
||||||
|
'</author>' \
|
||||||
|
'<program-used>%(appname)s %(version)s</program-used>' \
|
||||||
|
'<date>%(date)s</date>' \
|
||||||
|
'<id>1</id>' \
|
||||||
|
'<version>1.0</version>' \
|
||||||
'</document-info>' \
|
'</document-info>' \
|
||||||
'</description>' % tuple(map(prepare_string_for_xml, (author_first, author_middle, author_last,
|
'</description>' % metadata
|
||||||
self.oeb_book.metadata.title[0].value, __appname__, __version__)))
|
|
||||||
|
|
||||||
def fb2_footer(self):
|
def fb2_footer(self):
|
||||||
return u'</FictionBook>'
|
return u'</FictionBook>'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user