From dd73cc7a3d08ccb2e9bccb024f05dffc0dabfe9b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 23 Feb 2016 11:22:18 +0530 Subject: [PATCH] FB2 metadata: Fix error when adding books with non-numeric series numbers. Fixes #1548405 [ValueError: invalid literal for float()](https://bugs.launchpad.net/calibre/+bug/1548405) --- src/calibre/ebooks/metadata/fb2.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/metadata/fb2.py b/src/calibre/ebooks/metadata/fb2.py index 9390c7a07e..449bfa931d 100644 --- a/src/calibre/ebooks/metadata/fb2.py +++ b/src/calibre/ebooks/metadata/fb2.py @@ -227,7 +227,7 @@ def _parse_tags(root, mi, ctx): def _parse_series(root, mi, ctx): # calibri supports only 1 series: use the 1-st one - # pick up sequence but only from 1 secrion in prefered order + # pick up sequence but only from 1 secrion in preferred order # except xp_ti = '//fb:title-info/fb:sequence[1]' xp_pi = '//fb:publish-info/fb:sequence[1]' @@ -236,7 +236,10 @@ def _parse_series(root, mi, ctx): if elms_sequence: mi.series = elms_sequence[0].get('name', None) if mi.series: - mi.series_index = elms_sequence[0].get('number', None) + try: + mi.series_index = float('.'.join(elms_sequence[0].get('number', None).split()[:2])) + except Exception: + pass def _parse_isbn(root, mi, ctx): # some people try to put several isbn in this field, but it is not allowed. try to stick to the 1-st one in this case