mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
...
This commit is contained in:
commit
08f6719019
@ -255,12 +255,22 @@ def _set_title(title_info, mi):
|
|||||||
title = _get_or_create(title_info, 'book-title')
|
title = _get_or_create(title_info, 'book-title')
|
||||||
title.text = mi.title
|
title.text = mi.title
|
||||||
|
|
||||||
|
def _text2fb2(parent, text):
|
||||||
|
lines = text.split('\n')
|
||||||
|
for line in lines:
|
||||||
|
line = line.strip()
|
||||||
|
if line:
|
||||||
|
p = _create_tag(parent, 'p', at_start=False)
|
||||||
|
p.text = line
|
||||||
|
else:
|
||||||
|
_create_tag(parent, 'empty-line', at_start=False)
|
||||||
|
|
||||||
def _set_comments(title_info, mi):
|
def _set_comments(title_info, mi):
|
||||||
if not mi.is_null('comments'):
|
if not mi.is_null('comments'):
|
||||||
from calibre.utils.html2text import html2text
|
from calibre.utils.html2text import html2text
|
||||||
_clear_meta_tags(title_info, 'annotation')
|
_clear_meta_tags(title_info, 'annotation')
|
||||||
title = _get_or_create(title_info, 'annotation')
|
title = _get_or_create(title_info, 'annotation')
|
||||||
title.text = html2text(mi.comments)
|
_text2fb2(title, html2text(mi.comments))
|
||||||
|
|
||||||
|
|
||||||
def _set_authors(title_info, mi):
|
def _set_authors(title_info, mi):
|
||||||
@ -269,26 +279,24 @@ def _set_authors(title_info, mi):
|
|||||||
for author in mi.authors:
|
for author in mi.authors:
|
||||||
author_parts = author.split()
|
author_parts = author.split()
|
||||||
if not author_parts: continue
|
if not author_parts: continue
|
||||||
atag = title_info.makeelement(FB2('author'))
|
atag = _create_tag(title_info, 'author')
|
||||||
title_info.insert(0, atag)
|
|
||||||
if len(author_parts) == 1:
|
if len(author_parts) == 1:
|
||||||
_get_or_create(atag, 'nickname').text = author
|
_create_tag(atag, 'nickname').text = author
|
||||||
else:
|
else:
|
||||||
_get_or_create(atag, 'first-name').text = author_parts[0]
|
_create_tag(atag, 'first-name').text = author_parts[0]
|
||||||
author_parts = author_parts[1:]
|
author_parts = author_parts[1:]
|
||||||
if len(author_parts) > 1:
|
if len(author_parts) > 1:
|
||||||
_get_or_create(atag, 'middle-name', at_start=False).text = author_parts[0]
|
_create_tag(atag, 'middle-name', at_start=False).text = author_parts[0]
|
||||||
author_parts = author_parts[1:]
|
author_parts = author_parts[1:]
|
||||||
if author_parts:
|
if author_parts:
|
||||||
_get_or_create(atag, 'last-name', at_start=False).text = ' '.join(author_parts)
|
_create_tag(atag, 'last-name', at_start=False).text = ' '.join(author_parts)
|
||||||
|
|
||||||
def _set_tags(title_info, mi):
|
def _set_tags(title_info, mi):
|
||||||
if not mi.is_null('tags'):
|
if not mi.is_null('tags'):
|
||||||
_clear_meta_tags(title_info, 'genre')
|
_clear_meta_tags(title_info, 'genre')
|
||||||
for t in mi.tags:
|
for t in mi.tags:
|
||||||
tag = title_info.makeelement(FB2('genre'))
|
tag = _create_tag(title_info, 'genre')
|
||||||
tag.text = t
|
tag.text = t
|
||||||
title_info.insert(0, tag)
|
|
||||||
|
|
||||||
def _set_series(title_info, mi):
|
def _set_series(title_info, mi):
|
||||||
if not mi.is_null('series'):
|
if not mi.is_null('series'):
|
||||||
@ -300,11 +308,7 @@ def _set_series(title_info, mi):
|
|||||||
except:
|
except:
|
||||||
seq.set('number', '1')
|
seq.set('number', '1')
|
||||||
|
|
||||||
def _get_or_create(parent, tag, at_start=True):
|
def _create_tag(parent, tag, at_start=True):
|
||||||
ans = XPath('./fb2:'+tag)(parent)
|
|
||||||
if ans:
|
|
||||||
ans = ans[0]
|
|
||||||
else:
|
|
||||||
ans = parent.makeelement(FB2(tag))
|
ans = parent.makeelement(FB2(tag))
|
||||||
if at_start:
|
if at_start:
|
||||||
parent.insert(0, ans)
|
parent.insert(0, ans)
|
||||||
@ -312,6 +316,14 @@ def _get_or_create(parent, tag, at_start=True):
|
|||||||
parent.append(ans)
|
parent.append(ans)
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
|
def _get_or_create(parent, tag, at_start=True):
|
||||||
|
ans = XPath('./fb2:'+tag)(parent)
|
||||||
|
if ans:
|
||||||
|
ans = ans[0]
|
||||||
|
else:
|
||||||
|
ans = _create_tag(parent, tag, at_start)
|
||||||
|
return ans
|
||||||
|
|
||||||
def set_metadata(stream, mi, apply_null=False, update_timestamp=False):
|
def set_metadata(stream, mi, apply_null=False, update_timestamp=False):
|
||||||
stream.seek(0)
|
stream.seek(0)
|
||||||
root = _get_fbroot(stream)
|
root = _get_fbroot(stream)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user