def build(args: Namespace) -> None: settings = Settings.from_env() projects: list[str] if args.all: librarian = Librarian(settings) projects = librarian.get_projects() else: projects = args.projects if len(projects) > 0: print("Building projects...") builder = Builder(settings) builder.build_projects(projects, args.type, args.bundles)
def pack(args: Namespace) -> None: settings = Settings.from_env() projects: list[str] if args.all: librarian = Librarian(settings) projects = librarian.get_expanded_epubs().get(args.type, []) else: projects = args.projects if len(projects) > 0: print("Packing projects...") packer = Packer(settings) packer.pack_projects(projects, args.type, args.compression)
def check(args: Namespace) -> None: settings = Settings.from_env() if args.install: print("Installing EPUBCheck...") installer = Installer(settings) installer.install_epubcheck() projects: list[str] if args.all: librarian = Librarian(settings) projects = librarian.get_packaged_epubs().get(args.type, []) else: projects = args.projects if len(projects) > 0: print("Checking projects...") checker = Checker(settings) checker.check_projects(projects, args.type)
def sync(args: Namespace) -> None: settings = Settings.from_env() new_books: list[str] = [] projects: list[str] if args.all: librarian = Librarian(settings) projects = librarian.get_packaged_epubs().get(args.type, []) else: projects = args.projects for project in projects: epub_project = EPUBProject(Path(settings.projects_directory, project)) metadata = epub_project.epub_metadata search_terms: list[str] = [] search_terms.append(f"title:\"={metadata.title}\"") for creator_name, creator_roles in metadata.creators.items(): if not creator_roles or "aut" in creator_roles: search_terms.append(f"author:\"={creator_name}\"") search_expression = " ".join(search_terms) book_ids = calibredb.search(search_expression, with_library=args.with_library, username=args.username, password=args.password, timeout=args.timeout) ebook_file = Path(settings.packaged_epubs_directory, args.type, f"{project}.{args.type}.epub").as_posix() if not book_ids: new_books.append(ebook_file) elif len(book_ids) == 1: a = calibredb.add_format(book_ids[0], ebook_file, with_library=args.with_library, username=args.username, password=args.password, timeout=args.timeout) print(a) else: print(f"Skipping {project} due to ambiguous metadata") if new_books: calibredb.add(new_books, with_library=args.with_library, username=args.username, password=args.password, timeout=args.timeout)