v0.4.0: scroll log, worker slots, disk skip, color gradient, parallel export
This commit is contained in:
@@ -37,7 +37,7 @@ The bridge uses PhotoKit to:
|
||||
- Go 1.22+
|
||||
- Xcode command-line tools
|
||||
|
||||
The project builds with cgo and links against `Photos`, `Foundation`, and `AppKit`.
|
||||
The project builds with cgo and links against `Photos`, `Foundation`, `AppKit`, and `UniformTypeIdentifiers`.
|
||||
|
||||
## Build
|
||||
|
||||
@@ -106,9 +106,13 @@ Example output:
|
||||
|
||||
- Requests Photos access
|
||||
- Walks the Photos folder and album hierarchy
|
||||
- Builds a complete index of all assets before exporting, skipping files already on disk
|
||||
- Creates directories as `out/folder/album/files`
|
||||
- Exports previews by default, originals when `--originals` is present
|
||||
- Shows per-asset progress bar with filename, file size, and cloud/local status
|
||||
- Shows a progress display with:
|
||||
- Scroll log of completed files (✅ copied, ☁ downloaded, ⏭ skipped, ❌ failed)
|
||||
- Worker status lines with live download progress bars for cloud files
|
||||
- Total and Album progress bars with color gradient (red → yellow → green)
|
||||
- Uses `--size` only for preview export
|
||||
|
||||
Example layout:
|
||||
@@ -128,7 +132,7 @@ backup/
|
||||
- Requests Photos access
|
||||
- Resolves `--album-id` by local identifier first, then by album title if not found
|
||||
- Creates the output directory if needed
|
||||
- Exports assets one at a time with a progress bar: `[=======---] 50% filename.jpg 1.2 MB cloud`
|
||||
- Exports assets with a progress bar
|
||||
- Shows file size and cloud/local status for each exported asset
|
||||
- Exports resized JPEG previews by default
|
||||
- Exports original files when `--originals` is present
|
||||
@@ -138,6 +142,8 @@ backup/
|
||||
|
||||
`--originals` switches export mode to original-file export. In that mode, `--size` is ignored.
|
||||
|
||||
`--include-videos` includes video and audio assets in the export. By default, videos and audio are filtered out.
|
||||
|
||||
`tree`
|
||||
|
||||
- Requests Photos access
|
||||
@@ -191,7 +197,7 @@ A second signal forces an immediate exit.
|
||||
|
||||
## Architecture
|
||||
|
||||
- `cmd/photoscli`: CLI entrypoint, argument parsing, and album name resolution
|
||||
- `cmd/photoscli`: CLI entrypoint, argument parsing, progress display, and album name resolution
|
||||
- `internal/photos`: Go bridge interface, JSON parsing, and error mapping
|
||||
- `bridge/`: Objective-C PhotoKit implementation plus a C test stub
|
||||
|
||||
@@ -206,4 +212,4 @@ Data passed from Objective-C to Go is serialized as JSON and unmarshaled into Go
|
||||
- Original export currently writes the first PhotoKit asset resource for each asset, which may not capture every related representation for complex assets
|
||||
- iCloud-backed assets may require network download during export
|
||||
- A second interrupt signal forces an immediate exit without waiting for the current file
|
||||
- Partial export failures are not listed individually
|
||||
- Partial export failures are not listed individually
|
||||
Reference in New Issue
Block a user