fixed omnibus for audio books
treefmt / nix fmt (pull_request) Failing after 7s
pytest / pytest (pull_request) Successful in 29s
build_systems / build-brain (pull_request) Successful in 48s
build_systems / build-bob (pull_request) Successful in 50s
build_systems / build-leviathan (pull_request) Successful in 54s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m2s
build_systems / build-jeeves (pull_request) Successful in 2m31s
treefmt / nix fmt (pull_request) Failing after 7s
pytest / pytest (pull_request) Successful in 29s
build_systems / build-brain (pull_request) Successful in 48s
build_systems / build-bob (pull_request) Successful in 50s
build_systems / build-leviathan (pull_request) Successful in 54s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m2s
build_systems / build-jeeves (pull_request) Successful in 2m31s
This commit is contained in:
@@ -44,6 +44,7 @@ class ConversionConfig:
|
||||
dry_run: bool
|
||||
overwrite: bool
|
||||
work_directory_name: str = ".audible_convert"
|
||||
dry_run_directory_name: str = "dry-run"
|
||||
temp_directory_name: str = "tmp"
|
||||
log_directory_name: str = "logs"
|
||||
review_directory_name: str = "review"
|
||||
@@ -73,7 +74,10 @@ def main(
|
||||
input_directory: Annotated[Path, typer.Argument(help="Directory audible-cli downloads AAX files into.")],
|
||||
output_directory: Annotated[Path, typer.Argument(help="Audiobook output directory.")],
|
||||
*,
|
||||
dry_run: Annotated[bool, typer.Option("--dry-run", help="Print planned output files without converting.")] = False,
|
||||
dry_run: Annotated[
|
||||
bool,
|
||||
typer.Option("--dry-run", help="Print planned output files and write marker files without converting."),
|
||||
] = False,
|
||||
overwrite: Annotated[bool, typer.Option("--overwrite", help="Overwrite existing M4B files.")] = False,
|
||||
) -> None:
|
||||
"""Convert AAX files from a download directory into M4B files."""
|
||||
@@ -271,6 +275,18 @@ def dry_run_aax_file_with_agent(
|
||||
)
|
||||
typer.echo(f"{aax_file} -> REVIEW {review_file}")
|
||||
else:
|
||||
stem = output_stem(metadata)
|
||||
dry_run_file = (
|
||||
config.resolved_output / config.work_directory_name / config.dry_run_directory_name / stem / f"{stem}.m4b"
|
||||
)
|
||||
dry_run_file.parent.mkdir(parents=True, exist_ok=True)
|
||||
dry_run_file.write_text(f"{destination}\n", encoding="utf-8")
|
||||
write_agent_log(
|
||||
log_file,
|
||||
"dry_run_file_written",
|
||||
destination=str(destination),
|
||||
path=str(dry_run_file),
|
||||
)
|
||||
typer.echo(f"{aax_file} -> {destination}")
|
||||
|
||||
|
||||
|
||||
@@ -468,6 +468,12 @@ Rules:
|
||||
- title must be a canonical title slug using lower-case words separated by hyphens.
|
||||
- Use series_id null and series_index 0 for standalone books.
|
||||
- If you use a series_id, series_index must be an integer greater than or equal to 1.
|
||||
- Detect omnibus or box-set editions that contain multiple numbered novels, books, or novellas.
|
||||
- For an omnibus, make a best-effort range from the filename, tags, and catalog rows. Keep series_index as the
|
||||
first covered book number and include the range in the title when the source title includes it, for example
|
||||
books-1-3.
|
||||
- Be careful with omnibuses of novels or novellas later published as one book: keep the omnibus as the audiobook's
|
||||
book record unless catalog rows clearly identify a better match.
|
||||
- Do not create publisher collections or author collections as series unless the book metadata clearly gives a
|
||||
numbered series.
|
||||
- Series belong to authors. Use a series_id only when it belongs to the selected author_id.
|
||||
|
||||
Reference in New Issue
Block a user