Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)