diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py
index 79a2c10a62..a7991de7bb 100644
--- a/src/calibre/ebooks/fb2/fb2ml.py
+++ b/src/calibre/ebooks/fb2/fb2ml.py
@@ -151,6 +151,7 @@ class FB2MLizer(object):
index = self.oeb_book.metadata.series_index[0]
metadata['sequence'] = u'' % (prepare_string_for_xml(u'%s' % self.oeb_book.metadata.series[0]), index)
+ year = publisher = isbn = u''
identifiers = self.oeb_book.metadata['identifier']
for x in identifiers:
if x.get(OPF('scheme'), None).lower() == 'uuid' or unicode(x).startswith('urn:uuid:'):
@@ -160,8 +161,27 @@ class FB2MLizer(object):
self.log.warn('No UUID identifier found')
metadata['id'] = str(uuid.uuid4())
+ try:
+ date = self.oeb_book.metadata['date'][0]
+ except IndexError:
+ pass
+ else:
+ year = '%s' % prepare_string_for_xml(date.value.partition('-')[0])
+
+ try:
+ publisher = self.oeb_book.metadata['publisher'][0]
+ except IndexError:
+ pass
+ else:
+ publisher = '%s' % prepare_string_for_xml(publisher.value)
+
+ for x in identifiers:
+ if x.get(OPF('scheme'), None).lower() == 'isbn':
+ isbn = '%s' % prepare_string_for_xml(x.value)
+
+ metadata['year'], metadata['isbn'], metadata['publisher'] = year, isbn, publisher
for key, value in metadata.items():
- if key not in ('author', 'cover', 'sequence', 'keywords'):
+ if key not in ('author', 'cover', 'sequence', 'keywords', 'year', 'publisher', 'isbn'):
metadata[key] = prepare_string_for_xml(value)
return textwrap.dedent(u'''
@@ -183,6 +203,11 @@ class FB2MLizer(object):
%(id)s
1.0
+
+ %(year)s
+ %(publisher)s
+ %(isbn)s
+
\n''') % metadata
def fb2_footer(self):