diff --git a/cmdupload/e2e_upload_folder_test.go b/cmdupload/e2e_upload_folder_test.go
index 2790d8f6..6b91d79a 100644
--- a/cmdupload/e2e_upload_folder_test.go
+++ b/cmdupload/e2e_upload_folder_test.go
@@ -161,6 +161,7 @@ func Test_DescriptionAndFavorite(t *testing.T) {
name: "Test_DescriptionAndFavorite",
args: []string{
"-google-photos",
+ "-discard-archived",
"TEST_DATA/Takeout1",
},
resetImmich: true,
diff --git a/cmdupload/upload.go b/cmdupload/upload.go
index b38f6d99..66b3b205 100644
--- a/cmdupload/upload.go
+++ b/cmdupload/upload.go
@@ -68,6 +68,7 @@ type UpCmd struct {
CreateStacks bool // Stack jpg/raw/burst (Default: TRUE)
StackJpgRaws bool // Stack jpg/raw (Default: TRUE)
StackBurst bool // Stack burst (Default: TRUE)
+ DiscardArchived bool // Don't import archived assets (Default: FALSE)
BrowserConfig Configuration
@@ -136,6 +137,10 @@ func NewUpCmd(ctx context.Context, ic iClient, log logger.Logger, args []string)
"use-album-folder-as-name",
" google-photos only: Use folder name and ignore albums' title (default:FALSE)", myflag.BoolFlagFn(&app.UseFolderAsAlbumName, false))
+ cmd.BoolFunc(
+ "discard-archived",
+ " google-photos only: Do not import archived photos (default FALSE)", myflag.BoolFlagFn(&app.DiscardArchived, false))
+
cmd.BoolFunc(
"create-stacks",
"Stack jpg/raw or bursts (default TRUE)", myflag.BoolFlagFn(&app.CreateStacks, true))
@@ -332,6 +337,11 @@ func (app *UpCmd) handleAsset(ctx context.Context, a *browser.LocalAssetFile) er
return nil
}
+ if app.DiscardArchived && a.Archived {
+ app.journalAsset(a, logger.NOT_SELECTED, "asset excluded because archives are discarded")
+ return nil
+ }
+
if app.DateRange.IsSet() {
d := a.DateTaken
if d.IsZero() {
@@ -474,6 +484,7 @@ func (app *UpCmd) handleAsset(ctx context.Context, a *browser.LocalAssetFile) er
shouldUpdate = shouldUpdate || a.Favorite
shouldUpdate = shouldUpdate || a.Longitude != 0 || a.Latitude != 0
shouldUpdate = shouldUpdate || !a.DateTaken.IsZero()
+ shouldUpdate = shouldUpdate || a.Archived
if !app.DryRun && shouldUpdate {
_, err := app.client.UpdateAsset(ctx, ID, a)
diff --git a/docs/releases.md b/docs/releases.md
index 48a92e12..7729bb41 100644
--- a/docs/releases.md
+++ b/docs/releases.md
@@ -1,6 +1,9 @@
# Release notes
-## Release next
+## Release 0.9.6
+
+### feat: control archived Google photos
+`-discard-archived` deactivate the import of archived photos.
### feat: better handling of boolean flags
Just mention the `-flag` to activate the functionality
diff --git a/readme.md b/readme.md
index 483935f9..7c423218 100644
--- a/readme.md
+++ b/readme.md
@@ -81,7 +81,7 @@ Fine-tune import based on specific dates:
### Google photos options:
-Specialized options for Google Photos management:
+Specialized options for Google Photos management:
`-google-photos` import from a Google Photos structured archive, recreating corresponding albums.
`-from-album "GP Album"` Create the album in `immich` and import album's assets.
`-create-albums ` Controls creation of Google Photos albums in Immich (default TRUE).
@@ -89,6 +89,7 @@ Specialized options for Google Photos management:
`-use-album-folder-as-name ` Use the folder's name instead of the album title (default: FALSE).
`-keep-partner ` Specifies inclusion or exclusion of partner-taken photos (default: TRUE).
`-partner-album "partner's album"` import assets from partner into given album.
+`-discard-archived ` don't import archived assets (default: FALSE).
Read [here](docs/google-takeout.md) to understand how Google Photos takeout isn't easy to handle.