cellarspoon
3 years ago
1 changed files with 51 additions and 67 deletions
@ -1,85 +1,69 @@ |
|||||
|
"""Generates PDF cards from a calibre metadata.db.""" |
||||
|
|
||||
from calibrestekje import Book, Comment, Publisher, init_session |
from calibrestekje import Book, Comment, Publisher, init_session |
||||
from reportlab.lib.pagesizes import * |
from reportlab.lib.pagesizes import * |
||||
from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet |
from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet |
||||
from reportlab.pdfgen import canvas |
from reportlab.pdfgen import canvas |
||||
from reportlab.platypus import PageBreak, Paragraph, SimpleDocTemplate, Spacer |
from reportlab.platypus import PageBreak, Paragraph, SimpleDocTemplate, Spacer |
||||
|
|
||||
pagewidth, pageheight = landscape(A6) |
|
||||
|
|
||||
doc = SimpleDocTemplate( |
|
||||
"text.pdf", |
|
||||
pagesize=landscape(A6), |
|
||||
rightMargin=18, |
|
||||
leftMargin=18, |
|
||||
topMargin=0, |
|
||||
bottomMargin=18, |
|
||||
) |
|
||||
|
|
||||
content = [] |
def make_cards(): |
||||
styles = getSampleStyleSheet() |
"""The main entrypoint for card generation.""" |
||||
|
# TODO: thread arguments into this logic |
||||
|
doc = create_doc("text.pdf") |
||||
|
content = get_fields(doc) |
||||
|
doc.build(content) |
||||
|
|
||||
session = init_session("sqlite:///metadata.db") |
|
||||
|
|
||||
# if book id from book table is the same as book id from comment table, show me that |
def get_fields(): |
||||
for book in session.query(Book).all(): |
"""Retrieve fields from the metadata.""" |
||||
for comment in session.query(Comment).all(): |
content = [] |
||||
if (book.id) == (comment.book): |
styles = getSampleStyleSheet() |
||||
print(book.id) |
session = init_session("sqlite:///metadata.db") |
||||
print(book.title) |
|
||||
print(book.authors) |
|
||||
print(book.timestamp) |
|
||||
print(book.path) |
|
||||
print(book.tags) |
|
||||
print(comment.text) |
|
||||
|
|
||||
# create a paragraph and append content to it - e.g. book.title, book.authors etc |
for book in session.query(Book).all(): |
||||
ptitle = Paragraph("<font size=12>{}</font>".format(book.title), styles["Italic"]) |
ptitle = Paragraph( |
||||
ptime = Paragraph( |
"<font size=12>{}</font>".format(book.title), styles["Italic"] |
||||
"<font size=10>Uploaded: {}</font>".format(book.timestamp), styles["Normal"] |
) |
||||
) |
ptime = Paragraph( |
||||
pcomments = Paragraph("<font size=10>{}</font>".format(comment.text)) |
"<font size=10>Uploaded: {}</font>".format(book.timestamp), styles["Normal"] |
||||
|
) |
||||
|
pcomments = Paragraph("<font size=10>{}</font>".format(comment.text)) |
||||
|
|
||||
# list comprehensions for authors and tags |
format_string = "<font size=12>{}</font>" |
||||
format_string = "<font size=12>{}</font>" |
all_authors = [author.name for author in book.authors] |
||||
all_authors = [author.name for author in book.authors] |
glued_together = format_string.format(", ".join(all_authors)) |
||||
glued_together = format_string.format(", ".join(all_authors)) |
|
||||
|
|
||||
format_string = "<font size=10>{}</font>" |
format_string = "<font size=10>{}</font>" |
||||
all_tags = [tag.name for tag in book.tags] |
all_tags = [tag.name for tag in book.tags] |
||||
tags_glued_together = format_string.format(", ".join(all_tags)) |
tags_glued_together = format_string.format(", ".join(all_tags)) |
||||
|
|
||||
# format_string = '<font size=10>{}</font>' |
content.append(ptitle) |
||||
# all_comments = [comment.name for comment in comment.text] |
content.append(Spacer(1, 12)) |
||||
# comments_split_apart = format_string.format("".split(all_comments)[:50]) |
content.append(ptime) |
||||
|
content.append(Spacer(1, 12)) |
||||
|
content.append(pcomments) |
||||
|
|
||||
# import ipdb; ipdb.set_trace() |
p = Paragraph(glued_together, styles["Normal"]) |
||||
|
content.append(p) |
||||
|
content.append(PageBreak()) |
||||
|
content.append(Spacer(6, 12)) |
||||
|
|
||||
# append the other content |
p = Paragraph(tags_glued_together, styles["Normal"]) |
||||
content.append(ptitle) |
content.append(p) |
||||
content.append(Spacer(1, 12)) |
content.append(PageBreak()) |
||||
content.append(ptime) |
content.append(Spacer(6, 12)) |
||||
content.append(Spacer(1, 12)) |
|
||||
content.append(pcomments) |
|
||||
|
|
||||
# alternative way to list multiple authors... (without list comprehensions) |
return content |
||||
# first = True |
|
||||
# author_text = "" |
|
||||
# for author in book.authors: |
|
||||
# if not first: |
|
||||
# author_text += ", " |
|
||||
# author_text += author.name |
|
||||
# first = False |
|
||||
# author_text = "<font size=12>{}</font>".format(author_text) |
|
||||
|
|
||||
# gluing together authors, tags |
|
||||
p = Paragraph(glued_together, styles["Normal"]) |
|
||||
content.append(p) |
|
||||
content.append(PageBreak()) |
|
||||
content.append(Spacer(6, 12)) |
|
||||
|
|
||||
p = Paragraph(tags_glued_together, styles["Normal"]) |
def create_doc(filename): |
||||
content.append(p) |
"""Build the Report Lab document template.""" |
||||
content.append(PageBreak()) |
return SimpleDocTemplate( |
||||
content.append(Spacer(6, 12)) |
filename, |
||||
|
pagesize=landscape(A6), |
||||
doc.build(content) |
rightMargin=18, |
||||
|
leftMargin=18, |
||||
|
topMargin=0, |
||||
|
bottomMargin=18, |
||||
|
) |
||||
|
Loading…
Reference in new issue