When exporting highlights as text or markdown also output top level chapter titles

This commit is contained in:
Kovid Goyal 2021-04-02 13:38:19 +05:30
parent da6c7c6c3c
commit d8649c6fed
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 32 additions and 12 deletions

View File

@ -187,18 +187,29 @@ class Export(Dialog): # {{{
for a in self.annotations:
bid_groups.setdefault(a['book_id'], []).append(a)
for book_id, group in bid_groups.items():
chapter_groups = {}
def_chap = (_('Unknown chapter'),)
for a in group:
toc_titles = a.get('toc_family_titles', def_chap)
chapter_groups.setdefault(toc_titles[0], []).append(a)
lines.append('## ' + db.field_for('title', book_id))
lines.append('')
for a in group:
atype = a['type']
if library_id:
link_prefix = f'calibre://view-book/{library_id}/{book_id}/{a["format"]}?open_at='
else:
link_prefix = None
if atype == 'highlight':
render_highlight_as_text(a, lines, as_markdown=as_markdown, link_prefix=link_prefix)
elif atype == 'bookmark':
render_bookmark_as_text(a, lines, as_markdown=as_markdown, link_prefix=link_prefix)
for chapter, group in chapter_groups.items():
if len(chapter_groups) > 1:
lines.append('### ' + chapter)
lines.append('')
for a in group:
atype = a['type']
if library_id:
link_prefix = f'calibre://view-book/{library_id}/{book_id}/{a["format"]}?open_at='
else:
link_prefix = None
if atype == 'highlight':
render_highlight_as_text(a, lines, as_markdown=as_markdown, link_prefix=link_prefix)
elif atype == 'bookmark':
render_bookmark_as_text(a, lines, as_markdown=as_markdown, link_prefix=link_prefix)
lines.append('')
return '\n'.join(lines).strip()
# }}}

View File

@ -141,8 +141,17 @@ class Export(ExportBase):
lines = []
as_markdown = fmt == 'md'
link_prefix = link_prefix_for_location_links()
for hl in self.annotations:
render_highlight_as_text(hl, lines, as_markdown=as_markdown, link_prefix=link_prefix)
chapter_groups = {}
def_chap = (_('Unknown chapter'),)
for a in self.annotations:
toc_titles = a.get('toc_family_titles', def_chap)
chapter_groups.setdefault(toc_titles[0], []).append(a)
for chapter, group in chapter_groups.items():
if len(chapter_groups) > 1:
lines.append('### ' + chapter)
lines.append('')
for hl in group:
render_highlight_as_text(hl, lines, as_markdown=as_markdown, link_prefix=link_prefix)
return '\n'.join(lines).strip()