feat(books): show completed books

This commit is contained in:
ktyl 2024-01-01 18:44:55 +00:00
parent 797ab70d71
commit e2a452914e
1 changed files with 36 additions and 5 deletions

View File

@ -14,7 +14,7 @@ if len(sys.argv) != 2:
base_path = os.path.abspath(sys.argv[1]) base_path = os.path.abspath(sys.argv[1])
ready_list_name = "ready.md" ready_list_name = "ready.md"
done_list_name = "all-done.md" completed_lists = ["2023.md", "2022.md", "202x.md"]
def get_path(list_name : str) -> str: def get_path(list_name : str) -> str:
return os.path.join(base_path, list_name) return os.path.join(base_path, list_name)
@ -55,9 +55,12 @@ class Book:
return books return books
def print_section(title : str, books : list[str]): def print_title(title : str, books : list[str]):
print(f"# {title} ({len(books)})\n") print(f"# {title} ({len(books)})\n")
def print_section(title : str, books : list[str]):
print_title(title, books)
longest_title = max([len(b.title) for b in books]) longest_title = max([len(b.title) for b in books])
title_column_width = longest_title + 2 title_column_width = longest_title + 2
@ -67,21 +70,49 @@ def print_section(title : str, books : list[str]):
print(format_str.format(*row)) print(format_str.format(*row))
print() print()
def print_in_progress(): def print_in_progress():
books = [b for b in Book.get_list(ready_list_name, False) if b.mark] books = [b for b in Book.get_list(ready_list_name, False) if b.mark]
print_section("in progress", books) print_section("in progress", books)
def print_completed(): def print_completed():
books = Book.get_list(done_list_name)
print_section("up for borrowing", books) completed_books = []
summaries = []
for completed_list in completed_lists:
books = [b for b in Book.get_list(completed_list)]
year = completed_list.split(".")[0]
completed_books += books
summaries.append(f"{year} - {len(books)}")
print_title("completed", completed_books)
for s in summaries:
print(s)
print()
def print_available():
books = []
for completed_list in completed_lists:
books += [b for b in Book.get_list(completed_list) if b.mark]
print_section("available", books)
def print_partial_metadata(): def print_partial_metadata():
books = Book.get_list(ready_list_name, False) books = Book.get_list(ready_list_name, False)
books += Book.get_list(done_list_name, False)
for completed_list in completed_lists:
books += Book.get_list(completed_list, False)
books = [b for b in books if not b.is_metadata_complete()] books = [b for b in books if not b.is_metadata_complete()]
print_section("metadata incomplete", books) print_section("metadata incomplete", books)
print_in_progress() print_in_progress()
print_completed() print_completed()
print_available()
print_partial_metadata() print_partial_metadata()