fix(fuse,core,gui,cli): resumable, robust Google Photos import (#94)

A Takeout import cut short by a restart could never be resumed: the
duplicate check failed on the draft the interrupted upload left behind
("invalid type: null, expected a string"). SDK 0.12.0 skips such drafts,
lets the import replace them across logins, and removes the draft of a
failed upload (B285, B286).

The import keeps its archives and outcome in the state directory, so a
run the service did not finish is reported as interrupted and can be
resumed from the app or with `pdfs import-google-photos --resume`. An
unreadable archive is left out instead of failing the scan, a failure
keeps its counts and still files albums, and a cancel or shutdown is
only reported when work was left undone (B287).

ImportStatus carries the phase, its progress, the running counts and
what can be resumed; the summary says dry_run, to_upload and
error_kind. The app shows these in the user's language, and --wait
prints progress. An empty gallery waits for a timeline refresh already
running instead of starting a second one.

The scan imports only the Photos service of an export, reads geoData
into the photo's Location, pairs live and motion photos (.MOV, .MP) with
their stills, and dates a photo by name and EXIF before Google's upload
time (B288).
This commit is contained in:
nvrl committed 2026-11-15 17:17:47 +01:00
1 parent 2ec3b7ff62
commit 2f2fe96cdf
28 files changed
+5196 -2544

No files matched your search

+327 -219
View File
File diff suppressed because it is too large. Load diff
+332 -224
View File
File diff suppressed because it is too large. Load diff
+327 -219
View File
File diff suppressed because it is too large. Load diff
+327 -219
View File
File diff suppressed because it is too large. Load diff
+327 -219
View File
File diff suppressed because it is too large. Load diff
+332 -224
View File
File diff suppressed because it is too large. Load diff
+313 -220
View File
File diff suppressed because it is too large. Load diff
+334 -225
View File
File diff suppressed because it is too large. Load diff
+327 -219
View File
File diff suppressed because it is too large. Load diff