Fix failure to add FB2 files that contain published dates. Fixes #1535007 ['calibredb add' fails on some books](https://bugs.launchpad.net/calibre/+bug/1535007)

This commit is contained in:
Kovid Goyal 2016-01-17 16:51:44 +05:30
parent 6d18646865
commit 82498e6912

View File

@ -5,13 +5,14 @@ __copyright__ = '2011, Roman Mukhin <ramses_ru at hotmail.com>, '\
'2008, Anatoly Shipitsin <norguhtar at gmail.com>' '2008, Anatoly Shipitsin <norguhtar at gmail.com>'
'''Read meta information from fb2 files''' '''Read meta information from fb2 files'''
import os, random, datetime import os, random
from functools import partial from functools import partial
from string import ascii_letters, digits from string import ascii_letters, digits
from base64 import b64encode from base64 import b64encode
from lxml import etree from lxml import etree
from calibre.utils.date import parse_only_date
from calibre.utils.magick.draw import save_cover_data_to from calibre.utils.magick.draw import save_cover_data_to
from calibre import guess_type, guess_all_extensions, prints, force_unicode from calibre import guess_type, guess_all_extensions, prints, force_unicode
from calibre.ebooks.metadata import MetaInformation, check_isbn from calibre.ebooks.metadata import MetaInformation, check_isbn
@ -265,7 +266,7 @@ def _parse_pubdate(root, mi, ctx):
year = ctx.XPath('number(//fb:publish-info/fb:year/text())')(root) year = ctx.XPath('number(//fb:publish-info/fb:year/text())')(root)
if float.is_integer(year): if float.is_integer(year):
# only year is available, so use 2nd of June # only year is available, so use 2nd of June
mi.pubdate = datetime.date(int(year), 6, 2) mi.pubdate = parse_only_date(type(u'')(int(year)))
def _parse_language(root, mi, ctx): def _parse_language(root, mi, ctx):
language = ctx.XPath('string(//fb:title-info/fb:lang/text())')(root) language = ctx.XPath('string(//fb:title-info/fb:lang/text())')(root)