From 3d09b7f78055557bfb94ac06c54ccbdd956465b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean=20Fran=C3=A7ois=20CASSAN?= Date: Tue, 16 Jul 2024 04:00:11 -0300 Subject: [PATCH 001/252] git action for buiild and release (#384) * edit release.md * Merge remote-tracking branch 'origin/next' into github-ci/cd --- docs/releases.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/releases.md b/docs/releases.md index 1006ff11..9d5aeb41 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -5,6 +5,11 @@ - [Github Sponsor page](https://github.com/sponsors/simulot) - [paypal donor page](https://www.paypal.com/donate/?hosted_button_id=VGU2SQE88T2T4) + +### changes +- git action to build and release + + ## Release 0.20 ### feature exclude files based on a pattern @@ -22,7 +27,7 @@ Example, the following command excludes any files in directories called backup o immich-go -sever=xxxxx -key=yyyyy upload -exclude-files=backup/ -exclude-files=draft/ -exclude=copy).* /path/to/your/files ``` -fixes: +### fixes: - [#365](https://github.com/simulot/immich-go/issues/365) missing associated metadata file isn't correct - [#299](https://github.com/simulot/immich-go/issues/299) Real time GUI log only shows 4 lines - [#370](https://github.com/simulot/immich-go/issues/370) ui: clearly mention when the upload in completed From e6d4dd47ef161c2b2dd374ca27d24f71d4232a0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean=20Fran=C3=A7ois=20CASSAN?= Date: Tue, 16 Jul 2024 04:15:46 -0300 Subject: [PATCH 002/252] Write HTTP status in traces (#385) * remove dead code * Fix: Add HTTP Status to API trace #381 --- immich/call.go | 73 +------------------------------------------------- 1 file changed, 1 insertion(+), 72 deletions(-) diff --git a/immich/call.go b/immich/call.go index baa0dbf3..92b0bbd7 100644 --- a/immich/call.go +++ b/immich/call.go @@ -279,6 +279,7 @@ func responseJSON[T any](object *T) serverResponseOption { if sc.ic.apiTraceWriter != nil { seq := sc.ctx.Value(ctxCallSequenceID) fmt.Fprintln(sc.ic.apiTraceWriter, time.Now().Format(time.RFC3339), "RESPONSE", seq, sc.endPoint, resp.Request.Method, resp.Request.URL.String()) + fmt.Fprintln(sc.ic.apiTraceWriter, " Status:", resp.Status) fmt.Fprintln(sc.ic.apiTraceWriter, "-- response body --") dec := json.NewEncoder(newLimitWriter(sc.ic.apiTraceWriter, 100)) dec.SetIndent("", " ") @@ -291,75 +292,3 @@ func responseJSON[T any](object *T) serverResponseOption { return errors.New("can't decode nil response") } } - -/* -func responseAccumulateJSON[T any](acc *[]T) serverResponseOption { - return func(sc *serverCall, resp *http.Response) error { - eof := true - if resp != nil { - if resp.Body != nil { - defer resp.Body.Close() - if resp.StatusCode == http.StatusNoContent { - return nil - } - arr := []T{} - err := json.NewDecoder(resp.Body).Decode(&arr) - if err != nil { - return err - } - if len(arr) > 0 && sc.p != nil { - eof = false - } - (*acc) = append((*acc), arr...) - if eof { - sc.p.setEOF() - } - return nil - } - } - return errors.New("can't decode nil response") - } -} -*/ -/* -func responseJSONWithFilter[T any](filter func(*T)) serverResponseOption { - return func(sc *serverCall, resp *http.Response) error { - eof := true - if resp != nil { - if resp.Body != nil { - defer resp.Body.Close() - if resp.StatusCode == http.StatusNoContent { - return nil - } - dec := json.NewDecoder(resp.Body) - // read open bracket "[" - _, err := dec.Token() - if err != nil { - return nil - } - - // while the array contains values - for dec.More() { - var o T - // decode an array value (Message) - err = dec.Decode(&o) - if err != nil { - return err - } - if sc.p != nil { - eof = false - } - filter(&o) - } - // read closing bracket "]" - _, err = dec.Token() - if eof { - sc.p.setEOF() - } - return err - } - } - return errors.New("can't decode nil response") - } -} -*/ From 94473aa1a3fab527955bb8abcc639dfdc209c38d Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 25 Aug 2024 12:15:19 +0200 Subject: [PATCH 003/252] CLI refactoring WIP --- cmd/album/album.go | 12 +-- cmd/cmd.go | 23 +++++ cmd/duplicate/duplicate.go | 12 +-- cmd/metadata/metadata.go | 14 +-- cmd/shared.go | 133 +++++++++++++++++---------- cmd/stack/stack.go | 14 +-- cmd/tool/tool.go | 2 +- cmd/upload/e2e_takeout_test.go | 2 +- cmd/upload/e2e_upload_folder_test.go | 2 +- cmd/upload/ui.go | 8 +- cmd/upload/upload.go | 12 +-- cmd/upload/upload_test.go | 2 +- go.mod | 3 + go.sum | 8 ++ main.go | 43 +++++---- 15 files changed, 182 insertions(+), 108 deletions(-) create mode 100644 cmd/cmd.go diff --git a/cmd/album/album.go b/cmd/album/album.go index 3fbe4a28..202a87dc 100644 --- a/cmd/album/album.go +++ b/cmd/album/album.go @@ -12,7 +12,7 @@ import ( "github.com/simulot/immich-go/ui" ) -func AlbumCommand(ctx context.Context, common *cmd.SharedFlags, args []string) error { +func AlbumCommand(ctx context.Context, common *cmd.RootImmichFlags, args []string) error { if len(args) > 0 { cmd := args[0] args = args[1:] @@ -25,17 +25,17 @@ func AlbumCommand(ctx context.Context, common *cmd.SharedFlags, args []string) e } type DeleteAlbumCmd struct { - *cmd.SharedFlags + *cmd.RootImmichFlags pattern *regexp.Regexp // album pattern AssumeYes bool } -func deleteAlbum(ctx context.Context, common *cmd.SharedFlags, args []string) error { +func deleteAlbum(ctx context.Context, common *cmd.RootImmichFlags, args []string) error { app := &DeleteAlbumCmd{ - SharedFlags: common, + RootImmichFlags: common, } cmd := flag.NewFlagSet("album delete", flag.ExitOnError) - app.SharedFlags.SetFlags(cmd) + app.RootImmichFlags.SetFlags(cmd) cmd.BoolFunc("yes", "When true, assume Yes to all actions", func(s string) error { var err error @@ -46,7 +46,7 @@ func deleteAlbum(ctx context.Context, common *cmd.SharedFlags, args []string) er if err != nil { return err } - err = app.SharedFlags.Start(ctx) + err = app.RootImmichFlags.Start(ctx) if err != nil { return err } diff --git a/cmd/cmd.go b/cmd/cmd.go new file mode 100644 index 00000000..78dd1a0e --- /dev/null +++ b/cmd/cmd.go @@ -0,0 +1,23 @@ +package cmd + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" +) + +func Execute() { + if err := rootCmd.Execute(); err != nil { + fmt.Println(err) + os.Exit(1) + } +} + +func inti() { + cobra.OnInitialize(initConfig) +} + +func initConfig() { + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.immich-go.yaml)") +} diff --git a/cmd/duplicate/duplicate.go b/cmd/duplicate/duplicate.go index e713ec95..f930496f 100644 --- a/cmd/duplicate/duplicate.go +++ b/cmd/duplicate/duplicate.go @@ -20,7 +20,7 @@ import ( ) type DuplicateCmd struct { - *cmd.SharedFlags + *cmd.RootImmichFlags AssumeYes bool // When true, doesn't ask to the user DateRange immich.DateRange // Set capture date range IgnoreTZErrors bool // Enable TZ error tolerance @@ -36,18 +36,18 @@ type duplicateKey struct { Type string } -func NewDuplicateCmd(ctx context.Context, common *cmd.SharedFlags, args []string) (*DuplicateCmd, error) { +func NewDuplicateCmd(ctx context.Context, common *cmd.RootImmichFlags, args []string) (*DuplicateCmd, error) { cmd := flag.NewFlagSet("duplicate", flag.ExitOnError) validRange := immich.DateRange{} _ = validRange.Set("1850-01-04,2030-01-01") app := DuplicateCmd{ - SharedFlags: common, + RootImmichFlags: common, DateRange: validRange, assetsByID: map[string]*immich.Asset{}, assetsByBaseAndDate: map[duplicateKey][]*immich.Asset{}, } - app.SharedFlags.SetFlags(cmd) + app.RootImmichFlags.SetFlags(cmd) cmd.BoolFunc("ignore-tz-errors", "Ignore timezone difference to check duplicates (default: FALSE).", myflag.BoolFlagFn(&app.IgnoreTZErrors, false)) cmd.BoolFunc("yes", "When true, assume Yes to all actions", myflag.BoolFlagFn(&app.AssumeYes, false)) @@ -57,14 +57,14 @@ func NewDuplicateCmd(ctx context.Context, common *cmd.SharedFlags, args []string if err != nil { return nil, err } - err = app.SharedFlags.Start(ctx) + err = app.RootImmichFlags.Start(ctx) if err != nil { return nil, err } return &app, err } -func DuplicateCommand(ctx context.Context, common *cmd.SharedFlags, args []string) error { +func DuplicateCommand(ctx context.Context, common *cmd.RootImmichFlags, args []string) error { app, err := NewDuplicateCmd(ctx, common, args) if err != nil { return err diff --git a/cmd/metadata/metadata.go b/cmd/metadata/metadata.go index 851f5fbf..4b425ea3 100644 --- a/cmd/metadata/metadata.go +++ b/cmd/metadata/metadata.go @@ -16,20 +16,20 @@ import ( ) type MetadataCmd struct { - *cmd.SharedFlags + *cmd.RootImmichFlags DryRun bool MissingDateDespiteName bool MissingDate bool } -func NewMetadataCmd(ctx context.Context, common *cmd.SharedFlags, args []string) (*MetadataCmd, error) { +func NewMetadataCmd(ctx context.Context, common *cmd.RootImmichFlags, args []string) (*MetadataCmd, error) { var err error cmd := flag.NewFlagSet("metadata", flag.ExitOnError) app := MetadataCmd{ - SharedFlags: common, + RootImmichFlags: common, } - app.SharedFlags.SetFlags(cmd) + app.RootImmichFlags.SetFlags(cmd) cmd.BoolFunc("dry-run", "display actions, but don't touch the server assets", myflag.BoolFlagFn(&app.DryRun, false)) cmd.BoolFunc("missing-date", "select all assets where the date is missing", myflag.BoolFlagFn(&app.MissingDate, false)) cmd.BoolFunc("missing-date-with-name", "select all assets where the date is missing but the name contains a the date", myflag.BoolFlagFn(&app.MissingDateDespiteName, false)) @@ -37,18 +37,18 @@ func NewMetadataCmd(ctx context.Context, common *cmd.SharedFlags, args []string) if err != nil { return nil, err } - err = app.SharedFlags.Start(ctx) + err = app.RootImmichFlags.Start(ctx) return &app, err } -func MetadataCommand(ctx context.Context, common *cmd.SharedFlags, args []string) error { +func MetadataCommand(ctx context.Context, common *cmd.RootImmichFlags, args []string) error { app, err := NewMetadataCmd(ctx, common, args) if err != nil { return err } fmt.Println("Get server's assets...") - list, err := app.SharedFlags.Immich.GetAllAssets(ctx) + list, err := app.RootImmichFlags.Immich.GetAllAssets(ctx) if err != nil { return err } diff --git a/cmd/shared.go b/cmd/shared.go index 14b8fa20..60381122 100644 --- a/cmd/shared.go +++ b/cmd/shared.go @@ -3,7 +3,6 @@ package cmd import ( "context" "errors" - "flag" "fmt" "io" "log/slog" @@ -14,44 +13,76 @@ import ( "github.com/simulot/immich-go/helpers/configuration" "github.com/simulot/immich-go/helpers/fileevent" - "github.com/simulot/immich-go/helpers/myflag" "github.com/simulot/immich-go/helpers/tzone" "github.com/simulot/immich-go/immich" fakeimmich "github.com/simulot/immich-go/internal/fakeImmich" "github.com/simulot/immich-go/ui" + "github.com/spf13/cobra" "github.com/telemachus/humane" ) -// SharedFlags collect all parameters that are common to all commands -type SharedFlags struct { - ConfigurationFile string // Path to the configuration file to use - Server string // Immich server address (http://:2283/api or https:///api) - API string // Immich api endpoint (http://container_ip:3301) - Key string // API Key - DeviceUUID string // Set a device UUID - APITrace bool // Enable API call traces - LogLevel string // Indicate the log level (string) - Level slog.Level // Set the log level - Debug bool // Enable the debug mode - TimeZone string // Override default TZ - SkipSSL bool // Skip SSL Verification - ClientTimeout time.Duration // Set the client request timeout - NoUI bool // Disable user interface - JSONLog bool // Enable JSON structured log - DebugCounters bool // Enable CSV action counters per file - DebugFileList bool // When true, the file argument is a file wile the list of Takeout files - - Immich immich.ImmichInterface // Immich client - Log *slog.Logger // Logger - Jnl *fileevent.Recorder // Program's logger - LogFile string // Log file name - LogWriterCloser io.WriteCloser // the log writer - APITraceWriter io.WriteCloser // API tracer - APITraceWriterName string - Banner ui.Banner +func CreateRootCommand() *RootImmichFlags { + rootFlags := RootImmichFlags{ + Command: &cobra.Command{ + Use: "immich-go", + Short: "Immich-go is a command line application to interact with the Immich application using its API", + Long: `An alternative to the immich-CLI command that doesn't depend on nodejs installation. It tries its best for importing google photos takeout archives.`, + }, + } + + rootFlags.Command.Flags().StringVar(&rootFlags.ConfigurationFile, "use-configuration", rootFlags.ConfigurationFile, "Specifies the configuration to use") + rootFlags.Command.Flags().StringVar(&rootFlags.LogLevel, "log-level", rootFlags.LogLevel, "Log level (DEBUG|INFO|WARN|ERROR), default INFO") + rootFlags.Command.Flags().StringVar(&rootFlags.LogFile, "log-file", rootFlags.LogFile, "Write log messages into the file") + rootFlags.Command.Flags().BoolVar(&rootFlags.JSONLog, "log-json", false, "Output line-delimited JSON file, default FALSE") + + // A déplacer dans les sous commandes + rootFlags.Command.Flags().StringVar(&rootFlags.Server, "server", rootFlags.Server, "Immich server address (http://:2283 or https://)") + rootFlags.Command.Flags().StringVar(&rootFlags.API, "api", rootFlags.API, "Immich api endpoint (http://container_ip:3301)") + rootFlags.Command.Flags().StringVar(&rootFlags.Key, "key", rootFlags.Key, "API Key") + rootFlags.Command.Flags().StringVar(&rootFlags.DeviceUUID, "device-uuid", rootFlags.DeviceUUID, "Set a device UUID") + rootFlags.Command.Flags().BoolVar(&rootFlags.Debug, "debug", false, "enable debug messages") + rootFlags.Command.Flags().BoolVar(&rootFlags.APITrace, "api-trace", false, "enable trace of api calls") + rootFlags.Command.Flags().StringVar(&rootFlags.TimeZone, "time-zone", rootFlags.TimeZone, "Override the system time zone") + rootFlags.Command.Flags().BoolVar(&rootFlags.SkipSSL, "skip-verify-ssl", false, "Skip SSL verification") + rootFlags.Command.Flags().BoolVar(&rootFlags.NoUI, "no-ui", false, "Disable the user interface") + rootFlags.Command.Flags().DurationVar(&rootFlags.ClientTimeout, "client-timeout", 1*time.Minute, "Set server calls timeout, default 1m") + rootFlags.Command.Flags().BoolVar(&rootFlags.DebugCounters, "debug-counters", false, "generate a CSV file with actions per handled files") + return &rootFlags +} + +// RootImmichFlags is the root command flags +type RootImmichFlags struct { + Command *cobra.Command // Cobra root command + ConfigurationFile string // Path to the configuration file to use + JSONLog bool // Enable JSON structured log + Banner ui.Banner // Immich-go banner + Log *slog.Logger // Logger + Jnl *fileevent.Recorder // Program's logger + LogFile string // Log file name + LogWriterCloser io.WriteCloser // the log writer + LogLevel string // Indicate the log level (string) + Level slog.Level // Set the log level + + // a déplacer dans les sous commandes + Server string // Immich server address (http://:2283/api or https:///api) + API string // Immich api endpoint (http://container_ip:3301) + Key string // API Key + DeviceUUID string // Set a device UUID + APITrace bool // Enable API call traces + Debug bool // Enable the debug mode + TimeZone string // Override default TZ + SkipSSL bool // Skip SSL Verification + ClientTimeout time.Duration // Set the client request timeout + NoUI bool // Disable user interface + DebugCounters bool // Enable CSV action counters per file + DebugFileList bool // When true, the file argument is a file wile the list of Takeout files + APITraceWriter io.WriteCloser // API tracer + APITraceWriterName string // API trace log name + + Immich immich.ImmichInterface // Immich client } -func (app *SharedFlags) InitSharedFlags() { +func (app *RootImmichFlags) InitSharedFlags() { app.ConfigurationFile = configuration.DefaultConfigFile() app.LogFile = configuration.DefaultLogFile() app.APITrace = false @@ -63,26 +94,26 @@ func (app *SharedFlags) InitSharedFlags() { app.ClientTimeout = 5 * time.Minute } -// SetFlag add common flags to a flagset -func (app *SharedFlags) SetFlags(fs *flag.FlagSet) { - fs.StringVar(&app.ConfigurationFile, "use-configuration", app.ConfigurationFile, "Specifies the configuration to use") - fs.StringVar(&app.Server, "server", app.Server, "Immich server address (http://:2283 or https://)") - fs.StringVar(&app.API, "api", app.API, "Immich api endpoint (http://container_ip:3301)") - fs.StringVar(&app.Key, "key", app.Key, "API Key") - fs.StringVar(&app.DeviceUUID, "device-uuid", app.DeviceUUID, "Set a device UUID") - fs.StringVar(&app.LogLevel, "log-level", app.LogLevel, "Log level (DEBUG|INFO|WARN|ERROR), default INFO") - fs.StringVar(&app.LogFile, "log-file", app.LogFile, "Write log messages into the file") - fs.BoolFunc("log-json", "Output line-delimited JSON file, default FALSE", myflag.BoolFlagFn(&app.JSONLog, app.JSONLog)) - fs.BoolFunc("api-trace", "enable trace of api calls", myflag.BoolFlagFn(&app.APITrace, app.APITrace)) - fs.BoolFunc("debug", "enable debug messages", myflag.BoolFlagFn(&app.Debug, app.Debug)) - fs.StringVar(&app.TimeZone, "time-zone", app.TimeZone, "Override the system time zone") - fs.BoolFunc("skip-verify-ssl", "Skip SSL verification", myflag.BoolFlagFn(&app.SkipSSL, app.SkipSSL)) - fs.BoolFunc("no-ui", "Disable the user interface", myflag.BoolFlagFn(&app.NoUI, app.NoUI)) - fs.Func("client-timeout", "Set server calls timeout, default 1m", myflag.DurationFlagFn(&app.ClientTimeout, app.ClientTimeout)) - fs.BoolFunc("debug-counters", "generate a CSV file with actions per handled files", myflag.BoolFlagFn(&app.DebugCounters, false)) -} - -func (app *SharedFlags) Start(ctx context.Context) error { +// // SetFlag add common flags to a flagset +// func (app *ImmichServerFlags) SetFlags(fs *flag.FlagSet) { +// fs.StringVar(&app.ConfigurationFile, "use-configuration", app.ConfigurationFile, "Specifies the configuration to use") +// fs.StringVar(&app.Server, "server", app.Server, "Immich server address (http://:2283 or https://)") +// fs.StringVar(&app.API, "api", app.API, "Immich api endpoint (http://container_ip:3301)") +// fs.StringVar(&app.Key, "key", app.Key, "API Key") +// fs.StringVar(&app.DeviceUUID, "device-uuid", app.DeviceUUID, "Set a device UUID") +// fs.StringVar(&app.LogLevel, "log-level", app.LogLevel, "Log level (DEBUG|INFO|WARN|ERROR), default INFO") +// fs.StringVar(&app.LogFile, "log-file", app.LogFile, "Write log messages into the file") +// fs.BoolFunc("log-json", "Output line-delimited JSON file, default FALSE", myflag.BoolFlagFn(&app.JSONLog, app.JSONLog)) +// fs.BoolFunc("api-trace", "enable trace of api calls", myflag.BoolFlagFn(&app.APITrace, app.APITrace)) +// fs.BoolFunc("debug", "enable debug messages", myflag.BoolFlagFn(&app.Debug, app.Debug)) +// fs.StringVar(&app.TimeZone, "time-zone", app.TimeZone, "Override the system time zone") +// fs.BoolFunc("skip-verify-ssl", "Skip SSL verification", myflag.BoolFlagFn(&app.SkipSSL, app.SkipSSL)) +// fs.BoolFunc("no-ui", "Disable the user interface", myflag.BoolFlagFn(&app.NoUI, app.NoUI)) +// fs.Func("client-timeout", "Set server calls timeout, default 1m", myflag.DurationFlagFn(&app.ClientTimeout, app.ClientTimeout)) +// fs.BoolFunc("debug-counters", "generate a CSV file with actions per handled files", myflag.BoolFlagFn(&app.DebugCounters, false)) +// } + +func (app *RootImmichFlags) Start(ctx context.Context) error { var joinedErr error if app.Server != "" { app.Server = strings.TrimSuffix(app.Server, "/") @@ -204,7 +235,7 @@ func (app *SharedFlags) Start(ctx context.Context) error { return nil } -func (app *SharedFlags) SetLogWriter(w io.Writer) { +func (app *RootImmichFlags) SetLogWriter(w io.Writer) { if app.JSONLog { app.Log = slog.New(slog.NewJSONHandler(w, &slog.HandlerOptions{})) } else { diff --git a/cmd/stack/stack.go b/cmd/stack/stack.go index fdfc491c..269396b9 100644 --- a/cmd/stack/stack.go +++ b/cmd/stack/stack.go @@ -14,21 +14,21 @@ import ( ) type StackCmd struct { - *cmd.SharedFlags + *cmd.RootImmichFlags AssumeYes bool DateRange immich.DateRange // Set capture date range } -func initStack(ctx context.Context, common *cmd.SharedFlags, args []string) (*StackCmd, error) { +func initStack(ctx context.Context, common *cmd.RootImmichFlags, args []string) (*StackCmd, error) { cmd := flag.NewFlagSet("stack", flag.ExitOnError) validRange := immich.DateRange{} _ = validRange.Set("1850-01-04,2030-01-01") app := StackCmd{ - SharedFlags: common, - DateRange: validRange, + RootImmichFlags: common, + DateRange: validRange, } - app.SharedFlags.SetFlags(cmd) + app.RootImmichFlags.SetFlags(cmd) cmd.BoolFunc("yes", "When true, assume Yes to all actions", func(s string) error { var err error app.AssumeYes, err = strconv.ParseBool(s) @@ -39,14 +39,14 @@ func initStack(ctx context.Context, common *cmd.SharedFlags, args []string) (*St if err != nil { return nil, err } - err = app.SharedFlags.Start(ctx) + err = app.RootImmichFlags.Start(ctx) if err != nil { return nil, err } return &app, err } -func NewStackCommand(ctx context.Context, common *cmd.SharedFlags, args []string) error { +func NewStackCommand(ctx context.Context, common *cmd.RootImmichFlags, args []string) error { app, err := initStack(ctx, common, args) if err != nil { return err diff --git a/cmd/tool/tool.go b/cmd/tool/tool.go index 1c55a927..7ae8db4d 100644 --- a/cmd/tool/tool.go +++ b/cmd/tool/tool.go @@ -8,7 +8,7 @@ import ( "github.com/simulot/immich-go/cmd/album" ) -func CommandTool(ctx context.Context, common *cmd.SharedFlags, args []string) error { +func CommandTool(ctx context.Context, common *cmd.RootImmichFlags, args []string) error { if len(args) > 0 { cmd := args[0] args = args[1:] diff --git a/cmd/upload/e2e_takeout_test.go b/cmd/upload/e2e_takeout_test.go index 3c570f97..c513cd3a 100644 --- a/cmd/upload/e2e_takeout_test.go +++ b/cmd/upload/e2e_takeout_test.go @@ -22,7 +22,7 @@ func simulate_upload(t *testing.T, zipList string, dateFormat string, forceMissi ctx := context.Background() // log := slog.New(slog.NewTextHandler(io.Discard, nil)) - serv := cmd.SharedFlags{ + serv := cmd.RootImmichFlags{ Immich: ic, LogLevel: "INFO", // Jnl: fileevent.NewRecorder(log, false), diff --git a/cmd/upload/e2e_upload_folder_test.go b/cmd/upload/e2e_upload_folder_test.go index acf06bb9..1a194379 100644 --- a/cmd/upload/e2e_upload_folder_test.go +++ b/cmd/upload/e2e_upload_folder_test.go @@ -106,7 +106,7 @@ func runCase(t *testing.T, tc testCase) { args = append(args, tc.args...) - app := cmd.SharedFlags{ + app := cmd.RootImmichFlags{ Immich: ic, } diff --git a/cmd/upload/ui.go b/cmd/upload/ui.go index 5172749f..b13ecc09 100644 --- a/cmd/upload/ui.go +++ b/cmd/upload/ui.go @@ -305,15 +305,15 @@ func newUI(ctx context.Context, app *UpCmd) *uiPage { // Hijack the log ui.logView = tview.NewTextView().SetMaxLines(100).ScrollToEnd() - ui.prevSlog = app.SharedFlags.Log + ui.prevSlog = app.RootImmichFlags.Log - if app.SharedFlags.LogWriterCloser != nil { - w := io.MultiWriter(app.SharedFlags.LogWriterCloser, ui.logView) + if app.RootImmichFlags.LogWriterCloser != nil { + w := io.MultiWriter(app.RootImmichFlags.LogWriterCloser, ui.logView) app.SetLogWriter(w) } else { app.SetLogWriter(ui.logView) } - app.SharedFlags.Jnl.SetLogger(app.SharedFlags.Log) + app.RootImmichFlags.Jnl.SetLogger(app.RootImmichFlags.Log) ui.logView.SetBorder(true).SetTitle("Log") ui.screen.AddItem(ui.logView, 2, 0, 1, 1, 0, 0, false) diff --git a/cmd/upload/upload.go b/cmd/upload/upload.go index f1a5bf53..79c23456 100644 --- a/cmd/upload/upload.go +++ b/cmd/upload/upload.go @@ -31,7 +31,7 @@ import ( ) type UpCmd struct { - *cmd.SharedFlags // shared flags and immich client + *cmd.RootImmichFlags // shared flags and immich client fsyss []fs.FS // pseudo file system to browse @@ -74,7 +74,7 @@ type UpCmd struct { browser browser.Browser } -func UploadCommand(ctx context.Context, common *cmd.SharedFlags, args []string) error { +func UploadCommand(ctx context.Context, common *cmd.RootImmichFlags, args []string) error { app, err := newCommand(ctx, common, args, nil) if err != nil { return err @@ -87,12 +87,12 @@ func UploadCommand(ctx context.Context, common *cmd.SharedFlags, args []string) type fsOpener func() ([]fs.FS, error) -func newCommand(ctx context.Context, common *cmd.SharedFlags, args []string, fsOpener fsOpener) (*UpCmd, error) { +func newCommand(ctx context.Context, common *cmd.RootImmichFlags, args []string, fsOpener fsOpener) (*UpCmd, error) { var err error cmd := flag.NewFlagSet("upload", flag.ExitOnError) app := UpCmd{ - SharedFlags: common, + RootImmichFlags: common, } app.BannedFiles, err = namematcher.New( `@eaDir/`, @@ -106,7 +106,7 @@ func newCommand(ctx context.Context, common *cmd.SharedFlags, args []string, fsO return nil, err } - app.SharedFlags.SetFlags(cmd) + app.RootImmichFlags.SetFlags(cmd) cmd.BoolFunc( "dry-run", "display actions but don't touch source or destination", @@ -218,7 +218,7 @@ func newCommand(ctx context.Context, common *cmd.SharedFlags, args []string, fsO } app.BrowserConfig.Validate() - err = app.SharedFlags.Start(ctx) + err = app.RootImmichFlags.Start(ctx) if err != nil { return nil, err } diff --git a/cmd/upload/upload_test.go b/cmd/upload/upload_test.go index 9e548008..47635264 100644 --- a/cmd/upload/upload_test.go +++ b/cmd/upload/upload_test.go @@ -534,7 +534,7 @@ func TestUpload(t *testing.T) { ctx := context.Background() log := slog.New(slog.NewTextHandler(io.Discard, nil)) - serv := cmd.SharedFlags{ + serv := cmd.RootImmichFlags{ Immich: ic, Jnl: fileevent.NewRecorder(log, false), Log: log, diff --git a/go.mod b/go.mod index f7424d00..7599ddd1 100644 --- a/go.mod +++ b/go.mod @@ -22,6 +22,7 @@ require ( require ( github.com/gdamore/encoding v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/kr/fs v0.1.0 // indirect github.com/kr/text v0.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect @@ -30,6 +31,8 @@ require ( github.com/pkg/sftp v1.13.6 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.9.0 // indirect + github.com/spf13/cobra v1.8.1 // indirect + github.com/spf13/pflag v1.0.5 // indirect golang.org/x/crypto v0.17.0 // indirect golang.org/x/sys v0.20.0 // indirect golang.org/x/term v0.20.0 // indirect diff --git a/go.sum b/go.sum index 501ed337..e9d611fd 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,4 @@ +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -17,6 +18,8 @@ github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQN github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= @@ -55,8 +58,13 @@ github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= diff --git a/main.go b/main.go index 79aef77d..45c301d3 100644 --- a/main.go +++ b/main.go @@ -3,21 +3,17 @@ package main import ( "context" "errors" - "flag" "fmt" - "log/slog" "os" "os/signal" "runtime/debug" - "github.com/simulot/immich-go/cmd" "github.com/simulot/immich-go/cmd/duplicate" "github.com/simulot/immich-go/cmd/metadata" "github.com/simulot/immich-go/cmd/stack" "github.com/simulot/immich-go/cmd/tool" "github.com/simulot/immich-go/cmd/upload" - "github.com/simulot/immich-go/ui" - "github.com/telemachus/humane" + "github.com/spf13/cobra" ) var ( @@ -86,17 +82,33 @@ func main() { } func Run(ctx context.Context) error { - app := cmd.SharedFlags{ - Log: slog.New(humane.NewHandler(os.Stdout, &humane.Options{Level: slog.LevelInfo})), - Banner: ui.NewBanner(version, commit, date), + printVersion() + + rootCmd := &cobra.Command{ + Use: "immich-go", + Short: "Immich-go is a command line application to interact with the Immich application using its API", + Long: `An alternative to the immich-CLI command that doesn't depend on nodejs installation. It tries its best for importing google photos takeout archives.`, + // Run: func(cmd *cobra.Command, args []string) { + // // Do Stuff Here + // }, } - fs := flag.NewFlagSet("main", flag.ExitOnError) - fs.BoolFunc("version", "Get immich-go version", func(s string) error { - printVersion() - os.Exit(0) - return nil - }) + rootCmd.PersistentFlags().Add + + fmt.Println(app.Banner.String()) + + /* + app := cmd.ImmichServerFlags{ + Log: slog.New(humane.NewHandler(os.Stdout, &humane.Options{Level: slog.LevelInfo})), + Banner: ui.NewBanner(version, commit, date), + } + fs := flag.NewFlagSet("main", flag.ExitOnError) + fs.BoolFunc("version", "Get immich-go version", func(s string) error { + printVersion() + os.Exit(0) + return nil + }) + */ app.InitSharedFlags() app.SetFlags(fs) @@ -106,9 +118,6 @@ func Run(ctx context.Context) error { return err } - printVersion() - fmt.Println(app.Banner.String()) - if len(fs.Args()) == 0 { err = errors.New("missing command upload|duplicate|stack|tool") } From df457aa2f653106cafde92c4c202543bfe6da973 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 25 Aug 2024 14:46:15 +0200 Subject: [PATCH 004/252] add command "version" --- cmd/cmdVersion/version.go | 19 +++++++ cmd/shared.go | 22 ++++---- main.go | 104 +++++++++++++++++--------------------- 3 files changed, 76 insertions(+), 69 deletions(-) create mode 100644 cmd/cmdVersion/version.go diff --git a/cmd/cmdVersion/version.go b/cmd/cmdVersion/version.go new file mode 100644 index 00000000..4412ee6e --- /dev/null +++ b/cmd/cmdVersion/version.go @@ -0,0 +1,19 @@ +package cmdVersion + +import ( + "fmt" + + "github.com/simulot/immich-go/cmd" + "github.com/spf13/cobra" +) + +func AddCommand(root *cmd.RootImmichFlags, version string, commit string, date string) { + versionCmd := &cobra.Command{ + Use: "version", + Short: "Print the version number of Immich", + Run: func(cmd *cobra.Command, args []string) { + fmt.Printf("immich-go %s, commit %s, built at %s\n", version, commit, date) + }, + } + root.Command.AddCommand(versionCmd) +} diff --git a/cmd/shared.go b/cmd/shared.go index 60381122..9d9ee7e2 100644 --- a/cmd/shared.go +++ b/cmd/shared.go @@ -36,17 +36,17 @@ func CreateRootCommand() *RootImmichFlags { rootFlags.Command.Flags().BoolVar(&rootFlags.JSONLog, "log-json", false, "Output line-delimited JSON file, default FALSE") // A déplacer dans les sous commandes - rootFlags.Command.Flags().StringVar(&rootFlags.Server, "server", rootFlags.Server, "Immich server address (http://:2283 or https://)") - rootFlags.Command.Flags().StringVar(&rootFlags.API, "api", rootFlags.API, "Immich api endpoint (http://container_ip:3301)") - rootFlags.Command.Flags().StringVar(&rootFlags.Key, "key", rootFlags.Key, "API Key") - rootFlags.Command.Flags().StringVar(&rootFlags.DeviceUUID, "device-uuid", rootFlags.DeviceUUID, "Set a device UUID") - rootFlags.Command.Flags().BoolVar(&rootFlags.Debug, "debug", false, "enable debug messages") - rootFlags.Command.Flags().BoolVar(&rootFlags.APITrace, "api-trace", false, "enable trace of api calls") - rootFlags.Command.Flags().StringVar(&rootFlags.TimeZone, "time-zone", rootFlags.TimeZone, "Override the system time zone") - rootFlags.Command.Flags().BoolVar(&rootFlags.SkipSSL, "skip-verify-ssl", false, "Skip SSL verification") - rootFlags.Command.Flags().BoolVar(&rootFlags.NoUI, "no-ui", false, "Disable the user interface") - rootFlags.Command.Flags().DurationVar(&rootFlags.ClientTimeout, "client-timeout", 1*time.Minute, "Set server calls timeout, default 1m") - rootFlags.Command.Flags().BoolVar(&rootFlags.DebugCounters, "debug-counters", false, "generate a CSV file with actions per handled files") + // rootFlags.Command.Flags().StringVar(&rootFlags.Server, "server", rootFlags.Server, "Immich server address (http://:2283 or https://)") + // rootFlags.Command.Flags().StringVar(&rootFlags.API, "api", rootFlags.API, "Immich api endpoint (http://container_ip:3301)") + // rootFlags.Command.Flags().StringVar(&rootFlags.Key, "key", rootFlags.Key, "API Key") + // rootFlags.Command.Flags().StringVar(&rootFlags.DeviceUUID, "device-uuid", rootFlags.DeviceUUID, "Set a device UUID") + // rootFlags.Command.Flags().BoolVar(&rootFlags.Debug, "debug", false, "enable debug messages") + // rootFlags.Command.Flags().BoolVar(&rootFlags.APITrace, "api-trace", false, "enable trace of api calls") + // rootFlags.Command.Flags().StringVar(&rootFlags.TimeZone, "time-zone", rootFlags.TimeZone, "Override the system time zone") + // rootFlags.Command.Flags().BoolVar(&rootFlags.SkipSSL, "skip-verify-ssl", false, "Skip SSL verification") + // rootFlags.Command.Flags().BoolVar(&rootFlags.NoUI, "no-ui", false, "Disable the user interface") + // rootFlags.Command.Flags().DurationVar(&rootFlags.ClientTimeout, "client-timeout", 1*time.Minute, "Set server calls timeout, default 1m") + // rootFlags.Command.Flags().BoolVar(&rootFlags.DebugCounters, "debug-counters", false, "generate a CSV file with actions per handled files") return &rootFlags } diff --git a/main.go b/main.go index 45c301d3..84fd3be9 100644 --- a/main.go +++ b/main.go @@ -8,12 +8,8 @@ import ( "os/signal" "runtime/debug" - "github.com/simulot/immich-go/cmd/duplicate" - "github.com/simulot/immich-go/cmd/metadata" - "github.com/simulot/immich-go/cmd/stack" - "github.com/simulot/immich-go/cmd/tool" - "github.com/simulot/immich-go/cmd/upload" - "github.com/spf13/cobra" + "github.com/simulot/immich-go/cmd" + "github.com/simulot/immich-go/cmd/cmdVersion" ) var ( @@ -46,10 +42,6 @@ func getCommitInfo() string { return commit } -func printVersion() { - fmt.Printf("immich-go %s, commit %s, built at %s\n", version, getCommitInfo(), date) -} - func main() { var err error @@ -82,20 +74,12 @@ func main() { } func Run(ctx context.Context) error { - printVersion() - - rootCmd := &cobra.Command{ - Use: "immich-go", - Short: "Immich-go is a command line application to interact with the Immich application using its API", - Long: `An alternative to the immich-CLI command that doesn't depend on nodejs installation. It tries its best for importing google photos takeout archives.`, - // Run: func(cmd *cobra.Command, args []string) { - // // Do Stuff Here - // }, - } + rootCmd := cmd.CreateRootCommand() + cmdVersion.AddCommand(rootCmd, version, getCommitInfo(), date) - rootCmd.PersistentFlags().Add + err := rootCmd.Command.Execute() - fmt.Println(app.Banner.String()) + // fmt.Println(app.Banner.String()) /* app := cmd.ImmichServerFlags{ @@ -109,46 +93,50 @@ func Run(ctx context.Context) error { return nil }) */ - app.InitSharedFlags() - app.SetFlags(fs) + /* + app.InitSharedFlags() + app.SetFlags(fs) - err := fs.Parse(os.Args[1:]) - if err != nil { - app.Log.Error(err.Error()) - return err - } + err := fs.Parse(os.Args[1:]) + if err != nil { + app.Log.Error(err.Error()) + return err + } - if len(fs.Args()) == 0 { - err = errors.New("missing command upload|duplicate|stack|tool") - } + if len(fs.Args()) == 0 { + err = errors.New("missing command upload|duplicate|stack|tool") + } - if err != nil { - app.Log.Error(err.Error()) - return err - } + if err != nil { + app.Log.Error(err.Error()) + return err + } - cmd := fs.Args()[0] - switch cmd { - case "upload": - err = upload.UploadCommand(ctx, &app, fs.Args()[1:]) - case "duplicate": - err = duplicate.DuplicateCommand(ctx, &app, fs.Args()[1:]) - case "metadata": - err = metadata.MetadataCommand(ctx, &app, fs.Args()[1:]) - case "stack": - err = stack.NewStackCommand(ctx, &app, fs.Args()[1:]) - case "tool": - err = tool.CommandTool(ctx, &app, fs.Args()[1:]) - default: - err = fmt.Errorf("unknown command: %q", cmd) - } + cmd := fs.Args()[0] + switch cmd { + case "upload": + err = upload.UploadCommand(ctx, &app, fs.Args()[1:]) + case "duplicate": + err = duplicate.DuplicateCommand(ctx, &app, fs.Args()[1:]) + case "metadata": + err = metadata.MetadataCommand(ctx, &app, fs.Args()[1:]) + case "stack": + err = stack.NewStackCommand(ctx, &app, fs.Args()[1:]) + case "tool": + err = tool.CommandTool(ctx, &app, fs.Args()[1:]) + default: + err = fmt.Errorf("unknown command: %q", cmd) + } + */ + + // if err != nil { + // app.Log.Error(err.Error()) + // } + // fmt.Println("Check the log file: ", app.LogFile) + // if app.APITraceWriter != nil { + // fmt.Println("Check the trace file: ", app.APITraceWriterName) + // } + // return err - if err != nil { - app.Log.Error(err.Error()) - } - fmt.Println("Check the log file: ", app.LogFile) - if app.APITraceWriter != nil { - fmt.Println("Check the trace file: ", app.APITraceWriterName) - } return err } From c788b11f288f1e68cc1c11e7b29bbc780616d60a Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 25 Aug 2024 18:48:57 +0200 Subject: [PATCH 005/252] refactoring-cli: stack command --- cmd/immichSeverFlags.go | 120 ++++++++++++++++++++ cmd/rootCmd.go | 239 ++++++++++++++++++++++++++++++++++++++++ cmd/stack/stack.go | 57 +++++----- immich/daterange.go | 11 +- main.go | 9 +- ui/banner.go | 4 + 6 files changed, 408 insertions(+), 32 deletions(-) create mode 100644 cmd/immichSeverFlags.go create mode 100644 cmd/rootCmd.go diff --git a/cmd/immichSeverFlags.go b/cmd/immichSeverFlags.go new file mode 100644 index 00000000..d0a0fded --- /dev/null +++ b/cmd/immichSeverFlags.go @@ -0,0 +1,120 @@ +package cmd + +import ( + "errors" + "fmt" + "io" + "os" + "path/filepath" + "strings" + "time" + + "github.com/simulot/immich-go/helpers/configuration" + "github.com/simulot/immich-go/helpers/fileevent" + "github.com/simulot/immich-go/immich" + "github.com/spf13/cobra" +) + +// ImmichServerFlags provides all flags to establish a connection with an immich server +type ImmichServerFlags struct { + Server string // Immich server address (http://:2283/api or https:///api) + API string // Immich api endpoint (http://container_ip:3301) + Key string // API Key + APITrace bool // Enable API call traces + SkipSSL bool // Skip SSL Verification + ClientTimeout time.Duration // Set the client request timeout + DeviceUUID string // Set a device UUID + + Jnl *fileevent.Recorder // Program's logger + APITraceWriter io.WriteCloser // API tracer + APITraceWriterName string // API trace log name + Immich immich.ImmichInterface // Immich client + DebugCounters bool // Enable CSV action counters per file + + // TimeZone string // Override default TZ + // NoUI bool // Disable user interface + // DebugFileList bool // When true, the file argument is a file wile the list of Takeout files +} + +// NewImmichServerFlagSet add server flags to the command cmd +func NewImmichServerFlagSet(cmd *cobra.Command, serverFlags *ImmichServerFlags) { + // Server flags are available for sub commands + serverFlags.DeviceUUID, _ = os.Hostname() + cmd.PersistentFlags().StringVar(&serverFlags.Server, "server", serverFlags.Server, "Immich server address (example http://:2283 or https://)") + cmd.PersistentFlags().StringVar(&serverFlags.API, "api", serverFlags.API, "Immich api endpoint (example http://container_ip:3301)") + cmd.PersistentFlags().StringVar(&serverFlags.Key, "key", serverFlags.Key, "API Key") + cmd.PersistentFlags().BoolVar(&serverFlags.APITrace, "api-trace", false, "enable trace of api calls") + cmd.PersistentFlags().BoolVar(&serverFlags.SkipSSL, "skip-verify-ssl", false, "Skip SSL verification") + cmd.PersistentFlags().DurationVar(&serverFlags.ClientTimeout, "client-timeout", 5*time.Minute, "Set server calls timeout") + cmd.PersistentFlags().StringVar(&serverFlags.DeviceUUID, "device-uuid", serverFlags.DeviceUUID, "Set a device UUID") + + // cmd.PersistentFlags().BoolVar(&serverFlags.DebugCounters, "debug-counters", false, "generate a CSV file with actions per handled files") + // fs.StringVar(&serverFlags.TimeZone, "time-zone", serverFlags.TimeZone, "Override the system time zone") + // fs.BoolVar(&serverFlags.Debug, "debug", false, "enable debug messages") + // fs.BoolVar(&serverFlags.NoUI, "no-ui", false, "Disable the user interface") +} + +// Initialize the ImmichServerFlags flagset +// Validate the flags and initialize the server as required +// - fields fs.Server and fs.API are mutually exclusive +// - either fields fs.Server or fs.API must be given +// - fs.Key is mandatory +func (app *ImmichServerFlags) Initialize(rootFlags *RootImmichFlags) error { + var err error + + if app.Server != "" && app.API != "" { + err = errors.Join(err, errors.New(`flags 'server' and 'api' are mutually exclusive`)) + } + if app.Server == "" && app.API == "" { + err = errors.Join(err, errors.New(`either 'server' or 'api' flag must be provided`)) + } + if app.Key == "" { + err = errors.Join(err, errors.New(`flag 'key' is mandatory`)) + } + + rootFlags.Log.Info(`Connection to the server ` + app.Server) + + app.Immich, err = immich.NewImmichClient(app.Server, app.Key, immich.OptionVerifySSL(app.SkipSSL), immich.OptionConnectionTimeout(app.ClientTimeout)) + if err != nil { + return err + } + if app.API != "" { + app.Immich.SetEndPoint(app.API) + } + if app.DeviceUUID != "" { + app.Immich.SetDeviceUUID(app.DeviceUUID) + } + + if app.APITrace { + if app.APITraceWriter == nil { + err := configuration.MakeDirForFile(rootFlags.LogFile) + if err != nil { + return err + } + app.APITraceWriterName = strings.TrimSuffix(rootFlags.LogFile, filepath.Ext(rootFlags.LogFile)) + ".trace.log" + app.APITraceWriter, err = os.OpenFile(app.APITraceWriterName, os.O_CREATE|os.O_WRONLY, 0o664) + if err != nil { + return err + } + app.Immich.EnableAppTrace(app.APITraceWriter) + } + } + + ctx := rootFlags.Command.Context() + err = app.Immich.PingServer(ctx) + if err != nil { + return err + } + rootFlags.Log.Info(`Server status: OK`) + + user, err := app.Immich.ValidateConnection(ctx) + if err != nil { + return err + } + rootFlags.Log.Info(fmt.Sprintf( + `Connected, user: %s`, + user.Email, + )) + + return err +} diff --git a/cmd/rootCmd.go b/cmd/rootCmd.go new file mode 100644 index 00000000..ed521abd --- /dev/null +++ b/cmd/rootCmd.go @@ -0,0 +1,239 @@ +package cmd + +import ( + "fmt" + "io" + "log/slog" + "os" + "strings" + + "github.com/simulot/immich-go/helpers/configuration" + "github.com/simulot/immich-go/ui" + "github.com/spf13/cobra" + "github.com/telemachus/humane" +) + +func CreateRootCommand(b ui.Banner) *RootImmichFlags { + rootFlags := RootImmichFlags{ + Command: &cobra.Command{ + Use: "immich-go", + Short: "Immich-go is a command line application to interact with the Immich application using its API", + Long: `An alternative to the immich-CLI command that doesn't depend on nodejs installation. It tries its best for importing google photos takeout archives.`, + }, + Banner: b, + } + + rootFlags.Command.PersistentFlags().StringVar(&rootFlags.ConfigurationFile, "use-configuration", rootFlags.ConfigurationFile, "Specifies the configuration to use") + rootFlags.Command.PersistentFlags().StringVar(&rootFlags.LogLevel, "log-level", "INFO", "Log level (DEBUG|INFO|WARN|ERROR), default INFO") + rootFlags.Command.PersistentFlags().StringVar(&rootFlags.LogFile, "log-file", configuration.DefaultLogFile(), "Write log messages into the file") + rootFlags.Command.PersistentFlags().BoolVar(&rootFlags.JSONLog, "log-json", false, "Output line-delimited JSON file, default FALSE") + return &rootFlags +} + +// RootImmichFlags is the root command flags +type RootImmichFlags struct { + Command *cobra.Command // Cobra root command + ConfigurationFile string // Path to the configuration file to use + JSONLog bool // Enable JSON structured log + Banner ui.Banner // Immich-go banner + Log *slog.Logger // Logger + LogFile string // Log file name + LogWriterCloser io.WriteCloser // the log writer + LogLevel string // Indicate the log level (string) + Level slog.Level // Set the log level +} + +func (app *RootImmichFlags) Initialize() error { + fmt.Println(app.Banner.String()) + var w io.WriteCloser + if app.LogFile != "" { + if app.LogWriterCloser == nil { + err := configuration.MakeDirForFile(app.LogFile) + if err != nil { + return err + } + w, err = os.OpenFile(app.LogFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o664) + if err != nil { + return err + } + err = app.Level.UnmarshalText([]byte(strings.ToUpper(app.LogLevel))) + if err != nil { + return err + } + } + } else { + w = os.Stdout + } + app.SetLogWriter(w) + app.LogWriterCloser = w + app.Log.Info(app.Banner.Version()) + + return nil +} + +func (app *RootImmichFlags) SetLogWriter(w io.Writer) { + var handler slog.Handler + if app.JSONLog { + handler = slog.NewJSONHandler(w, &slog.HandlerOptions{}) + } else { + handler = humane.NewHandler(w, &humane.Options{Level: app.Level}) + } + app.Log = slog.New(handler) +} + +/* + +func (app *RootImmichFlags) InitSharedFlags() { + app.ConfigurationFile = configuration.DefaultConfigFile() + app.LogFile = configuration.DefaultLogFile() + app.APITrace = false + app.Debug = false + app.SkipSSL = false + app.LogLevel = "INFO" + app.NoUI = false + app.JSONLog = false + app.ClientTimeout = 5 * time.Minute +} + +// // SetFlag add common flags to a flagset +// func (app *ImmichServerFlags) SetFlags(fs *flag.FlagSet) { +// fs.StringVar(&app.ConfigurationFile, "use-configuration", app.ConfigurationFile, "Specifies the configuration to use") +// fs.StringVar(&app.Server, "server", app.Server, "Immich server address (http://:2283 or https://)") +// fs.StringVar(&app.API, "api", app.API, "Immich api endpoint (http://container_ip:3301)") +// fs.StringVar(&app.Key, "key", app.Key, "API Key") +// fs.StringVar(&app.DeviceUUID, "device-uuid", app.DeviceUUID, "Set a device UUID") +// fs.StringVar(&app.LogLevel, "log-level", app.LogLevel, "Log level (DEBUG|INFO|WARN|ERROR), default INFO") +// fs.StringVar(&app.LogFile, "log-file", app.LogFile, "Write log messages into the file") +// fs.BoolFunc("log-json", "Output line-delimited JSON file, default FALSE", myflag.BoolFlagFn(&app.JSONLog, app.JSONLog)) +// fs.BoolFunc("api-trace", "enable trace of api calls", myflag.BoolFlagFn(&app.APITrace, app.APITrace)) +// fs.BoolFunc("debug", "enable debug messages", myflag.BoolFlagFn(&app.Debug, app.Debug)) +// fs.StringVar(&app.TimeZone, "time-zone", app.TimeZone, "Override the system time zone") +// fs.BoolFunc("skip-verify-ssl", "Skip SSL verification", myflag.BoolFlagFn(&app.SkipSSL, app.SkipSSL)) +// fs.BoolFunc("no-ui", "Disable the user interface", myflag.BoolFlagFn(&app.NoUI, app.NoUI)) +// fs.Func("client-timeout", "Set server calls timeout, default 1m", myflag.DurationFlagFn(&app.ClientTimeout, app.ClientTimeout)) +// fs.BoolFunc("debug-counters", "generate a CSV file with actions per handled files", myflag.BoolFlagFn(&app.DebugCounters, false)) +// } + +func (app *RootImmichFlags) Start(ctx context.Context) error { + var joinedErr error + if app.Server != "" { + app.Server = strings.TrimSuffix(app.Server, "/") + } + if app.TimeZone != "" { + _, err := tzone.SetLocal(app.TimeZone) + joinedErr = errors.Join(joinedErr, err) + } + + if app.Jnl == nil { + app.Jnl = fileevent.NewRecorder(nil, app.DebugCounters) + } + + if app.DebugFileList { + app.Immich = &fakeimmich.MockedCLient{} + _ = os.Remove(app.LogFile) + } + + if app.LogFile != "" { + if app.LogWriterCloser == nil { + err := configuration.MakeDirForFile(app.LogFile) + if err != nil { + return err + } + f, err := os.OpenFile(app.LogFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o664) + if err != nil { + return err + } + err = app.Level.UnmarshalText([]byte(strings.ToUpper(app.LogLevel))) + if err != nil { + return err + } + app.SetLogWriter(f) + app.LogWriterCloser = f + } + } + + // If the client isn't yet initialized + if app.Immich == nil { + if app.Server == "" && app.API == "" && app.Key == "" { + conf, err := configuration.ConfigRead(app.ConfigurationFile) + confExist := err == nil + if confExist && app.Server == "" && app.Key == "" && app.API == "" { + app.Server = conf.ServerURL + app.Key = conf.APIKey + app.API = conf.APIURL + } + } + + switch { + case app.Server == "" && app.API == "": + joinedErr = errors.Join(joinedErr, errors.New("missing -server, Immich server address (http://:2283 or https://)")) + case app.Server != "" && app.API != "": + joinedErr = errors.Join(joinedErr, errors.New("give either the -server or the -api option")) + } + if app.Key == "" { + joinedErr = errors.Join(joinedErr, errors.New("missing -key")) + } + + if joinedErr != nil { + return joinedErr + } + + // Connection details are saved into the configuration file + conf := configuration.Configuration{ + ServerURL: app.Server, + APIKey: app.Key, + APIURL: app.API, + } + err := configuration.MakeDirForFile(app.ConfigurationFile) + if err != nil { + return err + } + err = conf.Write(app.ConfigurationFile) + if err != nil { + return fmt.Errorf("can't write into the configuration file: %w", err) + } + app.Log.Info("Connection to the server " + app.Server) + + app.Immich, err = immich.NewImmichClient(app.Server, app.Key, immich.OptionVerifySSL(app.SkipSSL), immich.OptionConnectionTimeout(app.ClientTimeout)) + if err != nil { + return err + } + if app.API != "" { + app.Immich.SetEndPoint(app.API) + } + if app.DeviceUUID != "" { + app.Immich.SetDeviceUUID(app.DeviceUUID) + } + + if app.APITrace { + if app.APITraceWriter == nil { + err := configuration.MakeDirForFile(app.LogFile) + if err != nil { + return err + } + app.APITraceWriterName = strings.TrimSuffix(app.LogFile, filepath.Ext(app.LogFile)) + ".trace.log" + app.APITraceWriter, err = os.OpenFile(app.APITraceWriterName, os.O_CREATE|os.O_WRONLY, 0o664) + if err != nil { + return err + } + app.Immich.EnableAppTrace(app.APITraceWriter) + } + } + + err = app.Immich.PingServer(ctx) + if err != nil { + return err + } + app.Log.Info("Server status: OK") + + user, err := app.Immich.ValidateConnection(ctx) + if err != nil { + return err + } + app.Log.Info(fmt.Sprintf("Connected, user: %s", user.Email)) + } + + return nil +} + +*/ diff --git a/cmd/stack/stack.go b/cmd/stack/stack.go index 269396b9..dfeb5d72 100644 --- a/cmd/stack/stack.go +++ b/cmd/stack/stack.go @@ -1,53 +1,52 @@ package stack import ( - "context" - "flag" "fmt" "sort" - "strconv" + "time" "github.com/simulot/immich-go/cmd" "github.com/simulot/immich-go/helpers/stacking" "github.com/simulot/immich-go/immich" "github.com/simulot/immich-go/ui" + "github.com/spf13/cobra" ) type StackCmd struct { + Command *cobra.Command *cmd.RootImmichFlags + cmd.ImmichServerFlags AssumeYes bool DateRange immich.DateRange // Set capture date range } -func initStack(ctx context.Context, common *cmd.RootImmichFlags, args []string) (*StackCmd, error) { - cmd := flag.NewFlagSet("stack", flag.ExitOnError) - validRange := immich.DateRange{} - - _ = validRange.Set("1850-01-04,2030-01-01") - app := StackCmd{ - RootImmichFlags: common, - DateRange: validRange, - } - app.RootImmichFlags.SetFlags(cmd) - cmd.BoolFunc("yes", "When true, assume Yes to all actions", func(s string) error { - var err error - app.AssumeYes, err = strconv.ParseBool(s) - return err - }) - cmd.Var(&app.DateRange, "date", "Process only documents having a capture date in that range.") - err := cmd.Parse(args) - if err != nil { - return nil, err - } - err = app.RootImmichFlags.Start(ctx) - if err != nil { - return nil, err +func AddCommand(root *cmd.RootImmichFlags) { + stackCmd := StackCmd{ + RootImmichFlags: root, + Command: &cobra.Command{ + Use: "stack", + Short: "Stack photos", + Long: `Stack photos taken in the short periode of time.`, + }, } - return &app, err + now := time.Now().Add(24 * time.Hour) + + _ = stackCmd.DateRange.Set(time.Date(now.Year()-10, 1, 1, 0, 0, 0, 0, time.Local).Format("2006-01-02") + "," + now.Format("2006-01-02")) + stackCmd.Command.RunE = stackCmd.run + stackCmd.Command.Flags().Var(&stackCmd.DateRange, "date-range", "photos must be in the date range") + stackCmd.Command.Flags().Bool("force-yes", false, "Assume YES to all questions") + + cmd.NewImmichServerFlagSet(stackCmd.Command, &stackCmd.ImmichServerFlags) + root.Command.AddCommand(stackCmd.Command) } -func NewStackCommand(ctx context.Context, common *cmd.RootImmichFlags, args []string) error { - app, err := initStack(ctx, common, args) +func (app *StackCmd) run(cmd *cobra.Command, args []string) error { + ctx := cmd.Context() + err := app.RootImmichFlags.Initialize() + if err != nil { + return err + } + err = app.ImmichServerFlags.Initialize(app.RootImmichFlags) if err != nil { return err } diff --git a/immich/daterange.go b/immich/daterange.go index 004f67d7..926fa457 100644 --- a/immich/daterange.go +++ b/immich/daterange.go @@ -6,8 +6,13 @@ import ( ) // DateRange represent the date range for capture date +// either: +// A day: 2022-01-01 +// A month: 2022-01 +// A year: 2022 +// A range: 2022-01-01,2022-12-31 type DateRange struct { - After, Before time.Time + After, Before time.Time // todo: make After and Before private day, month, year, set bool } @@ -73,3 +78,7 @@ func (dr DateRange) InRange(d time.Time) bool { // --------------After----------d------------Before return (d.Compare(dr.After) >= 0 && dr.Before.Compare(d) > 0) } + +func (dr *DateRange) Type() string { + return "date-range" +} diff --git a/main.go b/main.go index 84fd3be9..8f9dfb53 100644 --- a/main.go +++ b/main.go @@ -10,6 +10,8 @@ import ( "github.com/simulot/immich-go/cmd" "github.com/simulot/immich-go/cmd/cmdVersion" + "github.com/simulot/immich-go/cmd/stack" + "github.com/simulot/immich-go/ui" ) var ( @@ -74,10 +76,13 @@ func main() { } func Run(ctx context.Context) error { - rootCmd := cmd.CreateRootCommand() + banner := ui.NewBanner(version, commit, date) + rootCmd := cmd.CreateRootCommand(banner) cmdVersion.AddCommand(rootCmd, version, getCommitInfo(), date) - err := rootCmd.Command.Execute() + stack.AddCommand(rootCmd) + + err := rootCmd.Command.ExecuteContext(ctx) // fmt.Println(app.Banner.String()) diff --git a/ui/banner.go b/ui/banner.go index 70088ee2..4ea26003 100644 --- a/ui/banner.go +++ b/ui/banner.go @@ -48,3 +48,7 @@ func (b Banner) String() string { } return sb.String() } + +func (b Banner) Version() string { + return fmt.Sprintf("immich-go version:%s, commit:%s, date:%s", b.version, b.commit, b.date) +} From 9c4667fd7b576777768a302f4a9b9b569b4493ba Mon Sep 17 00:00:00 2001 From: Jonathan Beaulieu <123.jonathan@gmail.com> Date: Fri, 30 Aug 2024 23:05:21 -0700 Subject: [PATCH 006/252] Fix: support large file sizes on 32 bit archs (#467) Fixes the following error message: ``` cannot unmarshal number into Go struct field ExifInfo.Assets.items.exifInfo.fileSizeInByte of type int ``` This is caused by a video in immich that is larger than can fit into an int32. --- cmd/upload/assets.go | 2 +- cmd/upload/upload.go | 4 ++-- immich/immich.go | 2 +- ui/size.go | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cmd/upload/assets.go b/cmd/upload/assets.go index 184eea2c..4f532143 100644 --- a/cmd/upload/assets.go +++ b/cmd/upload/assets.go @@ -46,7 +46,7 @@ func (ai *AssetIndex) AddLocalAsset(la *browser.LocalAssetFile, immichID string) DeviceAssetID: la.DeviceAssetID(), OriginalFileName: strings.TrimSuffix(path.Base(la.Title), path.Ext(la.Title)), ExifInfo: immich.ExifInfo{ - FileSizeInByte: int(la.Size()), + FileSizeInByte: int64(la.Size()), DateTimeOriginal: immich.ImmichTime{Time: la.Metadata.DateTaken}, Latitude: la.Metadata.Latitude, Longitude: la.Metadata.Longitude, diff --git a/cmd/upload/upload.go b/cmd/upload/upload.go index f1a5bf53..51f7ff88 100644 --- a/cmd/upload/upload.go +++ b/cmd/upload/upload.go @@ -833,7 +833,7 @@ type Advice struct { LocalAsset *browser.LocalAssetFile } -func formatBytes(s int) string { +func formatBytes(s int64) string { suffixes := []string{"B", "KB", "MB", "GB"} bytes := float64(s) base := 1024.0 @@ -912,7 +912,7 @@ func (ai *AssetIndex) ShouldUpload(la *browser.LocalAssetFile) (*Advice, error) if len(l) > 0 { dateTaken := la.Metadata.DateTaken - size := int(la.Size()) + size := int64(la.Size()) for _, sa = range l { compareDate := compareDate(dateTaken, sa.ExifInfo.DateTimeOriginal.Time) diff --git a/immich/immich.go b/immich/immich.go index 8f457ec4..0b0a3b33 100644 --- a/immich/immich.go +++ b/immich/immich.go @@ -152,7 +152,7 @@ type ExifInfo struct { Model string `json:"model"` ExifImageWidth int `json:"exifImageWidth"` ExifImageHeight int `json:"exifImageHeight"` - FileSizeInByte int `json:"fileSizeInByte"` + FileSizeInByte int64 `json:"fileSizeInByte"` Orientation string `json:"orientation"` DateTimeOriginal ImmichTime `json:"dateTimeOriginal,omitempty"` // ModifyDate time.Time `json:"modifyDate"` diff --git a/ui/size.go b/ui/size.go index ba3bcca6..6da33ae0 100644 --- a/ui/size.go +++ b/ui/size.go @@ -5,7 +5,7 @@ import ( "math" ) -func FormatBytes(s int) string { +func FormatBytes(s int64) string { suffixes := []string{"B", "KB", "MB", "GB"} bytes := float64(s) base := 1024.0 From f8b726b72a73c7b1f3913ee6e4e45a6a1f72dbd0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 31 Aug 2024 03:42:23 -0300 Subject: [PATCH 007/252] chore(deps): bump github.com/telemachus/humane from 0.6.0 to 0.6.1 (#464) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f7424d00..fbb930a0 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( github.com/psanford/memfs v0.0.0-20230130182539-4dbf7e3e865e github.com/rivo/tview v0.0.0-20240616192244-23476fa0bab2 github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd - github.com/telemachus/humane v0.6.0 + github.com/telemachus/humane v0.6.1 github.com/thlib/go-timezone-local v0.0.3 github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31 golang.org/x/sync v0.8.0 diff --git a/go.sum b/go.sum index 501ed337..76eee9d0 100644 --- a/go.sum +++ b/go.sum @@ -63,8 +63,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/telemachus/humane v0.6.0 h1:JNT5SWeg8pOHTRo3STy24E247LpQYBy2vxD2HwYwyvU= -github.com/telemachus/humane v0.6.0/go.mod h1:T2XzA97m+JPk/WDe9VHamk/JOArXlOy4jlIGDKte3ic= +github.com/telemachus/humane v0.6.1 h1:mYBnsuLNKPcz02YA5MsFb7XdVViPKpQQQCBFQGSUh2U= +github.com/telemachus/humane v0.6.1/go.mod h1:T2XzA97m+JPk/WDe9VHamk/JOArXlOy4jlIGDKte3ic= github.com/thlib/go-timezone-local v0.0.3 h1:ie5XtZWG5lQ4+1MtC5KZ/FeWlOKzW2nPoUnXYUbV/1s= github.com/thlib/go-timezone-local v0.0.3/go.mod h1:/Tnicc6m/lsJE0irFMA0LfIwTBo4QP7A8IfyIv4zZKI= github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31 h1:OXcKh35JaYsGMRzpvFkLv/MEyPuL49CThT1pZ8aSml4= From e6cb43e99812e74b2d14ecd0cf5c45cbc483575f Mon Sep 17 00:00:00 2001 From: juliancarrivick Date: Sat, 7 Sep 2024 15:33:08 +0800 Subject: [PATCH 008/252] Add hint to use -google-photos option under upload documentation (#476) If a user is skimming the documentation it can be easy to miss (e.g. #473), add a small hint to make it more obvious. --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index 755640a0..54afd666 100644 --- a/readme.md +++ b/readme.md @@ -96,6 +96,8 @@ Example: Immich-go check the server's SSL certificate. you can disable this beha Use this command for uploading photos and videos from a local directory, a zipped folder or all zip files that the Google Photos takeout procedure has generated. +> ℹ️ If you are uploading from Google Photos don't forget the `-google-photos` option (see below documentation for more details) + ### Switches and options: | **Parameter** | **Description** | **Default value** | From 60fcb0c5ec4ab6ec278c366f776303ede5f1aebe Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 8 Sep 2024 15:40:36 +0200 Subject: [PATCH 009/252] refactoring of the command upload from-folder --- browser/browser.go => adapters/adpaters.go | 5 +- {browser => adapters}/album.go | 2 +- .../date-range/photo1_2023-10-06_wo_exif.jpg | Bin 0 -> 9282 bytes .../date-range/photo1_2024-10-06_w_exif.jpg | Bin 0 -> 136452 bytes .../folder/DATA/date-range/photo1_w_exif.jpg | Bin 0 -> 136452 bytes .../folder/DATA/date-range/photo1_wo_exif.jpg | Bin 0 -> 9282 bytes adapters/folder/e2e_readFolder_test.go | 234 +++++ adapters/folder/flags.go | 109 +++ .../folder/readFolder.go | 226 ++--- adapters/folder/readFolder_test.go | 458 ++++++++++ adapters/googlePhotos/flags.go | 64 ++ .../googlePhotos/googlephotos.nogo | 147 ++-- .../googlePhotos/googlephotos_test.nogo | 10 +- .../googlePhotos/json.nogo | 0 .../googlePhotos/json_test.nogo | 0 .../googlePhotos/testgp_bigread_test.nogo | 8 +- .../googlePhotos/testgp_samples_test.nogo | 2 +- .../googlePhotos/testgp_test.nogo | 23 +- {browser => adapters}/localfile.go | 8 +- adapters/metadata.go | 91 ++ .../readersearch.nogo | 0 .../readersearch_test.nogo | 2 +- browser/files/localassets_test.go | 150 ---- cmd/album/{album.go => album.nogo} | 0 cmd/cmd.go | 23 - .../{duplicate.go => duplicate.nogo} | 0 cmd/immichSeverFlags.go | 101 ++- cmd/metadata/{metadata.go => metadata.nogo} | 0 cmd/rootCmd.go | 19 +- cmd/shared.go | 245 ------ cmd/stack/stack.go | 44 +- cmd/tool/{tool.go => tool.nogo} | 0 cmd/upload/advice.go | 158 ++++ cmd/upload/assets.go | 4 +- cmd/upload/cmdFolder.go | 80 ++ cmd/upload/cmdGooglePhotos.nogo | 42 + cmd/upload/configuration.go | 56 -- ..._takeout_test.go => e2e_takeout_test.nogo} | 0 ...er_test.go => e2e_upload_folder_test.nogo} | 0 cmd/upload/flagsCommon.go | 25 + cmd/upload/noui.go | 40 +- cmd/upload/run.go | 332 +++++++ cmd/upload/ui.go | 68 +- cmd/upload/upload.go | 812 +----------------- .../{upload_test.go => upload_test.nogo} | 0 docs/refactoring.md | 32 + go.mod | 11 +- go.sum | 10 +- helpers/fshelper/extensions.nongo | 111 --- immich/albums.go | 14 + immich/asset.go | 22 +- immich/call.go | 2 +- immich/client.go | 82 +- immich/client_test.go | 8 +- immich/immich.go | 11 +- internal/cliFlags/dateFromNames.go | 58 ++ {immich => internal/cliFlags}/daterange.go | 64 +- .../cliFlags}/daterange_test.go | 4 +- internal/cliFlags/extensionList.go | 80 ++ .../cliFlags}/stringlist_test.go | 26 +- internal/fakeImmich/immich.go | 11 +- internal/fakefs/fakefs.go | 4 +- {helpers => internal}/fileevent/fileevents.go | 41 +- .../fshelper/TESTDATA/A/1.jpg | 0 .../fshelper/TESTDATA/A/1.json | 0 .../fshelper/TESTDATA/A/2.jpg | 0 .../fshelper/TESTDATA/A/2.json | 0 .../fshelper/TESTDATA/A/T/10.jpg | 0 .../fshelper/TESTDATA/A/T/10.json | 0 .../fshelper/TESTDATA/B/4.jpg | 0 .../fshelper/TESTDATA/B/4.json | 0 .../fshelper/TESTDATA/B/T/20.jpg | 0 .../fshelper/TESTDATA/B/T/20.json | 0 {helpers => internal}/fshelper/TESTDATA/C.JPG | 0 {helpers => internal}/fshelper/globwalkfs.go | 0 .../fshelper/globwalkfs_test.go | 0 {helpers => internal}/fshelper/hasmeta.go | 0 {helpers => internal}/fshelper/parseArgs.go | 7 +- {helpers => internal}/fshelper/readjson.go | 0 {helpers => internal}/fshelper/removefs.go | 0 .../fshelper/teereadercloser.go | 0 .../DATA/PXL_20220724_210650210.NIGHT.mp4 | Bin 0 -> 976366 bytes .../metadata/DATA/PXL_20231006_063000139.jpg | Bin 0 -> 136452 bytes {immich => internal}/metadata/direct.go | 28 +- {immich => internal}/metadata/direct_test.go | 2 +- {immich => internal}/metadata/exif.go | 6 +- internal/metadata/exiftool.go | 89 ++ internal/metadata/exiftoolFlags.go | 19 + internal/metadata/exiftool_test.go | 58 ++ {immich => internal}/metadata/metadata.go | 8 +- .../metadata/metadata_test.go | 0 {immich => internal}/metadata/namesdate.go | 12 +- .../metadata/namesdate_test.go | 6 +- {immich => internal}/metadata/quicktime.go | 0 {immich => internal}/metadata/search.go | 0 {immich => internal}/metadata/search_test.go | 0 {immich => internal}/metadata/sidecar.go | 0 internal/metadata/supported.go | 66 ++ {immich => internal}/metadata/timezone.go | 2 +- {helpers => internal}/namematcher/list.go | 12 + .../namematcher/list_test.go | 0 {helpers => internal}/stacking/stack.go | 9 +- {helpers => internal}/stacking/statck_test.go | 89 +- internal/tzone/flags.go | 45 + {helpers => internal}/tzone/timezone.go | 0 internal/zipName/zip.go | 29 + main.go | 2 + 107 files changed, 2802 insertions(+), 1866 deletions(-) rename browser/browser.go => adapters/adpaters.go (61%) rename {browser => adapters}/album.go (94%) create mode 100644 adapters/folder/DATA/date-range/photo1_2023-10-06_wo_exif.jpg create mode 100644 adapters/folder/DATA/date-range/photo1_2024-10-06_w_exif.jpg create mode 100644 adapters/folder/DATA/date-range/photo1_w_exif.jpg create mode 100644 adapters/folder/DATA/date-range/photo1_wo_exif.jpg create mode 100644 adapters/folder/e2e_readFolder_test.go create mode 100644 adapters/folder/flags.go rename browser/files/localassets.go => adapters/folder/readFolder.go (52%) create mode 100644 adapters/folder/readFolder_test.go create mode 100644 adapters/googlePhotos/flags.go rename browser/gp/googlephotos.go => adapters/googlePhotos/googlephotos.nogo (80%) rename browser/gp/googlephotos_test.go => adapters/googlePhotos/googlephotos_test.nogo (94%) rename browser/gp/json.go => adapters/googlePhotos/json.nogo (100%) rename browser/gp/json_test.go => adapters/googlePhotos/json_test.nogo (100%) rename browser/gp/testgp_bigread_test.go => adapters/googlePhotos/testgp_bigread_test.nogo (80%) rename browser/gp/testgp_samples_test.go => adapters/googlePhotos/testgp_samples_test.nogo (99%) rename browser/gp/testgp_test.go => adapters/googlePhotos/testgp_test.nogo (96%) rename {browser => adapters}/localfile.go (94%) create mode 100644 adapters/metadata.go rename browser/readersearch.go => adapters/readersearch.nogo (100%) rename browser/readersearch_test.go => adapters/readersearch_test.nogo (99%) delete mode 100644 browser/files/localassets_test.go rename cmd/album/{album.go => album.nogo} (100%) delete mode 100644 cmd/cmd.go rename cmd/duplicate/{duplicate.go => duplicate.nogo} (100%) rename cmd/metadata/{metadata.go => metadata.nogo} (100%) delete mode 100644 cmd/shared.go rename cmd/tool/{tool.go => tool.nogo} (100%) create mode 100644 cmd/upload/advice.go create mode 100644 cmd/upload/cmdFolder.go create mode 100644 cmd/upload/cmdGooglePhotos.nogo delete mode 100644 cmd/upload/configuration.go rename cmd/upload/{e2e_takeout_test.go => e2e_takeout_test.nogo} (100%) rename cmd/upload/{e2e_upload_folder_test.go => e2e_upload_folder_test.nogo} (100%) create mode 100644 cmd/upload/flagsCommon.go create mode 100644 cmd/upload/run.go rename cmd/upload/{upload_test.go => upload_test.nogo} (100%) create mode 100644 docs/refactoring.md delete mode 100644 helpers/fshelper/extensions.nongo create mode 100644 internal/cliFlags/dateFromNames.go rename {immich => internal/cliFlags}/daterange.go (58%) rename {immich => internal/cliFlags}/daterange_test.go (99%) create mode 100644 internal/cliFlags/extensionList.go rename {cmd/upload => internal/cliFlags}/stringlist_test.go (75%) rename {helpers => internal}/fileevent/fileevents.go (87%) rename {helpers => internal}/fshelper/TESTDATA/A/1.jpg (100%) rename {helpers => internal}/fshelper/TESTDATA/A/1.json (100%) rename {helpers => internal}/fshelper/TESTDATA/A/2.jpg (100%) rename {helpers => internal}/fshelper/TESTDATA/A/2.json (100%) rename {helpers => internal}/fshelper/TESTDATA/A/T/10.jpg (100%) rename {helpers => internal}/fshelper/TESTDATA/A/T/10.json (100%) rename {helpers => internal}/fshelper/TESTDATA/B/4.jpg (100%) rename {helpers => internal}/fshelper/TESTDATA/B/4.json (100%) rename {helpers => internal}/fshelper/TESTDATA/B/T/20.jpg (100%) rename {helpers => internal}/fshelper/TESTDATA/B/T/20.json (100%) rename {helpers => internal}/fshelper/TESTDATA/C.JPG (100%) rename {helpers => internal}/fshelper/globwalkfs.go (100%) rename {helpers => internal}/fshelper/globwalkfs_test.go (100%) rename {helpers => internal}/fshelper/hasmeta.go (100%) rename {helpers => internal}/fshelper/parseArgs.go (87%) rename {helpers => internal}/fshelper/readjson.go (100%) rename {helpers => internal}/fshelper/removefs.go (100%) rename {helpers => internal}/fshelper/teereadercloser.go (100%) create mode 100644 internal/metadata/DATA/PXL_20220724_210650210.NIGHT.mp4 create mode 100644 internal/metadata/DATA/PXL_20231006_063000139.jpg rename {immich => internal}/metadata/direct.go (71%) rename {immich => internal}/metadata/direct_test.go (96%) rename {immich => internal}/metadata/exif.go (89%) create mode 100644 internal/metadata/exiftool.go create mode 100644 internal/metadata/exiftoolFlags.go create mode 100644 internal/metadata/exiftool_test.go rename {immich => internal}/metadata/metadata.go (93%) rename {immich => internal}/metadata/metadata_test.go (100%) rename {immich => internal}/metadata/namesdate.go (81%) rename {immich => internal}/metadata/namesdate_test.go (93%) rename {immich => internal}/metadata/quicktime.go (100%) rename {immich => internal}/metadata/search.go (100%) rename {immich => internal}/metadata/search_test.go (100%) rename {immich => internal}/metadata/sidecar.go (100%) create mode 100644 internal/metadata/supported.go rename {immich => internal}/metadata/timezone.go (76%) rename {helpers => internal}/namematcher/list.go (93%) rename {helpers => internal}/namematcher/list_test.go (100%) rename {helpers => internal}/stacking/stack.go (93%) rename {helpers => internal}/stacking/statck_test.go (77%) create mode 100644 internal/tzone/flags.go rename {helpers => internal}/tzone/timezone.go (100%) create mode 100644 internal/zipName/zip.go diff --git a/browser/browser.go b/adapters/adpaters.go similarity index 61% rename from browser/browser.go rename to adapters/adpaters.go index 299c8ffe..f674f70d 100644 --- a/browser/browser.go +++ b/adapters/adpaters.go @@ -1,10 +1,11 @@ -package browser +package adapters import ( "context" ) -type Browser interface { +// TODO: rename to Importer +type Adapter interface { Prepare(cxt context.Context) error Browse(cxt context.Context) chan *LocalAssetFile } diff --git a/browser/album.go b/adapters/album.go similarity index 94% rename from browser/album.go rename to adapters/album.go index da2bbfde..9761c25d 100644 --- a/browser/album.go +++ b/adapters/album.go @@ -1,4 +1,4 @@ -package browser +package adapters type LocalAlbum struct { Path string // As found in the files diff --git a/adapters/folder/DATA/date-range/photo1_2023-10-06_wo_exif.jpg b/adapters/folder/DATA/date-range/photo1_2023-10-06_wo_exif.jpg new file mode 100644 index 0000000000000000000000000000000000000000..54455551a84f895c26140e825ae476bb48f5f1ef GIT binary patch literal 9282 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 literal 0 HcmV?d00001 diff --git a/adapters/folder/DATA/date-range/photo1_2024-10-06_w_exif.jpg b/adapters/folder/DATA/date-range/photo1_2024-10-06_w_exif.jpg new file mode 100644 index 0000000000000000000000000000000000000000..07ec1e2e41b31f4a009591a1e873d064bd44e9bd GIT binary patch literal 136452 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

$j2<6~65DDy05PuO>)9Pc6k8J;h* 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 literal 0 HcmV?d00001 diff --git a/adapters/folder/DATA/date-range/photo1_w_exif.jpg b/adapters/folder/DATA/date-range/photo1_w_exif.jpg new file mode 100644 index 0000000000000000000000000000000000000000..07ec1e2e41b31f4a009591a1e873d064bd44e9bd GIT binary patch literal 136452 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

$j2<6~65DDy05PuO>)9Pc6k8J;h* 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 literal 0 HcmV?d00001 diff --git a/adapters/folder/DATA/date-range/photo1_wo_exif.jpg b/adapters/folder/DATA/date-range/photo1_wo_exif.jpg new file mode 100644 index 0000000000000000000000000000000000000000..54455551a84f895c26140e825ae476bb48f5f1ef GIT binary patch literal 9282 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 literal 0 HcmV?d00001 diff --git a/adapters/folder/e2e_readFolder_test.go b/adapters/folder/e2e_readFolder_test.go new file mode 100644 index 00000000..8ec82b29 --- /dev/null +++ b/adapters/folder/e2e_readFolder_test.go @@ -0,0 +1,234 @@ +package folder + +import ( + "context" + "io/fs" + "os" + "path" + "reflect" + "testing" + "time" + + "github.com/kr/pretty" + cliflags "github.com/simulot/immich-go/internal/cliFlags" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/metadata" + "github.com/simulot/immich-go/internal/tzone" +) + +func TestE2ELocalAssets(t *testing.T) { + tc := []struct { + name string + fsys []fs.FS + flags ImportFlags + expectedFiles map[string]fileLinks + expectedCounts []int64 + expectedAlbums map[string][]string + }{ + { + name: "easy", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodNone, + FilenameTimeZone: tzone.Timezone{ + TZ: time.Local, + }, + }, + }, + fsys: []fs.FS{ + os.DirFS("DATA/date-range"), + }, + expectedFiles: map[string]fileLinks{ + "photo1_w_exif.jpg": {image: "photo1_w_exif.jpg"}, + "photo1_wo_exif.jpg": {image: "photo1_wo_exif.jpg"}, + "photo1_2024-10-06_w_exif.jpg": {image: "photo1_2024-10-06_w_exif.jpg"}, + "photo1_2023-10-06_wo_exif.jpg": {image: "photo1_2023-10-06_wo_exif.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 4).Value(), + }, + { + name: "date on name", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodName, + FilenameTimeZone: tzone.Timezone{ + TZ: time.Local, + }, + }, + InclusionFlags: cliflags.InclusionFlags{ + DateRange: cliflags.InitDateRange("2023-10-06"), + }, + }, + fsys: []fs.FS{ + os.DirFS("DATA/date-range"), + }, + expectedFiles: map[string]fileLinks{ + "photo1_2023-10-06_wo_exif.jpg": {image: "photo1_2023-10-06_wo_exif.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 4).Set(fileevent.DiscoveredDiscarded, 3).Value(), + }, + { + name: "select exif date not using exiftool", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodEXIF, + FilenameTimeZone: tzone.Timezone{ + TZ: time.Local, + }, + }, + InclusionFlags: cliflags.InclusionFlags{ + DateRange: cliflags.InitDateRange("2023-10-06"), + }, + ExifToolFlags: metadata.ExifToolFlags{ + UseExifTool: true, + Timezone: tzone.Timezone{TZ: time.Local}, + }, + }, + fsys: []fs.FS{ + os.DirFS("DATA/date-range"), + }, + expectedFiles: map[string]fileLinks{ + "photo1_w_exif.jpg": {image: "photo1_w_exif.jpg"}, + "photo1_2024-10-06_w_exif.jpg": {image: "photo1_2024-10-06_w_exif.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 4).Set(fileevent.DiscoveredDiscarded, 2).Value(), + }, + { + name: "select exif date using exiftool", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodEXIF, + FilenameTimeZone: tzone.Timezone{ + TZ: time.Local, + }, + }, + InclusionFlags: cliflags.InclusionFlags{ + DateRange: cliflags.InitDateRange("2023-10-06"), + }, + ExifToolFlags: metadata.ExifToolFlags{ + UseExifTool: true, + Timezone: tzone.Timezone{TZ: time.Local}, + }, + }, + fsys: []fs.FS{ + os.DirFS("DATA/date-range"), + }, + expectedFiles: map[string]fileLinks{ + "photo1_w_exif.jpg": {image: "photo1_w_exif.jpg"}, + "photo1_2024-10-06_w_exif.jpg": {image: "photo1_2024-10-06_w_exif.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 4).Set(fileevent.DiscoveredDiscarded, 2).Value(), + }, + { + name: "select exif date using exiftool then date", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodExifThenName, + FilenameTimeZone: tzone.Timezone{ + TZ: time.Local, + }, + }, + InclusionFlags: cliflags.InclusionFlags{ + DateRange: cliflags.InitDateRange("2023-10-06"), + }, + ExifToolFlags: metadata.ExifToolFlags{ + UseExifTool: true, + Timezone: tzone.Timezone{TZ: time.Local}, + }, + }, + fsys: []fs.FS{ + os.DirFS("DATA/date-range"), + }, + expectedFiles: map[string]fileLinks{ + "photo1_w_exif.jpg": {image: "photo1_w_exif.jpg"}, + "photo1_2023-10-06_wo_exif.jpg": {image: "photo1_2023-10-06_wo_exif.jpg"}, + "photo1_2024-10-06_w_exif.jpg": {image: "photo1_2024-10-06_w_exif.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 4).Set(fileevent.DiscoveredDiscarded, 1).Value(), + }, + { + name: "select on date in the name", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodName, + FilenameTimeZone: tzone.Timezone{ + TZ: time.Local, + }, + }, + InclusionFlags: cliflags.InclusionFlags{ + DateRange: cliflags.InitDateRange("2023-10-06"), + }, + ExifToolFlags: metadata.ExifToolFlags{ + UseExifTool: true, + Timezone: tzone.Timezone{TZ: time.Local}, + }, + }, + fsys: []fs.FS{ + os.DirFS("DATA/date-range"), + }, + expectedFiles: map[string]fileLinks{ + "photo1_2023-10-06_wo_exif.jpg": {image: "photo1_2023-10-06_wo_exif.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 4).Set(fileevent.DiscoveredDiscarded, 3).Value(), + }, + } + + for _, c := range tc { + t.Run(c.name, func(t *testing.T) { + ctx := context.Background() + recorder := fileevent.NewRecorder(nil, false) + b, err := NewLocalFiles(ctx, recorder, &c.flags, c.fsys...) + if err != nil { + t.Error(err) + } + + err = b.Prepare(ctx) + if err != nil { + t.Error(err) + } + + results := map[string]fileLinks{} + albums := map[string][]string{} + for a := range b.Browse(ctx) { + links := fileLinks{} + ext := path.Ext(a.FileName) + if b.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { + links.image = a.FileName + if a.LivePhoto != nil { + links.video = a.LivePhoto.FileName + } + } else { + links.video = a.FileName + } + if a.SideCar.FileName != "" { + links.sidecar = a.SideCar.FileName + } + results[a.FileName] = links + if len(c.expectedAlbums) > 0 { + for _, album := range a.Albums { + albums[album.Title] = append(albums[album.Title], a.FileName) + } + } + a.Close() + } + + if !reflect.DeepEqual(results, c.expectedFiles) { + t.Errorf("file list difference\n") + pretty.Ldiff(t, c.expectedFiles, results) + } + if !reflect.DeepEqual(recorder.GetCounts(), c.expectedCounts) { + t.Errorf("counters difference\n") + pretty.Ldiff(t, c.expectedCounts, recorder.GetCounts()) + } + if c.expectedAlbums != nil { + compareAlbums(t, albums, c.expectedAlbums) + } + }) + } +} diff --git a/adapters/folder/flags.go b/adapters/folder/flags.go new file mode 100644 index 00000000..65cfe785 --- /dev/null +++ b/adapters/folder/flags.go @@ -0,0 +1,109 @@ +package folder + +import ( + "fmt" + "strings" + + cliflags "github.com/simulot/immich-go/internal/cliFlags" + "github.com/simulot/immich-go/internal/metadata" + "github.com/simulot/immich-go/internal/namematcher" + "github.com/spf13/cobra" +) + +// type ImportFlags struct { +// UsePathAsAlbumName AlbumFolderMode // Create albums for assets based on the full path to the asset +// AlbumNamePathSeparator string // Determines how multiple (sub) folders, if any, will be joined +// ImportIntoAlbum string // All assets will be added to this album +// BannedFiles namematcher.List // List of banned file name patterns +// Recursive bool // Explore the folder and all sub-folders +// InclusionFlags cliflags.InclusionFlags // Flags for controlling the extensions of the files to be uploaded +// DateHandlingFlags cliflags.DateHandlingFlags // Options for control how the capture date is handled +// ExifToolFlags metadata.ExifToolFlags // Options for the exif command +// IgnoreSideCarFiles bool // Ignore XMP files +// SupportedMedia metadata.SupportedMedia // Server actual list of supported media, not a flag +// } + +// ImportFlags represents the flags used for importing assets from a file system. +type ImportFlags struct { + // UsePathAsAlbumName determines whether to create albums based on the full path to the asset. + UsePathAsAlbumName AlbumFolderMode + + // AlbumNamePathSeparator specifies how multiple (sub) folders are joined when creating album names. + AlbumNamePathSeparator string + + // ImportIntoAlbum is the name of the album where all assets will be added. + ImportIntoAlbum string + + // BannedFiles is a list of file name patterns to be excluded from the import process. + BannedFiles namematcher.List + + // Recursive indicates whether to explore the folder and all its sub-folders. + Recursive bool + + // InclusionFlags controls the file extensions to be included in the import process. + InclusionFlags cliflags.InclusionFlags + + // DateHandlingFlags provides options for handling the capture date of the assets. + DateHandlingFlags cliflags.DateHandlingFlags + + // ExifToolFlags specifies options for the exif. + ExifToolFlags metadata.ExifToolFlags + + // IgnoreSideCarFiles indicates whether to ignore XMP files during the import process. + IgnoreSideCarFiles bool + + // SupportedMedia is the server's actual list of supported media types. + SupportedMedia metadata.SupportedMedia +} + +func AddUploadFolderFlags(cmd *cobra.Command, flags *ImportFlags) { + flags.BannedFiles, _ = namematcher.New( + `@eaDir/`, + `@__thumb/`, // QNAP + `SYNOFILE_THUMB_*.*`, // SYNOLOGY + `Lightroom Catalog/`, // LR + `thumbnails/`, // Android photo + `.DS_Store/`, // Mac OS custom attributes + ) + flags.UsePathAsAlbumName = FolderModeNone + + cmd.Flags().StringVar(&flags.ImportIntoAlbum, "into-album", "", "Specify an album to import all files into") + cmd.Flags().Var(&flags.UsePathAsAlbumName, "folder-as-album", "Import all files in albums defined by the folder structure. Can be set to 'FOLDER' to use the folder name as the album name, or 'PATH' to use the full path as the album name") + cmd.Flags().StringVar(&flags.AlbumNamePathSeparator, "album-path-joiner", " / ", "Specify a string to use when joining multiple folder names to create an album name (e.g. ' ',' - ')") + cmd.Flags().BoolVar(&flags.Recursive, "recursive", true, "Explore the folder and all its sub-folders") + cmd.Flags().Var(&flags.BannedFiles, "ban-file", "Exclude a file based on a pattern (case-insensitive). Can be specified multiple times.") + cmd.Flags().BoolVar(&flags.IgnoreSideCarFiles, "ignore-sidecar-files", false, "Don't upload sidecar with the photo.") + cliflags.AddInclusionFlags(cmd, &flags.InclusionFlags) + cliflags.AddDateHandlingFlags(cmd, &flags.DateHandlingFlags) + metadata.AddExifToolFlags(cmd, &flags.ExifToolFlags) +} + +// AlbumFolderMode represents the mode in which album folders are organized. +// Implement the interface pflag.Value + +type AlbumFolderMode string + +const ( + FolderModeNone AlbumFolderMode = "NONE" + FolderModeFolder AlbumFolderMode = "FOLDER" + FolderModePath AlbumFolderMode = "PATH" +) + +func (m AlbumFolderMode) String() string { + return string(m) +} + +func (m *AlbumFolderMode) Set(v string) error { + v = strings.TrimSpace(strings.ToUpper(v)) + switch v { + case string(FolderModeFolder), string(FolderModePath): + *m = AlbumFolderMode(v) + default: + return fmt.Errorf("invalid value for folder mode, expected %s, %s or %s", FolderModeFolder, FolderModePath, FolderModeNone) + } + return nil +} + +func (m AlbumFolderMode) Type() string { + return "folderMode" +} diff --git a/browser/files/localassets.go b/adapters/folder/readFolder.go similarity index 52% rename from browser/files/localassets.go rename to adapters/folder/readFolder.go index 24df289e..98b82deb 100644 --- a/browser/files/localassets.go +++ b/adapters/folder/readFolder.go @@ -1,21 +1,19 @@ -package files +package folder import ( "context" + "errors" "io/fs" "path" "path/filepath" "sort" "strings" - "time" - "github.com/simulot/immich-go/browser" - "github.com/simulot/immich-go/helpers/fileevent" - "github.com/simulot/immich-go/helpers/fshelper" + "github.com/simulot/immich-go/adapters" "github.com/simulot/immich-go/helpers/gen" - "github.com/simulot/immich-go/helpers/namematcher" - "github.com/simulot/immich-go/immich" - "github.com/simulot/immich-go/immich/metadata" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/fshelper" + "github.com/simulot/immich-go/internal/metadata" ) type fileLinks struct { @@ -25,39 +23,36 @@ type fileLinks struct { } type LocalAssetBrowser struct { - fsyss []fs.FS - albums map[string]string - catalogs map[fs.FS]map[string][]string - log *fileevent.Recorder - sm immich.SupportedMedia - bannedFiles namematcher.List // list of file pattern to be exclude - whenNoDate string + fsyss []fs.FS + albums map[string]string + catalogs map[fs.FS]map[string][]string + log *fileevent.Recorder + flags *ImportFlags + exiftool *metadata.ExifTool } -func NewLocalFiles(ctx context.Context, l *fileevent.Recorder, fsyss ...fs.FS) (*LocalAssetBrowser, error) { - return &LocalAssetBrowser{ - fsyss: fsyss, - albums: map[string]string{}, - catalogs: map[fs.FS]map[string][]string{}, - log: l, - whenNoDate: "FILE", - sm: immich.DefaultSupportedMedia, - }, nil -} +func NewLocalFiles(ctx context.Context, l *fileevent.Recorder, flags *ImportFlags, fsyss ...fs.FS) (*LocalAssetBrowser, error) { + if flags.ImportIntoAlbum != "" && flags.UsePathAsAlbumName != FolderModeNone { + return nil, errors.New("cannot use both --into-album and --folder-as-album") + } -func (la *LocalAssetBrowser) SetSupportedMedia(sm immich.SupportedMedia) *LocalAssetBrowser { - la.sm = sm - return la -} + la := LocalAssetBrowser{ + fsyss: fsyss, + albums: map[string]string{}, + catalogs: map[fs.FS]map[string][]string{}, + flags: flags, + log: l, + } -func (la *LocalAssetBrowser) SetBannedFiles(banned namematcher.List) *LocalAssetBrowser { - la.bannedFiles = banned - return la -} + if flags.ExifToolFlags.UseExifTool { + et, err := metadata.NewExifTool(&flags.ExifToolFlags) + if err != nil { + return nil, err + } + la.exiftool = et + } -func (la *LocalAssetBrowser) SetWhenNoDate(opt string) *LocalAssetBrowser { - la.whenNoDate = opt - return la + return &la, nil } func (la *LocalAssetBrowser) Prepare(ctx context.Context) error { @@ -67,7 +62,6 @@ func (la *LocalAssetBrowser) Prepare(ctx context.Context) error { return err } } - return nil } @@ -80,6 +74,9 @@ func (la *LocalAssetBrowser) passOneFsWalk(ctx context.Context, fsys fs.FS) erro } if d.IsDir() { + if !la.flags.Recursive && name != "." { + return fs.SkipDir + } la.catalogs[fsys][name] = []string{} return nil } @@ -88,15 +85,20 @@ func (la *LocalAssetBrowser) passOneFsWalk(ctx context.Context, fsys fs.FS) erro // If the context has been cancelled, return immediately return ctx.Err() default: + if la.flags.BannedFiles.Match(name) { + la.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "banned file") + return nil + } + dir, base := filepath.Split(name) dir = strings.TrimSuffix(dir, "/") if dir == "" { dir = "." } ext := filepath.Ext(base) - mediaType := la.sm.TypeFromExt(ext) + mediaType := la.flags.SupportedMedia.TypeFromExt(ext) - if mediaType == immich.TypeUnknown { + if mediaType == metadata.TypeUnknown { la.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unsupported file type") return nil } @@ -104,18 +106,28 @@ func (la *LocalAssetBrowser) passOneFsWalk(ctx context.Context, fsys fs.FS) erro cat := la.catalogs[fsys][dir] switch mediaType { - case immich.TypeImage: + case metadata.TypeImage: la.log.Record(ctx, fileevent.DiscoveredImage, nil, name) - case immich.TypeVideo: + case metadata.TypeVideo: la.log.Record(ctx, fileevent.DiscoveredVideo, nil, name) - case immich.TypeSidecar: + case metadata.TypeSidecar: la.log.Record(ctx, fileevent.DiscoveredSidecar, nil, name) + if la.flags.IgnoreSideCarFiles { + la.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "sidecar file ignored") + return nil + } } - if la.bannedFiles.Match(name) { - la.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "banned file") + if !la.flags.InclusionFlags.IncludedExtensions.Include(ext) { + la.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "extension not included") + return nil + } + + if la.flags.InclusionFlags.ExcludedExtensions.Exclude(ext) { + la.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "extension excluded") return nil } + la.catalogs[fsys][dir] = append(cat, name) } return nil @@ -123,12 +135,15 @@ func (la *LocalAssetBrowser) passOneFsWalk(ctx context.Context, fsys fs.FS) erro return err } -func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *browser.LocalAssetFile { - fileChan := make(chan *browser.LocalAssetFile) +func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *adapters.LocalAssetFile { + fileChan := make(chan *adapters.LocalAssetFile) // Browse all given FS to collect the list of files go func(ctx context.Context) { defer close(fileChan) var err error + if la.exiftool != nil { + defer la.exiftool.Close() + } errFn := func(name string, err error) { if err != nil { @@ -149,7 +164,7 @@ func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *browser.LocalAsse // Scan images first for _, file := range files { ext := path.Ext(file) - if la.sm.TypeFromExt(ext) == immich.TypeImage { + if la.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { linked := links[file] linked.image = file links[file] = linked @@ -159,14 +174,14 @@ func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *browser.LocalAsse next: for _, file := range files { ext := path.Ext(file) - t := la.sm.TypeFromExt(ext) - if t == immich.TypeImage { + t := la.flags.SupportedMedia.TypeFromExt(ext) + if t == metadata.TypeImage { continue next } base := strings.TrimSuffix(file, ext) switch t { - case immich.TypeSidecar: + case metadata.TypeSidecar: if image, ok := links[base]; ok { // file.ext.XMP -> file.ext image.sidecar = file @@ -183,7 +198,7 @@ func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *browser.LocalAsse } } } - case immich.TypeVideo: + case metadata.TypeVideo: if image, ok := links[base]; ok { // file.MP.ext -> file.ext image.sidecar = file @@ -216,24 +231,24 @@ func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *browser.LocalAsse files = gen.MapKeys(links) sort.Strings(files) for _, file := range files { - var a *browser.LocalAssetFile + var a *adapters.LocalAssetFile linked := links[file] if linked.image != "" { - a, err = la.assetFromFile(fsys, linked.image) + a, err = la.assetFromFile(ctx, fsys, linked.image) if err != nil { errFn(linked.image, err) return } if linked.video != "" { - a.LivePhoto, err = la.assetFromFile(fsys, linked.video) + a.LivePhoto, err = la.assetFromFile(ctx, fsys, linked.video) if err != nil { errFn(linked.video, err) return } } } else if linked.video != "" { - a, err = la.assetFromFile(fsys, linked.video) + a, err = la.assetFromFile(ctx, fsys, linked.video) if err != nil { errFn(linked.video, err) return @@ -247,11 +262,14 @@ func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *browser.LocalAsse } la.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, nil, linked.sidecar, "main", a.FileName) } - select { - case <-ctx.Done(): - return - default: - if a != nil { + + // manage album + if a != nil { + select { + case <-ctx.Done(): + return + default: + fileChan <- a } } @@ -263,55 +281,71 @@ func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *browser.LocalAsse return fileChan } -var toOldDate = time.Date(1980, 1, 1, 0, 0, 0, 0, time.UTC) - -func (la *LocalAssetBrowser) assetFromFile(fsys fs.FS, name string) (*browser.LocalAssetFile, error) { - a := &browser.LocalAssetFile{ +func (la *LocalAssetBrowser) assetFromFile(ctx context.Context, fsys fs.FS, name string) (*adapters.LocalAssetFile, error) { + a := &adapters.LocalAssetFile{ FileName: name, Title: filepath.Base(name), FSys: fsys, } - fullPath := name - if fsys, ok := fsys.(fshelper.NameFS); ok { - fullPath = filepath.Join(fsys.Name(), name) + if la.flags.ImportIntoAlbum != "" { + a.Albums = append(a.Albums, adapters.LocalAlbum{ + Path: a.FileName, + Title: la.flags.ImportIntoAlbum, + }) + } else if la.flags.UsePathAsAlbumName != FolderModeNone { + switch la.flags.UsePathAsAlbumName { + case FolderModeFolder: + title := filepath.Base(filepath.Dir(a.FileName)) + if title == "." { + if fsys, ok := fsys.(fshelper.NameFS); ok { + title = fsys.Name() + } + } + if title != "" { + a.Albums = append(a.Albums, adapters.LocalAlbum{ + Path: a.FileName, + Title: title, + }) + } + case FolderModePath: + parts := []string{} + if fsys, ok := fsys.(fshelper.NameFS); ok { + parts = append(parts, fsys.Name()) + } + path := filepath.Dir(a.FileName) + if path != "." { + parts = append(parts, strings.Split(path, "/")...) // TODO: Check on windows + } + Title := strings.Join(parts, la.flags.AlbumNamePathSeparator) + a.Albums = append(a.Albums, adapters.LocalAlbum{ + Path: filepath.Dir(a.FileName), + Title: Title, + }) + } } - a.Metadata.DateTaken = metadata.TakeTimeFromPath(fullPath) + err := a.ReadMetadata(la.flags.DateHandlingFlags.Method, adapters.ReadMetadataOptions{ + ExifTool: la.exiftool, + ExiftoolTimezone: la.flags.ExifToolFlags.Timezone.Location(), + FilenameTimeZone: la.flags.DateHandlingFlags.FilenameTimeZone.Location(), + }) + if err != nil { + a.Close() + return nil, err + } i, err := fs.Stat(fsys, name) if err != nil { + a.Close() return nil, err } a.FileSize = int(i.Size()) - if a.Metadata.DateTaken.IsZero() { - err = la.ReadMetadataFromFile(a) - if err != nil { - return nil, err - } - if a.Metadata.DateTaken.Before(toOldDate) { - switch la.whenNoDate { - case "FILE": - a.Metadata.DateTaken = i.ModTime() - case "NOW": - a.Metadata.DateTaken = time.Now() - } - } - } - return a, nil -} - -func (la *LocalAssetBrowser) ReadMetadataFromFile(a *browser.LocalAssetFile) error { - ext := strings.ToLower(path.Ext(a.FileName)) - // Open the file - r, err := a.PartialSourceReader() - if err != nil { - return err + if la.flags.InclusionFlags.DateRange.IsSet() && !la.flags.InclusionFlags.DateRange.InRange(a.Metadata.DateTaken) { + a.Close() + la.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "asset outside date range") + return nil, nil } - m, err := metadata.GetFromReader(r, ext) - if err == nil { - a.Metadata.DateTaken = m.DateTaken - } - return nil + return a, nil } diff --git a/adapters/folder/readFolder_test.go b/adapters/folder/readFolder_test.go new file mode 100644 index 00000000..90a58091 --- /dev/null +++ b/adapters/folder/readFolder_test.go @@ -0,0 +1,458 @@ +package folder + +import ( + "context" + "errors" + "io/fs" + "path" + "reflect" + "sort" + "testing" + "time" + + "github.com/kr/pretty" + "github.com/psanford/memfs" + cliflags "github.com/simulot/immich-go/internal/cliFlags" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/metadata" + "github.com/simulot/immich-go/internal/namematcher" + "github.com/simulot/immich-go/internal/tzone" +) + +type inMemFS struct { + *memfs.FS + name string + err error +} + +func newInMemFS(name string) *inMemFS { + return &inMemFS{ + name: name, + FS: memfs.New(), + } +} + +func (mfs inMemFS) Name() string { + return mfs.name +} + +func (mfs *inMemFS) addFile(name string) *inMemFS { + if mfs.err != nil { + return mfs + } + dir := path.Dir(name) + mfs.err = errors.Join(mfs.err, mfs.MkdirAll(dir, 0o777)) + mfs.err = errors.Join(mfs.err, mfs.WriteFile(name, []byte(name), 0o777)) + return mfs +} + +func TestLocalAssets(t *testing.T) { + tc := []struct { + name string + fsys []fs.FS + flags ImportFlags + expectedFiles map[string]fileLinks + expectedCounts []int64 + expectedAlbums map[string][]string + }{ + { + name: "easy", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + }, + fsys: []fs.FS{ + newInMemFS("MemFS"). + addFile("root_01.jpg"), + }, + expectedFiles: map[string]fileLinks{ + "root_01.jpg": {image: "root_01.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 1).Value(), + }, + { + name: "recursive", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + Recursive: true, + }, + fsys: []fs.FS{ + newInMemFS("MemFS"). + addFile("root_01.jpg"). + addFile("photos/photo_01.jpg"), + }, + expectedFiles: map[string]fileLinks{ + "root_01.jpg": {image: "root_01.jpg"}, + "photos/photo_01.jpg": {image: "photos/photo_01.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 2).Value(), + }, + { + name: "non-recursive", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + Recursive: false, + }, + fsys: []fs.FS{ + newInMemFS("MemFS"). + addFile("root_01.jpg"). + addFile("photos/photo_01.jpg"), + }, + expectedFiles: map[string]fileLinks{ + "root_01.jpg": {image: "root_01.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 1).Value(), + }, + { + name: "banned files", + flags: ImportFlags{ + BannedFiles: namematcher.MustList(`@eaDir/`, `.@__thumb`, `SYNOFILE_THUMB_*.*`, "BLOG/", "*/Database/*"), + SupportedMedia: metadata.DefaultSupportedMedia, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodNone, + }, + InclusionFlags: cliflags.InclusionFlags{}, + Recursive: true, + }, + fsys: []fs.FS{ + newInMemFS("MemFS"). + addFile("root_01.jpg"). + addFile("photos/photo_01.jpg"). + addFile("photos/photo_02.cr3"). + addFile("photos/photo_03.jpg"). + addFile("photos/summer 2023/20230801-001.jpg"). + addFile("photos/summer 2023/20230801-002.jpg"). + addFile("photos/summer 2023/20230801-003.cr3"). + addFile("@eaDir/thb1.jpg"). + addFile("photos/SYNOFILE_THUMB_0001.jpg"). + addFile("photos/summer 2023/.@__thumb/thb2.jpg"). + addFile("BLOG/blog.jpg"). + addFile("Project/Database/database_01.jpg"). + addFile("photos/database_01.jpg"), + }, + expectedFiles: map[string]fileLinks{ + "root_01.jpg": {image: "root_01.jpg"}, + "photos/photo_01.jpg": {image: "photos/photo_01.jpg"}, + "photos/photo_02.cr3": {image: "photos/photo_02.cr3"}, + "photos/photo_03.jpg": {image: "photos/photo_03.jpg"}, + "photos/summer 2023/20230801-001.jpg": {image: "photos/summer 2023/20230801-001.jpg"}, + "photos/summer 2023/20230801-002.jpg": {image: "photos/summer 2023/20230801-002.jpg"}, + "photos/summer 2023/20230801-003.cr3": {image: "photos/summer 2023/20230801-003.cr3"}, + "photos/database_01.jpg": {image: "photos/database_01.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 8). + Set(fileevent.DiscoveredDiscarded, 5).Value(), + }, + { + name: "excluded extensions", + flags: ImportFlags{ + BannedFiles: namematcher.MustList(`@eaDir/`, `.@__thumb`, `SYNOFILE_THUMB_*.*`), + SupportedMedia: metadata.DefaultSupportedMedia, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodNone, + }, + InclusionFlags: cliflags.InclusionFlags{ + ExcludedExtensions: cliflags.ExtensionList{".cr3"}, + }, + Recursive: true, + }, + fsys: []fs.FS{ + newInMemFS("MemFS"). + addFile("root_01.jpg"). + addFile("photos/photo_01.jpg"). + addFile("photos/photo_02.cr3"). + addFile("photos/photo_03.jpg"). + addFile("photos/summer 2023/20230801-001.jpg"). + addFile("photos/summer 2023/20230801-002.jpg"). + addFile("photos/summer 2023/20230801-003.cr3"). + addFile("@eaDir/thb1.jpg"). + addFile("photos/SYNOFILE_THUMB_0001.jpg"). + addFile("photos/summer 2023/.@__thumb/thb2.jpg"), + }, + expectedFiles: map[string]fileLinks{ + "root_01.jpg": {image: "root_01.jpg"}, + "photos/photo_01.jpg": {image: "photos/photo_01.jpg"}, + "photos/photo_03.jpg": {image: "photos/photo_03.jpg"}, + "photos/summer 2023/20230801-001.jpg": {image: "photos/summer 2023/20230801-001.jpg"}, + "photos/summer 2023/20230801-002.jpg": {image: "photos/summer 2023/20230801-002.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 7). + Set(fileevent.DiscoveredDiscarded, 5).Value(), + }, + { + name: "included extensions", + flags: ImportFlags{ + BannedFiles: namematcher.MustList(`@eaDir/`, `.@__thumb`, `SYNOFILE_THUMB_*.*`), + SupportedMedia: metadata.DefaultSupportedMedia, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodNone, + }, + InclusionFlags: cliflags.InclusionFlags{ + IncludedExtensions: cliflags.ExtensionList{".cr3"}, + }, + Recursive: true, + }, + fsys: []fs.FS{ + newInMemFS("MemFS"). + addFile("root_01.jpg"). + addFile("photos/photo_01.jpg"). + addFile("photos/photo_02.cr3"). + addFile("photos/photo_03.jpg"). + addFile("photos/summer 2023/20230801-001.jpg"). + addFile("photos/summer 2023/20230801-002.jpg"). + addFile("photos/summer 2023/20230801-003.cr3"). + addFile("@eaDir/thb1.jpg"). + addFile("photos/SYNOFILE_THUMB_0001.jpg"). + addFile("photos/summer 2023/.@__thumb/thb2.jpg"), + }, + expectedFiles: map[string]fileLinks{ + "photos/photo_02.cr3": {image: "photos/photo_02.cr3"}, + "photos/summer 2023/20230801-003.cr3": {image: "photos/summer 2023/20230801-003.cr3"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 7). + Set(fileevent.DiscoveredDiscarded, 8).Value(), + }, + { + name: "motion picture", + flags: ImportFlags{ + BannedFiles: namematcher.MustList(`@eaDir/`, `.@__thumb`, `SYNOFILE_THUMB_*.*`), + SupportedMedia: metadata.DefaultSupportedMedia, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodNone, + }, + InclusionFlags: cliflags.InclusionFlags{}, + Recursive: true, + }, + fsys: []fs.FS{ + newInMemFS("MemFS"). + addFile("motion/PXL_20210102_221126856.MP~2"). + addFile("motion/PXL_20210102_221126856.MP~2.jpg"). + addFile("motion/PXL_20210102_221126856.MP.jpg"). + addFile("motion/PXL_20210102_221126856.MP"). + addFile("motion/20231227_152817.jpg"). + addFile("motion/20231227_152817.MP4"), + }, + expectedFiles: map[string]fileLinks{ + "motion/PXL_20210102_221126856.MP.jpg": {image: "motion/PXL_20210102_221126856.MP.jpg", video: "motion/PXL_20210102_221126856.MP"}, + "motion/PXL_20210102_221126856.MP~2.jpg": {image: "motion/PXL_20210102_221126856.MP~2.jpg", video: "motion/PXL_20210102_221126856.MP~2"}, + "motion/20231227_152817.jpg": {image: "motion/20231227_152817.jpg", video: "motion/20231227_152817.MP4"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 3). + Set(fileevent.DiscoveredVideo, 3).Value(), + }, + + { + name: "sidecar", + flags: ImportFlags{ + BannedFiles: namematcher.MustList(`@eaDir/`, `.@__thumb`, `SYNOFILE_THUMB_*.*`), + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodNone, + }, + SupportedMedia: metadata.DefaultSupportedMedia, + InclusionFlags: cliflags.InclusionFlags{}, + Recursive: true, + }, + fsys: []fs.FS{ + newInMemFS("MemFS"). + addFile("root_01.jpg"). + addFile("root_01.XMP"). + addFile("root_02.jpg"). + addFile("root_02.jpg.XMP"). + addFile("video_01.mp4"). + addFile("video_01.mp4.XMP"). + addFile("root_03.MP.jpg"). + addFile("root_03.MP.jpg.XMP"). + addFile("root_03.MP"), + }, + expectedFiles: map[string]fileLinks{ + "root_01.jpg": {image: "root_01.jpg", sidecar: "root_01.XMP"}, + "root_02.jpg": {image: "root_02.jpg", sidecar: "root_02.jpg.XMP"}, + "root_03.MP.jpg": {image: "root_03.MP.jpg", sidecar: "root_03.MP.jpg.XMP", video: "root_03.MP"}, + "video_01.mp4": {video: "video_01.mp4", sidecar: "video_01.mp4.XMP"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 3). + Set(fileevent.DiscoveredVideo, 2). + Set(fileevent.DiscoveredSidecar, 4).Set(fileevent.AnalysisAssociatedMetadata, 4). + Value(), + }, + { + name: "date in range", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodName, + FilenameTimeZone: tzone.Timezone{ + TZ: time.Local, + }, + }, + InclusionFlags: cliflags.InclusionFlags{ + DateRange: cliflags.InitDateRange("2023-08"), + }, + Recursive: true, + }, + fsys: []fs.FS{ + newInMemFS("MemFS"). + addFile("root_01.jpg"). + addFile("photos/photo_01.jpg"). + addFile("photos/photo_02.cr3"). + addFile("photos/photo_03.jpg"). + addFile("photos/summer 2023/20230801-001.jpg"). + addFile("photos/summer 2023/20230801-002.jpg"). + addFile("photos/summer 2023/20230301-003.cr3"), + }, + expectedFiles: map[string]fileLinks{ + "photos/summer 2023/20230801-001.jpg": {image: "photos/summer 2023/20230801-001.jpg"}, + "photos/summer 2023/20230801-002.jpg": {image: "photos/summer 2023/20230801-002.jpg"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 7). + Set(fileevent.DiscoveredDiscarded, 5). + Value(), + }, + + { + name: "path as album name", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + UsePathAsAlbumName: FolderModePath, + AlbumNamePathSeparator: " ¤ ", + InclusionFlags: cliflags.InclusionFlags{}, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodNone, + }, + Recursive: true, + }, + fsys: []fs.FS{ + newInMemFS("MemFS"). + addFile("root_01.jpg"). + addFile("photos/photo_01.jpg"). + addFile("photos/photo_02.cr3"). + addFile("photos/photo_03.jpg"). + addFile("photos/summer 2023/20230801-001.jpg"). + addFile("photos/summer 2023/20230801-002.jpg"). + addFile("photos/summer 2023/20230801-003.cr3"), + }, + expectedFiles: map[string]fileLinks{ + "root_01.jpg": {image: "root_01.jpg"}, + "photos/photo_01.jpg": {image: "photos/photo_01.jpg"}, + "photos/photo_02.cr3": {image: "photos/photo_02.cr3"}, + "photos/photo_03.jpg": {image: "photos/photo_03.jpg"}, + "photos/summer 2023/20230801-001.jpg": {image: "photos/summer 2023/20230801-001.jpg"}, + "photos/summer 2023/20230801-002.jpg": {image: "photos/summer 2023/20230801-002.jpg"}, + "photos/summer 2023/20230801-003.cr3": {image: "photos/summer 2023/20230801-003.cr3"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 7). + Value(), + expectedAlbums: map[string][]string{ + "MemFS": {"root_01.jpg"}, + "MemFS ¤ photos": {"photos/photo_01.jpg", "photos/photo_02.cr3", "photos/photo_03.jpg"}, + "MemFS ¤ photos ¤ summer 2023": {"photos/summer 2023/20230801-001.jpg", "photos/summer 2023/20230801-002.jpg", "photos/summer 2023/20230801-003.cr3"}, + }, + }, + { + name: "folder as album name", + flags: ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + UsePathAsAlbumName: FolderModeFolder, + AlbumNamePathSeparator: " ¤ ", + InclusionFlags: cliflags.InclusionFlags{}, + DateHandlingFlags: cliflags.DateHandlingFlags{ + Method: cliflags.DateMethodNone, + }, + Recursive: true, + }, + fsys: []fs.FS{ + newInMemFS("MemFS"). + addFile("root_01.jpg"). + addFile("photos/photo_01.jpg"). + addFile("photos/photo_02.cr3"). + addFile("photos/photo_03.jpg"). + addFile("photos/summer 2023/20230801-001.jpg"). + addFile("photos/summer 2023/20230801-002.jpg"). + addFile("photos/summer 2023/20230801-003.cr3"), + }, + expectedFiles: map[string]fileLinks{ + "root_01.jpg": {image: "root_01.jpg"}, + "photos/photo_01.jpg": {image: "photos/photo_01.jpg"}, + "photos/photo_02.cr3": {image: "photos/photo_02.cr3"}, + "photos/photo_03.jpg": {image: "photos/photo_03.jpg"}, + "photos/summer 2023/20230801-001.jpg": {image: "photos/summer 2023/20230801-001.jpg"}, + "photos/summer 2023/20230801-002.jpg": {image: "photos/summer 2023/20230801-002.jpg"}, + "photos/summer 2023/20230801-003.cr3": {image: "photos/summer 2023/20230801-003.cr3"}, + }, + expectedCounts: fileevent.NewCounts().Set(fileevent.DiscoveredImage, 7). + Value(), + expectedAlbums: map[string][]string{ + "MemFS": {"root_01.jpg"}, + "photos": {"photos/photo_01.jpg", "photos/photo_02.cr3", "photos/photo_03.jpg"}, + "summer 2023": {"photos/summer 2023/20230801-001.jpg", "photos/summer 2023/20230801-002.jpg", "photos/summer 2023/20230801-003.cr3"}, + }, + }, + } + + for _, c := range tc { + t.Run(c.name, func(t *testing.T) { + ctx := context.Background() + recorder := fileevent.NewRecorder(nil, false) + b, err := NewLocalFiles(ctx, recorder, &c.flags, c.fsys...) + if err != nil { + t.Error(err) + } + + err = b.Prepare(ctx) + if err != nil { + t.Error(err) + } + + results := map[string]fileLinks{} + albums := map[string][]string{} + for a := range b.Browse(ctx) { + links := fileLinks{} + ext := path.Ext(a.FileName) + if b.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { + links.image = a.FileName + if a.LivePhoto != nil { + links.video = a.LivePhoto.FileName + } + } else { + links.video = a.FileName + } + if a.SideCar.FileName != "" { + links.sidecar = a.SideCar.FileName + } + results[a.FileName] = links + if len(c.expectedAlbums) > 0 { + for _, album := range a.Albums { + albums[album.Title] = append(albums[album.Title], a.FileName) + } + } + } + + if !reflect.DeepEqual(results, c.expectedFiles) { + t.Errorf("file list difference\n") + pretty.Ldiff(t, c.expectedFiles, results) + } + if !reflect.DeepEqual(recorder.GetCounts(), c.expectedCounts) { + t.Errorf("counters difference\n") + pretty.Ldiff(t, c.expectedCounts, recorder.GetCounts()) + } + if c.expectedAlbums != nil { + compareAlbums(t, albums, c.expectedAlbums) + } + }) + } +} + +func compareAlbums(t *testing.T, a, b map[string][]string) { + a = sortAlbum(a) + b = sortAlbum(b) + if !reflect.DeepEqual(a, b) { + t.Errorf("album list difference\n") + pretty.Ldiff(t, a, b) + } +} + +func sortAlbum(a map[string][]string) map[string][]string { + for k := range a { + sort.Strings(a[k]) + } + return a +} diff --git a/adapters/googlePhotos/flags.go b/adapters/googlePhotos/flags.go new file mode 100644 index 00000000..7b5b91d7 --- /dev/null +++ b/adapters/googlePhotos/flags.go @@ -0,0 +1,64 @@ +// Package gp provides functionality for importing Google Photos takeout into Immich. +package gp + +import ( + cliflags "github.com/simulot/immich-go/internal/cliFlags" + "github.com/simulot/immich-go/internal/metadata" + "github.com/simulot/immich-go/internal/namematcher" + "github.com/spf13/cobra" +) + +// ImportFlags represents the command-line flags for the Google Photos takeout import command. +type ImportFlags struct { + // CreateAlbums determines whether to create albums in Immich that match the albums in the Google Photos takeout. + CreateAlbums bool + + // ImportFromAlbum specifies the name of the Google Photos album to import from. If empty, all albums will be imported. + ImportFromAlbum string + + // ImportIntoAlbum specifies the name of the album to import assets into. + ImportIntoAlbum string + + // PartnerSharedAlbum specifies the name of the album to add partner's photos to. + PartnerSharedAlbum string + + // KeepTrashed determines whether to import photos that are marked as trashed in Google Photos. + KeepTrashed bool + + // KeepPartner determines whether to import photos from the partner's Google Photos account. + KeepPartner bool + + // KeepUntitled determines whether to include photos from albums without a title in the import process. + KeepUntitled bool + + // KeepArchived determines whether to import archived Google Photos. + KeepArchived bool + + // KeepJSONLess determines whether to import photos that do not have a matching JSON file in the takeout. + KeepJSONLess bool + + // SupportedMedia represents the server's actual list of supported media. This is not a flag. + SupportedMedia metadata.SupportedMedia + + // Flags for controlling the extensions of the files to be uploaded + *cliflags.InclusionFlags + + // List of banned files + BannedFiles namematcher.List // List of banned file name patterns +} + +// AddGoogleTakeoutFlags adds the command-line flags for the Google Photos takeout import command to the provided Cobra command. +func AddGoogleTakeoutFlags(cmd *cobra.Command) *ImportFlags { + flags := ImportFlags{} + cmd.Flags().BoolVar(&flags.CreateAlbums, "sync-albums", true, "Automatically create albums in Immich that match the albums in your Google Photos takeout") + cmd.Flags().StringVar(&flags.ImportFromAlbum, "import-from-album-name", "", "Only import photos from the specified Google Photos album") + cmd.Flags().BoolVar(&flags.KeepUntitled, "include-untitled-albums", false, "Include photos from albums without a title in the import process") + cmd.Flags().BoolVarP(&flags.KeepTrashed, "include-trashed", "t", false, "Import photos that are marked as trashed in Google Photos") + cmd.Flags().BoolVarP(&flags.KeepPartner, "include-partner", "p", true, "Import photos from your partner's Google Photos account") + cmd.Flags().StringVar(&flags.PartnerSharedAlbum, "partner-shared-album", "", "Add partner's photo to the specified album name") + cmd.Flags().BoolVarP(&flags.KeepArchived, "include-archived", "a", true, "Import archived Google Photos") + cmd.Flags().BoolVarP(&flags.KeepJSONLess, "include-unmatched", "u", false, "Import photos that do not have a matching JSON file in the takeout") + cmd.Flags().Var(&flags.BannedFiles, "ban-file", "Exclude a file based on a pattern (case-insensitive). Can be specified multiple times.") + flags.InclusionFlags = cliflags.AddInclusionFlags(cmd) + return &flags +} diff --git a/browser/gp/googlephotos.go b/adapters/googlePhotos/googlephotos.nogo similarity index 80% rename from browser/gp/googlephotos.go rename to adapters/googlePhotos/googlephotos.nogo index 14705a9c..46f21bb1 100644 --- a/browser/gp/googlephotos.go +++ b/adapters/googlePhotos/googlephotos.nogo @@ -9,24 +9,19 @@ import ( "strings" "unicode/utf8" - "github.com/simulot/immich-go/browser" + "github.com/simulot/immich-go/adapters" "github.com/simulot/immich-go/helpers/fileevent" "github.com/simulot/immich-go/helpers/fshelper" "github.com/simulot/immich-go/helpers/gen" - "github.com/simulot/immich-go/helpers/namematcher" - "github.com/simulot/immich-go/immich" - "github.com/simulot/immich-go/immich/metadata" + "github.com/simulot/immich-go/internal/metadata" ) type Takeout struct { fsyss []fs.FS - catalogs map[string]directoryCatalog // file catalogs by directory in the set of the all takeout parts - albums map[string]browser.LocalAlbum // track album names by folder + catalogs map[string]directoryCatalog // file catalogs by directory in the set of the all takeout parts + albums map[string]adapters.LocalAlbum // track album names by folder log *fileevent.Recorder - sm immich.SupportedMedia - - banned namematcher.List // Banned files - acceptMissingJSON bool + flags *ImportFlags // command-line flags } // directoryCatalog captures all files in a given directory @@ -44,28 +39,18 @@ type assetFile struct { md *GoogleMetaData // will point to the associated metadata } -func NewTakeout(ctx context.Context, l *fileevent.Recorder, sm immich.SupportedMedia, fsyss ...fs.FS) (*Takeout, error) { +func NewTakeout(ctx context.Context, l *fileevent.Recorder, flags *ImportFlags, fsyss ...fs.FS) (*Takeout, error) { to := Takeout{ fsyss: fsyss, catalogs: map[string]directoryCatalog{}, - albums: map[string]browser.LocalAlbum{}, + albums: map[string]adapters.LocalAlbum{}, log: l, - sm: sm, + flags: flags, } return &to, nil } -func (to *Takeout) SetBannedFiles(banned namematcher.List) *Takeout { - to.banned = banned - return to -} - -func (to *Takeout) SetAcceptMissingJSON(flag bool) *Takeout { - to.acceptMissingJSON = flag - return to -} - // Prepare scans all files in all walker to build the file catalog of the archive // metadata files content is read and kept @@ -125,8 +110,15 @@ func (to *Takeout) passOneFsWalk(ctx context.Context, w fs.FS) error { dirCatalog.jsons[base] = md to.log.Record(ctx, fileevent.DiscoveredSidecar, nil, name, "type", "asset metadata", "title", md.Title) case md.isAlbum(): + if !to.flags.KeepUntitled && md.Title == "" { + to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "discard untitled album") + return nil + } a := to.albums[dir] a.Title = md.Title + if a.Title == "" { + a.Title = filepath.Base(dir) + } a.Path = filepath.Base(dir) if e := md.Enrichments; e != nil { a.Description = e.Text @@ -144,26 +136,35 @@ func (to *Takeout) passOneFsWalk(ctx context.Context, w fs.FS) error { return nil } default: - t := to.sm.TypeFromExt(ext) + + if to.flags.BannedFiles.Match(name) { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "banned file") + return nil + } + + if !to.flags.IncludedExtensions.Include(ext) { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "file extension not selected") + return nil + } + if to.flags.ExcludedExtensions.Exclude(ext) { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "file extension not allowed") + return nil + } + t := to.flags.SupportedMedia.TypeFromExt(ext) switch t { - case immich.TypeUnknown: + case metadata.TypeUnknown: to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unsupported file type") return nil - case immich.TypeVideo: + case metadata.TypeVideo: to.log.Record(ctx, fileevent.DiscoveredVideo, nil, name) if strings.Contains(name, "Failed Videos") { to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "can't upload failed videos") return nil } - case immich.TypeImage: + case metadata.TypeImage: to.log.Record(ctx, fileevent.DiscoveredImage, nil, name) } - if to.banned.Match(name) { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "banned file") - return nil - } - dirCatalog.unMatchedFiles[base] = &assetFile{ fsys: w, base: base, @@ -205,7 +206,7 @@ func (to *Takeout) passOneFsWalk(ctx context.Context, w fs.FS) error { // // To solve the puzzle, each directory is checked with all matchers in the order of the most common to the least. -type matcherFn func(jsonName string, fileName string, sm immich.SupportedMedia) bool +type matcherFn func(jsonName string, fileName string, sm metadata.SupportedMedia) bool // matchers is a list of matcherFn from the most likely to be used to the least one var matchers = []struct { @@ -236,7 +237,7 @@ func (to *Takeout) solvePuzzle(ctx context.Context) error { case <-ctx.Done(): return ctx.Err() default: - if matcher.fn(json, f, to.sm) { + if matcher.fn(json, f, to.flags.SupportedMedia) { i := cat.unMatchedFiles[f] i.md = md cat.matchedFiles[f] = i @@ -252,10 +253,9 @@ func (to *Takeout) solvePuzzle(ctx context.Context) error { sort.Strings(files) for _, f := range files { to.log.Record(ctx, fileevent.AnalysisMissingAssociatedMetadata, f, filepath.Join(dir, f)) - if to.acceptMissingJSON { + if to.flags.KeepJSONLess { cat.matchedFiles[f] = cat.unMatchedFiles[f] delete(cat.unMatchedFiles, f) - } else { } } } @@ -266,7 +266,7 @@ func (to *Takeout) solvePuzzle(ctx context.Context) error { // // PXL_20230922_144936660.jpg.json // PXL_20230922_144936660.jpg -func normalMatch(jsonName string, fileName string, sm immich.SupportedMedia) bool { +func normalMatch(jsonName string, fileName string, sm metadata.SupportedMedia) bool { base := strings.TrimSuffix(jsonName, path.Ext(jsonName)) return base == fileName } @@ -278,7 +278,7 @@ func normalMatch(jsonName string, fileName string, sm immich.SupportedMedia) boo // PXL_20231118_035751175.MP.jpg.json // PXL_20231118_035751175.MP.jpg // PXL_20231118_035751175.MP -func livePhotoMatch(jsonName string, fileName string, sm immich.SupportedMedia) bool { +func livePhotoMatch(jsonName string, fileName string, sm metadata.SupportedMedia) bool { fileExt := path.Ext(fileName) fileName = strings.TrimSuffix(fileName, fileExt) base := strings.TrimSuffix(jsonName, path.Ext(jsonName)) @@ -301,7 +301,7 @@ func livePhotoMatch(jsonName string, fileName string, sm immich.SupportedMedia) // 😀😃😄😁😆😅😂🤣🥲☺️😊😇🙂🙃😉😌😍🥰😘😗😙😚😋.json // 😀😃😄😁😆😅😂🤣🥲☺️😊😇🙂🙃😉😌😍🥰😘😗😙😚😋😛.jpg -func matchWithOneCharOmitted(jsonName string, fileName string, sm immich.SupportedMedia) bool { +func matchWithOneCharOmitted(jsonName string, fileName string, sm metadata.SupportedMedia) bool { baseJSON := strings.TrimSuffix(jsonName, path.Ext(jsonName)) ext := path.Ext(baseJSON) if sm.IsExtensionPrefix(ext) { @@ -324,7 +324,7 @@ func matchWithOneCharOmitted(jsonName string, fileName string, sm immich.Support // // Backyard_ceremony_wedding_photography_xxxxxxx_(494).json // Backyard_ceremony_wedding_photography_xxxxxxx_m(494).jpg -func matchVeryLongNameWithNumber(jsonName string, fileName string, sm immich.SupportedMedia) bool { +func matchVeryLongNameWithNumber(jsonName string, fileName string, sm metadata.SupportedMedia) bool { jsonName = strings.TrimSuffix(jsonName, path.Ext(jsonName)) p1JSON := strings.Index(jsonName, "(") @@ -353,7 +353,7 @@ func matchVeryLongNameWithNumber(jsonName string, fileName string, sm immich.Sup // // Fast implementation, but does't work with live photos -func matchDuplicateInYear(jsonName string, fileName string, sm immich.SupportedMedia) bool { +func matchDuplicateInYear(jsonName string, fileName string, sm metadata.SupportedMedia) bool { jsonName = strings.TrimSuffix(jsonName, path.Ext(jsonName)) p1JSON := strings.Index(jsonName, "(") if p1JSON < 1 { @@ -422,7 +422,7 @@ func matchDuplicateInYear(jsonName string, fileName string, sm immich.SupportedM // PXL_20220405_090123740.PORTRAIT.jpg // PXL_20220405_090123740.PORTRAIT-modifié.jpg -func matchEditedName(jsonName string, fileName string, sm immich.SupportedMedia) bool { +func matchEditedName(jsonName string, fileName string, sm metadata.SupportedMedia) bool { base := strings.TrimSuffix(jsonName, path.Ext(jsonName)) ext := path.Ext(base) if ext != "" { @@ -442,7 +442,7 @@ func matchEditedName(jsonName string, fileName string, sm immich.SupportedMedia) // original_1d4caa6f-16c6-4c3d-901b-9387de10e528_P.jpg // original_1d4caa6f-16c6-4c3d-901b-9387de10e528_P(1).jpg -func matchForgottenDuplicates(jsonName string, fileName string, sm immich.SupportedMedia) bool { +func matchForgottenDuplicates(jsonName string, fileName string, sm metadata.SupportedMedia) bool { jsonName = strings.TrimSuffix(jsonName, path.Ext(jsonName)) fileName = strings.TrimSuffix(fileName, path.Ext(fileName)) if strings.HasPrefix(fileName, jsonName) { @@ -459,8 +459,8 @@ func matchForgottenDuplicates(jsonName string, fileName string, sm immich.Suppor // Walkers are rewind, and scanned again // each file net yet sent to immich is sent with associated metadata -func (to *Takeout) Browse(ctx context.Context) chan *browser.LocalAssetFile { - assetChan := make(chan *browser.LocalAssetFile) +func (to *Takeout) Browse(ctx context.Context) chan *adapter.LocalAssetFile { + assetChan := make(chan *adapter.LocalAssetFile) go func() { defer close(assetChan) @@ -470,7 +470,7 @@ func (to *Takeout) Browse(ctx context.Context) chan *browser.LocalAssetFile { if len(to.catalogs[dir].matchedFiles) > 0 { err := to.passTwo(ctx, dir, assetChan) if err != nil { - assetChan <- &browser.LocalAssetFile{Err: err} + assetChan <- &adapters.LocalAssetFile{Err: err} } } } @@ -492,7 +492,7 @@ func (to *Takeout) passTwo(ctx context.Context, dir string, assetChan chan *brow // Scan pictures for _, f := range gen.MapKeys(catalog.matchedFiles) { ext := path.Ext(f) - if to.sm.TypeFromExt(ext) == immich.TypeImage { + if to.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { linked := linkedFiles[f] linked.image = catalog.matchedFiles[f] linkedFiles[f] = linked @@ -503,7 +503,7 @@ func (to *Takeout) passTwo(ctx context.Context, dir string, assetChan chan *brow nextVideo: for _, f := range gen.MapKeys(catalog.matchedFiles) { fExt := path.Ext(f) - if to.sm.TypeFromExt(fExt) == immich.TypeVideo { + if to.flags.SupportedMedia.TypeFromExt(fExt) == metadata.TypeVideo { name := strings.TrimSuffix(f, fExt) for i, linked := range linkedFiles { if linked.image == nil { @@ -541,13 +541,13 @@ nextVideo: linked := linkedFiles[base] if linked.image != nil { - a, err = to.makeAsset(linked.image.md, linked.image.fsys, path.Join(dir, linked.image.base)) + a, err = to.makeAsset(ctx, linked.image.md, linked.image.fsys, path.Join(dir, linked.image.base)) if err != nil { to.log.Record(ctx, fileevent.Error, nil, path.Join(dir, linked.image.base), "error", err.Error()) continue } if linked.video != nil { - i, err := to.makeAsset(linked.video.md, linked.video.fsys, path.Join(dir, linked.video.base)) + i, err := to.makeAsset(ctx, linked.video.md, linked.video.fsys, path.Join(dir, linked.video.base)) if err != nil { to.log.Record(ctx, fileevent.Error, nil, path.Join(dir, linked.video.base), "error", err.Error()) } else { @@ -555,7 +555,7 @@ nextVideo: } } } else { - a, err = to.makeAsset(linked.video.md, linked.video.fsys, path.Join(dir, linked.video.base)) + a, err = to.makeAsset(ctx, linked.video.md, linked.video.fsys, path.Join(dir, linked.video.base)) if err != nil { to.log.Record(ctx, fileevent.Error, nil, path.Join(dir, linked.video.base), "error", err.Error()) continue @@ -572,12 +572,31 @@ nextVideo: } // makeAsset makes a localAssetFile based on the google metadata -func (to *Takeout) makeAsset(md *GoogleMetaData, fsys fs.FS, name string) (*browser.LocalAssetFile, error) { +func (to *Takeout) makeAsset(ctx context.Context, md *GoogleMetaData, fsys fs.FS, name string) (*browser.LocalAssetFile, error) { i, err := fs.Stat(fsys, name) if err != nil { return nil, err } + if md != nil { + if !to.flags.KeepArchived && md.Archived { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "discarding archived file") + return nil, nil + } + if !to.flags.KeepPartner && md.isPartner() { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "discarding partner file") + return nil, nil + } + if !to.flags.KeepTrashed && md.Trashed { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "discarding trashed file") + return nil, nil + } + if !to.flags.InclusionFlags.DateRange.InRange(md.PhotoTakenTime.Time()) { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "discarding files out of date range") + return nil, nil + } + } + a := browser.LocalAssetFile{ FileName: name, FileSize: int(i.Size()), @@ -585,10 +604,27 @@ func (to *Takeout) makeAsset(md *GoogleMetaData, fsys fs.FS, name string) (*brow FSys: fsys, } - if album, ok := to.albums[path.Dir(name)]; ok { - a.Albums = append(a.Albums, album) + if to.flags.ImportFromAlbum != "" { + keep := false + if album, ok := to.albums[path.Dir(name)]; ok { + keep = keep || album.Title == to.flags.ImportFromAlbum + } + if !keep { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "discarding files not in the specified album") + return nil, nil + } + if to.flags.CreateAlbums { + a.Albums = []adapters.LocalAlbum{to.albums[path.Dir(name)]} + } + } else if to.flags.CreateAlbums { + if to.flags.ImportIntoAlbum != "" { + a.Albums = []adapters.LocalAlbum{{Title: to.flags.ImportIntoAlbum}} + } else { + if album, ok := to.albums[path.Dir(name)]; ok { + a.Albums = append(a.Albums, album) + } + } } - if md != nil { // Change file's title with the asset's title and the actual file's extension title := md.Title @@ -634,6 +670,5 @@ func (to *Takeout) makeAsset(md *GoogleMetaData, fsys fs.FS, name string) (*brow } a.Metadata = sidecar } - return &a, nil } diff --git a/browser/gp/googlephotos_test.go b/adapters/googlePhotos/googlephotos_test.nogo similarity index 94% rename from browser/gp/googlephotos_test.go rename to adapters/googlePhotos/googlephotos_test.nogo index 4e469830..20a2a154 100644 --- a/browser/gp/googlephotos_test.go +++ b/adapters/googlePhotos/googlephotos_test.nogo @@ -3,7 +3,7 @@ package gp import ( "testing" - "github.com/simulot/immich-go/immich" + "github.com/simulot/immich-go/internal/metadata" ) func Test_matchers(t *testing.T) { @@ -92,7 +92,7 @@ func Test_matchers(t *testing.T) { t.Run(tt.fileName, func(t *testing.T) { matcher := "" for _, m := range matchers { - if m.fn(tt.jsonName, tt.fileName, immich.DefaultSupportedMedia) { + if m.fn(tt.jsonName, tt.fileName, metadata.DefaultSupportedMedia) { matcher = m.name break } @@ -123,7 +123,7 @@ func Test_matchVeryLongNameWithNumber(t *testing.T) { } for _, tt := range tests { t.Run(tt.fileName, func(t *testing.T) { - if got := matchVeryLongNameWithNumber(tt.jsonName, tt.fileName, immich.DefaultSupportedMedia); got != tt.want { + if got := matchVeryLongNameWithNumber(tt.jsonName, tt.fileName, metadata.DefaultSupportedMedia); got != tt.want { t.Errorf("matchVeryLongNameWithNumber() = %v, want %v", got, tt.want) } }) @@ -152,7 +152,7 @@ func Test_matchDuplicateInYear(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := matchDuplicateInYear(tt.jsonName, tt.fileName, immich.DefaultSupportedMedia); got != tt.want { + if got := matchDuplicateInYear(tt.jsonName, tt.fileName, metadata.DefaultSupportedMedia); got != tt.want { t.Errorf("matchDuplicateInYear() = %v, want %v", got, tt.want) } }) @@ -181,7 +181,7 @@ func Test_matchForgottenDuplicates(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := matchForgottenDuplicates(tt.jsonName, tt.fileName, immich.DefaultSupportedMedia); got != tt.want { + if got := matchForgottenDuplicates(tt.jsonName, tt.fileName, metadata.DefaultSupportedMedia); got != tt.want { t.Errorf("matchDuplicateInYear() = %v, want %v", got, tt.want) } }) diff --git a/browser/gp/json.go b/adapters/googlePhotos/json.nogo similarity index 100% rename from browser/gp/json.go rename to adapters/googlePhotos/json.nogo diff --git a/browser/gp/json_test.go b/adapters/googlePhotos/json_test.nogo similarity index 100% rename from browser/gp/json_test.go rename to adapters/googlePhotos/json_test.nogo diff --git a/browser/gp/testgp_bigread_test.go b/adapters/googlePhotos/testgp_bigread_test.nogo similarity index 80% rename from browser/gp/testgp_bigread_test.go rename to adapters/googlePhotos/testgp_bigread_test.nogo index d3283a6e..5f5e70b1 100644 --- a/browser/gp/testgp_bigread_test.go +++ b/adapters/googlePhotos/testgp_bigread_test.nogo @@ -13,7 +13,7 @@ import ( "github.com/simulot/immich-go/helpers/fileevent" "github.com/simulot/immich-go/helpers/fshelper" - "github.com/simulot/immich-go/immich" + "github.com/simulot/immich-go/internal/metadata" "github.com/telemachus/humane" ) @@ -32,7 +32,11 @@ func TestReadBigTakeout(t *testing.T) { } cnt := 0 fsyss, err := fshelper.ParsePath(m) - to, err := NewTakeout(context.Background(), j, immich.DefaultSupportedMedia, fsyss...) + flags := &ImportFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + } + + to, err := NewTakeout(context.Background(), j, flags, fsyss...) if err != nil { t.Error(err) return diff --git a/browser/gp/testgp_samples_test.go b/adapters/googlePhotos/testgp_samples_test.nogo similarity index 99% rename from browser/gp/testgp_samples_test.go rename to adapters/googlePhotos/testgp_samples_test.nogo index e6a2624a..5183b1a1 100644 --- a/browser/gp/testgp_samples_test.go +++ b/adapters/googlePhotos/testgp_samples_test.nogo @@ -12,8 +12,8 @@ import ( "time" "github.com/psanford/memfs" - "github.com/simulot/immich-go/immich/metadata" "github.com/simulot/immich-go/internal/fakefs" + "github.com/simulot/immich-go/internal/metadata" ) type inMemFS struct { diff --git a/browser/gp/testgp_test.go b/adapters/googlePhotos/testgp_test.nogo similarity index 96% rename from browser/gp/testgp_test.go rename to adapters/googlePhotos/testgp_test.nogo index 96230c42..6f1e8acb 100644 --- a/browser/gp/testgp_test.go +++ b/adapters/googlePhotos/testgp_test.nogo @@ -10,8 +10,9 @@ import ( "testing" "github.com/kr/pretty" + "github.com/simulot/immich-go/browser" "github.com/simulot/immich-go/helpers/fileevent" - "github.com/simulot/immich-go/immich" + "github.com/simulot/immich-go/internal/metadata" ) func TestBrowse(t *testing.T) { @@ -143,8 +144,10 @@ func TestBrowse(t *testing.T) { ctx := context.Background() log := slog.New(slog.NewTextHandler(io.Discard, nil)) - - b, err := NewTakeout(ctx, fileevent.NewRecorder(log, false), immich.DefaultSupportedMedia, fsys...) + flags := &FlagImport{ + SupportedMedia: metadata.DefaultSupportedMedia, + } + b, err := NewTakeout(ctx, fileevent.NewRecorder(log, false), flags, fsys...) if err != nil { t.Error(err) } @@ -219,8 +222,10 @@ func TestAlbums(t *testing.T) { t.Run(c.name, func(t *testing.T) { ctx := context.Background() fsys := c.gen() - - b, err := NewTakeout(ctx, fileevent.NewRecorder(nil, false), immich.DefaultSupportedMedia, fsys...) + flags := &FlagsImport{ + SupportedMedia: metadata.DefaultSupportedMedia, + } + b, err := NewTakeout(ctx, fileevent.NewRecorder(nil, false), flags, fsys...) if err != nil { t.Error(err) } @@ -340,12 +345,14 @@ func TestArchives(t *testing.T) { func(t *testing.T) { ctx := context.Background() fsys := c.gen() - - b, err := NewTakeout(ctx, fileevent.NewRecorder(nil, false), immich.DefaultSupportedMedia, fsys...) + flags := &browser.GooglePhotosFlags{ + SupportedMedia: metadata.DefaultSupportedMedia, + KeepJSONLess: c.acceptMissingJSON, + } + b, err := NewTakeout(ctx, fileevent.NewRecorder(nil, false), flags, fsys...) if err != nil { t.Error(err) } - b.SetAcceptMissingJSON(c.acceptMissingJSON) err = b.Prepare(ctx) if err != nil { t.Error(err) diff --git a/browser/localfile.go b/adapters/localfile.go similarity index 94% rename from browser/localfile.go rename to adapters/localfile.go index 15c1ecb9..457552c4 100644 --- a/browser/localfile.go +++ b/adapters/localfile.go @@ -1,4 +1,4 @@ -package browser +package adapters import ( "errors" @@ -8,8 +8,8 @@ import ( "os" "time" - "github.com/simulot/immich-go/helpers/fshelper" - "github.com/simulot/immich-go/immich/metadata" + "github.com/simulot/immich-go/internal/fshelper" + "github.com/simulot/immich-go/internal/metadata" ) /* @@ -86,6 +86,8 @@ func (l *LocalAssetFile) DeviceAssetID() string { // // It returns a TeeReader that writes each read byte from the source into the temporary file. // The temporary file is discarded when the LocalAssetFile is closed +// TODO: possible optimization: when the file is a plain file, do not copy it into a temporary file +// TODO: use user temp folder func (l *LocalAssetFile) PartialSourceReader() (reader io.Reader, err error) { if l.sourceFile == nil { diff --git a/adapters/metadata.go b/adapters/metadata.go new file mode 100644 index 00000000..4e051829 --- /dev/null +++ b/adapters/metadata.go @@ -0,0 +1,91 @@ +package adapters + +import ( + "io" + "path/filepath" + "strings" + "time" + + cliflags "github.com/simulot/immich-go/internal/cliFlags" + "github.com/simulot/immich-go/internal/metadata" +) + +type ReadMetadataOptions struct { + ExifTool *metadata.ExifTool + ExiftoolTimezone *time.Location + FilenameTimeZone *time.Location +} + +func (la *LocalAssetFile) ReadMetadata(method cliflags.DateMethod, options ReadMetadataOptions) error { + ms := strings.Split(string(method), "-") + for _, m := range ms { + switch cliflags.DateMethod(m) { + case cliflags.DateMethodNone: + return nil + case cliflags.DateMethodEXIF: + if options.ExifTool != nil { + err := la.metadataFromExiftool(options) + if err != nil { + continue + } + if !la.Metadata.DateTaken.IsZero() { + return nil + } + } else { + err := la.metadataFromDirectRead(options.ExiftoolTimezone) + if err != nil { + continue + } + if !la.Metadata.DateTaken.IsZero() { + return nil + } + return nil + } + case cliflags.DateMethodName: + t := metadata.TakeTimeFromPath(la.FileName, options.FilenameTimeZone) + if !t.IsZero() { + la.Metadata.DateTaken = t + return nil + } + } + } + return nil +} + +// metadataFromExiftool call exiftool +func (la *LocalAssetFile) metadataFromExiftool(options ReadMetadataOptions) error { + // Get a handler on a temporary file + r, err := la.PartialSourceReader() + if err != nil { + return err + } + + // be sure the file is completely extracted in the temp file + _, err = io.Copy(io.Discard, r) + if err != nil { + return err + } + + md, err := options.ExifTool.ReadMetaData(la.tempFile.Name()) + if err != nil { + return err + } + la.Metadata = *md + return nil +} + +func (la *LocalAssetFile) metadataFromDirectRead(localTZ *time.Location) error { + // Get a handler on a temporary file + r, err := la.PartialSourceReader() + if err != nil { + return err + } + + ext := filepath.Ext(la.FileName) + md, err := metadata.GetFromReader(r, ext, localTZ) + if err != nil { + return err + } + la.Metadata = *md + return nil +} diff --git a/browser/readersearch.go b/adapters/readersearch.nogo similarity index 100% rename from browser/readersearch.go rename to adapters/readersearch.nogo diff --git a/browser/readersearch_test.go b/adapters/readersearch_test.nogo similarity index 99% rename from browser/readersearch_test.go rename to adapters/readersearch_test.nogo index 55b437da..c4d7479f 100644 --- a/browser/readersearch_test.go +++ b/adapters/readersearch_test.nogo @@ -1,4 +1,4 @@ -package browser +package adapter import ( "bytes" diff --git a/browser/files/localassets_test.go b/browser/files/localassets_test.go deleted file mode 100644 index 1313b4ec..00000000 --- a/browser/files/localassets_test.go +++ /dev/null @@ -1,150 +0,0 @@ -package files - -import ( - "context" - "errors" - "io/fs" - "path" - "reflect" - "testing" - - "github.com/kr/pretty" - "github.com/psanford/memfs" - "github.com/simulot/immich-go/helpers/fileevent" - "github.com/simulot/immich-go/helpers/namematcher" - "github.com/simulot/immich-go/immich" -) - -type inMemFS struct { - *memfs.FS - err error -} - -func newInMemFS() *inMemFS { - return &inMemFS{ - FS: memfs.New(), - } -} - -func (mfs *inMemFS) addFile(name string) *inMemFS { - if mfs.err != nil { - return mfs - } - dir := path.Dir(name) - mfs.err = errors.Join(mfs.err, mfs.MkdirAll(dir, 0o777)) - mfs.err = errors.Join(mfs.err, mfs.WriteFile(name, []byte(name), 0o777)) - return mfs -} - -func TestLocalAssets(t *testing.T) { - tc := []struct { - name string - fsys fs.FS - expected map[string]fileLinks - }{ - { - name: "simple", - fsys: newInMemFS(). - addFile("root_01.jpg"). - addFile("photos/photo_01.jpg"). - addFile("photos/photo_02.cr3"). - addFile("photos/photo_03.jpg"). - addFile("photos/summer 2023/20230801-001.jpg"). - addFile("photos/summer 2023/20230801-002.jpg"). - addFile("photos/summer 2023/20230801-003.cr3"). - addFile("@eaDir/thb1.jpg"). - addFile("photos/SYNOFILE_THUMB_0001.jpg"). - addFile("photos/summer 2023/.@__thumb/thb2.jpg"), - expected: map[string]fileLinks{ - "root_01.jpg": {image: "root_01.jpg"}, - "photos/photo_01.jpg": {image: "photos/photo_01.jpg"}, - "photos/photo_02.cr3": {image: "photos/photo_02.cr3"}, - "photos/photo_03.jpg": {image: "photos/photo_03.jpg"}, - "photos/summer 2023/20230801-001.jpg": {image: "photos/summer 2023/20230801-001.jpg"}, - "photos/summer 2023/20230801-002.jpg": {image: "photos/summer 2023/20230801-002.jpg"}, - "photos/summer 2023/20230801-003.cr3": {image: "photos/summer 2023/20230801-003.cr3"}, - }, - }, - { - name: "motion picture", - fsys: newInMemFS(). - addFile("motion/PXL_20210102_221126856.MP~2"). - addFile("motion/PXL_20210102_221126856.MP~2.jpg"). - addFile("motion/PXL_20210102_221126856.MP.jpg"). - addFile("motion/PXL_20210102_221126856.MP"). - addFile("motion/20231227_152817.jpg"). - addFile("motion/20231227_152817.MP4"), - expected: map[string]fileLinks{ - "motion/PXL_20210102_221126856.MP.jpg": {image: "motion/PXL_20210102_221126856.MP.jpg", video: "motion/PXL_20210102_221126856.MP"}, - "motion/PXL_20210102_221126856.MP~2.jpg": {image: "motion/PXL_20210102_221126856.MP~2.jpg", video: "motion/PXL_20210102_221126856.MP~2"}, - "motion/20231227_152817.jpg": {image: "motion/20231227_152817.jpg", video: "motion/20231227_152817.MP4"}, - }, - }, - { - name: "sidecar", - fsys: newInMemFS(). - addFile("root_01.jpg"). - addFile("root_01.XMP"). - addFile("root_02.jpg"). - addFile("root_02.jpg.XMP"). - addFile("video_01.mp4"). - addFile("video_01.mp4.XMP"). - addFile("root_03.MP.jpg"). - addFile("root_03.MP.jpg.XMP"). - addFile("root_03.MP"), - expected: map[string]fileLinks{ - "root_01.jpg": {image: "root_01.jpg", sidecar: "root_01.XMP"}, - "root_02.jpg": {image: "root_02.jpg", sidecar: "root_02.jpg.XMP"}, - "root_03.MP.jpg": {image: "root_03.MP.jpg", sidecar: "root_03.MP.jpg.XMP", video: "root_03.MP"}, - "video_01.mp4": {video: "video_01.mp4", sidecar: "video_01.mp4.XMP"}, - }, - }, - } - - for _, c := range tc { - t.Run(c.name, func(t *testing.T) { - fsys := c.fsys - ctx := context.Background() - - b, err := NewLocalFiles(ctx, fileevent.NewRecorder(nil, false), fsys) - if err != nil { - t.Error(err) - } - l, err := namematcher.New(`@eaDir/`, `.@__thumb`, `SYNOFILE_THUMB_*.*`) - if err != nil { - t.Error(err) - } - b.SetBannedFiles(l) - b.SetSupportedMedia(immich.DefaultSupportedMedia) - b.SetWhenNoDate("FILE") - - err = b.Prepare(ctx) - if err != nil { - t.Error(err) - } - - results := map[string]fileLinks{} - for a := range b.Browse(ctx) { - links := fileLinks{} - ext := path.Ext(a.FileName) - if b.sm.TypeFromExt(ext) == immich.TypeImage { - links.image = a.FileName - if a.LivePhoto != nil { - links.video = a.LivePhoto.FileName - } - } else { - links.video = a.FileName - } - if a.SideCar.FileName != "" { - links.sidecar = a.SideCar.FileName - } - results[a.FileName] = links - } - - if !reflect.DeepEqual(results, c.expected) { - t.Errorf("difference\n") - pretty.Ldiff(t, c.expected, results) - } - }) - } -} diff --git a/cmd/album/album.go b/cmd/album/album.nogo similarity index 100% rename from cmd/album/album.go rename to cmd/album/album.nogo diff --git a/cmd/cmd.go b/cmd/cmd.go deleted file mode 100644 index 78dd1a0e..00000000 --- a/cmd/cmd.go +++ /dev/null @@ -1,23 +0,0 @@ -package cmd - -import ( - "fmt" - "os" - - "github.com/spf13/cobra" -) - -func Execute() { - if err := rootCmd.Execute(); err != nil { - fmt.Println(err) - os.Exit(1) - } -} - -func inti() { - cobra.OnInitialize(initConfig) -} - -func initConfig() { - rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.immich-go.yaml)") -} diff --git a/cmd/duplicate/duplicate.go b/cmd/duplicate/duplicate.nogo similarity index 100% rename from cmd/duplicate/duplicate.go rename to cmd/duplicate/duplicate.nogo diff --git a/cmd/immichSeverFlags.go b/cmd/immichSeverFlags.go index d0a0fded..14efda5a 100644 --- a/cmd/immichSeverFlags.go +++ b/cmd/immichSeverFlags.go @@ -2,7 +2,6 @@ package cmd import ( "errors" - "fmt" "io" "os" "path/filepath" @@ -10,8 +9,8 @@ import ( "time" "github.com/simulot/immich-go/helpers/configuration" - "github.com/simulot/immich-go/helpers/fileevent" "github.com/simulot/immich-go/immich" + "github.com/simulot/immich-go/internal/tzone" "github.com/spf13/cobra" ) @@ -24,34 +23,37 @@ type ImmichServerFlags struct { SkipSSL bool // Skip SSL Verification ClientTimeout time.Duration // Set the client request timeout DeviceUUID string // Set a device UUID + DryRun bool // Protect the server from changes + TimeZone string // Override default TZ - Jnl *fileevent.Recorder // Program's logger + // Jnl *fileevent.Recorder // Program's logger APITraceWriter io.WriteCloser // API tracer APITraceWriterName string // API trace log name Immich immich.ImmichInterface // Immich client - DebugCounters bool // Enable CSV action counters per file - // TimeZone string // Override default TZ // NoUI bool // Disable user interface // DebugFileList bool // When true, the file argument is a file wile the list of Takeout files } // NewImmichServerFlagSet add server flags to the command cmd -func NewImmichServerFlagSet(cmd *cobra.Command, serverFlags *ImmichServerFlags) { +func AddImmichServerFlagSet(cmd *cobra.Command, rootFlags *RootImmichFlags) *ImmichServerFlags { + flags := ImmichServerFlags{} // Server flags are available for sub commands - serverFlags.DeviceUUID, _ = os.Hostname() - cmd.PersistentFlags().StringVar(&serverFlags.Server, "server", serverFlags.Server, "Immich server address (example http://:2283 or https://)") - cmd.PersistentFlags().StringVar(&serverFlags.API, "api", serverFlags.API, "Immich api endpoint (example http://container_ip:3301)") - cmd.PersistentFlags().StringVar(&serverFlags.Key, "key", serverFlags.Key, "API Key") - cmd.PersistentFlags().BoolVar(&serverFlags.APITrace, "api-trace", false, "enable trace of api calls") - cmd.PersistentFlags().BoolVar(&serverFlags.SkipSSL, "skip-verify-ssl", false, "Skip SSL verification") - cmd.PersistentFlags().DurationVar(&serverFlags.ClientTimeout, "client-timeout", 5*time.Minute, "Set server calls timeout") - cmd.PersistentFlags().StringVar(&serverFlags.DeviceUUID, "device-uuid", serverFlags.DeviceUUID, "Set a device UUID") + flags.DeviceUUID, _ = os.Hostname() + cmd.Flags().StringVarP(&flags.Server, "server", "s", flags.Server, "Immich server address (example http://your-ip:2283 or https://your-domain)") + cmd.Flags().StringVar(&flags.API, "api", flags.API, "Immich api endpoint (example http://container_ip:3301)") + cmd.Flags().StringVarP(&flags.Key, "key", "k", flags.Key, "API Key") + cmd.Flags().BoolVar(&flags.APITrace, "api-trace", false, "Enable trace of api calls") + cmd.Flags().BoolVar(&flags.SkipSSL, "skip-verify-ssl", false, "Skip SSL verification") + cmd.Flags().DurationVar(&flags.ClientTimeout, "client-timeout", 5*time.Minute, "Set server calls timeout") + cmd.Flags().StringVar(&flags.DeviceUUID, "device-uuid", flags.DeviceUUID, "Set a device UUID") + cmd.Flags().BoolVar(&flags.DryRun, "dry-run", false, "Simulate all actions") + cmd.Flags().StringVar(&flags.TimeZone, "time-zone", flags.TimeZone, "Override the system time zone") - // cmd.PersistentFlags().BoolVar(&serverFlags.DebugCounters, "debug-counters", false, "generate a CSV file with actions per handled files") - // fs.StringVar(&serverFlags.TimeZone, "time-zone", serverFlags.TimeZone, "Override the system time zone") - // fs.BoolVar(&serverFlags.Debug, "debug", false, "enable debug messages") - // fs.BoolVar(&serverFlags.NoUI, "no-ui", false, "Disable the user interface") + cmd.PostRunE = func(cmd *cobra.Command, args []string) error { + return flags.Close(rootFlags) + } + return &flags } // Initialize the ImmichServerFlags flagset @@ -59,62 +61,79 @@ func NewImmichServerFlagSet(cmd *cobra.Command, serverFlags *ImmichServerFlags) // - fields fs.Server and fs.API are mutually exclusive // - either fields fs.Server or fs.API must be given // - fs.Key is mandatory -func (app *ImmichServerFlags) Initialize(rootFlags *RootImmichFlags) error { +func (SrvFlags *ImmichServerFlags) Open(rootFlags *RootImmichFlags) error { var err error - if app.Server != "" && app.API != "" { + if SrvFlags.Server != "" && SrvFlags.API != "" { err = errors.Join(err, errors.New(`flags 'server' and 'api' are mutually exclusive`)) } - if app.Server == "" && app.API == "" { + if SrvFlags.Server == "" && SrvFlags.API == "" { err = errors.Join(err, errors.New(`either 'server' or 'api' flag must be provided`)) } - if app.Key == "" { + if SrvFlags.Key == "" { err = errors.Join(err, errors.New(`flag 'key' is mandatory`)) } + if SrvFlags.TimeZone != "" { + if _, e := tzone.SetLocal(SrvFlags.TimeZone); e != nil { + err = errors.Join(err, e) + } + } + if err != nil { + return err + } - rootFlags.Log.Info(`Connection to the server ` + app.Server) - - app.Immich, err = immich.NewImmichClient(app.Server, app.Key, immich.OptionVerifySSL(app.SkipSSL), immich.OptionConnectionTimeout(app.ClientTimeout)) + rootFlags.Message(`Connection to the server %s`, SrvFlags.Server) + SrvFlags.Immich, err = immich.NewImmichClient(SrvFlags.Server, SrvFlags.Key, + immich.OptionVerifySSL(SrvFlags.SkipSSL), + immich.OptionConnectionTimeout(SrvFlags.ClientTimeout), + immich.OptionDryRun(SrvFlags.DryRun), + ) if err != nil { return err } - if app.API != "" { - app.Immich.SetEndPoint(app.API) + if SrvFlags.API != "" { + SrvFlags.Immich.SetEndPoint(SrvFlags.API) } - if app.DeviceUUID != "" { - app.Immich.SetDeviceUUID(app.DeviceUUID) + if SrvFlags.DeviceUUID != "" { + SrvFlags.Immich.SetDeviceUUID(SrvFlags.DeviceUUID) } - if app.APITrace { - if app.APITraceWriter == nil { + if SrvFlags.APITrace { + if SrvFlags.APITraceWriter == nil { err := configuration.MakeDirForFile(rootFlags.LogFile) if err != nil { return err } - app.APITraceWriterName = strings.TrimSuffix(rootFlags.LogFile, filepath.Ext(rootFlags.LogFile)) + ".trace.log" - app.APITraceWriter, err = os.OpenFile(app.APITraceWriterName, os.O_CREATE|os.O_WRONLY, 0o664) + SrvFlags.APITraceWriterName = strings.TrimSuffix(rootFlags.LogFile, filepath.Ext(rootFlags.LogFile)) + ".trace.log" + SrvFlags.APITraceWriter, err = os.OpenFile(SrvFlags.APITraceWriterName, os.O_CREATE|os.O_WRONLY, 0o664) if err != nil { return err } - app.Immich.EnableAppTrace(app.APITraceWriter) + SrvFlags.Immich.EnableAppTrace(SrvFlags.APITraceWriter) + rootFlags.Message("API log file: %s", SrvFlags.APITraceWriterName) } } ctx := rootFlags.Command.Context() - err = app.Immich.PingServer(ctx) + err = SrvFlags.Immich.PingServer(ctx) if err != nil { return err } - rootFlags.Log.Info(`Server status: OK`) + rootFlags.Message(`Server status: OK`) - user, err := app.Immich.ValidateConnection(ctx) + user, err := SrvFlags.Immich.ValidateConnection(ctx) if err != nil { return err } - rootFlags.Log.Info(fmt.Sprintf( - `Connected, user: %s`, - user.Email, - )) + rootFlags.Message(`Connected, user: %s`, user.Email) return err } + +func (flags *ImmichServerFlags) Close(rootFlags *RootImmichFlags) error { + if flags.APITrace { + flags.APITraceWriter.Close() + rootFlags.Message("Check the API traces files %s", flags.APITraceWriterName) + } + return rootFlags.Close() +} diff --git a/cmd/metadata/metadata.go b/cmd/metadata/metadata.nogo similarity index 100% rename from cmd/metadata/metadata.go rename to cmd/metadata/metadata.nogo diff --git a/cmd/rootCmd.go b/cmd/rootCmd.go index ed521abd..3473487d 100644 --- a/cmd/rootCmd.go +++ b/cmd/rootCmd.go @@ -27,6 +27,7 @@ func CreateRootCommand(b ui.Banner) *RootImmichFlags { rootFlags.Command.PersistentFlags().StringVar(&rootFlags.LogLevel, "log-level", "INFO", "Log level (DEBUG|INFO|WARN|ERROR), default INFO") rootFlags.Command.PersistentFlags().StringVar(&rootFlags.LogFile, "log-file", configuration.DefaultLogFile(), "Write log messages into the file") rootFlags.Command.PersistentFlags().BoolVar(&rootFlags.JSONLog, "log-json", false, "Output line-delimited JSON file, default FALSE") + return &rootFlags } @@ -43,7 +44,7 @@ type RootImmichFlags struct { Level slog.Level // Set the log level } -func (app *RootImmichFlags) Initialize() error { +func (app *RootImmichFlags) Open() error { fmt.Println(app.Banner.String()) var w io.WriteCloser if app.LogFile != "" { @@ -60,6 +61,7 @@ func (app *RootImmichFlags) Initialize() error { if err != nil { return err } + app.Message("Log file: %s", app.LogFile) } } else { w = os.Stdout @@ -81,6 +83,21 @@ func (app *RootImmichFlags) SetLogWriter(w io.Writer) { app.Log = slog.New(handler) } +func (app *RootImmichFlags) Message(msg string, values ...any) { + s := fmt.Sprintf(msg, values...) + fmt.Println(s) + if app.Log != nil { + app.Log.Info(s) + } +} + +func (app *RootImmichFlags) Close() error { + if app.LogFile != "" { + app.Message("Check the log file: %s", app.LogFile) + } + return nil +} + /* func (app *RootImmichFlags) InitSharedFlags() { diff --git a/cmd/shared.go b/cmd/shared.go deleted file mode 100644 index 9d9ee7e2..00000000 --- a/cmd/shared.go +++ /dev/null @@ -1,245 +0,0 @@ -package cmd - -import ( - "context" - "errors" - "fmt" - "io" - "log/slog" - "os" - "path/filepath" - "strings" - "time" - - "github.com/simulot/immich-go/helpers/configuration" - "github.com/simulot/immich-go/helpers/fileevent" - "github.com/simulot/immich-go/helpers/tzone" - "github.com/simulot/immich-go/immich" - fakeimmich "github.com/simulot/immich-go/internal/fakeImmich" - "github.com/simulot/immich-go/ui" - "github.com/spf13/cobra" - "github.com/telemachus/humane" -) - -func CreateRootCommand() *RootImmichFlags { - rootFlags := RootImmichFlags{ - Command: &cobra.Command{ - Use: "immich-go", - Short: "Immich-go is a command line application to interact with the Immich application using its API", - Long: `An alternative to the immich-CLI command that doesn't depend on nodejs installation. It tries its best for importing google photos takeout archives.`, - }, - } - - rootFlags.Command.Flags().StringVar(&rootFlags.ConfigurationFile, "use-configuration", rootFlags.ConfigurationFile, "Specifies the configuration to use") - rootFlags.Command.Flags().StringVar(&rootFlags.LogLevel, "log-level", rootFlags.LogLevel, "Log level (DEBUG|INFO|WARN|ERROR), default INFO") - rootFlags.Command.Flags().StringVar(&rootFlags.LogFile, "log-file", rootFlags.LogFile, "Write log messages into the file") - rootFlags.Command.Flags().BoolVar(&rootFlags.JSONLog, "log-json", false, "Output line-delimited JSON file, default FALSE") - - // A déplacer dans les sous commandes - // rootFlags.Command.Flags().StringVar(&rootFlags.Server, "server", rootFlags.Server, "Immich server address (http://:2283 or https://)") - // rootFlags.Command.Flags().StringVar(&rootFlags.API, "api", rootFlags.API, "Immich api endpoint (http://container_ip:3301)") - // rootFlags.Command.Flags().StringVar(&rootFlags.Key, "key", rootFlags.Key, "API Key") - // rootFlags.Command.Flags().StringVar(&rootFlags.DeviceUUID, "device-uuid", rootFlags.DeviceUUID, "Set a device UUID") - // rootFlags.Command.Flags().BoolVar(&rootFlags.Debug, "debug", false, "enable debug messages") - // rootFlags.Command.Flags().BoolVar(&rootFlags.APITrace, "api-trace", false, "enable trace of api calls") - // rootFlags.Command.Flags().StringVar(&rootFlags.TimeZone, "time-zone", rootFlags.TimeZone, "Override the system time zone") - // rootFlags.Command.Flags().BoolVar(&rootFlags.SkipSSL, "skip-verify-ssl", false, "Skip SSL verification") - // rootFlags.Command.Flags().BoolVar(&rootFlags.NoUI, "no-ui", false, "Disable the user interface") - // rootFlags.Command.Flags().DurationVar(&rootFlags.ClientTimeout, "client-timeout", 1*time.Minute, "Set server calls timeout, default 1m") - // rootFlags.Command.Flags().BoolVar(&rootFlags.DebugCounters, "debug-counters", false, "generate a CSV file with actions per handled files") - return &rootFlags -} - -// RootImmichFlags is the root command flags -type RootImmichFlags struct { - Command *cobra.Command // Cobra root command - ConfigurationFile string // Path to the configuration file to use - JSONLog bool // Enable JSON structured log - Banner ui.Banner // Immich-go banner - Log *slog.Logger // Logger - Jnl *fileevent.Recorder // Program's logger - LogFile string // Log file name - LogWriterCloser io.WriteCloser // the log writer - LogLevel string // Indicate the log level (string) - Level slog.Level // Set the log level - - // a déplacer dans les sous commandes - Server string // Immich server address (http://:2283/api or https:///api) - API string // Immich api endpoint (http://container_ip:3301) - Key string // API Key - DeviceUUID string // Set a device UUID - APITrace bool // Enable API call traces - Debug bool // Enable the debug mode - TimeZone string // Override default TZ - SkipSSL bool // Skip SSL Verification - ClientTimeout time.Duration // Set the client request timeout - NoUI bool // Disable user interface - DebugCounters bool // Enable CSV action counters per file - DebugFileList bool // When true, the file argument is a file wile the list of Takeout files - APITraceWriter io.WriteCloser // API tracer - APITraceWriterName string // API trace log name - - Immich immich.ImmichInterface // Immich client -} - -func (app *RootImmichFlags) InitSharedFlags() { - app.ConfigurationFile = configuration.DefaultConfigFile() - app.LogFile = configuration.DefaultLogFile() - app.APITrace = false - app.Debug = false - app.SkipSSL = false - app.LogLevel = "INFO" - app.NoUI = false - app.JSONLog = false - app.ClientTimeout = 5 * time.Minute -} - -// // SetFlag add common flags to a flagset -// func (app *ImmichServerFlags) SetFlags(fs *flag.FlagSet) { -// fs.StringVar(&app.ConfigurationFile, "use-configuration", app.ConfigurationFile, "Specifies the configuration to use") -// fs.StringVar(&app.Server, "server", app.Server, "Immich server address (http://:2283 or https://)") -// fs.StringVar(&app.API, "api", app.API, "Immich api endpoint (http://container_ip:3301)") -// fs.StringVar(&app.Key, "key", app.Key, "API Key") -// fs.StringVar(&app.DeviceUUID, "device-uuid", app.DeviceUUID, "Set a device UUID") -// fs.StringVar(&app.LogLevel, "log-level", app.LogLevel, "Log level (DEBUG|INFO|WARN|ERROR), default INFO") -// fs.StringVar(&app.LogFile, "log-file", app.LogFile, "Write log messages into the file") -// fs.BoolFunc("log-json", "Output line-delimited JSON file, default FALSE", myflag.BoolFlagFn(&app.JSONLog, app.JSONLog)) -// fs.BoolFunc("api-trace", "enable trace of api calls", myflag.BoolFlagFn(&app.APITrace, app.APITrace)) -// fs.BoolFunc("debug", "enable debug messages", myflag.BoolFlagFn(&app.Debug, app.Debug)) -// fs.StringVar(&app.TimeZone, "time-zone", app.TimeZone, "Override the system time zone") -// fs.BoolFunc("skip-verify-ssl", "Skip SSL verification", myflag.BoolFlagFn(&app.SkipSSL, app.SkipSSL)) -// fs.BoolFunc("no-ui", "Disable the user interface", myflag.BoolFlagFn(&app.NoUI, app.NoUI)) -// fs.Func("client-timeout", "Set server calls timeout, default 1m", myflag.DurationFlagFn(&app.ClientTimeout, app.ClientTimeout)) -// fs.BoolFunc("debug-counters", "generate a CSV file with actions per handled files", myflag.BoolFlagFn(&app.DebugCounters, false)) -// } - -func (app *RootImmichFlags) Start(ctx context.Context) error { - var joinedErr error - if app.Server != "" { - app.Server = strings.TrimSuffix(app.Server, "/") - } - if app.TimeZone != "" { - _, err := tzone.SetLocal(app.TimeZone) - joinedErr = errors.Join(joinedErr, err) - } - - if app.Jnl == nil { - app.Jnl = fileevent.NewRecorder(nil, app.DebugCounters) - } - - if app.DebugFileList { - app.Immich = &fakeimmich.MockedCLient{} - _ = os.Remove(app.LogFile) - } - - if app.LogFile != "" { - if app.LogWriterCloser == nil { - err := configuration.MakeDirForFile(app.LogFile) - if err != nil { - return err - } - f, err := os.OpenFile(app.LogFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o664) - if err != nil { - return err - } - err = app.Level.UnmarshalText([]byte(strings.ToUpper(app.LogLevel))) - if err != nil { - return err - } - app.SetLogWriter(f) - app.LogWriterCloser = f - } - } - - // If the client isn't yet initialized - if app.Immich == nil { - if app.Server == "" && app.API == "" && app.Key == "" { - conf, err := configuration.ConfigRead(app.ConfigurationFile) - confExist := err == nil - if confExist && app.Server == "" && app.Key == "" && app.API == "" { - app.Server = conf.ServerURL - app.Key = conf.APIKey - app.API = conf.APIURL - } - } - - switch { - case app.Server == "" && app.API == "": - joinedErr = errors.Join(joinedErr, errors.New("missing -server, Immich server address (http://:2283 or https://)")) - case app.Server != "" && app.API != "": - joinedErr = errors.Join(joinedErr, errors.New("give either the -server or the -api option")) - } - if app.Key == "" { - joinedErr = errors.Join(joinedErr, errors.New("missing -key")) - } - - if joinedErr != nil { - return joinedErr - } - - // Connection details are saved into the configuration file - conf := configuration.Configuration{ - ServerURL: app.Server, - APIKey: app.Key, - APIURL: app.API, - } - err := configuration.MakeDirForFile(app.ConfigurationFile) - if err != nil { - return err - } - err = conf.Write(app.ConfigurationFile) - if err != nil { - return fmt.Errorf("can't write into the configuration file: %w", err) - } - app.Log.Info("Connection to the server " + app.Server) - - app.Immich, err = immich.NewImmichClient(app.Server, app.Key, immich.OptionVerifySSL(app.SkipSSL), immich.OptionConnectionTimeout(app.ClientTimeout)) - if err != nil { - return err - } - if app.API != "" { - app.Immich.SetEndPoint(app.API) - } - if app.DeviceUUID != "" { - app.Immich.SetDeviceUUID(app.DeviceUUID) - } - - if app.APITrace { - if app.APITraceWriter == nil { - err := configuration.MakeDirForFile(app.LogFile) - if err != nil { - return err - } - app.APITraceWriterName = strings.TrimSuffix(app.LogFile, filepath.Ext(app.LogFile)) + ".trace.log" - app.APITraceWriter, err = os.OpenFile(app.APITraceWriterName, os.O_CREATE|os.O_WRONLY, 0o664) - if err != nil { - return err - } - app.Immich.EnableAppTrace(app.APITraceWriter) - } - } - - err = app.Immich.PingServer(ctx) - if err != nil { - return err - } - app.Log.Info("Server status: OK") - - user, err := app.Immich.ValidateConnection(ctx) - if err != nil { - return err - } - app.Log.Info(fmt.Sprintf("Connected, user: %s", user.Email)) - } - - return nil -} - -func (app *RootImmichFlags) SetLogWriter(w io.Writer) { - if app.JSONLog { - app.Log = slog.New(slog.NewJSONHandler(w, &slog.HandlerOptions{})) - } else { - app.Log = slog.New(humane.NewHandler(w, &humane.Options{Level: app.Level})) - } - app.Jnl.SetLogger(app.Log) -} diff --git a/cmd/stack/stack.go b/cmd/stack/stack.go index dfeb5d72..48ce2f9d 100644 --- a/cmd/stack/stack.go +++ b/cmd/stack/stack.go @@ -6,47 +6,49 @@ import ( "time" "github.com/simulot/immich-go/cmd" - "github.com/simulot/immich-go/helpers/stacking" "github.com/simulot/immich-go/immich" + cliflags "github.com/simulot/immich-go/internal/cliFlags" + "github.com/simulot/immich-go/internal/stacking" "github.com/simulot/immich-go/ui" "github.com/spf13/cobra" ) type StackCmd struct { - Command *cobra.Command - *cmd.RootImmichFlags - cmd.ImmichServerFlags - AssumeYes bool - DateRange immich.DateRange // Set capture date range + Command *cobra.Command + *cmd.RootImmichFlags // global flags + *cmd.ImmichServerFlags // Immich server flags + AssumeYes bool + DateRange cliflags.DateRange // Set capture date range } func AddCommand(root *cmd.RootImmichFlags) { - stackCmd := StackCmd{ - RootImmichFlags: root, - Command: &cobra.Command{ - Use: "stack", - Short: "Stack photos", - Long: `Stack photos taken in the short periode of time.`, - }, + stackCmd := &cobra.Command{ + Use: "stack", + Short: "Stack photos", + Long: `Stack photos taken in the short period of time.`, } now := time.Now().Add(24 * time.Hour) - _ = stackCmd.DateRange.Set(time.Date(now.Year()-10, 1, 1, 0, 0, 0, 0, time.Local).Format("2006-01-02") + "," + now.Format("2006-01-02")) - stackCmd.Command.RunE = stackCmd.run - stackCmd.Command.Flags().Var(&stackCmd.DateRange, "date-range", "photos must be in the date range") - stackCmd.Command.Flags().Bool("force-yes", false, "Assume YES to all questions") + ImmichServerFlags := cmd.AddImmichServerFlagSet(stackCmd, root) - cmd.NewImmichServerFlagSet(stackCmd.Command, &stackCmd.ImmichServerFlags) - root.Command.AddCommand(stackCmd.Command) + flags := &StackCmd{ + ImmichServerFlags: ImmichServerFlags, + DateRange: cliflags.DateRange{Before: time.Date(1980, 1, 1, 0, 0, 0, 0, time.Local), After: now}, + } + stackCmd.Flags().Var(&flags.DateRange, "date-range", "photos must be taken in the date range") + stackCmd.Flags().Bool("force-yes", false, "Assume YES to all questions") + root.Command.AddCommand(stackCmd) + + // TODO: call the run } func (app *StackCmd) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() - err := app.RootImmichFlags.Initialize() + err := app.RootImmichFlags.Open() if err != nil { return err } - err = app.ImmichServerFlags.Initialize(app.RootImmichFlags) + err = app.ImmichServerFlags.Open(app.RootImmichFlags) if err != nil { return err } diff --git a/cmd/tool/tool.go b/cmd/tool/tool.nogo similarity index 100% rename from cmd/tool/tool.go rename to cmd/tool/tool.nogo diff --git a/cmd/upload/advice.go b/cmd/upload/advice.go new file mode 100644 index 00000000..4c2203f3 --- /dev/null +++ b/cmd/upload/advice.go @@ -0,0 +1,158 @@ +package upload + +import ( + "fmt" + "math" + "path" + "path/filepath" + "time" + + "github.com/simulot/immich-go/adapters" + "github.com/simulot/immich-go/immich" +) + +// - - go:generate stringer -type=AdviceCode +type AdviceCode int + +func (a AdviceCode) String() string { + switch a { + case IDontKnow: + return "IDontKnow" + // case SameNameOnServerButNotSure: + // return "SameNameOnServerButNotSure" + case SmallerOnServer: + return "SmallerOnServer" + case BetterOnServer: + return "BetterOnServer" + case SameOnServer: + return "SameOnServer" + case NotOnServer: + return "NotOnServer" + } + return fmt.Sprintf("advice(%d)", a) +} + +const ( + IDontKnow AdviceCode = iota + SmallerOnServer + BetterOnServer + SameOnServer + NotOnServer +) + +type Advice struct { + Advice AdviceCode + Message string + ServerAsset *immich.Asset + LocalAsset *adapters.LocalAssetFile +} + +func formatBytes(s int) string { + suffixes := []string{"B", "KB", "MB", "GB"} + bytes := float64(s) + base := 1024.0 + if bytes < base { + return fmt.Sprintf("%.0f %s", bytes, suffixes[0]) + } + exp := int64(0) + for bytes >= base && exp < int64(len(suffixes)-1) { + bytes /= base + exp++ + } + roundedSize := math.Round(bytes*10) / 10 + return fmt.Sprintf("%.1f %s", roundedSize, suffixes[exp]) +} + +func (ai *AssetIndex) adviceSameOnServer(sa *immich.Asset) *Advice { + return &Advice{ + Advice: SameOnServer, + Message: fmt.Sprintf("An asset with the same name:%q, date:%q and size:%s exists on the server. No need to upload.", sa.OriginalFileName, sa.ExifInfo.DateTimeOriginal.Format(time.DateTime), formatBytes(sa.ExifInfo.FileSizeInByte)), + ServerAsset: sa, + } +} + +func (ai *AssetIndex) adviceSmallerOnServer(sa *immich.Asset) *Advice { + return &Advice{ + Advice: SmallerOnServer, + Message: fmt.Sprintf("An asset with the same name:%q and date:%q but with smaller size:%s exists on the server. Replace it.", sa.OriginalFileName, sa.ExifInfo.DateTimeOriginal.Format(time.DateTime), formatBytes(sa.ExifInfo.FileSizeInByte)), + ServerAsset: sa, + } +} + +func (ai *AssetIndex) adviceBetterOnServer(sa *immich.Asset) *Advice { + return &Advice{ + Advice: BetterOnServer, + Message: fmt.Sprintf("An asset with the same name:%q and date:%q but with bigger size:%s exists on the server. No need to upload.", sa.OriginalFileName, sa.ExifInfo.DateTimeOriginal.Format(time.DateTime), formatBytes(sa.ExifInfo.FileSizeInByte)), + ServerAsset: sa, + } +} + +func (ai *AssetIndex) adviceNotOnServer() *Advice { + return &Advice{ + Advice: NotOnServer, + Message: "This a new asset, upload it.", + } +} + +// ShouldUpload check if the server has this asset +// +// The server may have different assets with the same name. This happens with photos produced by digital cameras. +// The server may have the asset, but in lower resolution. Compare the taken date and resolution + +func (ai *AssetIndex) ShouldUpload(la *adapters.LocalAssetFile) (*Advice, error) { + filename := la.Title + if path.Ext(filename) == "" { + filename += path.Ext(la.FileName) + } + + ID := la.DeviceAssetID() + + sa := ai.byID[ID] + if sa != nil { + // the same ID exist on the server + return ai.adviceSameOnServer(sa), nil + } + + var l []*immich.Asset + + // check all files with the same name + + n := filepath.Base(filename) + l = ai.byName[n] + if len(l) == 0 { + // n = strings.TrimSuffix(n, filepath.Ext(n)) + l = ai.byName[n] + } + + if len(l) > 0 { + dateTaken := la.Metadata.DateTaken + size := int(la.Size()) + + for _, sa = range l { + compareDate := compareDate(dateTaken, sa.ExifInfo.DateTimeOriginal.Time) + compareSize := size - sa.ExifInfo.FileSizeInByte + + switch { + case compareDate == 0 && compareSize == 0: + return ai.adviceSameOnServer(sa), nil + case compareDate == 0 && compareSize > 0: + return ai.adviceSmallerOnServer(sa), nil + case compareDate == 0 && compareSize < 0: + return ai.adviceBetterOnServer(sa), nil + } + } + } + return ai.adviceNotOnServer(), nil +} + +func compareDate(d1 time.Time, d2 time.Time) int { + diff := d1.Sub(d2) + + switch { + case diff < -5*time.Minute: + return -1 + case diff >= 5*time.Minute: + return +1 + } + return 0 +} diff --git a/cmd/upload/assets.go b/cmd/upload/assets.go index 184eea2c..1dadc5ea 100644 --- a/cmd/upload/assets.go +++ b/cmd/upload/assets.go @@ -5,7 +5,7 @@ import ( "path" "strings" - "github.com/simulot/immich-go/browser" + "github.com/simulot/immich-go/adapters" "github.com/simulot/immich-go/immich" ) @@ -40,7 +40,7 @@ func (ai *AssetIndex) Len() int { return len(ai.assets) } -func (ai *AssetIndex) AddLocalAsset(la *browser.LocalAssetFile, immichID string) { +func (ai *AssetIndex) AddLocalAsset(la *adapters.LocalAssetFile, immichID string) { sa := &immich.Asset{ ID: immichID, DeviceAssetID: la.DeviceAssetID(), diff --git a/cmd/upload/cmdFolder.go b/cmd/upload/cmdFolder.go new file mode 100644 index 00000000..64551369 --- /dev/null +++ b/cmd/upload/cmdFolder.go @@ -0,0 +1,80 @@ +package upload + +import ( + "errors" + "strings" + + "github.com/simulot/immich-go/adapters/folder" + "github.com/simulot/immich-go/cmd" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/fshelper" + "github.com/spf13/cobra" +) + +func addFromFolderCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImmichFlags) { + cmdFolder := &cobra.Command{ + Use: "from-folder [flags] [...]", + Short: "import files from a folder structure", + } + cmdFolder.Flags().SortFlags = false + + cmdUpServerFlags := cmd.AddImmichServerFlagSet(cmdFolder, rootFlags) + CommonFlags := addCommonFlags(cmdFolder) + + UploadFolderFlags := folder.ImportFlags{} + folder.AddUploadFolderFlags(cmdFolder, &UploadFolderFlags) + + // TODO: provide the mapping between old and new flags + + // TODO: add missing options + // -stack-burst + // -stack-jpg-raw + + // TODO: Add Examples + // immich-go upload from-folder --ban-file @eaDir/ --ban-file @__thumb/ --ban-file SYNOFILE_THUMB_* + + uploadCmd.AddCommand(cmdFolder) + + cmdFolder.RunE = func(cmd *cobra.Command, args []string) error { + // if UploadFolderFlags.ImportIntoAlbum != "" && UploadFolderFlags.UsePathAsAlbumName != folder.FolderModeNone { + // UploadFolderFlags.UsePathAsAlbumName = folder.FolderModeNone + // } + UpCmd := &UpCmd{ + Root: rootFlags, + Server: cmdUpServerFlags, + CommonFlags: CommonFlags, + UploadFolderFlags: &UploadFolderFlags, + } + + ctx := cmd.Context() + + err := UpCmd.Root.Open() + if err != nil { + return err + } + + UpCmd.Jnl = fileevent.NewRecorder(rootFlags.Log, false) + + fsyss, err := fshelper.ParsePath(args) + if err != nil { + return err + } + if len(fsyss) == 0 { + UpCmd.Root.Message("No file found matching the pattern: %s", strings.Join(args, ",")) + return errors.New("No file found matching the pattern: " + strings.Join(args, ",")) + } + + err = UpCmd.Server.Open(UpCmd.Root) + if err != nil { + return err + } + UploadFolderFlags.SupportedMedia = UpCmd.Server.Immich.SupportedMedia() + + adapter, err := folder.NewLocalFiles(ctx, UpCmd.Jnl, &UploadFolderFlags, fsyss...) + if err != nil { + return err + } + + return UpCmd.run(ctx, adapter) + } +} diff --git a/cmd/upload/cmdGooglePhotos.nogo b/cmd/upload/cmdGooglePhotos.nogo new file mode 100644 index 00000000..0bc1e320 --- /dev/null +++ b/cmd/upload/cmdGooglePhotos.nogo @@ -0,0 +1,42 @@ +package upload + +import ( + "fmt" + + gp "github.com/simulot/immich-go/adapters/googlePhotos" + "github.com/simulot/immich-go/cmd" + "github.com/spf13/cobra" +) + +func addFromGooglePhotosCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImmichFlags) { + cmdGP := &cobra.Command{ + Use: "from-google-photos [flags] | ", + Short: "Import files from a Google Photos takeout zipped archive or decompressed folder", + Args: cobra.MinimumNArgs(1), + } + cmdGP.Flags().SortFlags = false + uploadCmd.AddCommand(cmdGP) + + cmdUpServerFlags := cmd.AddImmichServerFlagSet(cmdGP) + CommonFlags := addCommonFlags(cmdGP) + gpFlags := gp.AddGoogleTakeoutFlags(cmdGP) + + cmdGP.RunE = func(cmd *cobra.Command, args []string) error { + _ = gpFlags + _ = CommonFlags + + err := rootFlags.Start() + if err != nil { + return err + } + err = cmdUpServerFlags.Start(rootFlags) + if err != nil { + return err + } + if cmdUpServerFlags.DryRun { + fmt.Println("Dry run mode enabled. No files will be uploaded.") + } + fmt.Println("run from-google-photos") + return nil + } +} diff --git a/cmd/upload/configuration.go b/cmd/upload/configuration.go deleted file mode 100644 index 9ceb0fe2..00000000 --- a/cmd/upload/configuration.go +++ /dev/null @@ -1,56 +0,0 @@ -package upload - -import ( - "slices" - "strings" -) - -type Configuration struct { - SelectExtensions StringList - ExcludeExtensions StringList - Recursive bool -} - -func (c *Configuration) Validate() { - c.SelectExtensions = checkExtensions(c.SelectExtensions) - c.ExcludeExtensions = checkExtensions(c.ExcludeExtensions) -} - -func checkExtensions(l StringList) StringList { - var r StringList - - for _, e := range l { - if !strings.HasPrefix(e, ".") { - e = "." + e - } - e = strings.ToLower(e) - r = append(r, e) - } - return r -} - -type StringList []string - -func (sl *StringList) Set(s string) error { - l := strings.Split(s, ",") - (*sl) = append((*sl), l...) - return nil -} - -func (sl StringList) String() string { - return strings.Join(sl, ", ") -} - -func (sl StringList) Include(s string) bool { - if len(sl) == 0 { - return true - } - return slices.Contains(sl, strings.ToLower(s)) -} - -func (sl StringList) Exclude(s string) bool { - if len(sl) == 0 { - return false - } - return slices.Contains(sl, strings.ToLower(s)) -} diff --git a/cmd/upload/e2e_takeout_test.go b/cmd/upload/e2e_takeout_test.nogo similarity index 100% rename from cmd/upload/e2e_takeout_test.go rename to cmd/upload/e2e_takeout_test.nogo diff --git a/cmd/upload/e2e_upload_folder_test.go b/cmd/upload/e2e_upload_folder_test.nogo similarity index 100% rename from cmd/upload/e2e_upload_folder_test.go rename to cmd/upload/e2e_upload_folder_test.nogo diff --git a/cmd/upload/flagsCommon.go b/cmd/upload/flagsCommon.go new file mode 100644 index 00000000..b608c456 --- /dev/null +++ b/cmd/upload/flagsCommon.go @@ -0,0 +1,25 @@ +package upload + +import ( + "github.com/simulot/immich-go/internal/fileevent" + "github.com/spf13/cobra" +) + +// CommonFlags represents a set of common flags used for filtering assets. +type CommonFlags struct { + NoUI bool // Disable UI + StackJpgWithRaw bool // Stack jpg/raw (Default: TRUE) + StackBurstPhotos bool // Stack burst (Default: TRUE) + + Jnl *fileevent.Recorder // Log file events +} + +// addCommonFlags adds the common flags to a Cobra command. +func addCommonFlags(cmd *cobra.Command) *CommonFlags { + flags := CommonFlags{} + + cmd.Flags().BoolVar(&flags.NoUI, "no-ui", false, "Disable the user interface") + cmd.Flags().BoolVar(&flags.StackJpgWithRaw, "stack-jpg-with-raw", false, "Stack JPG images with their corresponding raw images in Immich") + cmd.Flags().BoolVar(&flags.StackBurstPhotos, "stack-burst-photos", false, "Stack bursts of photos in Immich") + return &flags +} diff --git a/cmd/upload/noui.go b/cmd/upload/noui.go index 7fb81075..98c4e2f8 100644 --- a/cmd/upload/noui.go +++ b/cmd/upload/noui.go @@ -8,7 +8,7 @@ import ( "sync/atomic" "time" - "github.com/simulot/immich-go/helpers/fileevent" + "github.com/simulot/immich-go/internal/fileevent" "golang.org/x/sync/errgroup" ) @@ -42,21 +42,22 @@ func (app *UpCmd) runNoUI(ctx context.Context) error { immichPct = 100 } - if app.GooglePhotos { - gpTotal := app.Jnl.TotalAssets() - gpProcessed := app.Jnl.TotalProcessedGP() + // TODO: + // if app.GooglePhotos { + // gpTotal := app.Jnl.TotalAssets() + // gpProcessed := app.Jnl.TotalProcessedGP() - gpPercent := int(100 * gpProcessed / gpTotal) - upProcessed := int64(0) - if preparationDone.Load() { - upProcessed = app.Jnl.TotalProcessed(app.ForceUploadWhenNoJSON) - } - upTotal := app.Jnl.TotalAssets() - upPercent := 100 * upProcessed / upTotal + // gpPercent := int(100 * gpProcessed / gpTotal) + // upProcessed := int64(0) + // if preparationDone.Load() { + // upProcessed = app.Jnl.TotalProcessed(app.ForceUploadWhenNoJSON) + // } + // upTotal := app.Jnl.TotalAssets() + // upPercent := 100 * upProcessed / upTotal - return fmt.Sprintf("\rImmich read %d%%, Assets found: %d, Google Photos Analysis: %d%%, Upload errors: %d, Uploaded %d%% %s", - immichPct, app.Jnl.TotalAssets(), gpPercent, counts[fileevent.UploadServerError], upPercent, string(spinner[spinIdx])) - } + // return fmt.Sprintf("\rImmich read %d%%, Assets found: %d, Google Photos Analysis: %d%%, Upload errors: %d, Uploaded %d%% %s", + // immichPct, app.Jnl.TotalAssets(), gpPercent, counts[fileevent.UploadServerError], upPercent, string(spinner[spinIdx])) + // } return fmt.Sprintf("\rImmich read %d%%, Assets found: %d, Upload errors: %d, Uploaded %d %s", immichPct, app.Jnl.TotalAssets(), counts[fileevent.UploadServerError], counts[fileevent.Uploaded], string(spinner[spinIdx])) } @@ -123,11 +124,12 @@ func (app *UpCmd) runNoUI(ctx context.Context) error { if counts[fileevent.Error]+counts[fileevent.UploadServerError] > 0 { messages.WriteString("Some errors have occurred. Look at the log file for details\n") } - if app.GooglePhotos && counts[fileevent.AnalysisMissingAssociatedMetadata] > 0 && !app.ForceUploadWhenNoJSON { - messages.WriteString(fmt.Sprintf("\n%d JSON files are missing.\n", counts[fileevent.AnalysisMissingAssociatedMetadata])) - messages.WriteString("- Verify if all takeout parts have been included in the processing.\n") - messages.WriteString("- Request another takeout, either for one year at a time or in smaller increments.\n") - } + // TODO + // if app.GooglePhotos && counts[fileevent.AnalysisMissingAssociatedMetadata] > 0 && !app.ForceUploadWhenNoJSON { + // messages.WriteString(fmt.Sprintf("\n%d JSON files are missing.\n", counts[fileevent.AnalysisMissingAssociatedMetadata])) + // messages.WriteString("- Verify if all takeout parts have been included in the processing.\n") + // messages.WriteString("- Request another takeout, either for one year at a time or in smaller increments.\n") + // } if messages.Len() > 0 { cancel(errors.New(messages.String())) } diff --git a/cmd/upload/run.go b/cmd/upload/run.go new file mode 100644 index 00000000..e8129426 --- /dev/null +++ b/cmd/upload/run.go @@ -0,0 +1,332 @@ +package upload + +import ( + "context" + "fmt" + "strings" + + "github.com/gdamore/tcell/v2" + "github.com/simulot/immich-go/adapters" + "github.com/simulot/immich-go/immich" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/stacking" +) + +func (app *UpCmd) run(ctx context.Context, adapter adapters.Adapter) error { + // if app.CommonFlags.StackBurstPhotos || app.CommonFlags.StackJpgWithRaw { + // app.stacks = stacking.NewStackBuilder(app.ImmichServerFlags.Immich.SupportedMedia()) + // } + + // todo counters + // defer func() { + // if app.DebugCounters { + // fn := strings.TrimSuffix(app.LogFile, filepath.Ext(app.LogFile)) + ".csv" + // f, err := os.Create(fn) + // if err == nil { + // _ = app.Jnl.WriteFileCounts(f) + // fmt.Println("\nCheck the counters file: ", f.Name()) + // f.Close() + // } + // } + // }() + + app.browser = adapter + + if app.NoUI { + return app.runNoUI(ctx) + } + _, err := tcell.NewScreen() + if err != nil { + app.Root.Log.Error("can't initialize the screen for the UI mode. Falling back to no-gui mode") + fmt.Println("can't initialize the screen for the UI mode. Falling back to no-gui mode") + return app.runNoUI(ctx) + } + return app.runUI(ctx) +} + +func (app *UpCmd) getImmichAlbums(ctx context.Context) error { + serverAlbums, err := app.Server.Immich.GetAllAlbums(ctx) + app.albums = map[string]*immich.AlbumSimplified{} + if err != nil { + return fmt.Errorf("can't get the album list from the server: %w", err) + } + for _, a := range serverAlbums { + select { + case <-ctx.Done(): + return ctx.Err() + default: + app.albums[a.AlbumName] = &a + } + } + return nil +} + +func (app *UpCmd) getImmichAssets(ctx context.Context, updateFn progressUpdate) error { + statistics, err := app.Server.Immich.GetAssetStatistics(ctx) + if err != nil { + return err + } + totalOnImmich := statistics.Total + received := 0 + + var list []*immich.Asset + + err = app.Server.Immich.GetAllAssetsWithFilter(ctx, func(a *immich.Asset) error { + select { + case <-ctx.Done(): + return ctx.Err() + default: + received++ + list = append(list, a) + if updateFn != nil { + updateFn(received, totalOnImmich) + } + return nil + } + }) + if err != nil { + return err + } + if updateFn != nil { + updateFn(totalOnImmich, totalOnImmich) + } + app.AssetIndex = &AssetIndex{ + assets: list, + } + app.AssetIndex.ReIndex() + return nil +} + +func (app *UpCmd) uploadLoop(ctx context.Context) error { + var err error + assetChan := app.browser.Browse(ctx) +assetLoop: + for { + select { + case <-ctx.Done(): + return ctx.Err() + + case a, ok := <-assetChan: + if !ok { + break assetLoop + } + if a.Err != nil { + app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, a.Err.Error()) + } else { + err = app.handleAsset(ctx, a) + if err != nil { + app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, a.Err.Error()) + } + } + } + } + + if app.StackBurstPhotos || app.StackJpgWithRaw { + stacks := app.stacks.Stacks() + if len(stacks) > 0 { + app.Root.Log.Info("Creating stacks") + nextStack: + for _, s := range stacks { + switch { + case !app.StackBurstPhotos && s.StackType == stacking.StackBurst: + continue nextStack + case !app.StackJpgWithRaw && s.StackType == stacking.StackRawJpg: + continue nextStack + } + app.Root.Message(fmt.Sprintf("Stacking %s...", strings.Join(s.Names, ", "))) + err = app.Server.Immich.StackAssets(ctx, s.CoverID, s.IDs) + if err != nil { + app.Root.Log.Error(fmt.Sprintf("Can't stack images: %s", err)) + } + } + } + } + + // if app.CreateAlbums || app.CreateAlbumAfterFolder || (app.KeepPartner && app.PartnerAlbum != "") || app.ImportIntoAlbum != "" { + // app.Log.Info("Managing albums") + // err = app.ManageAlbums(ctx) + // if err != nil { + // app.Log.Error(err.Error()) + // err = nil + // } + // } + + if len(app.deleteServerList) > 0 { + ids := []string{} + for _, da := range app.deleteServerList { + ids = append(ids, da.ID) + } + err := app.DeleteServerAssets(ctx, ids) + if err != nil { + return fmt.Errorf("can't delete server's assets: %w", err) + } + } + + // if len(app.deleteLocalList) > 0 { + // err = app.DeleteLocalAssets() + // } + + return err +} + +func (app *UpCmd) handleAsset(ctx context.Context, a *adapters.LocalAssetFile) error { + defer func() { + a.Close() // Close and clean resources linked to the local asset + }() + + advice, err := app.AssetIndex.ShouldUpload(a) + if err != nil { + return err + } + + switch advice.Advice { + case NotOnServer: // Upload and manage albums + ID, err := app.UploadAsset(ctx, a) + if err != nil { + return nil + } + app.manageAssetAlbum(ctx, ID, a) + + case SmallerOnServer: // Upload, manage albums and delete the server's asset + app.Jnl.Record(ctx, fileevent.UploadUpgraded, a, a.FileName, "reason", advice.Message) + + // Get existing asset's albums, if any + for _, al := range advice.ServerAsset.Albums { + a.Albums = append(a.Albums, adapters.LocalAlbum{ + Title: al.AlbumName, + Description: al.Description, + }) + } + + // Upload the superior asset + ID, err := app.UploadAsset(ctx, a) + if err != nil { + return nil + } + app.manageAssetAlbum(ctx, ID, a) + + // delete the existing lower quality asset + err = app.Server.Immich.DeleteAssets(ctx, []string{ID}, true) + if err != nil { + app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, "error", err.Error()) + } + + case SameOnServer: // manage albums + // Set add the server asset into albums determined locally + if !advice.ServerAsset.JustUploaded { + app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, a, a.FileName, "reason", advice.Message) + } else { + app.Jnl.Record(ctx, fileevent.AnalysisLocalDuplicate, a, a.FileName) + } + app.manageAssetAlbum(ctx, advice.ServerAsset.ID, a) + + case BetterOnServer: // and manage albums + app.Jnl.Record(ctx, fileevent.UploadServerBetter, a, a.FileName, "reason", advice.Message) + app.manageAssetAlbum(ctx, advice.ServerAsset.ID, a) + } + + return nil +} + +// manageAssetAlbum adds the asset to all albums it should be in. +// If an album does not exist, it is created. +// Errors are logged. +func (app *UpCmd) manageAssetAlbum(ctx context.Context, id string, a *adapters.LocalAssetFile) { + addedTo := map[string]bool{} + + for _, album := range a.Albums { + if addedTo[album.Title] { + continue + } + title := album.Title + l, exist := app.albums[title] + if !exist { + newAl, err := app.Server.Immich.CreateAlbum(ctx, title, album.Description, []string{id}) + if err != nil { + app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, err) + continue + } + app.Jnl.Record(ctx, fileevent.UploadAddToAlbum, a, a.FileName, "Album", newAl.AlbumName) + app.albums[title] = &newAl + l = &newAl + } else { + _, err := app.Server.Immich.AddAssetToAlbum(ctx, l.ID, []string{id}) + if err != nil { + app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, err) + continue + } + app.Jnl.Record(ctx, fileevent.UploadAddToAlbum, a, a.FileName, "Album", l.AlbumName) + } + addedTo[l.AlbumName] = true + } +} + +// func (app *UpCmd) isInAlbum(a *adapters.LocalAssetFile, album string) bool { +// for _, al := range a.Albums { +// if app.albumName(al) == album { +// return true +// } +// } +// return false +// } + +// UploadAsset upload the asset on the server +// Add the assets into listed albums +// return ID of the asset +func (app *UpCmd) UploadAsset(ctx context.Context, a *adapters.LocalAssetFile) (string, error) { + var resp, liveResp immich.AssetResponse + var err error + + if a.LivePhoto != nil { + liveResp, err = app.Server.Immich.AssetUpload(ctx, a.LivePhoto) + if err == nil { + if liveResp.Status == immich.UploadDuplicate { + app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, a.LivePhoto, a.LivePhoto.FileName, "info", "the server has this file") + } else { + app.Jnl.Record(ctx, fileevent.Uploaded, a.LivePhoto, a.LivePhoto.FileName) + } + a.LivePhotoID = liveResp.ID + } else { + app.Jnl.Record(ctx, fileevent.UploadServerError, a.LivePhoto, a.LivePhoto.FileName, "error", err.Error()) + } + } + b := *a // Keep a copy of the asset to log errors specifically on the image + resp, err = app.Server.Immich.AssetUpload(ctx, a) + if err == nil { + if resp.Status == immich.UploadDuplicate { + app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, a, a.FileName, "info", "the server has this file") + } else { + b.LivePhoto = nil + app.Jnl.Record(ctx, fileevent.Uploaded, &b, b.FileName, "capture date", b.Metadata.DateTaken.String()) + } + } else { + app.Jnl.Record(ctx, fileevent.UploadServerError, a, a.FileName, "error", err.Error()) + return "", err + } + + return resp.ID, nil +} + +/* +func (app *UpCmd) DeleteLocalAssets() error { + app.RootImmichFlags.Message(fmt.Sprintf("%d local assets to delete.", len(app.deleteLocalList))) + + for _, a := range app.deleteLocalList { + if !app.DryRun { + app.Log.Info(fmt.Sprintf("delete file %q", a.Title)) + err := a.Remove() + if err != nil { + return err + } + } else { + app.Log.Info(fmt.Sprintf("file %q not deleted, dry run mode.", a.Title)) + } + } + return nil +} +*/ + +func (app *UpCmd) DeleteServerAssets(ctx context.Context, ids []string) error { + app.Root.Message(fmt.Sprintf("%d server assets to delete.", len(ids))) + return app.Server.Immich.DeleteAssets(ctx, ids, false) +} diff --git a/cmd/upload/ui.go b/cmd/upload/ui.go index b13ecc09..204c2f62 100644 --- a/cmd/upload/ui.go +++ b/cmd/upload/ui.go @@ -13,7 +13,7 @@ import ( "github.com/gdamore/tcell/v2" "github.com/navidys/tvxwidgets" "github.com/rivo/tview" - "github.com/simulot/immich-go/helpers/fileevent" + "github.com/simulot/immich-go/internal/fileevent" "golang.org/x/sync/errgroup" ) @@ -69,7 +69,7 @@ func (app *UpCmd) runUI(ctx context.Context) error { uiApp.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { switch event.Key() { case tcell.KeyCtrlQ, tcell.KeyCtrlC: - app.Log = ui.prevSlog + app.Root.Log = ui.prevSlog cancel(errors.New("interrupted: Ctrl+C or Ctrl+Q pressed")) case tcell.KeyEnter: if uploadDone.Load() { @@ -89,7 +89,7 @@ func (app *UpCmd) runUI(ctx context.Context) error { tick.Stop() return case <-tick.C: - jobs, err := app.Immich.GetJobs(ctx) + jobs, err := app.Server.Immich.GetJobs(ctx) if err == nil { jobCount := 0 jobWaiting := 0 @@ -127,15 +127,16 @@ func (app *UpCmd) runUI(ctx context.Context) error { for c := range ui.counts { ui.getCountView(c, counts[c]) } - if app.GooglePhotos { - ui.immichPrepare.SetMaxValue(int(app.Jnl.TotalAssets())) - ui.immichPrepare.SetValue(int(app.Jnl.TotalProcessedGP())) - - if preparationDone.Load() { - ui.immichUpload.SetMaxValue(int(app.Jnl.TotalAssets())) - } - ui.immichUpload.SetValue(int(app.Jnl.TotalProcessed(app.ForceUploadWhenNoJSON))) - } + // TODO: + // if app.GooglePhotos { + // ui.immichPrepare.SetMaxValue(int(app.Jnl.TotalAssets())) + // ui.immichPrepare.SetValue(int(app.Jnl.TotalProcessedGP())) + + // if preparationDone.Load() { + // ui.immichUpload.SetMaxValue(int(app.Jnl.TotalAssets())) + // } + // ui.immichUpload.SetValue(int(app.Jnl.TotalProcessed(app.ForceUploadWhenNoJSON))) + // } }) } } @@ -197,11 +198,12 @@ func (app *UpCmd) runUI(ctx context.Context) error { if counts[fileevent.Error]+counts[fileevent.UploadServerError] > 0 { messages.WriteString("Some errors have occurred. Look at the log file for details\n") } - if app.GooglePhotos && counts[fileevent.AnalysisMissingAssociatedMetadata] > 0 && !app.ForceUploadWhenNoJSON { - messages.WriteString(fmt.Sprintf("\n%d JSON files are missing.\n", counts[fileevent.AnalysisMissingAssociatedMetadata])) - messages.WriteString("- Verify if all takeout parts have been included in the processing.\n") - messages.WriteString("- Request another takeout, either for one year at a time or in smaller increments.\n") - } + // TODO: + // if app.GooglePhotos && counts[fileevent.AnalysisMissingAssociatedMetadata] > 0 && !app.ForceUploadWhenNoJSON { + // messages.WriteString(fmt.Sprintf("\n%d JSON files are missing.\n", counts[fileevent.AnalysisMissingAssociatedMetadata])) + // messages.WriteString("- Verify if all takeout parts have been included in the processing.\n") + // messages.WriteString("- Request another takeout, either for one year at a time or in smaller increments.\n") + // } modal := newModal(messages.String()) pages.AddPage("modal", modal, true, false) @@ -254,7 +256,7 @@ func newUI(ctx context.Context, app *UpCmd) *uiPage { ui.screen = tview.NewGrid() - ui.screen.AddItem(tview.NewTextView().SetText(app.Banner.String()), 0, 0, 1, 1, 0, 0, false) + ui.screen.AddItem(tview.NewTextView().SetText(app.Root.Banner.String()), 0, 0, 1, 1, 0, 0, false) ui.prepareCounts = tview.NewGrid() ui.prepareCounts.SetBorder(true).SetTitle("Input analysis") @@ -281,7 +283,7 @@ func newUI(ctx context.Context, app *UpCmd) *uiPage { ui.addCounter(ui.uploadCounts, 5, "Server has better quality", fileevent.UploadServerBetter) ui.uploadCounts.SetSize(6, 2, 1, 1).SetColumns(30, 10) - if _, err := app.Immich.GetJobs(ctx); err == nil { + if _, err := app.Server.Immich.GetJobs(ctx); err == nil { ui.watchJobs = true ui.serverJobs = tvxwidgets.NewSparkline() @@ -305,15 +307,15 @@ func newUI(ctx context.Context, app *UpCmd) *uiPage { // Hijack the log ui.logView = tview.NewTextView().SetMaxLines(100).ScrollToEnd() - ui.prevSlog = app.RootImmichFlags.Log + ui.prevSlog = app.Root.Log - if app.RootImmichFlags.LogWriterCloser != nil { - w := io.MultiWriter(app.RootImmichFlags.LogWriterCloser, ui.logView) - app.SetLogWriter(w) + if app.Root.LogWriterCloser != nil { + w := io.MultiWriter(app.Root.LogWriterCloser, ui.logView) + app.Root.SetLogWriter(w) } else { - app.SetLogWriter(ui.logView) + app.Root.SetLogWriter(ui.logView) } - app.RootImmichFlags.Jnl.SetLogger(app.RootImmichFlags.Log) + app.Jnl.SetLogger(app.Root.Log) ui.logView.SetBorder(true).SetTitle("Log") ui.screen.AddItem(ui.logView, 2, 0, 1, 1, 0, 0, false) @@ -334,13 +336,15 @@ func newUI(ctx context.Context, app *UpCmd) *uiPage { ui.footer = tview.NewGrid() ui.footer.AddItem(tview.NewTextView().SetText("Immich content:").SetTextAlign(tview.AlignCenter), 0, 0, 1, 1, 0, 0, false).AddItem(ui.immichReading, 0, 1, 1, 1, 0, 0, false) - if app.GooglePhotos { - ui.footer.AddItem(tview.NewTextView().SetText("Google Photo puzzle:").SetTextAlign(tview.AlignCenter), 0, 2, 1, 1, 0, 0, false).AddItem(ui.immichPrepare, 0, 3, 1, 1, 0, 0, false) - ui.footer.AddItem(tview.NewTextView().SetText("Uploading:").SetTextAlign(tview.AlignCenter), 0, 4, 1, 1, 0, 0, false).AddItem(ui.immichUpload, 0, 5, 1, 1, 0, 0, false) - ui.footer.SetColumns(25, 0, 25, 0, 25, 0) - } else { - ui.footer.SetColumns(25, 0) - } + + // TODO + // if app.GooglePhotos { + // ui.footer.AddItem(tview.NewTextView().SetText("Google Photo puzzle:").SetTextAlign(tview.AlignCenter), 0, 2, 1, 1, 0, 0, false).AddItem(ui.immichPrepare, 0, 3, 1, 1, 0, 0, false) + // ui.footer.AddItem(tview.NewTextView().SetText("Uploading:").SetTextAlign(tview.AlignCenter), 0, 4, 1, 1, 0, 0, false).AddItem(ui.immichUpload, 0, 5, 1, 1, 0, 0, false) + // ui.footer.SetColumns(25, 0, 25, 0, 25, 0) + // } else { + ui.footer.SetColumns(25, 0) + // } ui.screen.AddItem(ui.footer, 3, 0, 1, 1, 0, 0, false) // Adjust section's height diff --git a/cmd/upload/upload.go b/cmd/upload/upload.go index 79c23456..2a776c6c 100644 --- a/cmd/upload/upload.go +++ b/cmd/upload/upload.go @@ -3,77 +3,56 @@ package upload import ( - "context" - "flag" - "fmt" - "io/fs" - "math" - "os" - "path" - "path/filepath" - "strings" - "time" - - "github.com/gdamore/tcell/v2" - "github.com/google/uuid" - "github.com/simulot/immich-go/browser" - "github.com/simulot/immich-go/browser/files" - "github.com/simulot/immich-go/browser/gp" + "errors" + + "github.com/simulot/immich-go/adapters" + "github.com/simulot/immich-go/adapters/folder" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/stacking" + + // gp "github.com/simulot/immich-go/adapters/googlePhotos" "github.com/simulot/immich-go/cmd" - "github.com/simulot/immich-go/helpers/fileevent" - "github.com/simulot/immich-go/helpers/fshelper" - "github.com/simulot/immich-go/helpers/gen" - "github.com/simulot/immich-go/helpers/myflag" - "github.com/simulot/immich-go/helpers/namematcher" - "github.com/simulot/immich-go/helpers/stacking" "github.com/simulot/immich-go/immich" - "github.com/simulot/immich-go/internal/fakefs" + "github.com/spf13/cobra" ) type UpCmd struct { - *cmd.RootImmichFlags // shared flags and immich client - - fsyss []fs.FS // pseudo file system to browse - - GooglePhotos bool // For reading Google Photos takeout files - Delete bool // Delete original file after import - CreateAlbumAfterFolder bool // Create albums for assets based on the parent folder or a given name - UseFullPathAsAlbumName bool // Create albums for assets based on the full path to the asset - AlbumNamePathSeparator string // Determines how multiple (sub) folders, if any, will be joined - ImportIntoAlbum string // All assets will be added to this album - PartnerAlbum string // Partner's assets will be added to this album - Import bool // Import instead of upload - DeviceUUID string // Set a device UUID - Paths []string // Path to explore - DateRange immich.DateRange // Set capture date range - ImportFromAlbum string // Import assets from this albums - CreateAlbums bool // Create albums when exists in the source - KeepTrashed bool // Import trashed assets - KeepPartner bool // Import partner's assets - KeepUntitled bool // Keep untitled albums - UseFolderAsAlbumName bool // Use folder's name instead of metadata's title as Album name - DryRun bool // Display actions but don't change anything - 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) - AutoArchive bool // Automatically archive photos that are also archived in google photos (Default: TRUE) - WhenNoDate string // When the date can't be determined use the FILE's date or NOW (default: FILE) - ForceUploadWhenNoJSON bool // Some takeout don't supplies all JSON. When true, files are uploaded without any additional metadata - BannedFiles namematcher.List // List of banned file name patterns - - BrowserConfig Configuration - - albums map[string]immich.AlbumSimplified // Albums by title - - AssetIndex *AssetIndex // List of assets present on the server - deleteServerList []*immich.Asset // List of server assets to remove - deleteLocalList []*browser.LocalAssetFile // List of local assets to remove - // updateAlbums map[string]map[string]any // track immich albums changes - stacks *stacking.StackBuilder - browser browser.Browser + UploadCmd *cobra.Command // The import command + Jnl *fileevent.Recorder // File event recorder + Root *cmd.RootImmichFlags // global flags + Server *cmd.ImmichServerFlags // server flags attached to the import command + *CommonFlags // Common flags between import sub-commands + UploadFolderFlags *folder.ImportFlags // Folder import flags + // GooglePhotosFlags *gp.ImportFlags // Google Photos import flags + + AssetIndex *AssetIndex // List of assets present on the server + deleteServerList []*immich.Asset // List of server assets to remove + // deleteLocalList []*adapters.LocalAssetFile // List of local assets to remove + stacks *stacking.StackBuilder + browser adapters.Adapter + DebugCounters bool // Enable CSV action counters per file + + // fsyss []fs.FS // pseudo file system to browse + Paths []string // Path to explore + albums map[string]*immich.AlbumSimplified // Albums by title } +func AddCommand(root *cmd.RootImmichFlags) { + upCommand := &cobra.Command{ + Use: "upload", + Short: "upload photos and videos on the immich sever", + } + + upCommand.RunE = func(cmd *cobra.Command, args []string) error { + return errors.New("the upload command need a valid sub command") + } + root.Command.AddCommand(upCommand) + addFromFolderCommand(upCommand, root) + // addFromGooglePhotosCommand(upCommand, root) +} + +/* + func UploadCommand(ctx context.Context, common *cmd.RootImmichFlags, args []string) error { app, err := newCommand(ctx, common, args, nil) if err != nil { @@ -106,7 +85,7 @@ func newCommand(ctx context.Context, common *cmd.RootImmichFlags, args []string, return nil, err } - app.RootImmichFlags.SetFlags(cmd) + // app.RootImmichFlags.SetFlags(cmd) cmd.BoolFunc( "dry-run", "display actions but don't touch source or destination", @@ -238,707 +217,4 @@ func newCommand(ctx context.Context, common *cmd.RootImmichFlags, args []string, } return &app, nil } - -func (app *UpCmd) run(ctx context.Context) error { - defer func() { - _ = fshelper.CloseFSs(app.fsyss) - }() - - if app.CreateStacks || app.StackBurst || app.StackJpgRaws { - app.stacks = stacking.NewStackBuilder(app.Immich.SupportedMedia()) - } - - var err error - switch { - case app.GooglePhotos: - app.Log.Info("Browsing google take out archive...") - app.browser, err = app.ReadGoogleTakeOut(ctx, app.fsyss) - default: - app.Log.Info("Browsing folder(s)...") - app.browser, err = app.ExploreLocalFolder(ctx, app.fsyss) - } - - if err != nil { - return err - } - - defer func() { - if app.DebugCounters { - fn := strings.TrimSuffix(app.LogFile, filepath.Ext(app.LogFile)) + ".csv" - f, err := os.Create(fn) - if err == nil { - _ = app.Jnl.WriteFileCounts(f) - fmt.Println("\nCheck the counters file: ", f.Name()) - f.Close() - } - } - }() - - if app.NoUI { - return app.runNoUI(ctx) - } - - _, err = tcell.NewScreen() - if err != nil { - app.Log.Error("can't initialize the screen for the UI mode. Falling back to no-gui mode") - fmt.Println("can't initialize the screen for the UI mode. Falling back to no-gui mode") - return app.runNoUI(ctx) - } - return app.runUI(ctx) -} - -func (app *UpCmd) getImmichAlbums(ctx context.Context) error { - serverAlbums, err := app.Immich.GetAllAlbums(ctx) - app.albums = map[string]immich.AlbumSimplified{} - if err != nil { - return fmt.Errorf("can't get the album list from the server: %w", err) - } - for _, a := range serverAlbums { - select { - case <-ctx.Done(): - return ctx.Err() - default: - app.albums[a.AlbumName] = a - } - } - return nil -} - -func (app *UpCmd) getImmichAssets(ctx context.Context, updateFn progressUpdate) error { - statistics, err := app.Immich.GetAssetStatistics(ctx) - if err != nil { - return err - } - totalOnImmich := statistics.Total - received := 0 - - var list []*immich.Asset - - err = app.Immich.GetAllAssetsWithFilter(ctx, func(a *immich.Asset) error { - select { - case <-ctx.Done(): - return ctx.Err() - default: - received++ - list = append(list, a) - if updateFn != nil { - updateFn(received, totalOnImmich) - } - return nil - } - }) - if err != nil { - return err - } - if updateFn != nil { - updateFn(totalOnImmich, totalOnImmich) - } - app.AssetIndex = &AssetIndex{ - assets: list, - } - app.AssetIndex.ReIndex() - return nil -} - -func (app *UpCmd) uploadLoop(ctx context.Context) error { - var err error - assetChan := app.browser.Browse(ctx) -assetLoop: - for { - select { - case <-ctx.Done(): - return ctx.Err() - - case a, ok := <-assetChan: - if !ok { - break assetLoop - } - if a.Err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, a.Err.Error()) - } else { - err = app.handleAsset(ctx, a) - if err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, a.Err.Error()) - } - } - } - } - - if app.CreateStacks { - stacks := app.stacks.Stacks() - if len(stacks) > 0 { - app.Log.Info("Creating stacks") - nextStack: - for _, s := range stacks { - switch { - case !app.StackBurst && s.StackType == stacking.StackBurst: - continue nextStack - case !app.StackJpgRaws && s.StackType == stacking.StackRawJpg: - continue nextStack - } - app.Log.Info(fmt.Sprintf("Stacking %s...", strings.Join(s.Names, ", "))) - if !app.DryRun { - err = app.Immich.StackAssets(ctx, s.CoverID, s.IDs) - if err != nil { - app.Log.Error(fmt.Sprintf("Can't stack images: %s", err)) - } - } - } - } - } - - // if app.CreateAlbums || app.CreateAlbumAfterFolder || (app.KeepPartner && app.PartnerAlbum != "") || app.ImportIntoAlbum != "" { - // app.Log.Info("Managing albums") - // err = app.ManageAlbums(ctx) - // if err != nil { - // app.Log.Error(err.Error()) - // err = nil - // } - // } - - if len(app.deleteServerList) > 0 { - ids := []string{} - for _, da := range app.deleteServerList { - ids = append(ids, da.ID) - } - err := app.DeleteServerAssets(ctx, ids) - if err != nil { - return fmt.Errorf("can't delete server's assets: %w", err) - } - } - - if len(app.deleteLocalList) > 0 { - err = app.DeleteLocalAssets() - } - - return err -} - -func (app *UpCmd) handleAsset(ctx context.Context, a *browser.LocalAssetFile) error { - defer func() { - a.Close() - }() - ext := path.Ext(a.FileName) - if app.BrowserConfig.ExcludeExtensions.Exclude(ext) { - app.Jnl.Record(ctx, fileevent.UploadNotSelected, a, a.FileName, "reason", "extension in rejection list") - return nil - } - if !app.BrowserConfig.SelectExtensions.Include(ext) { - app.Jnl.Record(ctx, fileevent.UploadNotSelected, a, a.FileName, "reason", "extension not in selection list") - return nil - } - - if !app.KeepPartner && a.FromPartner { - app.Jnl.Record(ctx, fileevent.UploadNotSelected, a, a.FileName, "reason", "partners asset excluded") - return nil - } - - if !app.KeepTrashed && a.Trashed { - app.Jnl.Record(ctx, fileevent.UploadNotSelected, a, a.FileName, "reason", "trashed asset excluded") - return nil - } - - if app.ImportFromAlbum != "" && !app.isInAlbum(a, app.ImportFromAlbum) { - app.Jnl.Record(ctx, fileevent.UploadNotSelected, a.FileName, "reason", "doesn't belong to required album") - return nil - } - - if app.DiscardArchived && a.Archived { - app.Jnl.Record(ctx, fileevent.UploadNotSelected, a, a.FileName, "reason", "archived asset are discarded") - return nil - } - - if app.DateRange.IsSet() { - d := a.Metadata.DateTaken - if d.IsZero() { - app.Jnl.Record(ctx, fileevent.UploadNotSelected, a, a.FileName, "reason", "date of capture is unknown") - return nil - } - if !app.DateRange.InRange(d) { - app.Jnl.Record(ctx, fileevent.UploadNotSelected, a, a.FileName, "reason", "date of capture is out of the given range") - return nil - } - } - - if !app.KeepUntitled { - a.Albums = gen.Filter(a.Albums, func(i browser.LocalAlbum) bool { - return i.Title != "" - }) - } - - advice, err := app.AssetIndex.ShouldUpload(a) - if err != nil { - return err - } - - switch advice.Advice { - case NotOnServer: // Upload and manage albums - ID, err := app.UploadAsset(ctx, a) - if err != nil { - return nil - } - app.manageAssetAlbum(ctx, ID, a, advice) - - case SmallerOnServer: // Upload, manage albums and delete the server's asset - app.Jnl.Record(ctx, fileevent.UploadUpgraded, a, a.FileName, "reason", advice.Message) - // add the superior asset into albums of the original asset. - ID, err := app.UploadAsset(ctx, a) - if err != nil { - return nil - } - app.manageAssetAlbum(ctx, ID, a, advice) - // delete the existing lower quality asset - err = app.deleteAsset(ctx, advice.ServerAsset.ID) - if err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, "error", err.Error()) - } - - case SameOnServer: // manage albums - // Set add the server asset into albums determined locally - if !advice.ServerAsset.JustUploaded { - app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, a, a.FileName, "reason", advice.Message) - } else { - app.Jnl.Record(ctx, fileevent.AnalysisLocalDuplicate, a, a.FileName) - } - app.manageAssetAlbum(ctx, advice.ServerAsset.ID, a, advice) - - case BetterOnServer: // and manage albums - app.Jnl.Record(ctx, fileevent.UploadServerBetter, a, a.FileName, "reason", advice.Message) - app.manageAssetAlbum(ctx, advice.ServerAsset.ID, a, advice) - } - - return nil -} - -func (app *UpCmd) deleteAsset(ctx context.Context, id string) error { - return app.Immich.DeleteAssets(ctx, []string{id}, true) -} - -// manageAssetAlbum keep the albums updated -// errors are logged, but not returned -func (app *UpCmd) manageAssetAlbum(ctx context.Context, assetID string, a *browser.LocalAssetFile, advice *Advice) { - addedTo := map[string]any{} - if advice.ServerAsset != nil { - for _, al := range advice.ServerAsset.Albums { - app.Jnl.Record(ctx, fileevent.UploadAddToAlbum, a, a.FileName, "album", al.AlbumName, "reason", "lower quality asset's album") - if !app.DryRun { - err := app.AddToAlbum(ctx, assetID, browser.LocalAlbum{Title: al.AlbumName, Description: al.Description}) - if err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, "error", err.Error()) - } - } - addedTo[al.AlbumName] = nil - } - } - - if app.CreateAlbums { - for _, al := range a.Albums { - album := al.Title - if app.GooglePhotos && (app.CreateAlbumAfterFolder || app.UseFolderAsAlbumName || album == "") { - album = filepath.Base(al.Path) - } - if _, exist := addedTo[album]; !exist { - app.Jnl.Record(ctx, fileevent.UploadAddToAlbum, a, a.FileName, "album", album) - if !app.DryRun { - err := app.AddToAlbum(ctx, assetID, browser.LocalAlbum{Title: album}) - if err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, "error", err.Error()) - } - } - } - } - } - if app.ImportIntoAlbum != "" { - app.Jnl.Record(ctx, fileevent.UploadAddToAlbum, a, a.FileName, "album", app.ImportIntoAlbum, "reason", "option -album") - if !app.DryRun { - err := app.AddToAlbum(ctx, assetID, browser.LocalAlbum{Title: app.ImportIntoAlbum}) - if err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, "error", err.Error()) - } - } - } - - if app.GooglePhotos { - if app.PartnerAlbum != "" && a.FromPartner { - app.Jnl.Record(ctx, fileevent.UploadAddToAlbum, a, a.FileName, "album", app.PartnerAlbum, "reason", "option -partner-album") - if !app.DryRun { - err := app.AddToAlbum(ctx, assetID, browser.LocalAlbum{Title: app.PartnerAlbum}) - if err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, "error", err.Error()) - } - } - } - } else { - if app.CreateAlbumAfterFolder { - album := path.Base(path.Dir(a.FileName)) - if !app.GooglePhotos && app.UseFullPathAsAlbumName { - // full path - album = strings.Replace(filepath.Dir(a.FileName), string(os.PathSeparator), app.AlbumNamePathSeparator, -1) - } - if album == "" || album == "." { - if fsys, ok := a.FSys.(fshelper.NameFS); ok { - album = fsys.Name() - } else { - album = "no-folder-name" - } - } - app.Jnl.Record(ctx, fileevent.UploadAddToAlbum, a, a.FileName, "album", album, "reason", "option -create-album-folder") - if !app.DryRun { - err := app.AddToAlbum(ctx, assetID, browser.LocalAlbum{Title: album}) - if err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, "error", err.Error()) - } - } - } - } -} - -func (app *UpCmd) isInAlbum(a *browser.LocalAssetFile, album string) bool { - for _, al := range a.Albums { - if app.albumName(al) == album { - return true - } - } - return false -} - -func (app *UpCmd) ReadGoogleTakeOut(ctx context.Context, fsyss []fs.FS) (browser.Browser, error) { - app.Delete = false - b, err := gp.NewTakeout(ctx, app.Jnl, app.Immich.SupportedMedia(), fsyss...) - if err != nil { - return nil, err - } - b.SetBannedFiles(app.BannedFiles) - b.SetAcceptMissingJSON(app.ForceUploadWhenNoJSON) - return b, err -} - -func (app *UpCmd) ExploreLocalFolder(ctx context.Context, fsyss []fs.FS) (browser.Browser, error) { - b, err := files.NewLocalFiles(ctx, app.Jnl, fsyss...) - if err != nil { - return nil, err - } - b.SetSupportedMedia(app.Immich.SupportedMedia()) - b.SetWhenNoDate(app.WhenNoDate) - b.SetBannedFiles(app.BannedFiles) - return b, nil -} - -// UploadAsset upload the asset on the server -// Add the assets into listed albums -// return ID of the asset -func (app *UpCmd) UploadAsset(ctx context.Context, a *browser.LocalAssetFile) (string, error) { - var resp, liveResp immich.AssetResponse - var err error - if !app.AutoArchive && a.Archived { - a.Archived = false - } - if !app.DryRun { - if a.LivePhoto != nil { - liveResp, err = app.Immich.AssetUpload(ctx, a.LivePhoto) - if err == nil { - if liveResp.Status == immich.UploadDuplicate { - app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, a.LivePhoto, a.LivePhoto.FileName, "info", "the server has this file") - } else { - app.Jnl.Record(ctx, fileevent.Uploaded, a.LivePhoto, a.LivePhoto.FileName) - } - a.LivePhotoID = liveResp.ID - } else { - app.Jnl.Record(ctx, fileevent.UploadServerError, a.LivePhoto, a.LivePhoto.FileName, "error", err.Error()) - } - } - b := *a // Keep a copy of the asset to log errors specifically on the image - resp, err = app.Immich.AssetUpload(ctx, a) - if err == nil { - if resp.Status == immich.UploadDuplicate { - app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, a, a.FileName, "info", "the server has this file") - } else { - b.LivePhoto = nil - app.Jnl.Record(ctx, fileevent.Uploaded, &b, b.FileName, "capture date", b.Metadata.DateTaken.String()) - } - } else { - app.Jnl.Record(ctx, fileevent.UploadServerError, a, a.FileName, "error", err.Error()) - return "", err - } - } else { - // dry-run mode - if a.LivePhoto != nil { - liveResp.ID = uuid.NewString() - } - resp.ID = uuid.NewString() - app.Jnl.Record(ctx, fileevent.Uploaded, a, a.FileName, "capture date", a.Metadata.DateTaken.String()) - } - if resp.Status != immich.UploadDuplicate { - if a.LivePhoto != nil && liveResp.ID != "" { - app.AssetIndex.AddLocalAsset(a, liveResp.ID) - } - app.AssetIndex.AddLocalAsset(a, resp.ID) - if app.CreateStacks { - app.stacks.ProcessAsset(resp.ID, a.FileName, a.Metadata.DateTaken) - } - } - - return resp.ID, nil -} - -func (app *UpCmd) albumName(al browser.LocalAlbum) string { - Name := al.Title - if app.GooglePhotos { - switch { - case app.UseFolderAsAlbumName: - Name = path.Base(al.Path) - case app.KeepUntitled && Name == "": - Name = path.Base(al.Path) - } - } - return Name -} - -// AddToAlbum add the ID to the immich album having the same name as the local album -func (app *UpCmd) AddToAlbum(ctx context.Context, id string, album browser.LocalAlbum) error { - title := album.Title - - l, exist := app.albums[title] - if !exist { - a, err := app.Immich.CreateAlbum(ctx, title, album.Description, []string{id}) - if err != nil { - return err - } - app.albums[title] = immich.AlbumSimplified{ID: a.ID, AlbumName: a.AlbumName, Description: a.Description} - } else { - _, err := app.Immich.AddAssetToAlbum(ctx, l.ID, []string{id}) - if err != nil { - return err - } - } - return nil -} - -func (app *UpCmd) DeleteLocalAssets() error { - app.Log.Info(fmt.Sprintf("%d local assets to delete.", len(app.deleteLocalList))) - - for _, a := range app.deleteLocalList { - if !app.DryRun { - app.Log.Info(fmt.Sprintf("delete file %q", a.Title)) - err := a.Remove() - if err != nil { - return err - } - } else { - app.Log.Info(fmt.Sprintf("file %q not deleted, dry run mode.", a.Title)) - } - } - return nil -} - -func (app *UpCmd) DeleteServerAssets(ctx context.Context, ids []string) error { - app.Log.Info(fmt.Sprintf("%d server assets to delete.", len(ids))) - - if !app.DryRun { - err := app.Immich.DeleteAssets(ctx, ids, false) - return err - } - app.Log.Info(fmt.Sprintf("%d server assets to delete. skipped dry-run mode", len(ids))) - return nil -} - -/* -func (app *UpCmd) ManageAlbums(ctx context.Context) error { - if len(app.updateAlbums) > 0 { - serverAlbums, err := app.Immich.GetAllAlbums(ctx) - if err != nil { - return fmt.Errorf("can't get the album list from the server: %w", err) - } - for album, list := range app.updateAlbums { - found := false - for _, sal := range serverAlbums { - if sal.AlbumName == album { - found = true - if !app.DryRun { - app.Log.Info(fmt.Sprintf("Update the album %s", album)) - rr, err := app.Immich.AddAssetToAlbum(ctx, sal.ID, gen.MapKeys(list)) - if err != nil { - return fmt.Errorf("can't update the album list from the server: %w", err) - } - added := 0 - for _, r := range rr { - if r.Success { - added++ - } - if !r.Success && r.Error != "duplicate" { - app.Log.Info(fmt.Sprintf("%s: %s", r.ID, r.Error)) - } - } - if added > 0 { - app.Log.Info(fmt.Sprintf("%d asset(s) added to the album %q", added, album)) - } - } else { - app.Log.Info(fmt.Sprintf("Update album %s skipped - dry run mode", album)) - } - } - } - if found { - continue - } - if list != nil { - if !app.DryRun { - app.Log.Info(fmt.Sprintf("Create the album %s", album)) - - _, err := app.Immich.CreateAlbum(ctx, album, gen.MapKeys(list)) - if err != nil { - return fmt.Errorf("can't create the album list from the server: %w", err) - } - } else { - app.Log.Info(fmt.Sprintf("Create the album %s skipped - dry run mode", album)) - } - } - } - } - return nil -} */ -// - - go:generate stringer -type=AdviceCode -type AdviceCode int - -func (a AdviceCode) String() string { - switch a { - case IDontKnow: - return "IDontKnow" - // case SameNameOnServerButNotSure: - // return "SameNameOnServerButNotSure" - case SmallerOnServer: - return "SmallerOnServer" - case BetterOnServer: - return "BetterOnServer" - case SameOnServer: - return "SameOnServer" - case NotOnServer: - return "NotOnServer" - } - return fmt.Sprintf("advice(%d)", a) -} - -const ( - IDontKnow AdviceCode = iota - SmallerOnServer - BetterOnServer - SameOnServer - NotOnServer -) - -type Advice struct { - Advice AdviceCode - Message string - ServerAsset *immich.Asset - LocalAsset *browser.LocalAssetFile -} - -func formatBytes(s int) string { - suffixes := []string{"B", "KB", "MB", "GB"} - bytes := float64(s) - base := 1024.0 - if bytes < base { - return fmt.Sprintf("%.0f %s", bytes, suffixes[0]) - } - exp := int64(0) - for bytes >= base && exp < int64(len(suffixes)-1) { - bytes /= base - exp++ - } - roundedSize := math.Round(bytes*10) / 10 - return fmt.Sprintf("%.1f %s", roundedSize, suffixes[exp]) -} - -func (ai *AssetIndex) adviceSameOnServer(sa *immich.Asset) *Advice { - return &Advice{ - Advice: SameOnServer, - Message: fmt.Sprintf("An asset with the same name:%q, date:%q and size:%s exists on the server. No need to upload.", sa.OriginalFileName, sa.ExifInfo.DateTimeOriginal.Format(time.DateTime), formatBytes(sa.ExifInfo.FileSizeInByte)), - ServerAsset: sa, - } -} - -func (ai *AssetIndex) adviceSmallerOnServer(sa *immich.Asset) *Advice { - return &Advice{ - Advice: SmallerOnServer, - Message: fmt.Sprintf("An asset with the same name:%q and date:%q but with smaller size:%s exists on the server. Replace it.", sa.OriginalFileName, sa.ExifInfo.DateTimeOriginal.Format(time.DateTime), formatBytes(sa.ExifInfo.FileSizeInByte)), - ServerAsset: sa, - } -} - -func (ai *AssetIndex) adviceBetterOnServer(sa *immich.Asset) *Advice { - return &Advice{ - Advice: BetterOnServer, - Message: fmt.Sprintf("An asset with the same name:%q and date:%q but with bigger size:%s exists on the server. No need to upload.", sa.OriginalFileName, sa.ExifInfo.DateTimeOriginal.Format(time.DateTime), formatBytes(sa.ExifInfo.FileSizeInByte)), - ServerAsset: sa, - } -} - -func (ai *AssetIndex) adviceNotOnServer() *Advice { - return &Advice{ - Advice: NotOnServer, - Message: "This a new asset, upload it.", - } -} - -// ShouldUpload check if the server has this asset -// -// The server may have different assets with the same name. This happens with photos produced by digital cameras. -// The server may have the asset, but in lower resolution. Compare the taken date and resolution - -func (ai *AssetIndex) ShouldUpload(la *browser.LocalAssetFile) (*Advice, error) { - filename := la.Title - if path.Ext(filename) == "" { - filename += path.Ext(la.FileName) - } - - ID := la.DeviceAssetID() - - sa := ai.byID[ID] - if sa != nil { - // the same ID exist on the server - return ai.adviceSameOnServer(sa), nil - } - - var l []*immich.Asset - - // check all files with the same name - - n := filepath.Base(filename) - l = ai.byName[n] - if len(l) == 0 { - // n = strings.TrimSuffix(n, filepath.Ext(n)) - l = ai.byName[n] - } - - if len(l) > 0 { - dateTaken := la.Metadata.DateTaken - size := int(la.Size()) - - for _, sa = range l { - compareDate := compareDate(dateTaken, sa.ExifInfo.DateTimeOriginal.Time) - compareSize := size - sa.ExifInfo.FileSizeInByte - - switch { - case compareDate == 0 && compareSize == 0: - return ai.adviceSameOnServer(sa), nil - case compareDate == 0 && compareSize > 0: - return ai.adviceSmallerOnServer(sa), nil - case compareDate == 0 && compareSize < 0: - return ai.adviceBetterOnServer(sa), nil - } - } - } - return ai.adviceNotOnServer(), nil -} - -func compareDate(d1 time.Time, d2 time.Time) int { - diff := d1.Sub(d2) - - switch { - case diff < -5*time.Minute: - return -1 - case diff >= 5*time.Minute: - return +1 - } - return 0 -} diff --git a/cmd/upload/upload_test.go b/cmd/upload/upload_test.nogo similarity index 100% rename from cmd/upload/upload_test.go rename to cmd/upload/upload_test.nogo diff --git a/docs/refactoring.md b/docs/refactoring.md new file mode 100644 index 00000000..aaf42bc3 --- /dev/null +++ b/docs/refactoring.md @@ -0,0 +1,32 @@ +# Refactoring + +One year later, the necessity to refactor the code is obvious: +- spaghetti code +- poor adherence to single responsibility rule +- new requests from the users + + +## For better architecture + +- adapters: adapters for reading a writing photo collection +- cmd: immich-go commands +- immich: immich client +- internal: better not look inside + + +## Refactoring of the command line + +### Use of linux traditional command-line options with a double-dash `--option` + + + +### Reorganization of the commands + +immich-go [global flags] command sub-command [flags] arguments + +ex: +immich-go --log-file=file import from-folder --server=xxxx --key=qqqqq --folder-as-album-name=PATH path/to/photos + + + + diff --git a/go.mod b/go.mod index 7599ddd1..b43a5dd0 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,9 @@ module github.com/simulot/immich-go -go 1.22 - -toolchain go1.22.5 +go 1.23 require ( + github.com/barasher/go-exiftool v1.10.0 github.com/gdamore/tcell/v2 v2.7.4 github.com/google/uuid v1.6.0 github.com/joho/godotenv v1.5.1 @@ -12,12 +11,13 @@ require ( github.com/melbahja/goph v1.4.0 github.com/navidys/tvxwidgets v0.7.0 github.com/psanford/memfs v0.0.0-20230130182539-4dbf7e3e865e - github.com/rivo/tview v0.0.0-20240616192244-23476fa0bab2 + github.com/rivo/tview v0.0.0-20240818110301-fd649dbf1223 github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd + github.com/spf13/cobra v1.8.1 github.com/telemachus/humane v0.6.0 github.com/thlib/go-timezone-local v0.0.3 github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31 - golang.org/x/sync v0.8.0 + golang.org/x/sync v0.1.0 ) require ( @@ -31,7 +31,6 @@ require ( github.com/pkg/sftp v1.13.6 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.9.0 // indirect - github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/pflag v1.0.5 // indirect golang.org/x/crypto v0.17.0 // indirect golang.org/x/sys v0.20.0 // indirect diff --git a/go.sum b/go.sum index e9d611fd..91647402 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +github.com/barasher/go-exiftool v1.10.0 h1:f5JY5jc42M7tzR6tbL9508S2IXdIcG9QyieEXNMpIhs= +github.com/barasher/go-exiftool v1.10.0/go.mod h1:F9s/a3uHSM8YniVfwF+sbQUtP8Gmh9nyzigNF+8vsWo= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -50,8 +52,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/psanford/memfs v0.0.0-20230130182539-4dbf7e3e865e h1:51xcRlSMBU5rhM9KahnJGfEsBPVPz3182TgFRowA8yY= github.com/psanford/memfs v0.0.0-20230130182539-4dbf7e3e865e/go.mod h1:tcaRap0jS3eifrEEllL6ZMd9dg8IlDpi2S1oARrQ+NI= -github.com/rivo/tview v0.0.0-20240616192244-23476fa0bab2 h1:LXMiBMxtuXw8e2paN61dI2LMp8JZYyH4UXDwssRI3ys= -github.com/rivo/tview v0.0.0-20240616192244-23476fa0bab2/go.mod h1:02iFIz7K/A9jGCvrizLPvoqr4cEIx7q54RH5Qudkrss= +github.com/rivo/tview v0.0.0-20240818110301-fd649dbf1223 h1:N+DggyldbUDqFlk0b8JeRjB9zGpmQ8wiKpq+VBbzRso= +github.com/rivo/tview v0.0.0-20240818110301-fd649dbf1223/go.mod h1:02iFIz7K/A9jGCvrizLPvoqr4cEIx7q54RH5Qudkrss= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= @@ -67,6 +69,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= @@ -97,9 +100,8 @@ golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/helpers/fshelper/extensions.nongo b/helpers/fshelper/extensions.nongo deleted file mode 100644 index 3e7b69fe..00000000 --- a/helpers/fshelper/extensions.nongo +++ /dev/null @@ -1,111 +0,0 @@ -package fshelper - -import ( - "fmt" - "slices" - "strings" - - "github.com/simulot/immich-go/helpers/gen" -) - -// List from immich code: -// https://github.com/immich-app/immich/blob/8d5bf933601a3f2787a78c40e4c11862b96566e0/server/src/domain/domain.constant.ts#L26C17-L89C3 - -var supportedExtensionsAndMime = map[string][]string{ - ".3fr": {"image/3fr", "image/x-hasselblad-3fr"}, - ".ari": {"image/ari", "image/x-arriflex-ari"}, - ".arw": {"image/arw", "image/x-sony-arw"}, - ".avif": {"image/avif"}, - ".cap": {"image/cap", "image/x-phaseone-cap"}, - ".cin": {"image/cin", "image/x-phantom-cin"}, - ".cr2": {"image/cr2", "image/x-canon-cr2"}, - ".cr3": {"image/cr3", "image/x-canon-cr3"}, - ".crw": {"image/crw", "image/x-canon-crw"}, - ".dcr": {"image/dcr", "image/x-kodak-dcr"}, - ".dng": {"image/dng", "image/x-adobe-dng"}, - ".erf": {"image/erf", "image/x-epson-erf"}, - ".fff": {"image/fff", "image/x-hasselblad-fff"}, - ".gif": {"image/gif"}, - ".heic": {"image/heic"}, - ".heif": {"image/heif"}, - ".iiq": {"image/iiq", "image/x-phaseone-iiq"}, - ".insp": {"image/jpeg"}, - ".jpeg": {"image/jpeg"}, - ".jpg": {"image/jpeg"}, - ".jpe": {"image/jpeg"}, - ".jxl": {"image/jxl"}, - ".k25": {"image/k25", "image/x-kodak-k25"}, - ".kdc": {"image/kdc", "image/x-kodak-kdc"}, - ".mrw": {"image/mrw", "image/x-minolta-mrw"}, - ".nef": {"image/nef", "image/x-nikon-nef"}, - ".orf": {"image/orf", "image/x-olympus-orf"}, - ".ori": {"image/ori", "image/x-olympus-ori"}, - ".pef": {"image/pef", "image/x-pentax-pef"}, - ".png": {"image/png"}, - ".psd": {"image/psd", "image/vnd.adobe.photoshop"}, - ".raf": {"image/raf", "image/x-fuji-raf"}, - ".raw": {"image/raw", "image/x-panasonic-raw"}, - ".rw2": {"image/rw2', 'image/x-panasonic-rw2"}, - ".rwl": {"image/rwl", "image/x-leica-rwl"}, - ".sr2": {"image/sr2", "image/x-sony-sr2"}, - ".srf": {"image/srf", "image/x-sony-srf"}, - ".srw": {"image/srw", "image/x-samsung-srw"}, - ".tif": {"image/tiff"}, - ".tiff": {"image/tiff"}, - ".webp": {"image/webp"}, - ".x3f": {"image/x3f", "image/x-sigma-x3f"}, - - ".3gp": {"video/3gpp"}, - ".avi": {"video/avi", "video/msvideo", "video/vnd.avi", "video/x-msvideo"}, - ".flv": {"video/x-flv"}, - ".insv": {"video/mp4"}, - ".m2ts": {"video/mp2t"}, - ".m4v": {"video/x-m4v"}, - ".mkv": {"video/x-matroska"}, - ".mov": {"video/quicktime"}, - ".mp4": {"video/mp4"}, - ".mpg": {"video/mpeg"}, - ".mts": {"video/mp2t"}, - ".webm": {"video/webm"}, - ".wmv": {"video/x-ms-wmv"}, -} - -var supportedExtensions = gen.MapKeys(supportedExtensionsAndMime) - -// MimeFromExt return the mime type of the extension. Return an error is the extension is not handled by the server. -func MimeFromExt(ext string) ([]string, error) { - ext = strings.ToLower(ext) - if l, ok := supportedExtensionsAndMime[ext]; ok { - return l, nil - } - return nil, fmt.Errorf("unsupported extension %s", ext) -} - -// IsExtensionPrefix -// Check if the string is first part of an known extension as needed for Google Takeout - -func IsExtensionPrefix(ext string) bool { - ext = strings.ToLower(ext) - for _, e := range supportedExtensions { - if ext == e[:len(e)-1] { - return true - } - } - return false -} - -var ignoredExtensions = []string{ - ".html", ".mp", -} - -func IsIgnoredExt(ext string) bool { - return slices.Contains(ignoredExtensions, ext) -} - -var metaDataExtensions = []string{ - ".json", ".xmp", -} - -func IsMetadataExt(ext string) bool { - return slices.Contains(metaDataExtensions, ext) -} diff --git a/immich/albums.go b/immich/albums.go index e4d0a7e9..bb439576 100644 --- a/immich/albums.go +++ b/immich/albums.go @@ -3,6 +3,8 @@ package immich import ( "context" "fmt" + + "github.com/google/uuid" ) type AlbumSimplified struct { @@ -101,6 +103,9 @@ type UpdateAlbumResult struct { } func (ic *ImmichClient) AddAssetToAlbum(ctx context.Context, albumID string, assets []string) ([]UpdateAlbumResult, error) { + if ic.dryRun { + return []UpdateAlbumResult{}, nil + } var r []UpdateAlbumResult body := UpdateAlbum{ IDS: assets, @@ -116,6 +121,12 @@ func (ic *ImmichClient) AddAssetToAlbum(ctx context.Context, albumID string, ass } func (ic *ImmichClient) CreateAlbum(ctx context.Context, name string, description string, assetsIDs []string) (AlbumSimplified, error) { + if ic.dryRun { + return AlbumSimplified{ + ID: uuid.NewString(), + AlbumName: name, + }, nil + } body := AlbumContent{ AlbumName: name, Description: description, @@ -140,5 +151,8 @@ func (ic *ImmichClient) GetAssetAlbums(ctx context.Context, id string) ([]AlbumS } func (ic *ImmichClient) DeleteAlbum(ctx context.Context, id string) error { + if ic.dryRun { + return nil + } return ic.newServerCall(ctx, EndPointDeleteAlbum).do(deleteRequest("/albums/" + id)) } diff --git a/immich/asset.go b/immich/asset.go index 21090f5f..f090fc4d 100644 --- a/immich/asset.go +++ b/immich/asset.go @@ -14,7 +14,8 @@ import ( "strings" "time" - "github.com/simulot/immich-go/browser" + "github.com/google/uuid" + "github.com/simulot/immich-go/adapters" ) type AssetResponse struct { @@ -43,7 +44,13 @@ func formatDuration(duration time.Duration) string { return fmt.Sprintf("%02d:%02d:%02d.%06d", hours, minutes, seconds, milliseconds) } -func (ic *ImmichClient) AssetUpload(ctx context.Context, la *browser.LocalAssetFile) (AssetResponse, error) { +func (ic *ImmichClient) AssetUpload(ctx context.Context, la *adapters.LocalAssetFile) (AssetResponse, error) { + if ic.dryRun { + return AssetResponse{ + ID: uuid.NewString(), + Status: UploadCreated, + }, nil + } var ar AssetResponse ext := path.Ext(la.FileName) if strings.TrimSuffix(la.Title, ext) == "" { @@ -243,6 +250,9 @@ func (o *GetAssetOptions) Values() url.Values { } func (ic *ImmichClient) DeleteAssets(ctx context.Context, id []string, forceDelete bool) error { + if ic.dryRun { + return nil + } req := struct { Force bool `json:"force"` IDs []string `json:"ids"` @@ -270,6 +280,9 @@ func (ic *ImmichClient) UpdateAssets(ctx context.Context, ids []string, latitude float64, longitude float64, removeParent bool, stackParentID string, ) error { + if ic.dryRun { + return nil + } type updAssets struct { IDs []string `json:"ids"` IsArchived bool `json:"isArchived"` @@ -292,7 +305,10 @@ func (ic *ImmichClient) UpdateAssets(ctx context.Context, ids []string, return ic.newServerCall(ctx, "updateAssets").do(putRequest("/assets", setJSONBody(param))) } -func (ic *ImmichClient) UpdateAsset(ctx context.Context, id string, a *browser.LocalAssetFile) (*Asset, error) { +func (ic *ImmichClient) UpdateAsset(ctx context.Context, id string, a *adapters.LocalAssetFile) (*Asset, error) { + if ic.dryRun { + return nil, nil + } type updAsset struct { IsArchived bool `json:"isArchived"` IsFavorite bool `json:"isFavorite"` diff --git a/immich/call.go b/immich/call.go index a6800fde..2f137d16 100644 --- a/immich/call.go +++ b/immich/call.go @@ -12,7 +12,7 @@ import ( "sync/atomic" "time" - "github.com/simulot/immich-go/helpers/fshelper" + "github.com/simulot/immich-go/internal/fshelper" ) const ( diff --git a/immich/client.go b/immich/client.go index 6ab1478d..9f579b53 100644 --- a/immich/client.go +++ b/immich/client.go @@ -8,11 +8,9 @@ import ( "io" "net/http" "os" - "slices" - "sort" - "strings" - "sync" "time" + + "github.com/simulot/immich-go/internal/metadata" ) /* @@ -30,7 +28,8 @@ type ImmichClient struct { Retries int // Number of attempts on 500 errors RetriesDelay time.Duration // Duration between retries apiTraceWriter io.Writer - supportedMediaTypes SupportedMedia // Server's list of supported medias + supportedMediaTypes metadata.SupportedMedia // Server's list of supported medias + dryRun bool // If true, do not send any data to the server } func (ic *ImmichClient) SetEndPoint(endPoint string) { @@ -45,7 +44,7 @@ func (ic *ImmichClient) EnableAppTrace(w io.Writer) { ic.apiTraceWriter = w } -func (ic *ImmichClient) SupportedMedia() SupportedMedia { +func (ic *ImmichClient) SupportedMedia() metadata.SupportedMedia { return ic.supportedMediaTypes } @@ -65,6 +64,13 @@ func OptionConnectionTimeout(d time.Duration) clientOption { } } +func OptionDryRun(dryRun bool) clientOption { + return func(ic *ImmichClient) error { + ic.dryRun = dryRun + return nil + } +} + // Create a new ImmichClient func NewImmichClient(endPoint string, key string, options ...clientOption) (*ImmichClient, error) { var err error @@ -182,81 +188,23 @@ func (ic *ImmichClient) GetAssetStatistics(ctx context.Context) (UserStatistics, return s, err } -type SupportedMedia map[string]string - -const ( - TypeVideo = "video" - TypeImage = "image" - TypeSidecar = "sidecar" - TypeUnknown = "" -) - -var DefaultSupportedMedia = SupportedMedia{ - ".3gp": TypeVideo, ".avi": TypeVideo, ".flv": TypeVideo, ".insv": TypeVideo, ".m2ts": TypeVideo, ".m4v": TypeVideo, ".mkv": TypeVideo, ".mov": TypeVideo, ".mp4": TypeVideo, ".mpg": TypeVideo, ".mts": TypeVideo, ".webm": TypeVideo, ".wmv": TypeVideo, - ".3fr": TypeImage, ".ari": TypeImage, ".arw": TypeImage, ".avif": TypeImage, ".bmp": TypeImage, ".cap": TypeImage, ".cin": TypeImage, ".cr2": TypeImage, ".cr3": TypeImage, ".crw": TypeImage, ".dcr": TypeImage, ".dng": TypeImage, ".erf": TypeImage, - ".fff": TypeImage, ".gif": TypeImage, ".heic": TypeImage, ".heif": TypeImage, ".hif": TypeImage, ".iiq": TypeImage, ".insp": TypeImage, ".jpe": TypeImage, ".jpeg": TypeImage, ".jpg": TypeImage, - ".jxl": TypeImage, ".k25": TypeImage, ".kdc": TypeImage, ".mrw": TypeImage, ".nef": TypeImage, ".orf": TypeImage, ".ori": TypeImage, ".pef": TypeImage, ".png": TypeImage, ".psd": TypeImage, ".raf": TypeImage, ".raw": TypeImage, ".rw2": TypeImage, - ".rwl": TypeImage, ".sr2": TypeImage, ".srf": TypeImage, ".srw": TypeImage, ".tif": TypeImage, ".tiff": TypeImage, ".webp": TypeImage, ".x3f": TypeImage, - ".xmp": TypeSidecar, - ".mp": TypeVideo, -} - -func (ic *ImmichClient) GetSupportedMediaTypes(ctx context.Context) (SupportedMedia, error) { +func (ic *ImmichClient) GetSupportedMediaTypes(ctx context.Context) (metadata.SupportedMedia, error) { var s map[string][]string err := ic.newServerCall(ctx, EndPointGetSupportedMediaTypes).do(getRequest("/server-info/media-types", setAcceptJSON()), responseJSON(&s)) if err != nil { return nil, err } - sm := make(SupportedMedia) + sm := make(metadata.SupportedMedia) for t, l := range s { for _, e := range l { sm[e] = t } } - sm[".mp"] = TypeVideo + sm[".mp"] = metadata.TypeVideo return sm, err } -func (sm SupportedMedia) TypeFromExt(ext string) string { - ext = strings.ToLower(ext) - if strings.HasPrefix(ext, ".mp~") { - // #405 - ext = ".mp4" - } - return sm[ext] -} - -func (sm SupportedMedia) IsMedia(ext string) bool { - t := sm.TypeFromExt(ext) - return t == TypeVideo || t == TypeImage -} - -var ( - _supportedExtension []string - initSupportedExtion sync.Once -) - -func (sm SupportedMedia) IsExtensionPrefix(ext string) bool { - initSupportedExtion.Do(func() { - _supportedExtension = make([]string, len(sm)) - i := 0 - for k := range sm { - _supportedExtension[i] = k[:len(k)-2] - i++ - } - sort.Strings(_supportedExtension) - }) - ext = strings.ToLower(ext) - _, b := slices.BinarySearch(_supportedExtension, ext) - return b -} - -func (sm SupportedMedia) IsIgnoredExt(ext string) bool { - t := sm.TypeFromExt(ext) - return t == "" -} - func (ic *ImmichClient) TypeFromExt(ext string) string { return ic.supportedMediaTypes.TypeFromExt(ext) } diff --git a/immich/client_test.go b/immich/client_test.go index 0e20511f..b5601d1f 100644 --- a/immich/client_test.go +++ b/immich/client_test.go @@ -1,6 +1,10 @@ package immich -import "testing" +import ( + "testing" + + "github.com/simulot/immich-go/internal/metadata" +) /* baseline @@ -22,7 +26,7 @@ PASS ok github.com/simulot/immich-go/immich 1.283s */ func Benchmark_IsExtensionPrefix(b *testing.B) { - sm := DefaultSupportedMedia + sm := metadata.DefaultSupportedMedia sm.IsExtensionPrefix(".JP") for i := 0; i < b.N; i++ { sm.IsExtensionPrefix(".JP") diff --git a/immich/immich.go b/immich/immich.go index 8f457ec4..a6482734 100644 --- a/immich/immich.go +++ b/immich/immich.go @@ -8,8 +8,9 @@ import ( "sync" "time" - "github.com/simulot/immich-go/browser" - "github.com/simulot/immich-go/helpers/tzone" + "github.com/simulot/immich-go/adapters" + "github.com/simulot/immich-go/internal/metadata" + "github.com/simulot/immich-go/internal/tzone" ) // ImmichInterface is an interface that implements the minimal immich client set of features for uploading @@ -23,12 +24,12 @@ type ImmichInterface interface { GetServerStatistics(ctx context.Context) (ServerStatistics, error) GetAssetStatistics(ctx context.Context) (UserStatistics, error) - UpdateAsset(ctx context.Context, ID string, a *browser.LocalAssetFile) (*Asset, error) + UpdateAsset(ctx context.Context, ID string, a *adapters.LocalAssetFile) (*Asset, error) GetAllAssets(ctx context.Context) ([]*Asset, error) AddAssetToAlbum(context.Context, string, []string) ([]UpdateAlbumResult, error) UpdateAssets(ctx context.Context, IDs []string, isArchived bool, isFavorite bool, latitude float64, longitude float64, removeParent bool, stackParentID string) error GetAllAssetsWithFilter(context.Context, func(*Asset) error) error - AssetUpload(context.Context, *browser.LocalAssetFile) (AssetResponse, error) + AssetUpload(context.Context, *adapters.LocalAssetFile) (AssetResponse, error) DeleteAssets(context.Context, []string, bool) error GetAllAlbums(ctx context.Context) ([]AlbumSimplified, error) @@ -39,7 +40,7 @@ type ImmichInterface interface { StackAssets(ctx context.Context, cover string, IDs []string) error - SupportedMedia() SupportedMedia + SupportedMedia() metadata.SupportedMedia GetJobs(ctx context.Context) (map[string]Job, error) } diff --git a/internal/cliFlags/dateFromNames.go b/internal/cliFlags/dateFromNames.go new file mode 100644 index 00000000..5635e547 --- /dev/null +++ b/internal/cliFlags/dateFromNames.go @@ -0,0 +1,58 @@ +package cliflags + +import ( + "fmt" + "strings" + + "github.com/simulot/immich-go/internal/tzone" + "github.com/spf13/cobra" +) + +type DateMethod string + +const ( + DateMethodNone DateMethod = "NONE" + DateMethodName DateMethod = "NAME" + DateMethodEXIF DateMethod = "EXIF" + DateMethodNameThenExif DateMethod = "NAME-EXIF" + DateMethodExifThenName DateMethod = "EXIF-NAME" +) + +func (dm *DateMethod) Set(s string) error { + s = strings.TrimSpace(strings.ToLower(s)) + if s == "" { + s = string(DateMethodNone) + } + switch DateMethod(s) { + case DateMethodNone, + DateMethodEXIF, + DateMethodNameThenExif, + DateMethodExifThenName, + DateMethodName: + *dm = DateMethod(s) + return nil + default: + return fmt.Errorf("invalid DateMethod: %s, expecting NONE|NAME|EXIF|NAME-EXIF|EXIF-NAME", s) + } +} + +func (dm *DateMethod) Type() string { + return "DateMethod" +} + +func (dm *DateMethod) String() string { + return string(*dm) +} + +type DateHandlingFlags struct { + Method DateMethod + FilenameTimeZone tzone.Timezone +} + +func AddDateHandlingFlags(cmd *cobra.Command, flags *DateHandlingFlags) { + flags.Method = DateMethodNameThenExif + + _ = flags.FilenameTimeZone.Set("Local") + cmd.Flags().Var(&flags.Method, "capture-date-method", "Specify the method to determine the capture date when not provided in a sidecar file. Options: NONE (do not attempt to determine), FILENAME (extract from filename), EXIF (extract from EXIF metadata), FILENAME-EXIF (try filename first, then EXIF), EXIF-FILENAME (try EXIF first, then filename)") + cmd.Flags().Var(&flags.FilenameTimeZone, "filename-timezone", "Specify the timezone to use when detecting the date from the filename. Options: Local (use the system's local timezone), UTC (use UTC timezone), or a valid timezone name (e.g. America/New_York)") +} diff --git a/immich/daterange.go b/internal/cliFlags/daterange.go similarity index 58% rename from immich/daterange.go rename to internal/cliFlags/daterange.go index 926fa457..6d611168 100644 --- a/immich/daterange.go +++ b/internal/cliFlags/daterange.go @@ -1,4 +1,4 @@ -package immich +package cliflags import ( "fmt" @@ -6,59 +6,74 @@ import ( ) // DateRange represent the date range for capture date -// either: -// A day: 2022-01-01 -// A month: 2022-01 -// A year: 2022 -// A range: 2022-01-01,2022-12-31 + type DateRange struct { After, Before time.Time // todo: make After and Before private day, month, year, set bool } +// InitDateRange initialize a DateRange with a string (for tests) +func InitDateRange(s string) DateRange { + dr := DateRange{} + _ = dr.Set(s) + return dr +} + +// IsSet returns whether the date range is set +func (dr DateRange) IsSet() bool { return dr.set } + func (dr DateRange) String() string { - switch { - case dr.day: - return dr.After.Format("2006-01-02") - case dr.month: - return dr.After.Format("2006-01") - case dr.year: - return dr.After.Format("2006") - default: - return dr.After.Format("2006-01-02") + "," + dr.Before.AddDate(0, 0, -1).Format("2006-01-02") + if dr.set { + switch { + case dr.day: + return dr.After.Format("2006-01-02") + case dr.month: + return dr.After.Format("2006-01") + case dr.year: + return dr.After.Format("2006") + default: + return dr.After.Format("2006-01-02") + "," + dr.Before.AddDate(0, 0, -1).Format("2006-01-02") + } + } else { + return "unset" } } +// Implements the flags interface +// A day: 2022-01-01 +// A month: 2022-01 +// A year: 2022 +// A range: 2022-01-01,2022-12-31 func (dr *DateRange) Set(s string) (err error) { dr.set = true switch len(s) { case 0: - dr.Before = time.Date(999, 12, 31, 0, 0, 0, 0, time.UTC) + dr.Before = time.Date(1990, 12, 31, 0, 0, 0, 0, time.Local) case 4: dr.year = true - dr.After, err = time.ParseInLocation("2006", s, time.UTC) + dr.After, err = time.ParseInLocation("2006", s, time.Local) if err == nil { dr.Before = dr.After.AddDate(1, 0, 0) return nil } case 7: dr.month = true - dr.After, err = time.ParseInLocation("2006-01", s, time.UTC) + dr.After, err = time.ParseInLocation("2006-01", s, time.Local) if err == nil { dr.Before = dr.After.AddDate(0, 1, 0) return nil } case 10: dr.day = true - dr.After, err = time.ParseInLocation("2006-01-02", s, time.UTC) + dr.After, err = time.ParseInLocation("2006-01-02", s, time.Local) if err == nil { dr.Before = dr.After.AddDate(0, 0, 1) return nil } case 21: - dr.After, err = time.ParseInLocation("2006-01-02", s[:10], time.UTC) + dr.After, err = time.ParseInLocation("2006-01-02", s[:10], time.Local) if err == nil { - dr.Before, err = time.ParseInLocation("2006-01-02", s[11:], time.UTC) + dr.Before, err = time.ParseInLocation("2006-01-02", s[11:], time.Local) if err == nil { dr.Before = dr.Before.AddDate(0, 0, 1) return nil @@ -69,16 +84,15 @@ func (dr *DateRange) Set(s string) (err error) { return fmt.Errorf("invalid date range:%w", err) } -func (dr DateRange) IsSet() bool { return dr.set } - +// InRange checks if a given date is within the range func (dr DateRange) InRange(d time.Time) bool { - if !dr.set || d.IsZero() { + if !dr.set { return true } // --------------After----------d------------Before return (d.Compare(dr.After) >= 0 && dr.Before.Compare(d) > 0) } -func (dr *DateRange) Type() string { +func (dr DateRange) Type() string { return "date-range" } diff --git a/immich/daterange_test.go b/internal/cliFlags/daterange_test.go similarity index 99% rename from immich/daterange_test.go rename to internal/cliFlags/daterange_test.go index c82cbfd0..59e3cb78 100644 --- a/immich/daterange_test.go +++ b/internal/cliFlags/daterange_test.go @@ -1,4 +1,4 @@ -package immich +package cliflags import ( "testing" @@ -154,7 +154,7 @@ func TestDateRange_InRange(t *testing.T) { t.Errorf("the String() gives %q, want %q", dr.String(), tt.name) } for _, check := range tt.check { - d, err := time.ParseInLocation(time.DateTime, check.date, time.UTC) + d, err := time.ParseInLocation(time.DateTime, check.date, time.Local) if err != nil { t.Errorf("can't parse check date %q fails: %s", check.date, err) } diff --git a/internal/cliFlags/extensionList.go b/internal/cliFlags/extensionList.go new file mode 100644 index 00000000..caeb4411 --- /dev/null +++ b/internal/cliFlags/extensionList.go @@ -0,0 +1,80 @@ +package cliflags + +import ( + "slices" + "strings" + + "github.com/spf13/cobra" +) + +type InclusionFlags struct { + ExcludedExtensions ExtensionList + IncludedExtensions ExtensionList + DateRange DateRange +} + +func AddInclusionFlags(cmd *cobra.Command, flags *InclusionFlags) { + cmd.Flags().Var(&flags.DateRange, "date-range", "Only import photos taken within the specified date range") + cmd.Flags().Var(&flags.ExcludedExtensions, "exclude-extensions", "Comma-separated list of extension to exclude. (e.g. .gif,.PM) (default: none)") + cmd.Flags().Var(&flags.IncludedExtensions, "include-extensions", "Comma-separated list of extension to include. (e.g. .jpg,.heic) (default: all)") +} + +// Validate validates the common flags. +func (flags *InclusionFlags) Validate() { + flags.ExcludedExtensions = flags.ExcludedExtensions.Validate() + flags.IncludedExtensions = flags.IncludedExtensions.Validate() +} + +// An ExtensionList is a list of file extensions, where each extension is a string that starts with a dot (.) and is in lowercase. +type ExtensionList []string + +// Validate validates the extension list by converting to lowercase. +func (sl ExtensionList) Validate() ExtensionList { + vl := ExtensionList{} + for _, e := range sl { + e = strings.ToLower(strings.TrimSpace(e)) + if !strings.HasPrefix(e, ".") { + e = "." + e + } + vl = append(vl, e) + } + return vl +} + +// Include checks if the extension list includes a given extension. +func (sl ExtensionList) Include(s string) bool { + if len(sl) == 0 { + return true + } + s = strings.ToLower(s) + return slices.Contains(sl, strings.ToLower(s)) +} + +// Exclude checks if the extension list excludes a given extension. +func (sl ExtensionList) Exclude(s string) bool { + if len(sl) == 0 { + return false + } + s = strings.ToLower(s) + return slices.Contains(sl, strings.ToLower(s)) +} + +// Implements the flag interface +func (sl *ExtensionList) Set(s string) error { + exts := strings.Split(s, ",") + for _, ext := range exts { + ext = strings.TrimSpace(ext) + if ext != "" { + *sl = append(*sl, ext) + } + } + return nil +} + +func (sl ExtensionList) String() string { + return strings.Join(sl, ", ") +} + +func (sl ExtensionList) Type() string { + return "ExtensionList" +} diff --git a/cmd/upload/stringlist_test.go b/internal/cliFlags/stringlist_test.go similarity index 75% rename from cmd/upload/stringlist_test.go rename to internal/cliFlags/stringlist_test.go index 0e2136f8..71fb4949 100644 --- a/cmd/upload/stringlist_test.go +++ b/internal/cliFlags/stringlist_test.go @@ -1,41 +1,41 @@ -package upload +package cliflags import "testing" func TestStringList_Include(t *testing.T) { tests := []struct { name string - sl StringList + sl ExtensionList ext string want bool }{ { name: "empty", - sl: StringList{}, + sl: ExtensionList{}, ext: ".jpg", want: true, }, { name: ".jpg", - sl: StringList{".jpg"}, + sl: ExtensionList{".jpg"}, ext: ".JPG", want: true, }, { name: ".jpg but .heic", - sl: StringList{".jpg"}, + sl: ExtensionList{".jpg"}, ext: ".heic", want: false, }, { name: ".jpg,.mp4,.mov with .mov", - sl: StringList{".jpg", ".mp4", ".mov"}, + sl: ExtensionList{".jpg", ".mp4", ".mov"}, ext: ".MOV", want: true, }, { name: ".jpg,.mp4,.mov with .heic", - sl: StringList{".jpg", ".mp4", ".mov"}, + sl: ExtensionList{".jpg", ".mp4", ".mov"}, ext: ".HEIC", want: false, }, @@ -52,37 +52,37 @@ func TestStringList_Include(t *testing.T) { func TestStringList_Exclude(t *testing.T) { tests := []struct { name string - sl StringList + sl ExtensionList ext string want bool }{ { name: "empty", - sl: StringList{}, + sl: ExtensionList{}, ext: ".jpg", want: false, }, { name: ".jpg", - sl: StringList{".jpg"}, + sl: ExtensionList{".jpg"}, ext: ".JPG", want: true, }, { name: ".jpg but .heic", - sl: StringList{".jpg"}, + sl: ExtensionList{".jpg"}, ext: ".heic", want: false, }, { name: ".jpg,.mp4,.mov with .mov", - sl: StringList{".jpg", ".mp4", ".mov"}, + sl: ExtensionList{".jpg", ".mp4", ".mov"}, ext: ".MOV", want: true, }, { name: ".jpg,.mp4,.mov with .heic", - sl: StringList{".jpg", ".mp4", ".mov"}, + sl: ExtensionList{".jpg", ".mp4", ".mov"}, ext: ".HEIC", want: false, }, diff --git a/internal/fakeImmich/immich.go b/internal/fakeImmich/immich.go index dd06a72f..7b64c512 100644 --- a/internal/fakeImmich/immich.go +++ b/internal/fakeImmich/immich.go @@ -4,8 +4,9 @@ import ( "context" "io" - "github.com/simulot/immich-go/browser" + "github.com/simulot/immich-go/adapters" "github.com/simulot/immich-go/immich" + "github.com/simulot/immich-go/internal/metadata" ) type MockedCLient struct{} @@ -14,7 +15,7 @@ func (c *MockedCLient) GetAllAssetsWithFilter(context.Context, func(*immich.Asse return nil } -func (c *MockedCLient) AssetUpload(context.Context, *browser.LocalAssetFile) (immich.AssetResponse, error) { +func (c *MockedCLient) AssetUpload(context.Context, *adapters.LocalAssetFile) (immich.AssetResponse, error) { return immich.AssetResponse{}, nil } @@ -42,7 +43,7 @@ func (c *MockedCLient) StackAssets(ctx context.Context, cover string, ids []stri return nil } -func (c *MockedCLient) UpdateAsset(ctx context.Context, id string, a *browser.LocalAssetFile) (*immich.Asset, error) { +func (c *MockedCLient) UpdateAsset(ctx context.Context, id string, a *adapters.LocalAssetFile) (*immich.Asset, error) { return nil, nil } @@ -76,8 +77,8 @@ func (c *MockedCLient) DeleteAlbum(ctx context.Context, id string) error { return nil } -func (c *MockedCLient) SupportedMedia() immich.SupportedMedia { - return immich.DefaultSupportedMedia +func (c *MockedCLient) SupportedMedia() metadata.SupportedMedia { + return metadata.DefaultSupportedMedia } func (c *MockedCLient) GetAssetStatistics(ctx context.Context) (immich.UserStatistics, error) { diff --git a/internal/fakefs/fakefs.go b/internal/fakefs/fakefs.go index 186b7a03..637f269a 100644 --- a/internal/fakefs/fakefs.go +++ b/internal/fakefs/fakefs.go @@ -12,7 +12,7 @@ import ( "time" "github.com/simulot/immich-go/helpers/gen" - "github.com/simulot/immich-go/immich/metadata" + "github.com/simulot/immich-go/internal/metadata" ) /* @@ -116,7 +116,7 @@ func (fsys FakeFS) Open(name string) (fs.File, error) { r, fakeInfo.size = fakeJSON() default: d := info.ModTime() - if d2 := metadata.TakeTimeFromName(name); !d2.IsZero() { + if d2 := metadata.TakeTimeFromName(name, time.Local); !d2.IsZero() { d = d2 } title := strings.TrimSuffix(path.Base(name), path.Ext(base)) diff --git a/helpers/fileevent/fileevents.go b/internal/fileevent/fileevents.go similarity index 87% rename from helpers/fileevent/fileevents.go rename to internal/fileevent/fileevents.go index f4da5cab..b6d29fa2 100644 --- a/helpers/fileevent/fileevents.go +++ b/internal/fileevent/fileevents.go @@ -1,3 +1,5 @@ +// Package fileevent provides a mechanism to record and report events related to file processing. + package fileevent import ( @@ -10,7 +12,7 @@ import ( "sync" "sync/atomic" - "github.com/simulot/immich-go/browser" + "github.com/simulot/immich-go/adapters" "github.com/simulot/immich-go/helpers/gen" ) @@ -84,12 +86,14 @@ func (e Code) String() string { type Recorder struct { lock sync.RWMutex - counts []int64 + counts counts fileEvents map[string]map[Code]int log *slog.Logger debug bool } +type counts []int64 + func NewRecorder(l *slog.Logger, debug bool) *Recorder { r := &Recorder{ counts: make([]int64, MaxCode), @@ -125,7 +129,7 @@ func (r *Recorder) Record(ctx context.Context, code Code, object any, file strin } r.log.Log(ctx, level, code.String(), args...) } - if a, ok := object.(*browser.LocalAssetFile); ok && a.LivePhoto != nil { + if a, ok := object.(*adapters.LocalAssetFile); ok && a.LivePhoto != nil { arg2 := []any{} for i := 0; i < len(args); i++ { if args[i] == "file" { @@ -258,3 +262,34 @@ func (r *Recorder) TotalProcessed(forcedMissingJSON bool) int64 { } return v } + +// IsEqualCounts checks if two slices of int64 have the same elements in the same order. +// Used for tests only +func IsEqualCounts(a, b []int64) bool { + if len(a) != len(b) { + return false + } + for i := range a { + if a[i] != b[i] { + return false + } + } + return true +} + +// PrepareCountsForTest takes an undefined number of int arguments and returns a slice of int64 +// Used for tests only + +func NewCounts() *counts { + c := counts(make([]int64, MaxCode)) + return &c +} + +func (cnt *counts) Set(c Code, v int64) *counts { + (*cnt)[c] = v + return cnt +} + +func (cnt *counts) Value() []int64 { + return (*cnt)[:MaxCode] +} diff --git a/helpers/fshelper/TESTDATA/A/1.jpg b/internal/fshelper/TESTDATA/A/1.jpg similarity index 100% rename from helpers/fshelper/TESTDATA/A/1.jpg rename to internal/fshelper/TESTDATA/A/1.jpg diff --git a/helpers/fshelper/TESTDATA/A/1.json b/internal/fshelper/TESTDATA/A/1.json similarity index 100% rename from helpers/fshelper/TESTDATA/A/1.json rename to internal/fshelper/TESTDATA/A/1.json diff --git a/helpers/fshelper/TESTDATA/A/2.jpg b/internal/fshelper/TESTDATA/A/2.jpg similarity index 100% rename from helpers/fshelper/TESTDATA/A/2.jpg rename to internal/fshelper/TESTDATA/A/2.jpg diff --git a/helpers/fshelper/TESTDATA/A/2.json b/internal/fshelper/TESTDATA/A/2.json similarity index 100% rename from helpers/fshelper/TESTDATA/A/2.json rename to internal/fshelper/TESTDATA/A/2.json diff --git a/helpers/fshelper/TESTDATA/A/T/10.jpg b/internal/fshelper/TESTDATA/A/T/10.jpg similarity index 100% rename from helpers/fshelper/TESTDATA/A/T/10.jpg rename to internal/fshelper/TESTDATA/A/T/10.jpg diff --git a/helpers/fshelper/TESTDATA/A/T/10.json b/internal/fshelper/TESTDATA/A/T/10.json similarity index 100% rename from helpers/fshelper/TESTDATA/A/T/10.json rename to internal/fshelper/TESTDATA/A/T/10.json diff --git a/helpers/fshelper/TESTDATA/B/4.jpg b/internal/fshelper/TESTDATA/B/4.jpg similarity index 100% rename from helpers/fshelper/TESTDATA/B/4.jpg rename to internal/fshelper/TESTDATA/B/4.jpg diff --git a/helpers/fshelper/TESTDATA/B/4.json b/internal/fshelper/TESTDATA/B/4.json similarity index 100% rename from helpers/fshelper/TESTDATA/B/4.json rename to internal/fshelper/TESTDATA/B/4.json diff --git a/helpers/fshelper/TESTDATA/B/T/20.jpg b/internal/fshelper/TESTDATA/B/T/20.jpg similarity index 100% rename from helpers/fshelper/TESTDATA/B/T/20.jpg rename to internal/fshelper/TESTDATA/B/T/20.jpg diff --git a/helpers/fshelper/TESTDATA/B/T/20.json b/internal/fshelper/TESTDATA/B/T/20.json similarity index 100% rename from helpers/fshelper/TESTDATA/B/T/20.json rename to internal/fshelper/TESTDATA/B/T/20.json diff --git a/helpers/fshelper/TESTDATA/C.JPG b/internal/fshelper/TESTDATA/C.JPG similarity index 100% rename from helpers/fshelper/TESTDATA/C.JPG rename to internal/fshelper/TESTDATA/C.JPG diff --git a/helpers/fshelper/globwalkfs.go b/internal/fshelper/globwalkfs.go similarity index 100% rename from helpers/fshelper/globwalkfs.go rename to internal/fshelper/globwalkfs.go diff --git a/helpers/fshelper/globwalkfs_test.go b/internal/fshelper/globwalkfs_test.go similarity index 100% rename from helpers/fshelper/globwalkfs_test.go rename to internal/fshelper/globwalkfs_test.go diff --git a/helpers/fshelper/hasmeta.go b/internal/fshelper/hasmeta.go similarity index 100% rename from helpers/fshelper/hasmeta.go rename to internal/fshelper/hasmeta.go diff --git a/helpers/fshelper/parseArgs.go b/internal/fshelper/parseArgs.go similarity index 87% rename from helpers/fshelper/parseArgs.go rename to internal/fshelper/parseArgs.go index e6358073..40ecfed2 100644 --- a/helpers/fshelper/parseArgs.go +++ b/internal/fshelper/parseArgs.go @@ -1,12 +1,13 @@ package fshelper import ( - "archive/zip" "errors" "fmt" "io/fs" "path/filepath" "strings" + + zipname "github.com/simulot/immich-go/internal/zipName" ) // ParsePath return a list of FS bases on args @@ -31,9 +32,9 @@ func ParsePath(args []string) ([]fs.FS, error) { lowF := strings.ToLower(f) switch { case strings.HasSuffix(lowF, ".tgz") || strings.HasSuffix(lowF, ".tar.gz"): - errs = errors.Join(fmt.Errorf("immich-go cant use tgz archives: %s", filepath.Base(a))) + errs = errors.Join(fmt.Errorf("immich-go can't use tgz archives: %s", filepath.Base(a))) case strings.HasSuffix(lowF, ".zip"): - fsys, err := zip.OpenReader(f) + fsys, err := zipname.OpenReader(f) // zip.OpenReader(f) if err != nil { errs = errors.Join(errs, fmt.Errorf("%s: %w", a, err)) continue diff --git a/helpers/fshelper/readjson.go b/internal/fshelper/readjson.go similarity index 100% rename from helpers/fshelper/readjson.go rename to internal/fshelper/readjson.go diff --git a/helpers/fshelper/removefs.go b/internal/fshelper/removefs.go similarity index 100% rename from helpers/fshelper/removefs.go rename to internal/fshelper/removefs.go diff --git a/helpers/fshelper/teereadercloser.go b/internal/fshelper/teereadercloser.go similarity index 100% rename from helpers/fshelper/teereadercloser.go rename to internal/fshelper/teereadercloser.go diff --git a/internal/metadata/DATA/PXL_20220724_210650210.NIGHT.mp4 b/internal/metadata/DATA/PXL_20220724_210650210.NIGHT.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..ef348867f64cb29b62cfe45a165b28637830c008 GIT binary patch literal 976366 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�z9WFUfg;8k^wRmg(_qP54VwsS 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 =mJV?b4_0HJgsR`gPW4-*>YM@e3+H1xeL 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%0ANaa%L|s7tzKuW| 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

+gbK>_x@tDEpD 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

  • EK8tG2BLDPiGsL#+pH|C{0OPL#DT~p|%k}aL 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 z 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
    ppQ>+2}3hZ~h!2EG^sO5F~0*!L>vF)}N)v=L$e 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%0A<-NkCL^cWsh^kty+99<{<)(imLii=> z$=aAq-c;%=d zb$AF^LWY{0v;lQSQkq^u$wzadn3&g~W`-#M2IB&WC(~2rv~<7fx%Ul}S0*9zs zQ7{73?IE*SK_+zK37^MthGeUU<+O>N>PB!@hD@EhCX(J8cG)%CxYW1C8*|)i!ia2@ z9$DBjGINGbZewkbc48~Auzir^9t_}a;96J7R}(38 zc2jpa+;$@19Y6@n*eS4RXDVTbYKQgn&cv?e_E9zX?Nl6K5wP6Mwpypw7G*1DanP?^IK=r)Mr#7X=H9yElx=Lzm`+to#jvapLfYR~?)YG<=P}ev=M7=@ z>cK!%TOC2tX2lk(c315C+(vQ+>z2?>nh7=CQzYe@V%;vHi@DK}<>V`>gqRum*fS91 zF-Fh39##ujT#m~#JYRiMPt>)3Xf3~xV zmnUQTV3PDWo2&{Z-S0pGAGiAlOpIG*uwW4!1}{vET@X)RB0isk+DdfS@i3*)FdM{; zffNA4F(qk#s5K;C^!PEcF4Z&qB?US6E5TOh5Zd)NodsYq%OeO733a-Nt~`f|Ss`&M zcY?NWYmhQ?!-0v$&XDkXb57B>gFM+D*$cO>vNMUblF8+qH5;DuehE&Vzgnzx#5*9p zG;a4)ab#`+qB1vte0B||o`T;rFT(Y*-S46%%Iswa(1>Mh=TqJWlt`5m7hN(FLR}k1&z#AO;U3krVc< zQs!r{#UN)n97zcxibXU!Cldk+QCJ3#LJ#Y}5OeSasud-S`1NTYeOC)J$)gZQQdoQBDF`^!{eEYx zL_=ztIud#mawR-J+NS9<4mbguX`!W$WMbrbXG=4g!0RK`qd z+H4r;)|NR#xw^4w>|6z^SBgQgf#30n;1fXr9(3nYo5QH^pc5;k)+KM; zRvxy-dZ-_C1ueM7FGAQSpfo<}C3|XX`=tm$&0L=2blrT;|AP+Bzovd z%ku{(qnc-AFYf`mvk2h3X~qZEVg<%*p*cIdUUw90b`1X!YGBju0t+-_zMklj;g%9~ z-@Z@eOL%H$z`brlSz&^X9&WM&Eg}a<;ao{m>rz7~?a9_vY}Vz z32yI+tomHW6TMBf*mGO8vq(ozYv7cB-9+AcF8c>iypV*AF zBgxjtPLvT>t#6Z-#z4t?iTvY*?OR<0chvrVBUtRVtfsTwVmM?9=xr|(VKoCJdrk!K zAe!KHPlHw(0O2^Dlc(5N?WdG8^X)d@*AW#XW)nY#zh+s$;RBjEH5%`k6~u2+*66z) zYE3@Jq#g-4tdm`;xz+HRG~1Aa%dlsqc3K?~r|4`VrEs!i>q5>e4G}a7hsE+~*y^0< zJ_(rf=`4jpY!0URGFc;NZPOj8))F0I?4pbVw=z0u!y&y%n$8ZR;sOvmOC-UB=@^Jv z6FuATciK5-R_nx+x@&2&KeJ2tX#6-GAG>3hBeF@uqC`an?JT()(b(u;d)U(ok?5s9B zdF80?Zoz}*$1Nd?)0Yf?EaH%kC;g17%>?qtK0Wiq?Sk!#{Vqwo+w?w7#4nR#B~SJ&myg?5>PFJZOi@faaT}HsW^+ zi{s&Te1b1j`&%5p*Cd`>q30tURvwBZagnO#ttj5ZS9gI|4M#ASQ zn$2{bK*_;6jCnp@G(ySQhF2~}-gZdzBO{!i3ddUIo0XhRVjp{?eUQ3mYs?>F+nI)% zTMZZikgB~ci;Nk!S*x|6W+oRl6VqPUE9x+|cb94zY)#YaxvXhPmnGWtLpyUV<`Pc# z>|n?Timv&_$h0Tf%$F;IEPKU9T^p&uPA5(3bFQ=I*iPMe*u$MWiiYH^!lzKU>pI6y z-K(SRN)Os~nYqx^%sID1?(&)Mfts1_d25Z9d02CG8ZO5LWO>NtBDk`cIlWoB>D0!6 z;Pz@mfcGK!bQSnYL&kQ6be>j9QTje__|AG2#(AkvMs;6QJ1LX2PsIWYhhv{FS3`0d z4^biV(Esf$t2RgEF|RIV(kIM{GvzVim$Qrp8_(cWH<`Tf& zA*pYe@x`?9#E&HQbD6zbUwmlFD7YC9%0;96$Z8|fD2jP$Mfs~)|1_7wUZpK)vK*WA z=HU03vF4RfKaQu3yHrs3ShzyS^%eTEiHLxAu)-0&#jY=TOmLp60cQ`=I+IRY z%Gc&&y>sZYo85GN#**^7RtS7-mLhw2vW+_xZD#p}sXEMRBMfH<%nn>*yep1f*p0N^ zWyjBri;|sOUn%Qwe2ABH67!>U(K592X(5~neH%>e#ewMUW+5a8q`_`&Em!K5x;Y(G zv86l7$%@a4?5%l_V;W+?XK7Pa#~s;gSkaG_P$9OBhLd!X?I+68DNQp7q>e|}70k*B zLKVj_?TTA>C+AUXN?-G4!TydcL7?X>R@UPMp?C9~PDdPEGt3EB^(cl*6{8`|6^&&Y8EjW!KjB%1*;B1t3bqYNjcUI?=H~?p z3>ix*%DLIBB`X-qkj?kO=%-KDHlo(zEnYmNL4v{gNX%^IDtrJY9OB3ceZQCzg$ zWj8(^jGa3qmuw4q%|y>@JAwnz5sva9IV}rCjgsC(j*olEb6SFu&&7+ggWGCZwWD$4FiX4O?Vn0M2?zgQGlk}Z+t)zj0RJmD`R71?paV}tJ1f!Qr&AN%>? zg_lcqY7R&yko94ucAT=^-c?yEq$0l@gQhR<&5%~sQ#K5sq?0;yPblnjPa4$d%m==0 zk4LN2wYGMHE(AkkZ*s93CKS8@#pC+Z$qO|m{TABv@zNR4*{WdO4Rj@ppBgOXFKqDY zxh%)luEQK=DZ&n-eHDe`G9ZO`Rf-fHBf}yZkyucH345_;#l@V3&1~J(boh$k_$23c z1B+oZC>JNWG>|>O%EOr{D1_gEO10=o8bJ#Yn8_}Rm*ixHm18#WGhRvhCsrisctiCz zj`ac3tdzmII61Nu?*=Z+ljP_SN7E&M@RQa?#4>Yb47{CA#@5)+<+bWL&Ila{ zxmLh$MemRT6wvaa)D+k*xHN)dECbO#&zfDUPWz?)^&=fkzbq*{kBPLsc0oI(urQ&AD)=*fr9-LNVqLmBLU)vnc#Xij3_`4uv~| z`ZRaMPL*+t<4$Z^=e4b2rq~}PAa#m_(T!EL}@m0pU1x>XU62?yL+% zb#@V_ZILkd08mgSmgyOdF!1Fj&lW)WgyKd#6Y9}3wxD0{b+bFHjyzA2tzfRZ-4q@< z3jAOy4Ng(pw0K7Cap#d65P5IHPOv?7E%K83w1^JwAsY9mS@+flXPf@nQ zs}>f)OzgtkQ(nf7Ypw#JoFj0vIz#v#j~lOJ^)7-WIf+DWkMbaGkL+q+`ZfrB#IJ=_wK086mE0o^k8U8?RPO5qw`-q{Z! zk<$!m(P`kUjaEseZUO_;G0Z1nwJQOr;*OgXmNYS2k=;%p1FQys=Rov)Htgi|eitQS zaZTlQ_G8AT5*;z=4Y>1y1xF>y(wOPi^uU`THls5=49|6#fR*9*;)3y9b?IUe+@ZZu zqJlnQcKJadB9>^a_BoHViMl@c?lxroRx)-_;fgJ1zCoB7Uc02!Y0H-Um5kCLjBAWn zj_u>1HM0-1HXp8$0+WoYp4?5atlp9B^I>MJGka$>fYwj$EAgQoI6=9~KqwIW zM(vQnkfe4q-mDtI;f8Kx2s{MUgNPY`@rGuk-j^4QRP?Ud-(tUQEx=@L#`SS`lJhCG z=(fqtPFwbbdWl!D5)pj>du~p*Yc^V|f$X(BP6W|nIEnMYX-qForo}bg#rQB96B>7p zNhqC;@f?C)OmfgUcecSw-^T5H99m&d=`LFG-k$WM+;FM=Ze$Rv(Q+NTXEyVv%QcHw zEed9^4NaB)b!x>Dkz-6-OWYKC$hO8Ud-7V=`_X16z(&uXVbyN^?NAU011hwqsZ;f^LvA7}p71kFD+c{`>DERp8MO(0XsYDzdNI&v6zU&?9{A zo%h^F7OUu9IRx}Po_ps5H-V{rJv`qFH4H8R^XK0AnfE{K=alm%y1LT!XI?${ z>gwuYS64S~y}E(X-#-Gwo8zm8UR^!n#w}NO;PxNF_aiaJO;Id&-L$o@r~O* z`@3()_z5@1@4)yOH}7)`#x#ESvH1C$_+~JE41RtP-;ciKfxmnGIGb;}?X!>bag3k( z%@2(K^wz7ZU%c(=N=;K}+OMwc%{koN)4Inl(kl)3yZ*g@|0%n~J@m7wXY(8?OI*9v zZdUkf6vN(2Q}dnn;vmcN&6T@hEW{)PvhGyeS5Yj2M4#Q4eI{J`_Me$G$7Ies$6 zS1-Tg3Qyw-560a3@&}&(qj3M*ZjPUZ@gp(5ey#4s_^z8{3FAlI92*$lc*O&cbL0BB zUwP+epTCRSZ+Ybd&u515tv7F9V0_!n@fPFTZ{DZC_(3!sBzVGHS(iC;$`#$%++;Ve#eQw-(b9{Xw-2QzJ zyhp!?$A8=peC|2ic>NupJ+ABb=EfU7?{RL9ar4!!pEthk4G$dqOYk_i-@JW``#k9L z?(^W!8$aap#&>?+_@Ot)c$h2p4G+8*csZ^(jGv0zUXAfrf8Kp?)72L}{_5)a(j%^3 zfG3NS)fEMdKKK6Np{}ma zu3PZGtE(ZtZ@Iet>iU)WN}R^G-n?DGzi+#F`w_QazYo{X>iX+JpZ(X>)k|^v9XIdu z?HE7u=I@%g&s{g~^WSj$6LI?&;I_A7eEo$N=d+K+-u(H=^u`sBv*!BwT>p)`ZvNz- zb>r$+A98i|BVY8uD{%cPUH|u|-2C~tn?JALq3hc}_ikKW;n!}?F^{RyaLf3CW5%LC`NgxhbqInKTm4}`COpKCC_em0-^gU`J0>XAlI z?_FV5!%evHGkvAN24?J??Rjy6eeLdi)oC@!e1P zif26asZaT`r$7B^&wSQbJoDKs&mbrGY0nVg2EXt5_dT0?ep_g_uOH;b!yo?eCw}4M zpZ3HjJzaR#Grr8=iZNRd_D00 z&%+4cpZUeByB>V?>o*>8>y0O0-E!BBTkpE@nP0tn5}xPnH$MAyeMr||n2v6{{Xus; z_#t-Fo}&x8d!)@paeJ)opj({-`gdI}duaGr!}>`D2)`f5rDd z_$ktl|I%aK-~RhAV;99YJmk(Vd>oGNsZV?QGrs(p9N%i=X?A4=l1bh0{9rVmOlQkg z7=iq|EsyZ>o-fUdzVW}j_?y1@zrN&^-}dd_@tv>wuJ3;J54`>jZ+z36fAB3o^b`Nb zTYvJWe)?yA_UC^2SAO-^-to?N{h#mto%jCk|Mz3PYyY;p^u8-@+EvM@Pzw5T!zm$H^ zqdLwV^Ze0IX1@NxkC9&S{XhOo4|xjf{{3SY#c$vFg~qKUhgT216`$j~ZoTX3c~>9!8uICHe8z8n=s9nB+gpC+`~Kqj|MiYPNx$du zkGcDY-?Kfu@MHJqo#*}Ki$C;~SKs!G_q>bt9=dmw)iJpSe<={^lRK z=gEtQ{^;}X-~7){Jnkhg`<6fX^hfWz+k3_DeAhew@y>tv!#6zsk6!wSS^D?wC;o-{ z;L8)0FMaes{P@S8n19@P>0_TTdEIlWH+|nHe*AS0`78Gu{&fF)U;Fl_yrc71FZs?} z-hSVko-n!l^>2FSo2>7D%M)Mx_h0+hFaN}s{PPb!^X2dS@QdG9z4=@JWc%#PpS|{V zcRXuwNAx=OzkKk$4{9IZ{0%?*vL7>U)9(1!AA99%U-p`>ebF1ayI;dU@4ipH|My;g zr~0l(yyknY*(+}S+7CbF>Y?v_-q*kVtA^WO&K`Nk3;a(%=7!t-xvzeq^M|i~^G`kE z1;6{FkAGzQ&Pe;Ce>%PCw*OxK(x=2yI({Mbf)lR`i0r|x^jKmGKd z-v5_h@^Am^{EyF+v~PK?^=I#V@^?w^ryenTe)|rlIA6W@_dl-wS^T80`N0qT=vI38 zL;mh>lwbVtbMAiY>;LvsANalR`J-G9gZfAODx{@1=_RlY9XeRbCS7WGAcEI#(hAHDC*#y8*nnvcEZ9ryjh z&%f^eXWVtqJKq2M-~WcieSiFg!*74legE{W&+NSQolpAP-@l*LZoA_=*q0@4foLfBXwy z{^qa!nXmeuUnmE6lt29({W0J7q3DCZbL;>0(%1cOkGxqq z@b`Yl&-t&(e}nqAfBL#lzx}OOFZ#j1u%7gSk3OmT*O$ENrH_98i+#DOyi@)$^W3KK{0QKl;yayivaP zZEuTjyy$s9|F8e!<;|De{R2OI`oAlC4|q7fzwdkWUZWEPA&B1V>YY_qiHPWRt+IMu zEn2i7YV;lwgajc(@1m0sL?6lgbzc z<+nSdu8(-S(DTQ8@vqU}(|_xcan%Ak^CL_G^`~VZ_5~B?FJbMi=4-3Sqe-2Qn<6V zu2X$wH1kP;D5;%0-qdPasyxsA>38lzjCX0rAGQo`ypK$|lBS1nB^|NSW(%&dHmT|4 zq{;?)oMZjGcV^R>RYgOVyOLK+vG;BP=67fp_H(EhhvRz7MU3L5zWT^wQaOro=cJ_d zq;zZZ!s+146b3rRvJq=MP>i^VHlZFN7fjHTrET zRrABMb>pSv)SE_{FG$zE3-7?_%2ehXp}?XCFF7ol+hB=Uj3SE&_X-%1cjlH*ZyKd;YkM6%Xr z)Q3V-122sth?DM=!4s_OL(ea+c~n2dkYyL|p$~4F_`T&#Y~YrmW;?#gndi1;Zj3>2 zu3Lcm7MLv){|$#Of#bw7$(yNML-lK$fVuAL7Ej9A@ig3-(KOGSiOo{-Z`LBVl55iw zV@%}~2DgB0vKC@$e1EU_s3tB3Ovf{6 zy1@0HrCVT`^MizX#x0}CA+thQo@#CzN_ zWw`HZ<8j`}p7vM4b@lr%@jE`X?4iHvj<c(T zJ9h2fyt88%hifFcx6L!G@@z9~`EkhNu`V}$dfG#|);kJjF zZ3%t&;Y|E?GxV_D#s7?DRXv;29zDGjWK#j|&0~=*4f&XO|0_vTOy%*aLKR;2Us<_+ zYg9A7%lKEU^rvDTJaihzC9+8;0iOGrTe(dH(eWdpk8T04s3f5rE8mq1w}WHj(aQU_ zaS$HFyeB6=CzCH#pYfu{LimN$d9U1Ke2DL2Sd$SJUJf)5?IM08JI0AXZ)0>;Enj`B z4+jVHY{j$WVEPxgz`c(!mX@wtpp{htr7f%!6UaE_!BvPT|!$REae4Xqo{~tN8 zDTHm#uHM#4`4vEfrIB<*WH5;U_zoDg)FC4>O}~fllWh&8!=3_#O1uOnkg$z2)9sEtR06PP_^u ztre4tL&+;b<{(&6CW54~Wc|EqhSo#g4)ThB`k1RfbGeKc)hnK_l1+OTuU18e3j@JH z@7`B>uWoIm4}+Rqr{U%z^dQhmqq?YLZF}o(oM?q(R_D@U*lVtMClic;pwQ+$gO@Fw z(8VtQpK4(lz~iI2VHCO??$)_-3uyVh2rlhiYU!6FF=lojzS{Y8P%9gdn-@~9m*4nI zO9EHc+>R{lu;QgxYUru-TBJU9I$eK(H!0L&Ds#N2r~UWJaS~F2&^ST!xS&k~h=1|| z|Cz~e78@aLik6=2;F%XA);r9eNsn)VS_SgLZ7oXA{KYASi;@fc_0aT>v3$7%fxdyh zuv=ibrUY9b3*~kT2&8_=Cy@-ucior|kt~m7{x}lU5CbwQ(PJc2#J`&i{;ZeHcH(|)CxOo;S=%1{Jk%z21(YOsux?Yf`#`$+`_sj2hRkLX=oCH-~l zl%GL=zIGyQ zv1GfuO+iOYbiG8d=B7!3-We_&ucw;zUgjP;)}Z(6Q_MpC9p8mS;M6aytin=y8v5Du zEE@8Xhh*!QaOi&6@gLaF&Tq^dVfag@-$ zd%7)EXM#ZTCrRceHUi>?SKS|!4apwFTo?goh4^)C+JkaC77t}LJ{L1OO0JdhG!|Ke zWb}{jXeNa8pGN{WqJ^(z1Dewq1D_kxGiofPohQi{&EyGhjb0T;)L+D)r9MUEV>^Z& z%vIRN+b}%R?Xu53aEuTAGXo2G+rb+C_ZY=XuMTmy#5=#JF7vvNUXM(@R!X6fJ$RwG zSz+Nlep;zB#D?d+w#klC-^p?AA3xR!Iyrds!Kg3*rt1D`P1gHbRWxcT`e?1Q&$(Re zyFW{`My`1OO&Ub2K6c>g^5A6FP<){q`sXVWotp5>^Y0l_8r{7^C;eLC84{YA$+eh# z9CcBd=X>WtIVP$2aIIG&vz4*aFE;|?J)s2$zGc>nmO2xmhY)GssbddMoh|~h{ci_> z)6qw?=jv|*tym2{f~UV;Q-Px%4>=dsF#j;`lANs8XqN358E3#vr}wHlh2wGZ0VKn8 zO#Lvqs|1?{(w_UasJM%-^>eGN&^3=N$#6K=5AHm~jX+;YK!y$%?nY+-t4bTfokGy^mBnTr(EqDgW{vCB5Ic z3^A1G{1tQtKGAukXHG2RQ}Kt3Pi(pNE60zkvKx~dFwW4yOa*PIWBHJ; zg`T~5%B;uFZm^qpvsz;c!~SZ<{gr0-7rQWdqed?%I9M4>h|+Ejgl#N8_2tMG2(uy_ zStOYlTn4s=hnQ$iEgNfgg>K^RU9_&~W4*tg_z^${denuounzRro<@GTeh#Ug4Q%+8 zjK+@q$P|9V_Tgj#*{~9jf>P|0T$As6hF|7+rsyVQc94Nu(P&5hAuP;&KcI3poUtxq zTe0^z=LPgkr9Zkbtf2bS<7?N5_U7i}S?tHX_Ni^%1H8X>^mu+C`VvRBtGtU>Xo>RJ z?T9Z^&2Vy^IW1l+?CBcDVQ0%^rRYI9qd6i*YJ@$Lk9&=498RSvK9aq_6MNv9abZ$* zJ^yrBbGF<#&8|RVM`LoMgmsygJCD%8)azzPdb7~#W5Cj6CP7^!E7-YJX8byjlyt8a zL#dWl($ObNGB9jT+Vl8;gIi#)!rH6gBeasLNA6wo&C%2L@A=t7n}+f(;i$iJ9LR`GEqh*?TpPh?3#;;KPvJHzUge2l~&AaDVkzSWcVy@%v_O#Z*{BEfCug)se>n z<6;)Zx|Lqef?RI-7LrNA&~{^wtL3P@`RU}N_PT`!7fAhgMV*6tdrAu2V1&6lOpfex zIo8YVNO)*=#fRKjPj9l}?^(g>(4Y9ye558F890-CJw77C z($)BLa_`qs@F#k_yKA!Rp;R>(#P43l-0=NMiwL}M!G!?4dQc8C%24_-Vbq48+~sS# zP^Ct;q-*#spgX1T6*BYD_LR?L!}Ml6c=z&|=kth;f~7)7F_${=`as-NaNgwMIKUK0 zaYJo*VjgD;&R?@Ugx-rv-2z|2YF$3J3;0|wjt$vKcH-g971mrZUo_DkHSKv(Uo2(p z%<=6z>R_&u4zQjq=!{};~MDjPn`x2`KLa`vm-Pmf_2A{NG`0m z=W%Ec=k2e*+dhtFBglrH1cg#7@mv@L*xdqM+GSf)eAj0`N_a5A*bBLQ*Boo7)FR{l z_tX4h8gJCqRBZcKoEd%$R4uJs!DAad!jT1@k$OFgFBkY5=$vzuBf{cDk_RH6JgM;v z$=YwIX9}54%sk<2*|RPDka`PHE(;W0JzxGZn>c+54J>dShWgL=Yl@~FW;cuZ*7<046Y)k2xlewzLb$HU2uT!{bG+O;liCh0j+eqQ2T z6pXH`l8%X#JN`NRS0u;Ufg?){^!Q>nUR*`OGuk*7!YMR=Lu#NR&jFyo zGiYQ;SIaHo^JvC?jx~Klb>EW~A5NM*4)(cu`IFD;2cv=z_Kkxb==TnR{kd9Ao4gG# z^$qBJ8P(0&{^j)j{^4#TzdV-gZA_20km>84N00ISIw9k=ri%(JZR7Hd8(*65`UiHkQTVT4NFTMGQ?x!67W(wtp>((v*b*mfZ?;YmOFiBaD z5ElWV;E$mg+k)~L;C-OF>lf%{b6!rQbtLkHwS1O9Mccdys^iwW!wwXpTVR4p6MHt z2iGERHQmt}n>AKN6iK1h1zHgaPZ8a9ZgB(k?p%M18?>=1~>acqp>{K-(sVoVSQOlJ$~k{yAsNSlSlSL z>A8&U{T5fpe~df@3My^B{^mT6Fk?C%*YSK@J`TOoow@}azwTRk^{jSC_i6_z^6ei` z4ikt-E^MYYJ0@qH%H8M$QYbv{yJ8*s5Fe}%Wsy=cX3WIg+ft#;vKKim9zOK>yI`w z^EE-l75vvAZ=4zUEYJlEkY{BVLF&xV<5~(4yRcrd^7qi+_8o7JD@V>gIXvzBz(ofT z`PyD@V`?Kqi&<|-+AP%<6Md7r|?-b>!>z z1N}zNL+`p!f4%S7fXh|2O$9^U{3&Rx(_g8VL%-IhWSz(UIj{o1r@0Rq-_i4BR^b>x zIVMSyE(T3KdbA}IWy`36eV7b&akfHmqA%CE6#S_=XRJxL58YXy$KP|z`AXJ5Tz6ca z96dMtF{wmWoD&uGd4&CKt&Q1ln_D1X^J1#2e|&%T_02&+dc1!y>qXX$XlJG!L_)8z zs}6D1eg#w0>k!;iTP^5NMWs=A9yQ6VcipUp{xZEU2nj|zE9#)PuAS=cTo-T+;(G3w zuzh7j2itD!>l$`>CWK#CdmC(mmx)375NQ*lm$_WOp0-Dw?u;t@R7t%#J)(Wfe$+1} zKQMB{^SvjM{jK$7n3jQUt49CzeFi)(7STe-Q&Cp#xclIbS-S=6?Q&76;mft*m`|El zJq1SQYZ_^A#~aEg0tIKN8^=o+v~)2d%2is~3i+}R!tA_+lbu@ds&4e0`%klj4#(TH z0gmHS*)ZwmOW*Qx;kOP89>OndFV-%ndSA8`)yrKTzc3y@xoIxmHerh=(GTEo&Y1$1 zj|S%{#`R7+-0t>&#k~bc{I}$ec^l9Hbl0P{r3{yYuHgMGgJgo_>?Aeh)OGw0ALKpW z0@k16iI`6W*Mn8|98ZWau>7KYl=}~rqGsGwZJ0?9$)DiDpC!BCcMd+3A)Xy-yrSJe z9qz@aiyU56c1WwzU531Bw50w06NK8on}5vTxXf2Cb86*PQM*tWw+ZX3*}nzKwbfR^ z8)O|?*!E%{_7RwS3|)~o6OeJS)H9;D{Oc?XE+j9p-4}&!f#fi)-E;M4=;2UUZehRY z=?|2YP{kA6roQ)Hl^#P+pb!P*pUqlT_v(_!jh!RP62A5XtH76^Ytio=)Ovg9&qBjq z33kSmzpnDx+4R)=QJ+s4CZz4Jge%E(z%o7c>P?sChi(QFC1(0t;IqqCsvts)#PqGg z8Z}Yv7^8T;P$=Hz`-EG-p%+W`>Pdlq&?~#!$;!S>QWXH4DlRN^!SAntb%DrRm$|aq8r23U(gUaWp&9RuW>KFN!HFUeGc2n2;yRLWXY)v(+e+FnIEa<~~PCS0AFd~m#DC~6SLc2Ti@IfGw~x$()VpSj6F z^u06NQn2a9Iu1vH_48YRhf;E=3z|EeI$QHi5o=M8pc&wnWuUv0AmiXq=o*+rn8d&z zaQO?(UFGibVVlwD;}u#Qm%}#s$Bj*`Snb=?kZ^zTUrZ7fmop@(2^WBAf0nvs^WaSe zyZy|Er^0JDT;@V!@@E@x?-jsh(Zp)d?%P8@nx!L)HILKJEYoOSDjEr#;5m$QN*pcr z-nkfsjv3RD%si=;L-5jjZxf|%#`kU5;Oq%gc-|(QiFtuFd4R0e5emM&=b{AtsGZ zcsKRrBBM{}S7e{G@qA&!H)b&w3QRMUUmYaIy`Q?XY-2wE&O7Z@#UHE$?2A@6P18Ha zmfF@L;_oV}23goW=axl930`6AKYrHSSM~$zcxyBGIU0Y|684s}V-$+Od|FxcAdLVVgmXt_U18pa$%PeRohDf%;50l1KIf~HnBI=5$M@(%NBF*d6U8DEQ{Md_V+lOxyMb$pli zAbfP}8VzB&1&noN)99Pn5KINaN}9V+*=c2nW7K+H5f?;fwp_K8>t|(kb&1m;{owU2 zFutYS%GdIg!zzCX@Az^eiT{)1>eG{opUJ~ftH}p4Q_VySl=as`WZ&hxr@>oH&mRWu z>s>Wqzw+JUn)d`R1pwBzNRNL30U%)m zg{uE=``^p6*?({jV2bZ=y0yC4gPH0QidE(1LHWyKr+?@BA1xv~5W53034AbB!4?!l z0qwt_h`FD)$6vb?w5e=d|FN6@+FoD-!S#PZ6)MMn*(?9#`Imk2Pac?|GPrGj>tqF~ zYdg?>0NM|2{>yqWOyYm$afADSZTRQ)7fd0xM;IG{OAhd#2|xmdfI6TAumYNZDoCe@ z147__5eNVH0AYY1`~>`8%FF*#UKwx)Jb(be3vdP;0Vlv4tmy$@3vh!=VG#8Z21Gzh z9n9qpro#dIf4&I;=HLg*1AqJD?-Bt1y`TTR?q4Z?-~YYNy%1!hPC2@0bn_0B}?Rl8ui*#_$WsLOn)0hzS3ajzO#h zl1|@mZ;!b^vMCJ!&?&dKS0%T%Xt1BK7D3(+al48G`yU0xKxbJHFcbh}{}ZQV^>>3K zkkbBgT>t2fNrU!Z%2I%f^`9)>u5w(U?v10pwDe!(66Wp>XB86W7Zv0Jq0GO;CWvSL zM-|{FIj;ZsRzE*Kem@a@cP~c)AyBMLKu}mfSeOsY!G{b$cw77PA&~4~4IuXU|DZlu z|9-Z%0i8YNxVQ*e|99)$JoG?J^gpZrKUC8GLZkvaK z(Dd{(0z)vW*n+y)`X1^=Y7TCCrXt#EV6-k_I|C6hKP4$I7YB1sdwX+nTLV{^kd0d) zC=e|qrljubt?MjmYoiyaWu~Vmtfzy})OT@I*4H$)MkraE2y2^b@PZ+)47>vjeSDof z1q66qVCsrK?od%7q=bNjq?ob0$=@(nnub2+Zmz~kU_=lJQFWU~b|zBxqM&E6lCihF zq_3HPilVWLmbI8Uh~Z26c&PLGin?ow`g&`M`-4Fu0|HzP{3VriRN1>G}HVnTaX=RfQ09lF(A|Ft_ox zRT6XXkgx-#8-?85HFaTbAldH-3JJoL#R9rfMVNquvaqXxu)d0cjVY)M z01I$cRMd45a)xQSC^>pa3b-R-0&bwDRDg%Rl#jKIuQ}-HsHtVF3`PSGG6JKOii5jC z(Zj`8)mIcL1S;t}O9{Jyp)L^qcCLQbUOK*Jrl2yigDXN`&;a4-Z>n#mX6_&)EaqtE z%xkEkWuoGT46yam5ks2j>$^J|8fj`6I2+jOdr66Tn`#7tVFsk2UiuCaW@-UCYDh;> zP&`A)PEtbK$yN<1W~c=ENowmT>4<}2WT2Wt?z%QmCtD2xIIp&(lpyGy=nMK3(V`gGvmV3z0A*`vOqphx>rmAm_w9z+qGf`Eui?w(2 z3kr`2*Rx8@d>--=85$n^4;M*IOUul_EOYOkOt6ufQSkro*T1;P0SvTPQ;glBOU!h=YNPjSKR4;Mw~xlXnlBQb>`_00amB;*dC0>`I0p z5Gi6afy<%n74aMSB5f5cO#2U%`0r}}md3;a6X+=Zj}#0FO3d5;#{6CUwpERae848E zA~`u5oz(EsBs*MOLG@>qmB13Oo401mD?lN7@`sXh7Go*F=TdY~fZrj^q*7lYU8NOR2NU=*rj`Gy&N<|-YfQP$HJ^JXeB%%YzP=w4eTGS?v`V+ z=^JwPt0t3fi+-Lkn6PpzOVLPMB1wb5u)^nH0G-M!LYclL6G4ESoaSy|HDfFfyHc)D z>I{~o$Ele(BZLTctYtA9MXW^`E^fwJB2Udh(_5xMWwRYa^D{p%Lr7W+9+NY0Ty$sD zX2nMdZZeH&wO{3!Gl>~d^N=g{MF2JrO#!d9p4#9sD*uvvt@oS&Q&qu+n`gZgALrNygF1tih9n?L9VDg`+&)oUhtpWd#)q z7RyfUzM?x`6?Dt==#~(|rdlJOUyv5sT2~Ro+3^=er4d9+8x)=rOe716pMk1pC%ruO zv#uejRF8ARYlYA}-nL_?hhhpsff28M_FZBB$TyHDKLK+yeR$E8&AY%hSMh0ZL9?tP zszQ6Xhspw;9C2}!aX?7S5|zB9IYQ!%BJ+C1)Rv5M3#4DM2_6)1pIMd-2=_Fff1yWzd<5{d?jJ!Z*HIybKn33C zXS+Wv)suj4KtkGP_5StUeov+|FcY+oa$pYxeoVraE$2 zoL>Kt-b}1=#Ld12I~|K%V+KP9Bj8+TPTc#xjOE}G;HsX9*t27^9@~G_WKMjoB+u?6 zEX`^XGryUo!*r#s2s@->u%b>fTqy9t{8S%)?l$#EgK1I|si7W~QIyCSIibITM=;zV zdNd+eOS4({qf5heAUbE_cxE*L43*ht9i zL)@uL4$&Br&iw7xlo0|}b-oE>1hdYt3OtR~^?A>k&fK$a!ebnVcqx&Rn)MV6O6(fV zT668ovGm({IwaMC3sA^@zOCg>edzo8nFFDF>EqUTeZ^_=bn{Lr=dVf& zg^vI}F16s2mjWp)Fs#MAwxe?u5e=+?O4j$XaxImcUnyL-6to_k45=3je-XHR$V>B4 z`9Vz6<`Fq>)j(4_wHniVjzQU3jQTD4ftGRhaXUii<~!CnETnxtKg%r?vv~<8+_W$s zyJ7Q8c?{S&&nUoryC^cr6~Z6z6ES}iM^8WH69TBS^ITRDvBsYK>){G%I2B(is0z&u ze|O7<6zPW2v?l>R&GX7-A|$M z9v}NmfnfnVi>0+FC_(pg6r*uefK?EWBkl#k-7nByjCUk5>Kysp-sHIT)nd$(hmIHn zU8dvrsyd$}gf?a|#hS z8Ign2I1C!1ksCzdh1*NxMZ`m@xb+@7n>-A9_oX|JMF$k@<9L~hz7`Tk>_t!$0h7Cr zI>o(<3H*M*WNZ+GPHb>^DYi?f0lz1WPdZs1-V?!^rRZt9jYi5Q!5{8-7I1VmIl6SZ z_2nssR{W!?K5{d#@yv^RM(q<*WXxHthywVkNp~phjF~hT-V+*5s-R?QHX{QRB0$9M zKJIUwSms`R!t|eK*R@)?!$=9f)~=R{SfnDcYsWgdwj}38^hK5F5EGW=`QsPA%G7sB z+NIeS%Agcyv)Q%J$`+??23Qvpoj6M(lNJnI3$v>6G)(ww4PQF0*6pt&CR-GNw$^Mo zQFjgb;~vkEpQ{UQ#R~}?9L)BfP2XMHBE40W#5|KUBTF+afz&!)JjqxjUU5nd7W{`C zx$Bs#Y?=&Exm!Gk_pGV+U6EyO)sLKIF$t9DaP>;JwTs;947WV)3eN5{UDdc95T+|ed8?&BR8L)34mLbF1S-L)((tT zRB8qUJ%3RVT4|Ko*3#2Czn$B&|GZsi1aYqVR`zFEmQo23`-{Y^8IcKhO8)zJcOw=C zCQ2_0`>K*Cs`-%RKPU%%2hwoK9YL9Lxe{lMoq24OBqNI4cnm&r-!)g7`{NTDr^F(h z$nZMC#zDphf+-tcm^rj?k?&fs8x4?;vvk8%dwcg;_lgy^9M>qxWpZ^sjfF395U@&i z?k1UJX43~2ntl818HFu5)noK9)l0$CQhZOwKAlD{tg zR#D^#O;{*X$`D{Tm!Td_w%rx$=Ja&MjLaO2v=WQ%dlO)3ucoaBSCxGuv|g~__e0g> z%W(R$5#+=sFu$WDh*QaC6p{n0(xuL+*YQQ})uzy1zbbU6L~om&wx3*YKQ? zNo;nfd2CnOiSiHPBa;^FTjUwBa`i{a4atkTD4gif4oZ_3a5Lfv4@GdDsx+a=s)yBu z8t(rZCa=giw8OHDs72aB(>1LbaPU2^g?7VTw}$kMP7Qqsq@_9gt$?T{> zqGh&=xHpD}+#rXqI4H&MyFElcKKIdCzIgt= zeOf48Xum8Bx8!_ij%>f(N9UFH|;_b6SfJ3KcYAsra2 zVX4h{<~z-mO~G8|gH~oyEXvOLt^AJk?iHd~zIt&5R@(2=%v190ll&Xz+-tu^S>go- z?dQ%DzN;OhtGNcxU1LreuggM$<#{5rJQge!Nl4w=H>qs}F5~VgA9L_Io!Mv3kqNwv)1S&tg4WJ6uMM`w z?$R*Tv~f~y#iWQh0kA%kP~JNx@7~F_%%+815qd8wv)$`itkoDUYRS5hSysU^r(?-c zU&Zo@QU=2Czx$ahcZ#!F*Eh_vix)ixSw$J|0(M_0e?nAd^J{^9tNjH;4#Ve?NQog{CpfN(m0i;|&pZTf+Ozqizz z)XIeFF9D+)lbiY?)wu69EDkC)1qn7kI?b{tuoGudnwl`bPSgk`OiB}~+=iJZ|H$o> z-zJPovp>Z-Tm3xYr!)Mrf?5w!VYq7-X7Ak}^)>NYC0Wzh^*1VH$NPk6Mlu)@4;g@A zCt{GlzJ`!0K&)%XtU{)znCSdMxc84uY~$wptIvMJ>Us;12{r0ht7SqFcj{XHkP7TntyB$-$7*ng*6(XKka!^|prhDdk$uoMW) zBs5htu-2rSiEUl(zcNcP&#SPir=DtWrGV?RZNJg*S0&(0S z1v_FyEU+yPXVPkoxOE?s`@y=yZKZ9;rWMAGv7T0*izfy?3bXU7h42@VcMW>q)G=gC z3fn$9b;;ExNECY_y4twXNEVeozxaC;r_7Pwxgs5dO=CI=yZxQ5myOzn7tJ(wtk;gu z^QL-CNpJiJfQETn4njQO5%f6=&&OotiGDM~+gDOG4Vx3=Q{0%^^#+Ul42`;yBCN;c z4MSb!49C`74GS!sio6f2@mSlBF&?R>WfwZ^(mZmxAKYDy zCxd$W=uza8&Ur+`uufIaKKYdFm-4$hiHmEY;r1^K{7{wz_tU>^FwKg-;yQQ=vT8Ul LEzsu4w+sIZtWEhC literal 0 HcmV?d00001 diff --git a/adapters/folder/DATA/not-motion/IMG_1234.mp4 b/adapters/folder/DATA/not-motion/IMG_1234.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c51aa1448e73b3f8e4899439e02b7e833fe77fa2 GIT binary patch literal 1280605 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

    dRs9QK#RRTZ^e!BLH5M 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%0D=AAamfKl_ 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 Q`xYG}erI!wc|l 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 z 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

    ^JEj95!-xI|LASAkmml%>iFZJiRlh}&cp2=p3 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 E2Mhk^u>b%7 literal 0 HcmV?d00001 diff --git a/internal/metadata/DATA/PXL_20231006_063000139.jpg b/internal/metadata/DATA/PXL_20231006_063000139.jpg new file mode 100644 index 0000000000000000000000000000000000000000..07ec1e2e41b31f4a009591a1e873d064bd44e9bd GIT binary patch literal 136452 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

    $j2<6~65DDy05PuO>)9Pc6k8J;h* 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 literal 0 HcmV?d00001 diff --git a/immich/metadata/direct.go b/internal/metadata/direct.go similarity index 71% rename from immich/metadata/direct.go rename to internal/metadata/direct.go index 0a50fec5..7cc58c64 100644 --- a/immich/metadata/direct.go +++ b/internal/metadata/direct.go @@ -9,13 +9,13 @@ import ( "time" ) -func GetFileMetaData(fsys fs.FS, name string) (Metadata, error) { +func GetFileMetaData(fsys fs.FS, name string, localTZ *time.Location) (*Metadata, error) { f, err := fsys.Open(name) if err != nil { - return Metadata{}, err + return nil, err } defer f.Close() - return GetFromReader(f, path.Ext(name)) + return GetFromReader(f, path.Ext(name), localTZ) } // GetMetaData makes its best efforts to get the date of capture based on @@ -26,37 +26,37 @@ func GetFileMetaData(fsys fs.FS, name string) (Metadata, error) { // // -func GetFromReader(rd io.Reader, ext string) (Metadata, error) { +func GetFromReader(rd io.Reader, ext string, localTZ *time.Location) (*Metadata, error) { r := newSliceReader(rd) meta := Metadata{} var err error var dateTaken time.Time switch strings.ToLower(ext) { case ".heic", ".heif": - dateTaken, err = readHEIFDateTaken(r) + dateTaken, err = readHEIFDateTaken(r, localTZ) case ".jpg", ".jpeg", ".dng", ".cr2": - dateTaken, err = readExifDateTaken(r) + dateTaken, err = readExifDateTaken(r, localTZ) case ".mp4", ".mov": dateTaken, err = readMP4DateTaken(r) case ".cr3": - dateTaken, err = readCR3DateTaken(r) + dateTaken, err = readCR3DateTaken(r, localTZ) default: err = fmt.Errorf("can't determine the taken date from metadata (%s)", ext) } meta.DateTaken = dateTaken - return meta, err + return &meta, err } // readExifDateTaken pase the file for Exif DateTaken -func readExifDateTaken(r io.Reader) (time.Time, error) { - md, err := getExifFromReader(r) +func readExifDateTaken(r io.Reader, localTZ *time.Location) (time.Time, error) { + md, err := getExifFromReader(r, localTZ) return md.DateTaken, err } const searchBufferSize = 32 * 1024 // readHEIFDateTaken locate the Exif part and return the date of capture -func readHEIFDateTaken(r *sliceReader) (time.Time, error) { +func readHEIFDateTaken(r *sliceReader, localTZ *time.Location) (time.Time, error) { b := make([]byte, searchBufferSize) r, err := searchPattern(r, []byte{0x45, 0x78, 0x69, 0x66, 0, 0, 0x4d, 0x4d}, b) if err != nil { @@ -69,7 +69,7 @@ func readHEIFDateTaken(r *sliceReader) (time.Time, error) { return time.Time{}, err } - md, err := getExifFromReader(r) + md, err := getExifFromReader(r, localTZ) return md.DateTaken, err } @@ -88,7 +88,7 @@ func readMP4DateTaken(r *sliceReader) (time.Time, error) { return atom.CreationTime, nil } -func readCR3DateTaken(r *sliceReader) (time.Time, error) { +func readCR3DateTaken(r *sliceReader, localTZ *time.Location) (time.Time, error) { b := make([]byte, searchBufferSize) r, err := searchPattern(r, []byte("CMT1"), b) @@ -102,6 +102,6 @@ func readCR3DateTaken(r *sliceReader) (time.Time, error) { return time.Time{}, err } - md, err := getExifFromReader(r) + md, err := getExifFromReader(r, localTZ) return md.DateTaken, err } diff --git a/immich/metadata/direct_test.go b/internal/metadata/direct_test.go similarity index 96% rename from immich/metadata/direct_test.go rename to internal/metadata/direct_test.go index 1af179e2..735aaf09 100644 --- a/immich/metadata/direct_test.go +++ b/internal/metadata/direct_test.go @@ -59,7 +59,7 @@ func TestGetFromReader(t *testing.T) { } defer r.Close() ext := path.Ext(tt.filename) - got, err := GetFromReader(r, ext) + got, err := GetFromReader(r, ext, time.Local) if err != nil { t.Error(err) return diff --git a/immich/metadata/exif.go b/internal/metadata/exif.go similarity index 89% rename from immich/metadata/exif.go rename to internal/metadata/exif.go index 3efaf770..26a875e1 100644 --- a/immich/metadata/exif.go +++ b/internal/metadata/exif.go @@ -10,7 +10,7 @@ import ( "github.com/rwcarlsen/goexif/exif" ) -func getExifFromReader(r io.Reader) (Metadata, error) { +func getExifFromReader(r io.Reader, localTZ *time.Location) (Metadata, error) { var md Metadata // Decode the EXIF data x, err := exif.Decode(r) @@ -28,13 +28,13 @@ func getExifFromReader(r io.Reader) (Metadata, error) { if err != nil { tag, err = getTagSting(x, exif.DateTimeOriginal) if err == nil { - md.DateTaken, err = time.ParseInLocation("2006:01:02 15:04:05", tag, local) + md.DateTaken, err = time.ParseInLocation("2006:01:02 15:04:05", tag, localTZ) } } if err != nil { tag, err = getTagSting(x, exif.DateTime) if err == nil { - md.DateTaken, err = time.ParseInLocation("2006:01:02 15:04:05", tag, local) + md.DateTaken, err = time.ParseInLocation("2006:01:02 15:04:05", tag, localTZ) } } diff --git a/internal/metadata/exiftool.go b/internal/metadata/exiftool.go new file mode 100644 index 00000000..6ec057dd --- /dev/null +++ b/internal/metadata/exiftool.go @@ -0,0 +1,89 @@ +package metadata + +import ( + "fmt" + "time" + + etool "github.com/barasher/go-exiftool" +) + +type ExifTool struct { + flags *ExifToolFlags + eTool *etool.Exiftool +} + +func NewExifTool(flags *ExifToolFlags) (*ExifTool, error) { + opts := []func(*etool.Exiftool) error{ + etool.Charset("filename=utf8"), + etool.CoordFormant("%+.7f"), + } + + if flags != nil { + if flags.ExifPath != "" { + opts = append(opts, etool.SetExiftoolBinaryPath(flags.ExifPath)) + } + } + + tool, err := etool.NewExiftool(opts...) + if err != nil { + return nil, err + } + et := ExifTool{ + eTool: tool, + flags: flags, + } + return &et, nil +} + +func (et *ExifTool) Close() error { + return et.eTool.Close() +} + +var dateKeys = []struct { + key string + format string + isUTC bool +}{ + {"GPSDateTime", "2006:01:02 15:04:05Z", true}, // 2023:10:06 06:29:56Z + {"CreateDate", "2006:01:02 15:04:05", false}, // 2023:10:06 08:30:00 + {"ModifyDate", "2006:01:02 15:04:05", false}, // 2016:11:19 20:30:52 + {"MediaModifyDate", "2006:01:02 15:04:05", false}, // 2016:11:19 20:30:52 + {"DateTimeOriginal", "2006:01:02 15:04:05", false}, // 2023:10:06 08:30:00 +} + +// GetMetadata returns the metadata of the file. The date of capture is searched in the preferred tags first. +// missing tags or tags with incorrect dates are skipped + +func (et *ExifTool) ReadMetaData(fileName string) (*Metadata, error) { + ms := et.eTool.ExtractMetadata(fileName) + if len(ms) != 1 { + return nil, fmt.Errorf("cant extract metadata from file '%s': unexpected exif-tool result", fileName) + } + m := ms[0] + if m.Err != nil { + return nil, fmt.Errorf("cant extract metadata from file '%s': %w", fileName, m.Err) + } + md := Metadata{} + + md.Latitude, _ = m.GetFloat("GPSLatitude") + md.Longitude, _ = m.GetFloat("GPSLongitude") + + // get the date of capture using preferred exif tag + for _, dk := range dateKeys { + if s, err := m.GetString(dk.key); err == nil { + tz := et.flags.Timezone.Location() + if dk.isUTC { + tz = time.UTC + } + t, err := time.ParseInLocation(dk.format, s, tz) + if err == nil { + if t.IsZero() || t.Before(time.Date(1980, 1, 1, 0, 0, 0, 0, time.UTC)) || t.After(time.Now().AddDate(0, 0, 365*10)) { + continue + } + md.DateTaken = t + break + } + } + } + return &md, nil +} diff --git a/internal/metadata/exiftoolFlags.go b/internal/metadata/exiftoolFlags.go new file mode 100644 index 00000000..d1416470 --- /dev/null +++ b/internal/metadata/exiftoolFlags.go @@ -0,0 +1,19 @@ +package metadata + +import ( + "github.com/simulot/immich-go/internal/tzone" + "github.com/spf13/cobra" +) + +type ExifToolFlags struct { + UseExifTool bool + ExifPath string + Timezone tzone.Timezone +} + +func AddExifToolFlags(cmd *cobra.Command, flags *ExifToolFlags) { + flags.Timezone.Set("Local") + cmd.Flags().BoolVar(&flags.UseExifTool, "exiftool-enabled", false, "Enable the use of the external 'exiftool' program (if installed and available in the system path) to extract EXIF metadata") + cmd.Flags().StringVar(&flags.ExifPath, "exiftool-path", "", "Path to the ExifTool executable (default: search in system's PATH)") + cmd.Flags().Var(&flags.Timezone, "exiftool-timezone", "Timezone to use when parsing exif timestamps without timezone Options: LOCAL (use the system's local timezone), UTC (use UTC timezone), or a valid timezone name (e.g. America/New_York)") +} diff --git a/internal/metadata/exiftool_test.go b/internal/metadata/exiftool_test.go new file mode 100644 index 00000000..e1dcc140 --- /dev/null +++ b/internal/metadata/exiftool_test.go @@ -0,0 +1,58 @@ +package metadata + +import ( + "reflect" + "testing" + "time" + + "github.com/simulot/immich-go/internal/tzone" +) + +func TestExifTool_ReadMetaData(t *testing.T) { + tests := []struct { + name string + fileName string + want *Metadata + wantErr bool + }{ + { + name: "read JPG", + fileName: "DATA/PXL_20231006_063000139.jpg", + want: &Metadata{ + DateTaken: time.Date(2023, 10, 6, 8, 30, 0, 0, time.Local), + Latitude: +48.8583736, + Longitude: +2.2919010, + }, + wantErr: false, + }, + { + name: "read mp4", + fileName: "DATA/PXL_20220724_210650210.NIGHT.mp4", + want: &Metadata{ + DateTaken: time.Date(2022, 7, 24, 21, 10, 56, 0, time.Local), + Latitude: 47.538300, + Longitude: -2.891900, + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + et, err := NewExifTool(&ExifToolFlags{ + Timezone: tzone.Timezone{TZ: time.Local}, + }) + if err != nil { + t.Error(err) + return + } + got, err := et.ReadMetaData(tt.fileName) + if (err != nil) != tt.wantErr { + t.Errorf("ExifTool.ReadMetaData() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("ExifTool.ReadMetaData() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/immich/metadata/metadata.go b/internal/metadata/metadata.go similarity index 93% rename from immich/metadata/metadata.go rename to internal/metadata/metadata.go index a7e26379..16cc27b8 100644 --- a/immich/metadata/metadata.go +++ b/internal/metadata/metadata.go @@ -9,11 +9,11 @@ import ( ) type Metadata struct { - Description string - DateTaken time.Time - Latitude float64 + Description string // Long description + DateTaken time.Time // Date of exposure + Latitude float64 // GPS Longitude float64 - Altitude float64 + Collections []string // Used to list albums that contain the file } func (m Metadata) IsSet() bool { diff --git a/immich/metadata/metadata_test.go b/internal/metadata/metadata_test.go similarity index 100% rename from immich/metadata/metadata_test.go rename to internal/metadata/metadata_test.go diff --git a/immich/metadata/namesdate.go b/internal/metadata/namesdate.go similarity index 81% rename from immich/metadata/namesdate.go rename to internal/metadata/namesdate.go index 4354bd99..7f5978a3 100644 --- a/immich/metadata/namesdate.go +++ b/internal/metadata/namesdate.go @@ -14,21 +14,21 @@ var timeRe = regexp.MustCompile(`(19[89]\d|20\d\d)\D?(0\d|1[0-2])\D?([0-3]\d)\D{ // from the given full path. At first it tries to extract from filename, then from each folder // name (end to start), If no time is found - it will try to extract from the path itself as a // last resort (e.g. /something/2024/06/06/file123.png). -func TakeTimeFromPath(fullpath string) time.Time { +func TakeTimeFromPath(fullpath string, tz *time.Location) time.Time { parts := strings.Split(fullpath, string(os.PathSeparator)) for i := len(parts) - 1; i >= 0; i-- { - if t := TakeTimeFromName(parts[i]); !t.IsZero() { + if t := TakeTimeFromName(parts[i], tz); !t.IsZero() { return t } } - return TakeTimeFromName(fullpath) + return TakeTimeFromName(fullpath, tz) } // TakeTimeFromName takes the name of a file and returns a time.Time value that is extracted -// from the given file name. -func TakeTimeFromName(s string) time.Time { +// from the given file name. It uses the given Timezone to parse the time. +func TakeTimeFromName(s string, tz *time.Location) time.Time { timeSegments := timeRe.FindStringSubmatch(s) if len(timeSegments) < 4 { return time.Time{} @@ -38,7 +38,7 @@ func TakeTimeFromName(s string) time.Time { for i := 1; i < len(timeSegments); i++ { m[i-1], _ = strconv.Atoi(timeSegments[i]) } - t := time.Date(m[0], time.Month(m[1]), m[2], m[3], m[4], m[5], 0, time.UTC) + t := time.Date(m[0], time.Month(m[1]), m[2], m[3], m[4], m[5], 0, tz) if t.Year() != m[0] || t.Month() != time.Month(m[1]) || t.Day() != m[2] || t.Hour() != m[3] || t.Minute() != m[4] || t.Second() != m[5] { diff --git a/immich/metadata/namesdate_test.go b/internal/metadata/namesdate_test.go similarity index 93% rename from immich/metadata/namesdate_test.go rename to internal/metadata/namesdate_test.go index c66e0340..84b3df29 100644 --- a/immich/metadata/namesdate_test.go +++ b/internal/metadata/namesdate_test.go @@ -110,7 +110,7 @@ func TestTakeTimeFromPath(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := TakeTimeFromPath(tt.name); !got.Equal(tt.expected) { + if got := TakeTimeFromPath(tt.name, time.UTC); !got.Equal(tt.expected) { t.Errorf("TakeTimeFromPath() = %v, want %v", got, tt.expected) } }) @@ -119,12 +119,12 @@ func TestTakeTimeFromPath(t *testing.T) { func BenchmarkTakeTimeFromPathPath(b *testing.B) { for i := 0; i < b.N; i++ { - TakeTimeFromPath("2022/2022.11/2022.11.09/IMG_1234.HEIC") + TakeTimeFromPath("2022/2022.11/2022.11.09/IMG_1234.HEIC", time.UTC) } } func BenchmarkTakeTimeFromName(b *testing.B) { for i := 0; i < b.N; i++ { - TakeTimeFromName("PXL_20220909_154515546.TS.mp4") + TakeTimeFromName("PXL_20220909_154515546.TS.mp4", time.UTC) } } diff --git a/immich/metadata/quicktime.go b/internal/metadata/quicktime.go similarity index 100% rename from immich/metadata/quicktime.go rename to internal/metadata/quicktime.go diff --git a/immich/metadata/search.go b/internal/metadata/search.go similarity index 100% rename from immich/metadata/search.go rename to internal/metadata/search.go diff --git a/immich/metadata/search_test.go b/internal/metadata/search_test.go similarity index 100% rename from immich/metadata/search_test.go rename to internal/metadata/search_test.go diff --git a/immich/metadata/sidecar.go b/internal/metadata/sidecar.go similarity index 100% rename from immich/metadata/sidecar.go rename to internal/metadata/sidecar.go diff --git a/internal/metadata/supported.go b/internal/metadata/supported.go new file mode 100644 index 00000000..ff751d38 --- /dev/null +++ b/internal/metadata/supported.go @@ -0,0 +1,66 @@ +package metadata + +import ( + "slices" + "sort" + "strings" + "sync" +) + +type SupportedMedia map[string]string + +const ( + TypeVideo = "video" + TypeImage = "image" + TypeSidecar = "sidecar" + TypeUnknown = "" +) + +var DefaultSupportedMedia = SupportedMedia{ + ".3gp": TypeVideo, ".avi": TypeVideo, ".flv": TypeVideo, ".insv": TypeVideo, ".m2ts": TypeVideo, ".m4v": TypeVideo, ".mkv": TypeVideo, ".mov": TypeVideo, ".mp4": TypeVideo, ".mpg": TypeVideo, ".mts": TypeVideo, ".webm": TypeVideo, ".wmv": TypeVideo, + ".3fr": TypeImage, ".ari": TypeImage, ".arw": TypeImage, ".avif": TypeImage, ".bmp": TypeImage, ".cap": TypeImage, ".cin": TypeImage, ".cr2": TypeImage, ".cr3": TypeImage, ".crw": TypeImage, ".dcr": TypeImage, ".dng": TypeImage, ".erf": TypeImage, + ".fff": TypeImage, ".gif": TypeImage, ".heic": TypeImage, ".heif": TypeImage, ".hif": TypeImage, ".iiq": TypeImage, ".insp": TypeImage, ".jpe": TypeImage, ".jpeg": TypeImage, ".jpg": TypeImage, + ".jxl": TypeImage, ".k25": TypeImage, ".kdc": TypeImage, ".mrw": TypeImage, ".nef": TypeImage, ".orf": TypeImage, ".ori": TypeImage, ".pef": TypeImage, ".png": TypeImage, ".psd": TypeImage, ".raf": TypeImage, ".raw": TypeImage, ".rw2": TypeImage, + ".rwl": TypeImage, ".sr2": TypeImage, ".srf": TypeImage, ".srw": TypeImage, ".tif": TypeImage, ".tiff": TypeImage, ".webp": TypeImage, ".x3f": TypeImage, + ".xmp": TypeSidecar, + ".mp": TypeVideo, +} + +func (sm SupportedMedia) TypeFromExt(ext string) string { + ext = strings.ToLower(ext) + if strings.HasPrefix(ext, ".mp~") { + // #405 + ext = ".mp4" + } + return sm[ext] +} + +func (sm SupportedMedia) IsMedia(ext string) bool { + t := sm.TypeFromExt(ext) + return t == TypeVideo || t == TypeImage +} + +var ( + _supportedExtension []string + initSupportedExtension sync.Once +) + +func (sm SupportedMedia) IsExtensionPrefix(ext string) bool { + initSupportedExtension.Do(func() { + _supportedExtension = make([]string, len(sm)) + i := 0 + for k := range sm { + _supportedExtension[i] = k[:len(k)-2] + i++ + } + sort.Strings(_supportedExtension) + }) + ext = strings.ToLower(ext) + _, b := slices.BinarySearch(_supportedExtension, ext) + return b +} + +func (sm SupportedMedia) IsIgnoredExt(ext string) bool { + t := sm.TypeFromExt(ext) + return t == "" +} diff --git a/immich/metadata/timezone.go b/internal/metadata/timezone.go similarity index 76% rename from immich/metadata/timezone.go rename to internal/metadata/timezone.go index 720cae01..77c8ea25 100644 --- a/immich/metadata/timezone.go +++ b/internal/metadata/timezone.go @@ -3,7 +3,7 @@ package metadata import ( "time" - "github.com/simulot/immich-go/helpers/tzone" + "github.com/simulot/immich-go/internal/tzone" ) var local *time.Location diff --git a/helpers/namematcher/list.go b/internal/namematcher/list.go similarity index 93% rename from helpers/namematcher/list.go rename to internal/namematcher/list.go index 216920e3..d661e151 100644 --- a/helpers/namematcher/list.go +++ b/internal/namematcher/list.go @@ -28,6 +28,14 @@ func New(patterns ...string) (List, error) { return l, nil } +func MustList(patterns ...string) List { + l, err := New(patterns...) + if err != nil { + panic(err.Error()) + } + return l +} + func (l List) Match(name string) bool { for _, re := range l.re { if re.MatchString(name) { @@ -136,3 +144,7 @@ func (l List) String() string { func (l *List) Get() any { return *l } + +func (l List) Type() string { + return "FileList" +} diff --git a/helpers/namematcher/list_test.go b/internal/namematcher/list_test.go similarity index 100% rename from helpers/namematcher/list_test.go rename to internal/namematcher/list_test.go diff --git a/helpers/stacking/stack.go b/internal/stacking/stack.go similarity index 93% rename from helpers/stacking/stack.go rename to internal/stacking/stack.go index 0c978e5c..270dbcaf 100644 --- a/helpers/stacking/stack.go +++ b/internal/stacking/stack.go @@ -9,7 +9,8 @@ import ( "time" "github.com/simulot/immich-go/helpers/gen" - "github.com/simulot/immich-go/immich" + cliflags "github.com/simulot/immich-go/internal/cliFlags" + "github.com/simulot/immich-go/internal/metadata" ) type Key struct { @@ -33,12 +34,12 @@ const ( ) type StackBuilder struct { - dateRange immich.DateRange // Set capture date range + dateRange cliflags.DateRange // Set capture date range stacks map[Key]Stack - supportedMedia immich.SupportedMedia + supportedMedia metadata.SupportedMedia } -func NewStackBuilder(supportedMedia immich.SupportedMedia) *StackBuilder { +func NewStackBuilder(supportedMedia metadata.SupportedMedia) *StackBuilder { sb := StackBuilder{ supportedMedia: supportedMedia, stacks: map[Key]Stack{}, diff --git a/helpers/stacking/statck_test.go b/internal/stacking/statck_test.go similarity index 77% rename from helpers/stacking/statck_test.go rename to internal/stacking/statck_test.go index 6c49b505..4e836e48 100644 --- a/helpers/stacking/statck_test.go +++ b/internal/stacking/statck_test.go @@ -7,8 +7,7 @@ import ( "time" "github.com/kr/pretty" - "github.com/simulot/immich-go/immich" - "github.com/simulot/immich-go/immich/metadata" + "github.com/simulot/immich-go/internal/metadata" ) type asset struct { @@ -26,31 +25,31 @@ func Test_Stack(t *testing.T) { { name: "no stack JPG+DNG", input: []asset{ - {ID: "1", FileName: "IMG_1234.JPG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00")}, - {ID: "2", FileName: "IMG_1234.DNG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.45.00")}, + {ID: "1", FileName: "IMG_1234.JPG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC)}, + {ID: "2", FileName: "IMG_1234.DNG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.45.00", time.UTC)}, }, want: []Stack{}, }, { name: "issue #67", input: []asset{ - {ID: "1", FileName: "IMG_5580.HEIC", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00")}, - {ID: "2", FileName: "IMG_5580.MP4", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00")}, + {ID: "1", FileName: "IMG_5580.HEIC", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC)}, + {ID: "2", FileName: "IMG_5580.MP4", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC)}, }, want: []Stack{}, }, { name: "stack JPG+DNG", input: []asset{ - {ID: "1", FileName: "IMG_1234.JPG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00")}, - {ID: "2", FileName: "IMG_1234.DNG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00")}, + {ID: "1", FileName: "IMG_1234.JPG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC)}, + {ID: "2", FileName: "IMG_1234.DNG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC)}, }, want: []Stack{ { CoverID: "1", IDs: []string{"2"}, - Date: metadata.TakeTimeFromName("2023-10-01 10.15.00"), + Date: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC), Names: []string{"IMG_1234.JPG", "IMG_1234.DNG"}, StackType: StackRawJpg, }, @@ -59,16 +58,16 @@ func Test_Stack(t *testing.T) { { name: "stack BURST", input: []asset{ - {ID: "1", FileName: "IMG_20231014_183244.jpg", DateTaken: metadata.TakeTimeFromName("IMG_20231014_183244.jpg")}, - {ID: "2", FileName: "IMG_20231014_183246_BURST001_COVER.jpg", DateTaken: metadata.TakeTimeFromName("IMG_20231014_183246_BURST001_COVER.jpg")}, - {ID: "3", FileName: "IMG_20231014_183246_BURST002.jpg", DateTaken: metadata.TakeTimeFromName("IMG_20231014_183246_BURST002.jpg")}, - {ID: "4", FileName: "IMG_20231014_183246_BURST003.jpg", DateTaken: metadata.TakeTimeFromName("IMG_20231014_183246_BURST003.jpg")}, + {ID: "1", FileName: "IMG_20231014_183244.jpg", DateTaken: metadata.TakeTimeFromName("IMG_20231014_183244.jpg", time.UTC)}, + {ID: "2", FileName: "IMG_20231014_183246_BURST001_COVER.jpg", DateTaken: metadata.TakeTimeFromName("IMG_20231014_183246_BURST001_COVER.jpg", time.UTC)}, + {ID: "3", FileName: "IMG_20231014_183246_BURST002.jpg", DateTaken: metadata.TakeTimeFromName("IMG_20231014_183246_BURST002.jpg", time.UTC)}, + {ID: "4", FileName: "IMG_20231014_183246_BURST003.jpg", DateTaken: metadata.TakeTimeFromName("IMG_20231014_183246_BURST003.jpg", time.UTC)}, }, want: []Stack{ { CoverID: "2", IDs: []string{"3", "4"}, - Date: metadata.TakeTimeFromName("IMG_20231014_183246_BURST001_COVER.jpg"), + Date: metadata.TakeTimeFromName("IMG_20231014_183246_BURST001_COVER.jpg", time.UTC), Names: []string{"IMG_20231014_183246_BURST001_COVER.jpg", "IMG_20231014_183246_BURST002.jpg", "IMG_20231014_183246_BURST003.jpg"}, StackType: StackBurst, }, @@ -78,23 +77,23 @@ func Test_Stack(t *testing.T) { { name: "stack JPG+CR3", input: []asset{ - {ID: "1", FileName: "3H2A0018.CR3", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00")}, - {ID: "2", FileName: "3H2A0018.JPG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00")}, - {ID: "3", FileName: "3H2A0019.CR3", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00")}, - {ID: "4", FileName: "3H2A0019.JPG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00")}, + {ID: "1", FileName: "3H2A0018.CR3", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC)}, + {ID: "2", FileName: "3H2A0018.JPG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC)}, + {ID: "3", FileName: "3H2A0019.CR3", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC)}, + {ID: "4", FileName: "3H2A0019.JPG", DateTaken: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC)}, }, want: []Stack{ { CoverID: "2", IDs: []string{"1"}, - Date: metadata.TakeTimeFromName("2023-10-01 10.15.00"), + Date: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC), Names: []string{"3H2A0018.CR3", "3H2A0018.JPG"}, StackType: StackRawJpg, }, { CoverID: "4", IDs: []string{"3"}, - Date: metadata.TakeTimeFromName("2023-10-01 10.15.00"), + Date: metadata.TakeTimeFromName("2023-10-01 10.15.00", time.UTC), Names: []string{"3H2A0019.CR3", "3H2A0019.JPG"}, StackType: StackRawJpg, }, @@ -103,14 +102,14 @@ func Test_Stack(t *testing.T) { { name: "issue #12 example1", input: []asset{ - {ID: "1", FileName: "PXL_20231026_210642603.dng", DateTaken: metadata.TakeTimeFromName("PXL_20231026_210642603.dng")}, - {ID: "2", FileName: "PXL_20231026_210642603.jpg", DateTaken: metadata.TakeTimeFromName("PXL_20231026_210642603.jpg")}, + {ID: "1", FileName: "PXL_20231026_210642603.dng", DateTaken: metadata.TakeTimeFromName("PXL_20231026_210642603.dng", time.UTC)}, + {ID: "2", FileName: "PXL_20231026_210642603.jpg", DateTaken: metadata.TakeTimeFromName("PXL_20231026_210642603.jpg", time.UTC)}, }, want: []Stack{ { CoverID: "2", IDs: []string{"1"}, - Date: metadata.TakeTimeFromName("PXL_20231026_210642603.dng"), + Date: metadata.TakeTimeFromName("PXL_20231026_210642603.dng", time.UTC), Names: []string{"PXL_20231026_210642603.dng", "PXL_20231026_210642603.jpg"}, StackType: StackRawJpg, }, @@ -119,14 +118,14 @@ func Test_Stack(t *testing.T) { { name: "issue #12 example 2", input: []asset{ - {ID: "3", FileName: "20231026_205755225.dng", DateTaken: metadata.TakeTimeFromName("20231026_205755225.dng")}, - {ID: "4", FileName: "20231026_205755225.MP.jpg", DateTaken: metadata.TakeTimeFromName("20231026_205755225.MP.jpg")}, + {ID: "3", FileName: "20231026_205755225.dng", DateTaken: metadata.TakeTimeFromName("20231026_205755225.dng", time.UTC)}, + {ID: "4", FileName: "20231026_205755225.MP.jpg", DateTaken: metadata.TakeTimeFromName("20231026_205755225.MP.jpg", time.UTC)}, }, want: []Stack{ { CoverID: "4", IDs: []string{"3"}, - Date: metadata.TakeTimeFromName("20231026_205755225.MP.jpg"), + Date: metadata.TakeTimeFromName("20231026_205755225.MP.jpg", time.UTC), Names: []string{"20231026_205755225.dng", "20231026_205755225.MP.jpg"}, StackType: StackRawJpg, }, @@ -135,32 +134,32 @@ func Test_Stack(t *testing.T) { { name: "issue #12 example 3", input: []asset{ - {ID: "3", FileName: "20231026_205755225.dng", DateTaken: metadata.TakeTimeFromName("20231026_205755225.dng")}, - {ID: "4", FileName: "20231026_205755225.MP.jpg", DateTaken: metadata.TakeTimeFromName("20231026_205755225.MP.jpg")}, - {ID: "5", FileName: "PXL_20231207_032111247.RAW-02.ORIGINAL.dng", DateTaken: metadata.TakeTimeFromName("PXL_20231207_032111247.RAW-02.ORIGINAL.dng")}, - {ID: "6", FileName: "PXL_20231207_032111247.RAW-01.COVER.jpg", DateTaken: metadata.TakeTimeFromName("PXL_20231207_032111247.RAW-01.COVER.jpg")}, - {ID: "7", FileName: "PXL_20231207_032108788.RAW-02.ORIGINAL.dng", DateTaken: metadata.TakeTimeFromName("PXL_20231207_032108788.RAW-02.ORIGINAL.dng")}, - {ID: "8", FileName: "PXL_20231207_032108788.RAW-01.MP.COVER.jpg", DateTaken: metadata.TakeTimeFromName("PXL_20231207_032108788.RAW-01.MP.COVER.jpg")}, + {ID: "3", FileName: "20231026_205755225.dng", DateTaken: metadata.TakeTimeFromName("20231026_205755225.dng", time.UTC)}, + {ID: "4", FileName: "20231026_205755225.MP.jpg", DateTaken: metadata.TakeTimeFromName("20231026_205755225.MP.jpg", time.UTC)}, + {ID: "5", FileName: "PXL_20231207_032111247.RAW-02.ORIGINAL.dng", DateTaken: metadata.TakeTimeFromName("PXL_20231207_032111247.RAW-02.ORIGINAL.dng", time.UTC)}, + {ID: "6", FileName: "PXL_20231207_032111247.RAW-01.COVER.jpg", DateTaken: metadata.TakeTimeFromName("PXL_20231207_032111247.RAW-01.COVER.jpg", time.UTC)}, + {ID: "7", FileName: "PXL_20231207_032108788.RAW-02.ORIGINAL.dng", DateTaken: metadata.TakeTimeFromName("PXL_20231207_032108788.RAW-02.ORIGINAL.dng", time.UTC)}, + {ID: "8", FileName: "PXL_20231207_032108788.RAW-01.MP.COVER.jpg", DateTaken: metadata.TakeTimeFromName("PXL_20231207_032108788.RAW-01.MP.COVER.jpg", time.UTC)}, }, want: []Stack{ { CoverID: "4", IDs: []string{"3"}, - Date: metadata.TakeTimeFromName("20231026_205755225.dng"), + Date: metadata.TakeTimeFromName("20231026_205755225.dng", time.UTC), Names: []string{"20231026_205755225.dng", "20231026_205755225.MP.jpg"}, StackType: StackRawJpg, }, { CoverID: "6", IDs: []string{"5"}, - Date: metadata.TakeTimeFromName("PXL_20231207_032111247.RAW-02.ORIGINAL.dng"), + Date: metadata.TakeTimeFromName("PXL_20231207_032111247.RAW-02.ORIGINAL.dng", time.UTC), Names: []string{"PXL_20231207_032111247.RAW-02.ORIGINAL.dng", "PXL_20231207_032111247.RAW-01.COVER.jpg"}, StackType: StackBurst, }, { CoverID: "8", IDs: []string{"7"}, - Date: metadata.TakeTimeFromName("PXL_20231207_032108788.RAW-02.ORIGINAL.dng"), + Date: metadata.TakeTimeFromName("PXL_20231207_032108788.RAW-02.ORIGINAL.dng", time.UTC), Names: []string{"PXL_20231207_032108788.RAW-02.ORIGINAL.dng", "PXL_20231207_032108788.RAW-01.MP.COVER.jpg"}, StackType: StackBurst, }, @@ -169,16 +168,16 @@ func Test_Stack(t *testing.T) { { name: "stack: Samsung #99", input: []asset{ - {ID: "1", FileName: "20231207_101605_001.jpg", DateTaken: metadata.TakeTimeFromName("20231207_101605_001.jpg")}, - {ID: "2", FileName: "20231207_101605_002.jpg", DateTaken: metadata.TakeTimeFromName("20231207_101605_002.jpg")}, - {ID: "3", FileName: "20231207_101605_003.jpg", DateTaken: metadata.TakeTimeFromName("20231207_101605_003.jpg")}, - {ID: "4", FileName: "20231207_101605_004.jpg", DateTaken: metadata.TakeTimeFromName("20231207_101605_004.jpg")}, + {ID: "1", FileName: "20231207_101605_001.jpg", DateTaken: metadata.TakeTimeFromName("20231207_101605_001.jpg", time.UTC)}, + {ID: "2", FileName: "20231207_101605_002.jpg", DateTaken: metadata.TakeTimeFromName("20231207_101605_002.jpg", time.UTC)}, + {ID: "3", FileName: "20231207_101605_003.jpg", DateTaken: metadata.TakeTimeFromName("20231207_101605_003.jpg", time.UTC)}, + {ID: "4", FileName: "20231207_101605_004.jpg", DateTaken: metadata.TakeTimeFromName("20231207_101605_004.jpg", time.UTC)}, }, want: []Stack{ { CoverID: "1", IDs: []string{"2", "3", "4"}, - Date: metadata.TakeTimeFromName("20231207_101605_001.jpg"), + Date: metadata.TakeTimeFromName("20231207_101605_001.jpg", time.UTC), Names: []string{"20231207_101605_001.jpg", "20231207_101605_002.jpg", "20231207_101605_003.jpg", "20231207_101605_004.jpg"}, StackType: StackBurst, }, @@ -187,15 +186,15 @@ func Test_Stack(t *testing.T) { { name: " stack: Huawei Nexus 6P #100 ", input: []asset{ - {ID: "1", FileName: "00001IMG_00001_BURST20171111030039.jpg", DateTaken: metadata.TakeTimeFromName("00001IMG_00001_BURST20171111030039.jpg")}, - {ID: "2", FileName: "00002IMG_00002_BURST20171111030039.jpg", DateTaken: metadata.TakeTimeFromName("00002IMG_00002_BURST20171111030039.jpg")}, - {ID: "3", FileName: "00003IMG_00003_BURST20171111030039_COVER.jpg", DateTaken: metadata.TakeTimeFromName("00003IMG_00003_BURST20171111030039_COVER.jpg")}, + {ID: "1", FileName: "00001IMG_00001_BURST20171111030039.jpg", DateTaken: metadata.TakeTimeFromName("00001IMG_00001_BURST20171111030039.jpg", time.UTC)}, + {ID: "2", FileName: "00002IMG_00002_BURST20171111030039.jpg", DateTaken: metadata.TakeTimeFromName("00002IMG_00002_BURST20171111030039.jpg", time.UTC)}, + {ID: "3", FileName: "00003IMG_00003_BURST20171111030039_COVER.jpg", DateTaken: metadata.TakeTimeFromName("00003IMG_00003_BURST20171111030039_COVER.jpg", time.UTC)}, }, want: []Stack{ { CoverID: "1", IDs: []string{"2", "3"}, - Date: metadata.TakeTimeFromName("00001IMG_00001_BURST20171111030039.jpg"), + Date: metadata.TakeTimeFromName("00001IMG_00001_BURST20171111030039.jpg", time.UTC), Names: []string{"00001IMG_00001_BURST20171111030039.jpg", "00002IMG_00002_BURST20171111030039.jpg", "00003IMG_00003_BURST20171111030039_COVER.jpg"}, StackType: StackBurst, }, @@ -205,7 +204,7 @@ func Test_Stack(t *testing.T) { for _, tt := range tc { t.Run(tt.name, func(t *testing.T) { - sb := NewStackBuilder(immich.DefaultSupportedMedia) + sb := NewStackBuilder(metadata.DefaultSupportedMedia) for _, a := range tt.input { sb.ProcessAsset(a.ID, a.FileName, a.DateTaken) } diff --git a/internal/tzone/flags.go b/internal/tzone/flags.go new file mode 100644 index 00000000..bf648029 --- /dev/null +++ b/internal/tzone/flags.go @@ -0,0 +1,45 @@ +package tzone + +import ( + "strings" + "time" + + "github.com/thlib/go-timezone-local/tzlocal" +) + +type Timezone struct { + name string + TZ *time.Location +} + +func (tz *Timezone) Set(tzName string) error { + var err error + + tzName = strings.TrimSpace(tzName) + switch strings.ToUpper(tzName) { + case "LOCAL": + tzName, err = tzlocal.RuntimeTZ() + if err != nil { + return err + } + tz.name = "Local" + case "UTC": + tzName = "UTC" + default: + tz.name = tzName + } + tz.TZ, err = time.LoadLocation(tzName) + return err +} + +func (tz *Timezone) String() string { + return tz.name +} + +func (tz *Timezone) Type() string { + return "timezone" +} + +func (tz *Timezone) Location() *time.Location { + return tz.TZ +} diff --git a/helpers/tzone/timezone.go b/internal/tzone/timezone.go similarity index 100% rename from helpers/tzone/timezone.go rename to internal/tzone/timezone.go diff --git a/internal/zipName/zip.go b/internal/zipName/zip.go new file mode 100644 index 00000000..f2dae430 --- /dev/null +++ b/internal/zipName/zip.go @@ -0,0 +1,29 @@ +package zipname + +import ( + stdZip "archive/zip" + "path/filepath" + "strings" +) + +type ZipReadCloser struct { + *stdZip.ReadCloser + name string +} + +func OpenReader(f string) (*ZipReadCloser, error) { + z, err := stdZip.OpenReader(f) + if err != nil { + return nil, err + } + name := filepath.Base(f) + name = strings.TrimSuffix(name, filepath.Ext(name)) + return &ZipReadCloser{ + ReadCloser: z, + name: name, + }, nil +} + +func (z ZipReadCloser) Name() string { + return z.name +} diff --git a/main.go b/main.go index 8f9dfb53..eaba3a4b 100644 --- a/main.go +++ b/main.go @@ -11,6 +11,7 @@ import ( "github.com/simulot/immich-go/cmd" "github.com/simulot/immich-go/cmd/cmdVersion" "github.com/simulot/immich-go/cmd/stack" + "github.com/simulot/immich-go/cmd/upload" "github.com/simulot/immich-go/ui" ) @@ -81,6 +82,7 @@ func Run(ctx context.Context) error { cmdVersion.AddCommand(rootCmd, version, getCommitInfo(), date) stack.AddCommand(rootCmd) + upload.AddCommand(rootCmd) err := rootCmd.Command.ExecuteContext(ctx) From 234bb3c23feff07a2056c596b12641a958f04494 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 15 Sep 2024 19:06:18 +0200 Subject: [PATCH 010/252] wip refactoring google photos adapter --- adapters/adpaters.go | 3 +- adapters/folder/flags.go | 14 +- adapters/folder/readFolder.go | 8 +- adapters/googlePhotos/changelog.md | 1 + .../e2etests/e2e_nonregression_test.go | 117 +++ .../googlePhotos/e2etests/e2e_takeout_test.go | 83 +++ adapters/googlePhotos/flags.go | 28 +- adapters/googlePhotos/googlephotos.go | 559 +++++++++++++++ adapters/googlePhotos/googlephotos.nogo | 674 ------------------ ...ephotos_test.nogo => googlephotos_test.go} | 0 adapters/googlePhotos/{json.nogo => json.go} | 22 +- .../{json_test.nogo => json_test.go} | 0 adapters/googlePhotos/logs.go | 91 +++ adapters/googlePhotos/matchers.go | 199 ++++++ ...gread_test.nogo => testgp_bigread_test.go} | 12 +- ...mples_test.nogo => testgp_samples_test.go} | 2 +- .../{testgp_test.nogo => testgp_test.go} | 28 +- adapters/localfile.go | 10 +- cmd/upload/cmdFolder.go | 8 +- cmd/upload/cmdGooglePhotos.go | 67 ++ cmd/upload/cmdGooglePhotos.nogo | 42 -- cmd/upload/e2e_takeout_test.nogo | 85 --- cmd/upload/run.go | 5 +- cmd/upload/upload.go | 5 +- go.mod | 3 +- go.sum | 9 +- helpers/gen/maps.go | 19 + internal/cliFlags/dateFromNames.go | 8 +- internal/fakefs/ziplist.go | 35 +- internal/metadata/metadata.go | 14 +- 30 files changed, 1280 insertions(+), 871 deletions(-) create mode 100644 adapters/googlePhotos/changelog.md create mode 100644 adapters/googlePhotos/e2etests/e2e_nonregression_test.go create mode 100644 adapters/googlePhotos/e2etests/e2e_takeout_test.go create mode 100644 adapters/googlePhotos/googlephotos.go delete mode 100644 adapters/googlePhotos/googlephotos.nogo rename adapters/googlePhotos/{googlephotos_test.nogo => googlephotos_test.go} (100%) rename adapters/googlePhotos/{json.nogo => json.go} (87%) rename adapters/googlePhotos/{json_test.nogo => json_test.go} (100%) create mode 100644 adapters/googlePhotos/logs.go create mode 100644 adapters/googlePhotos/matchers.go rename adapters/googlePhotos/{testgp_bigread_test.nogo => testgp_bigread_test.go} (79%) rename adapters/googlePhotos/{testgp_samples_test.nogo => testgp_samples_test.go} (99%) rename adapters/googlePhotos/{testgp_test.nogo => testgp_test.go} (96%) create mode 100644 cmd/upload/cmdGooglePhotos.go delete mode 100644 cmd/upload/cmdGooglePhotos.nogo delete mode 100644 cmd/upload/e2e_takeout_test.nogo diff --git a/adapters/adpaters.go b/adapters/adpaters.go index f674f70d..c3ab604f 100644 --- a/adapters/adpaters.go +++ b/adapters/adpaters.go @@ -6,6 +6,5 @@ import ( // TODO: rename to Importer type Adapter interface { - Prepare(cxt context.Context) error - Browse(cxt context.Context) chan *LocalAssetFile + Browse(cxt context.Context) (chan *LocalAssetFile, error) } diff --git a/adapters/folder/flags.go b/adapters/folder/flags.go index 65cfe785..7c8cfea6 100644 --- a/adapters/folder/flags.go +++ b/adapters/folder/flags.go @@ -10,19 +10,6 @@ import ( "github.com/spf13/cobra" ) -// type ImportFlags struct { -// UsePathAsAlbumName AlbumFolderMode // Create albums for assets based on the full path to the asset -// AlbumNamePathSeparator string // Determines how multiple (sub) folders, if any, will be joined -// ImportIntoAlbum string // All assets will be added to this album -// BannedFiles namematcher.List // List of banned file name patterns -// Recursive bool // Explore the folder and all sub-folders -// InclusionFlags cliflags.InclusionFlags // Flags for controlling the extensions of the files to be uploaded -// DateHandlingFlags cliflags.DateHandlingFlags // Options for control how the capture date is handled -// ExifToolFlags metadata.ExifToolFlags // Options for the exif command -// IgnoreSideCarFiles bool // Ignore XMP files -// SupportedMedia metadata.SupportedMedia // Server actual list of supported media, not a flag -// } - // ImportFlags represents the flags used for importing assets from a file system. type ImportFlags struct { // UsePathAsAlbumName determines whether to create albums based on the full path to the asset. @@ -76,6 +63,7 @@ func AddUploadFolderFlags(cmd *cobra.Command, flags *ImportFlags) { cliflags.AddInclusionFlags(cmd, &flags.InclusionFlags) cliflags.AddDateHandlingFlags(cmd, &flags.DateHandlingFlags) metadata.AddExifToolFlags(cmd, &flags.ExifToolFlags) + flags.SupportedMedia = metadata.DefaultSupportedMedia } // AlbumFolderMode represents the mode in which album folders are organized. diff --git a/adapters/folder/readFolder.go b/adapters/folder/readFolder.go index 98b82deb..695ab3f5 100644 --- a/adapters/folder/readFolder.go +++ b/adapters/folder/readFolder.go @@ -55,14 +55,14 @@ func NewLocalFiles(ctx context.Context, l *fileevent.Recorder, flags *ImportFlag return &la, nil } -func (la *LocalAssetBrowser) Prepare(ctx context.Context) error { +func (la *LocalAssetBrowser) Browse(ctx context.Context) (chan *adapters.LocalAssetFile, error) { for _, fsys := range la.fsyss { err := la.passOneFsWalk(ctx, fsys) if err != nil { - return err + return nil, err } } - return nil + return la.passTwo(ctx), nil } func (la *LocalAssetBrowser) passOneFsWalk(ctx context.Context, fsys fs.FS) error { @@ -135,7 +135,7 @@ func (la *LocalAssetBrowser) passOneFsWalk(ctx context.Context, fsys fs.FS) erro return err } -func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *adapters.LocalAssetFile { +func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.LocalAssetFile { fileChan := make(chan *adapters.LocalAssetFile) // Browse all given FS to collect the list of files go func(ctx context.Context) { diff --git a/adapters/googlePhotos/changelog.md b/adapters/googlePhotos/changelog.md new file mode 100644 index 00000000..164c5eec --- /dev/null +++ b/adapters/googlePhotos/changelog.md @@ -0,0 +1 @@ +- improve the duplicate counter diff --git a/adapters/googlePhotos/e2etests/e2e_nonregression_test.go b/adapters/googlePhotos/e2etests/e2e_nonregression_test.go new file mode 100644 index 00000000..c2a0d9bf --- /dev/null +++ b/adapters/googlePhotos/e2etests/e2e_nonregression_test.go @@ -0,0 +1,117 @@ +//go:build e2e +// +build e2e + +package gp_test + +import ( + "context" + "io/fs" + "log/slog" + "os" + "testing" + + "github.com/joho/godotenv" + gp "github.com/simulot/immich-go/adapters/googlePhotos" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/metadata" +) + +var myEnv map[string]string + +func initMyEnv(t *testing.T) { + if len(myEnv) > 0 { + return + } + var err error + e, err := godotenv.Read("../../../e2e.env") + if err != nil { + t.Fatalf("cant initialize environment variables: %s", err) + } + myEnv = e + if myEnv["IMMICH_TESTFILES"] == "" { + t.Fatal("missing IMMICH_TESTFILES in .env file") + } +} + +type expectedCounts map[fileevent.Code]int64 + +func checkAgainstFileList(t *testing.T, fileList string, flags *gp.ImportFlags, expected expectedCounts, fsyss []fs.FS) { + if flags.SupportedMedia == nil { + flags.SupportedMedia = metadata.DefaultSupportedMedia + } + jnl, err := simulate_upload(fileList, flags, fsyss) + if err != nil { + t.Error(err) + return + } + + counts := jnl.GetCounts() + for c := fileevent.Code(0); c < fileevent.MaxCode; c++ { + if v, ok := expected[c]; ok { + if counts[c] != v { + t.Errorf("The counter[%s]==%d, expected %d", c.String(), counts[c], expected[c]) + } + } + } +} + +// Simulate a takeout archive with the list of zipped files +func simulate_upload(testname string, flags *gp.ImportFlags, fsys []fs.FS) (*fileevent.Recorder, error) { + ctx := context.Background() + + logFile, err := os.Create(testname + ".log") + if err != nil { + return nil, err + } + defer logFile.Close() + + log := slog.New(slog.NewTextHandler(logFile, nil)) + jnl := fileevent.NewRecorder(log, true) + adapter, err := gp.NewTakeout(ctx, jnl, flags, fsys...) + if err != nil { + return nil, err + } + + assets, err := adapter.Browse(ctx) + if err != nil { + return nil, err + } + for a := range assets { + if a.Err != nil { + return nil, a.Err + } + } + + csvFile, err := os.Create(testname + ".csv") + if err != nil { + return nil, err + } + defer csvFile.Close() + err = jnl.WriteFileCounts(csvFile) + if err != nil { + return nil, err + } + + dupFile, err := os.Create(testname + ".dup.csv") + if err != nil { + return nil, err + } + defer dupFile.Close() + adapter.DebugDuplicates(dupFile) + + linkedFiles, err := os.Create(testname + ".linked.csv") + if err != nil { + return nil, err + } + defer linkedFiles.Close() + adapter.DebugLinkedFiles(linkedFiles) + + trackedFiles, err := os.Create(testname + ".tracked.csv") + if err != nil { + return nil, err + } + defer trackedFiles.Close() + adapter.DebugFileTracker(trackedFiles) + + return jnl, nil +} diff --git a/adapters/googlePhotos/e2etests/e2e_takeout_test.go b/adapters/googlePhotos/e2etests/e2e_takeout_test.go new file mode 100644 index 00000000..fc38e63f --- /dev/null +++ b/adapters/googlePhotos/e2etests/e2e_takeout_test.go @@ -0,0 +1,83 @@ +//go:build e2e +// +build e2e + +package gp_test + +import ( + "testing" + + gp "github.com/simulot/immich-go/adapters/googlePhotos" + "github.com/simulot/immich-go/internal/fakefs" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/fshelper" +) + +func TestPixilTakeOut(t *testing.T) { + initMyEnv(t) + + files := myEnv["IMMICH_TESTFILES"] + "/User Files/pixil/0.22.0/list.lst.zip" + fsyss, err := fakefs.ScanFileList(files, "01-02-2006 15:04") + if err != nil { + t.Error(err) + return + } + checkAgainstFileList(t, files, &gp.ImportFlags{}, expectedCounts{ + fileevent.DiscoveredImage: 21340, + fileevent.DiscoveredVideo: 8644, + fileevent.DiscoveredSidecar: 21560, + fileevent.DiscoveredUnsupported: 8, + fileevent.AnalysisAssociatedMetadata: 29984, + fileevent.AnalysisLocalDuplicate: 13151, + }, fsyss) +} + +func TestDemoTakeOut(t *testing.T) { + initMyEnv(t) + + files := myEnv["IMMICH_TESTFILES"] + "/demo takeout/Takeout" + fsyss, err := fshelper.ParsePath([]string{files}) + if err != nil { + t.Error(err) + return + } + checkAgainstFileList(t, files, &gp.ImportFlags{}, expectedCounts{ + fileevent.DiscoveredImage: 21340, + fileevent.DiscoveredVideo: 8644, + fileevent.DiscoveredSidecar: 21560, + fileevent.DiscoveredUnsupported: 8, + fileevent.AnalysisAssociatedMetadata: 29984, + fileevent.AnalysisLocalDuplicate: 13291, + }, fsyss) +} + +/* +func TestPhyl404TakeOut(t *testing.T) { + initMyEnv(t) + + simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/Phyl404/list.lst", "2006-01-02 15:04", false) +} + +func TestPhyl404_2TakeOut(t *testing.T) { + initMyEnv(t) + + simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/Phy404#2/list.lst", "2006-01-02 15:04", false) +} + +func TestSteve81TakeOut(t *testing.T) { + initMyEnv(t) + + simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/Steve81/list.list", "2006-01-02 15:04", false) +} + +func TestMuetyTakeOut(t *testing.T) { + initMyEnv(t) + + simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/muety/list.lst", "01-02-2006 15:04", false) +} + +func TestMissingJSONTakeOut(t *testing.T) { + initMyEnv(t) + + simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/MissingJSON/list.lst", "01-02-2006 15:04", true) +} +*/ diff --git a/adapters/googlePhotos/flags.go b/adapters/googlePhotos/flags.go index 7b5b91d7..7a3ca92f 100644 --- a/adapters/googlePhotos/flags.go +++ b/adapters/googlePhotos/flags.go @@ -1,4 +1,5 @@ // Package gp provides functionality for importing Google Photos takeout into Immich. + package gp import ( @@ -10,6 +11,9 @@ import ( // ImportFlags represents the command-line flags for the Google Photos takeout import command. type ImportFlags struct { + // UseJSONMetadata indicates whether to use JSON metadata. A virtual XMP sidecar is created to convey the GPS location and the date of capture + UseJSONMetadata bool + // CreateAlbums determines whether to create albums in Immich that match the albums in the Google Photos takeout. CreateAlbums bool @@ -37,19 +41,25 @@ type ImportFlags struct { // KeepJSONLess determines whether to import photos that do not have a matching JSON file in the takeout. KeepJSONLess bool - // SupportedMedia represents the server's actual list of supported media. This is not a flag. - SupportedMedia metadata.SupportedMedia - // Flags for controlling the extensions of the files to be uploaded - *cliflags.InclusionFlags + InclusionFlags cliflags.InclusionFlags + + // DateHandlingFlags provides options for handling the capture date of the assets. + DateHandlingFlags cliflags.DateHandlingFlags + + // ExifToolFlags specifies options for the exif. + ExifToolFlags metadata.ExifToolFlags // List of banned files BannedFiles namematcher.List // List of banned file name patterns + + // SupportedMedia represents the server's actual list of supported media. This is not a flag. + SupportedMedia metadata.SupportedMedia } // AddGoogleTakeoutFlags adds the command-line flags for the Google Photos takeout import command to the provided Cobra command. -func AddGoogleTakeoutFlags(cmd *cobra.Command) *ImportFlags { - flags := ImportFlags{} +func AddGoogleTakeoutFlags(cmd *cobra.Command, flags *ImportFlags) { + cmd.Flags().BoolVarP(&flags.UseJSONMetadata, "use-json-metadata", "j", true, "Use JSON metadata for date and GPS information") cmd.Flags().BoolVar(&flags.CreateAlbums, "sync-albums", true, "Automatically create albums in Immich that match the albums in your Google Photos takeout") cmd.Flags().StringVar(&flags.ImportFromAlbum, "import-from-album-name", "", "Only import photos from the specified Google Photos album") cmd.Flags().BoolVar(&flags.KeepUntitled, "include-untitled-albums", false, "Include photos from albums without a title in the import process") @@ -59,6 +69,8 @@ func AddGoogleTakeoutFlags(cmd *cobra.Command) *ImportFlags { cmd.Flags().BoolVarP(&flags.KeepArchived, "include-archived", "a", true, "Import archived Google Photos") cmd.Flags().BoolVarP(&flags.KeepJSONLess, "include-unmatched", "u", false, "Import photos that do not have a matching JSON file in the takeout") cmd.Flags().Var(&flags.BannedFiles, "ban-file", "Exclude a file based on a pattern (case-insensitive). Can be specified multiple times.") - flags.InclusionFlags = cliflags.AddInclusionFlags(cmd) - return &flags + cliflags.AddInclusionFlags(cmd, &flags.InclusionFlags) + cliflags.AddDateHandlingFlags(cmd, &flags.DateHandlingFlags) + metadata.AddExifToolFlags(cmd, &flags.ExifToolFlags) + flags.SupportedMedia = metadata.DefaultSupportedMedia } diff --git a/adapters/googlePhotos/googlephotos.go b/adapters/googlePhotos/googlephotos.go new file mode 100644 index 00000000..08bf5edf --- /dev/null +++ b/adapters/googlePhotos/googlephotos.go @@ -0,0 +1,559 @@ +package gp + +import ( + "context" + "io/fs" + "path" + "path/filepath" + "sort" + "strings" + + "github.com/simulot/immich-go/adapters" + "github.com/simulot/immich-go/helpers/gen" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/fshelper" + "github.com/simulot/immich-go/internal/metadata" +) + +type Takeout struct { + fsyss []fs.FS + catalogs map[string]directoryCatalog // file catalogs by directory in the set of the all takeout parts + albums map[string]adapters.LocalAlbum // track album names by folder + fileTracker map[tackerKey][]string // key is base name + file size, value is list of file paths + duplicates map[tackerKey]int // track local duplicates + debugLinkedFiles []linkedFiles + log *fileevent.Recorder + flags *ImportFlags // command-line flags +} + +type tackerKey struct { + baseName string + size int64 +} + +func tackerKeySortFunc(a, b tackerKey) int { + cmp := strings.Compare(a.baseName, b.baseName) + if cmp != 0 { + return cmp + } + return int(a.size) - int(b.size) +} + +// directoryCatalog captures all files in a given directory +type directoryCatalog struct { + jsons map[string]*metadata.Metadata // metadata in the catalog by base name + unMatchedFiles map[string]*assetFile // files to be matched map by base name + matchedFiles map[string]*assetFile // files matched by base name +} + +// assetFile keep information collected during pass one +type assetFile struct { + fsys fs.FS // Remember in which part of the archive the the file + base string // Remember the original file name + length int // file length in bytes + md *metadata.Metadata // will point to the associated metadata +} + +func NewTakeout(ctx context.Context, l *fileevent.Recorder, flags *ImportFlags, fsyss ...fs.FS) (*Takeout, error) { + to := Takeout{ + fsyss: fsyss, + catalogs: map[string]directoryCatalog{}, + albums: map[string]adapters.LocalAlbum{}, + fileTracker: map[tackerKey][]string{}, + duplicates: map[tackerKey]int{}, + log: l, + flags: flags, + } + + return &to, nil +} + +// Prepare scans all files in all walker to build the file catalog of the archive +// metadata files content is read and kept + +func (to *Takeout) Browse(ctx context.Context) (chan *adapters.LocalAssetFile, error) { + for _, w := range to.fsyss { + err := to.passOneFsWalk(ctx, w) + if err != nil { + return nil, err + } + } + err := to.solvePuzzle(ctx) + if err != nil { + return nil, err + } + return to.nextPass(ctx), nil +} + +func (to *Takeout) passOneFsWalk(ctx context.Context, w fs.FS) error { + err := fs.WalkDir(w, ".", func(name string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + + select { + case <-ctx.Done(): + return ctx.Err() + default: + + if d.IsDir() { + return nil + } + + dir, base := path.Split(name) + dir = strings.TrimSuffix(dir, "/") + ext := strings.ToLower(path.Ext(base)) + + dirCatalog, ok := to.catalogs[dir] + if !ok { + dirCatalog.jsons = map[string]*metadata.Metadata{} + dirCatalog.unMatchedFiles = map[string]*assetFile{} + dirCatalog.matchedFiles = map[string]*assetFile{} + } + if _, ok := dirCatalog.unMatchedFiles[base]; ok { + to.log.Record(ctx, fileevent.AnalysisLocalDuplicate, nil, name) + return nil + } + + finfo, err := d.Info() + if err != nil { + to.log.Record(ctx, fileevent.Error, nil, name, "error", err.Error()) + return err + } + switch ext { + case ".json": + md, err := fshelper.ReadJSON[GoogleMetaData](w, name) + if err == nil { + switch { + case md.isAsset(): + md.foundInPaths = append(md.foundInPaths, dir) + dirCatalog.jsons[base] = md.AsMetadata() // Keep metadata + to.log.Record(ctx, fileevent.DiscoveredSidecar, nil, name, "type", "asset metadata", "title", md.Title) + case md.isAlbum(): + if !to.flags.KeepUntitled && md.Title == "" { + to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "discard untitled album") + return nil + } + a := to.albums[dir] + a.Title = md.Title + if a.Title == "" { + a.Title = filepath.Base(dir) + } + a.Path = filepath.Base(dir) + if e := md.Enrichments; e != nil { + a.Description = e.Text + a.Latitude = e.Latitude + a.Longitude = e.Longitude + } + to.albums[dir] = a + to.log.Record(ctx, fileevent.DiscoveredSidecar, nil, name, "type", "album metadata", "title", md.Title) + default: + to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unknown JSONfile") + return nil + } + } else { + to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unknown JSONfile") + return nil + } + default: + + if to.flags.BannedFiles.Match(name) { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "banned file") + return nil + } + + if !to.flags.InclusionFlags.IncludedExtensions.Include(ext) { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "file extension not selected") + return nil + } + if to.flags.InclusionFlags.ExcludedExtensions.Exclude(ext) { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "file extension not allowed") + return nil + } + t := to.flags.SupportedMedia.TypeFromExt(ext) + switch t { + case metadata.TypeUnknown: + to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unsupported file type") + return nil + case metadata.TypeVideo: + to.log.Record(ctx, fileevent.DiscoveredVideo, nil, name) + if strings.Contains(name, "Failed Videos") { + to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "can't upload failed videos") + return nil + } + case metadata.TypeImage: + to.log.Record(ctx, fileevent.DiscoveredImage, nil, name) + } + + dirCatalog.unMatchedFiles[base] = &assetFile{ + fsys: w, + base: base, + length: int(finfo.Size()), + } + key := tackerKey{ + baseName: base, + size: finfo.Size(), + } + if _, exists := to.fileTracker[key]; !exists { + to.fileTracker[key] = []string{} + } + to.fileTracker[key] = append(to.fileTracker[key], dir) + } + to.catalogs[dir] = dirCatalog + return nil + } + }) + return err +} + +// solvePuzzle prepares metadata with information collected during pass one for each accepted files +// +// JSON files give important information about the relative photos / movies: +// - The original name (useful when it as been truncated) +// - The date of capture (useful when the files doesn't have this date) +// - The GPS coordinates (will be useful in a future release) +// +// Each JSON is checked. JSON is duplicated in albums folder. +// --Associated files with the JSON can be found in the JSON's folder, or in the Year photos.-- +// ++JSON and files are located in the same folder +/// +// Once associated and sent to the main program, files are tagged for not been associated with an other one JSON. +// Association is done with the help of a set of matcher functions. Each one implement a rule +// +// 1 JSON can be associated with 1+ files that have a part of their name in common. +// - the file is named after the JSON name +// - the file name can be 1 UTF-16 char shorter (🤯) than the JSON name +// - the file name is longer than 46 UTF-16 chars (🤯) is truncated. But the truncation can creates duplicates, then a number is added. +// - if there are several files with same original name, the first instance kept as it is, the next has a sequence number. +// File is renamed as IMG_1234(1).JPG and the JSON is renamed as IMG_1234.JPG(1).JSON +// - of course those rules are likely to collide. They have to be applied from the most common to the least one. +// - sometimes the file isn't in the same folder than the json... It can be found in Year's photos folder +// +// --The duplicates files (same name, same length in bytes) found in the local source are discarded before been presented to the immich server. +// ++ Duplicates are presented to the next layer to allow the album handling +// +// To solve the puzzle, each directory is checked with all matchers in the order of the most common to the least. + +type matcherFn func(jsonName string, fileName string, sm metadata.SupportedMedia) bool + +// matchers is a list of matcherFn from the most likely to be used to the least one +var matchers = []struct { + name string + fn matcherFn +}{ + {name: "normalMatch", fn: normalMatch}, + {name: "livePhotoMatch", fn: livePhotoMatch}, + {name: "matchWithOneCharOmitted", fn: matchWithOneCharOmitted}, + {name: "matchVeryLongNameWithNumber", fn: matchVeryLongNameWithNumber}, + {name: "matchDuplicateInYear", fn: matchDuplicateInYear}, + {name: "matchEditedName", fn: matchEditedName}, + {name: "matchForgottenDuplicates", fn: matchForgottenDuplicates}, +} + +func (to *Takeout) solvePuzzle(ctx context.Context) error { + dirs := gen.MapKeysSorted(to.catalogs) + for _, dir := range dirs { + cat := to.catalogs[dir] + jsons := gen.MapKeysSorted(cat.jsons) + for _, matcher := range matchers { + for _, json := range jsons { + md := cat.jsons[json] + for f := range cat.unMatchedFiles { + select { + case <-ctx.Done(): + return ctx.Err() + default: + if matcher.fn(json, f, to.flags.SupportedMedia) { + i := cat.unMatchedFiles[f] + i.md = md + cat.matchedFiles[f] = i + to.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, cat.unMatchedFiles[f], filepath.Join(dir, f), "json", json, "size", i.length, "matcher", matcher.name) + delete(cat.unMatchedFiles, f) + } + } + } + } + } + to.catalogs[dir] = cat + files := gen.MapKeys(cat.unMatchedFiles) + sort.Strings(files) + for _, f := range files { + to.log.Record(ctx, fileevent.AnalysisMissingAssociatedMetadata, f, filepath.Join(dir, f)) + if to.flags.KeepJSONLess { + cat.matchedFiles[f] = cat.unMatchedFiles[f] + delete(cat.unMatchedFiles, f) + } + } + } + return nil +} + +// Browse return a channel of assets +// +// Walkers are rewind, and scanned again +// each file net yet sent to immich is sent with associated metadata + +func (to *Takeout) nextPass(ctx context.Context) chan *adapters.LocalAssetFile { + assetChan := make(chan *adapters.LocalAssetFile) + + go func() { + defer close(assetChan) + dirs := gen.MapKeys(to.catalogs) + sort.Strings(dirs) + for _, dir := range dirs { + if len(to.catalogs[dir].matchedFiles) > 0 { + err := to.passTwo(ctx, dir, assetChan) + if err != nil { + assetChan <- &adapters.LocalAssetFile{Err: err} + } + } + } + }() + return assetChan +} + +type linkedFiles struct { + dir string + base string + video *assetFile + image *assetFile +} + +func (to *Takeout) passTwo(ctx context.Context, dir string, assetChan chan *adapters.LocalAssetFile) error { + catalog := to.catalogs[dir] + + linkedFiles := map[string]linkedFiles{} + matchedFiles := gen.MapKeysSorted(catalog.matchedFiles) + + // skip duplicates + newMatchedFiles := []string{} + for _, name := range matchedFiles { + file := catalog.matchedFiles[name] + key := tackerKey{baseName: file.base, size: int64(file.length)} + count := to.duplicates[key] + 1 + to.duplicates[key] = count + + if count == 1 { + continue + } + newMatchedFiles = append(newMatchedFiles, name) + to.logMessage(ctx, fileevent.AnalysisLocalDuplicate, path.Join(dir, name), "local duplicate") + } + matchedFiles = newMatchedFiles + + // Handle pictures first + for _, f := range matchedFiles { + ext := filepath.Ext(f) + if to.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { + linked := linkedFiles[f] + linked.image = catalog.matchedFiles[f] + linkedFiles[f] = linked + } + } + + // Scan videos and try to detect motion pictures +nextVideo: + for _, f := range matchedFiles { + fExt := filepath.Ext(f) + if to.flags.SupportedMedia.TypeFromExt(fExt) == metadata.TypeVideo { + name := strings.TrimSuffix(f, fExt) + // Check if there is a matching image + for i, linked := range linkedFiles { + if linked.image == nil { + // not an image... next + continue + } + if linked.image != nil && linked.video != nil { + // already associated ... next + continue + } + + p := linked.image.base + ext := filepath.Ext(p) + p = strings.TrimSuffix(p, ext) + ext = filepath.Ext(p) + // manage .MP motion picture files + if strings.ToUpper(ext) == ".MP" || strings.HasPrefix(strings.ToUpper(ext), ".MP~") { + if fExt != ext { + continue + } + p = strings.TrimSuffix(p, ext) + } + // image and video files with the same base name. They are linked + if p == name { + linked.video = catalog.matchedFiles[f] + linkedFiles[i] = linked + continue nextVideo + } + } + // no matching image found, create a new linked file for the movie + linked := linkedFiles[f] + linked.video = catalog.matchedFiles[f] + linkedFiles[f] = linked + } + } + + // Process files from the directory + for _, base := range gen.MapKeysSorted(linkedFiles) { + var ( + mainAsset *adapters.LocalAssetFile + liveVideo *adapters.LocalAssetFile + ) + + linked := linkedFiles[base] + linked.base = base + linked.dir = dir + to.debugLinkedFiles = append(to.debugLinkedFiles, linked) + + switch { + case linked.image != nil && linked.video != nil: + mainAsset = to.makeAsset(ctx, dir, linked.image, linked.image.md) + liveVideo = to.makeAsset(ctx, dir, linked.video, linked.video.md) + case linked.image != nil && linked.video == nil: + mainAsset = to.makeAsset(ctx, dir, linked.image, linked.image.md) + case linked.video != nil && linked.image == nil: + mainAsset = to.makeAsset(ctx, dir, linked.video, linked.video.md) + } + + if liveVideo != nil { + err := to.pushAsset(ctx, assetChan, liveVideo) + if err != nil { + return err + } + mainAsset.LivePhoto = liveVideo + } + err := to.pushAsset(ctx, assetChan, mainAsset) + if err != nil { + return err + } + } + return nil +} + +// pushAsset sends the asset to the next layer +func (to *Takeout) pushAsset(ctx context.Context, assetChan chan *adapters.LocalAssetFile, a *adapters.LocalAssetFile) error { + select { + case <-ctx.Done(): + return ctx.Err() + default: + assetChan <- a + } + return nil +} + +// makeAsset makes a localAssetFile based on the google metadata +func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md *metadata.Metadata) *adapters.LocalAssetFile { + key := tackerKey{ + baseName: f.base, + size: int64(f.length), + } + + file := path.Join(dir, f.base) + i, err := fs.Stat(f.fsys, file) + if err != nil { + to.logMessage(ctx, fileevent.Error, file, err.Error()) + return nil + } + + if md != nil { + if !to.flags.KeepArchived && md.Archived { + to.logMessage(ctx, fileevent.DiscoveredDiscarded, file, "discarding archived file") + return nil + } + if !to.flags.KeepPartner && md.FromPartner { + to.logMessage(ctx, fileevent.DiscoveredDiscarded, file, "discarding partner file") + return nil + } + if !to.flags.KeepTrashed && md.Trashed { + to.logMessage(ctx, fileevent.DiscoveredDiscarded, file, "discarding trashed file") + return nil + } + if !to.flags.InclusionFlags.DateRange.InRange(md.DateTaken) { + to.logMessage(ctx, fileevent.DiscoveredDiscarded, file, "discarding files out of date range") + return nil + } + } + + title := f.base + if md != nil { + title = md.FileName + // trim superfluous extensions + titleExt := path.Ext(title) + fileExt := path.Ext(file) + + if titleExt != fileExt { + title = strings.TrimSuffix(title, titleExt) + titleExt = path.Ext(title) + if titleExt != fileExt { + title = strings.TrimSuffix(title, titleExt) + fileExt + } + } + md.FileName = title + } + a := adapters.LocalAssetFile{ + FileName: file, + FileSize: int(i.Size()), + Title: title, + FSys: f.fsys, + } + + if to.flags.ImportFromAlbum != "" { + keep := false + if album, ok := to.albums[dir]; ok { + keep = keep || album.Title == to.flags.ImportFromAlbum + } + if !keep { + to.logMessage(ctx, fileevent.DiscoveredDiscarded, file, "discarding files not in the specified album") + return nil + } + } + + if to.flags.CreateAlbums { + if to.flags.ImportIntoAlbum != "" { + // Force this album + a.Albums = []adapters.LocalAlbum{{Title: to.flags.ImportIntoAlbum}} + } else { + // check if its duplicates are in some albums, and push them all at once + + seenInPaths := to.fileTracker[key] + for _, p := range seenInPaths { + if album, ok := to.albums[p]; ok { + title := album.Title + if title == "" { + if !to.flags.KeepUntitled { + continue + } + title = filepath.Base(album.Path) + } + a.Albums = append(a.Albums, adapters.LocalAlbum{ + Title: title, + Path: p, + Description: album.Description, + Latitude: album.Latitude, + Longitude: album.Longitude, + }) + } + } + } + + // Force this album for partners photos + if to.flags.PartnerSharedAlbum != "" && md != nil && md.FromPartner { + a.Albums = append(a.Albums, adapters.LocalAlbum{Title: to.flags.PartnerSharedAlbum}) + } + } + + if md != nil { + a.Metadata = *md + if a.Metadata.Latitude == 0 && a.Metadata.Longitude == 0 { + for _, album := range a.Albums { + if album.Latitude != 0 || album.Longitude != 0 { + // when there isn't GPS information on the photo, but the album has a location, use that location + a.Metadata.Latitude = album.Latitude + a.Metadata.Longitude = album.Longitude + break + } + } + } + } + return &a +} diff --git a/adapters/googlePhotos/googlephotos.nogo b/adapters/googlePhotos/googlephotos.nogo deleted file mode 100644 index 46f21bb1..00000000 --- a/adapters/googlePhotos/googlephotos.nogo +++ /dev/null @@ -1,674 +0,0 @@ -package gp - -import ( - "context" - "io/fs" - "path" - "path/filepath" - "sort" - "strings" - "unicode/utf8" - - "github.com/simulot/immich-go/adapters" - "github.com/simulot/immich-go/helpers/fileevent" - "github.com/simulot/immich-go/helpers/fshelper" - "github.com/simulot/immich-go/helpers/gen" - "github.com/simulot/immich-go/internal/metadata" -) - -type Takeout struct { - fsyss []fs.FS - catalogs map[string]directoryCatalog // file catalogs by directory in the set of the all takeout parts - albums map[string]adapters.LocalAlbum // track album names by folder - log *fileevent.Recorder - flags *ImportFlags // command-line flags -} - -// directoryCatalog captures all files in a given directory -type directoryCatalog struct { - jsons map[string]*GoogleMetaData // JSONs in the catalog by base name - unMatchedFiles map[string]*assetFile // files to be matched map by base name - matchedFiles map[string]*assetFile // files matched by base name -} - -// assetFile keep information collected during pass one -type assetFile struct { - fsys fs.FS // Remember in which part of the archive the the file - base string // Remember the original file name - length int // file length in bytes - md *GoogleMetaData // will point to the associated metadata -} - -func NewTakeout(ctx context.Context, l *fileevent.Recorder, flags *ImportFlags, fsyss ...fs.FS) (*Takeout, error) { - to := Takeout{ - fsyss: fsyss, - catalogs: map[string]directoryCatalog{}, - albums: map[string]adapters.LocalAlbum{}, - log: l, - flags: flags, - } - - return &to, nil -} - -// Prepare scans all files in all walker to build the file catalog of the archive -// metadata files content is read and kept - -func (to *Takeout) Prepare(ctx context.Context) error { - for _, w := range to.fsyss { - err := to.passOneFsWalk(ctx, w) - if err != nil { - return err - } - } - err := to.solvePuzzle(ctx) - return err -} - -func (to *Takeout) passOneFsWalk(ctx context.Context, w fs.FS) error { - err := fs.WalkDir(w, ".", func(name string, d fs.DirEntry, err error) error { - if err != nil { - return err - } - - select { - case <-ctx.Done(): - return ctx.Err() - default: - - if d.IsDir() { - return nil - } - - dir, base := path.Split(name) - dir = strings.TrimSuffix(dir, "/") - ext := strings.ToLower(path.Ext(base)) - - dirCatalog, ok := to.catalogs[dir] - if !ok { - dirCatalog.jsons = map[string]*GoogleMetaData{} - dirCatalog.unMatchedFiles = map[string]*assetFile{} - dirCatalog.matchedFiles = map[string]*assetFile{} - } - if _, ok := dirCatalog.unMatchedFiles[base]; ok { - to.log.Record(ctx, fileevent.AnalysisLocalDuplicate, nil, name) - return nil - } - - finfo, err := d.Info() - if err != nil { - to.log.Record(ctx, fileevent.Error, nil, name, "error", err.Error()) - return err - } - switch ext { - case ".json": - md, err := fshelper.ReadJSON[GoogleMetaData](w, name) - if err == nil { - switch { - case md.isAsset(): - md.foundInPaths = append(md.foundInPaths, dir) - dirCatalog.jsons[base] = md - to.log.Record(ctx, fileevent.DiscoveredSidecar, nil, name, "type", "asset metadata", "title", md.Title) - case md.isAlbum(): - if !to.flags.KeepUntitled && md.Title == "" { - to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "discard untitled album") - return nil - } - a := to.albums[dir] - a.Title = md.Title - if a.Title == "" { - a.Title = filepath.Base(dir) - } - a.Path = filepath.Base(dir) - if e := md.Enrichments; e != nil { - a.Description = e.Text - a.Latitude = e.Latitude - a.Longitude = e.Longitude - } - to.albums[dir] = a - to.log.Record(ctx, fileevent.DiscoveredSidecar, nil, name, "type", "album metadata", "title", md.Title) - default: - to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unknown JSONfile") - return nil - } - } else { - to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unknown JSONfile") - return nil - } - default: - - if to.flags.BannedFiles.Match(name) { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "banned file") - return nil - } - - if !to.flags.IncludedExtensions.Include(ext) { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "file extension not selected") - return nil - } - if to.flags.ExcludedExtensions.Exclude(ext) { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "file extension not allowed") - return nil - } - t := to.flags.SupportedMedia.TypeFromExt(ext) - switch t { - case metadata.TypeUnknown: - to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unsupported file type") - return nil - case metadata.TypeVideo: - to.log.Record(ctx, fileevent.DiscoveredVideo, nil, name) - if strings.Contains(name, "Failed Videos") { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "can't upload failed videos") - return nil - } - case metadata.TypeImage: - to.log.Record(ctx, fileevent.DiscoveredImage, nil, name) - } - - dirCatalog.unMatchedFiles[base] = &assetFile{ - fsys: w, - base: base, - length: int(finfo.Size()), - } - } - to.catalogs[dir] = dirCatalog - return nil - } - }) - return err -} - -// solvePuzzle prepares metadata with information collected during pass one for each accepted files -// -// JSON files give important information about the relative photos / movies: -// - The original name (useful when it as been truncated) -// - The date of capture (useful when the files doesn't have this date) -// - The GPS coordinates (will be useful in a future release) -// -// Each JSON is checked. JSON is duplicated in albums folder. -// --Associated files with the JSON can be found in the JSON's folder, or in the Year photos.-- -// ++JSON and files are located in the same folder -/// -// Once associated and sent to the main program, files are tagged for not been associated with an other one JSON. -// Association is done with the help of a set of matcher functions. Each one implement a rule -// -// 1 JSON can be associated with 1+ files that have a part of their name in common. -// - the file is named after the JSON name -// - the file name can be 1 UTF-16 char shorter (🤯) than the JSON name -// - the file name is longer than 46 UTF-16 chars (🤯) is truncated. But the truncation can creates duplicates, then a number is added. -// - if there are several files with same original name, the first instance kept as it is, the next has a sequence number. -// File is renamed as IMG_1234(1).JPG and the JSON is renamed as IMG_1234.JPG(1).JSON -// - of course those rules are likely to collide. They have to be applied from the most common to the least one. -// - sometimes the file isn't in the same folder than the json... It can be found in Year's photos folder -// -// --The duplicates files (same name, same length in bytes) found in the local source are discarded before been presented to the immich server. -// ++ Duplicates are presented to the next layer to allow the album handling -// -// To solve the puzzle, each directory is checked with all matchers in the order of the most common to the least. - -type matcherFn func(jsonName string, fileName string, sm metadata.SupportedMedia) bool - -// matchers is a list of matcherFn from the most likely to be used to the least one -var matchers = []struct { - name string - fn matcherFn -}{ - {name: "normalMatch", fn: normalMatch}, - {name: "livePhotoMatch", fn: livePhotoMatch}, - {name: "matchWithOneCharOmitted", fn: matchWithOneCharOmitted}, - {name: "matchVeryLongNameWithNumber", fn: matchVeryLongNameWithNumber}, - {name: "matchDuplicateInYear", fn: matchDuplicateInYear}, - {name: "matchEditedName", fn: matchEditedName}, - {name: "matchForgottenDuplicates", fn: matchForgottenDuplicates}, -} - -func (to *Takeout) solvePuzzle(ctx context.Context) error { - dirs := gen.MapKeys(to.catalogs) - sort.Strings(dirs) - for _, dir := range dirs { - cat := to.catalogs[dir] - jsons := gen.MapKeys(cat.jsons) - sort.Strings(jsons) - for _, matcher := range matchers { - for _, json := range jsons { - md := cat.jsons[json] - for f := range cat.unMatchedFiles { - select { - case <-ctx.Done(): - return ctx.Err() - default: - if matcher.fn(json, f, to.flags.SupportedMedia) { - i := cat.unMatchedFiles[f] - i.md = md - cat.matchedFiles[f] = i - to.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, cat.unMatchedFiles[f], filepath.Join(dir, f), "json", json, "size", i.length, "matcher", matcher.name) - delete(cat.unMatchedFiles, f) - } - } - } - } - } - to.catalogs[dir] = cat - files := gen.MapKeys(cat.unMatchedFiles) - sort.Strings(files) - for _, f := range files { - to.log.Record(ctx, fileevent.AnalysisMissingAssociatedMetadata, f, filepath.Join(dir, f)) - if to.flags.KeepJSONLess { - cat.matchedFiles[f] = cat.unMatchedFiles[f] - delete(cat.unMatchedFiles, f) - } - } - } - return nil -} - -// normalMatch -// -// PXL_20230922_144936660.jpg.json -// PXL_20230922_144936660.jpg -func normalMatch(jsonName string, fileName string, sm metadata.SupportedMedia) bool { - base := strings.TrimSuffix(jsonName, path.Ext(jsonName)) - return base == fileName -} - -// livePhotoMatch -// 20231227_152817.jpg.json -// 20231227_152817.MP4 -// -// PXL_20231118_035751175.MP.jpg.json -// PXL_20231118_035751175.MP.jpg -// PXL_20231118_035751175.MP -func livePhotoMatch(jsonName string, fileName string, sm metadata.SupportedMedia) bool { - fileExt := path.Ext(fileName) - fileName = strings.TrimSuffix(fileName, fileExt) - base := strings.TrimSuffix(jsonName, path.Ext(jsonName)) - base = strings.TrimSuffix(base, path.Ext(base)) - if base == fileName { - return true - } - base = strings.TrimSuffix(base, path.Ext(base)) - return base == fileName -} - -// matchWithOneCharOmitted -// -// PXL_20230809_203449253.LONG_EXPOSURE-02.ORIGIN.json -// PXL_20230809_203449253.LONG_EXPOSURE-02.ORIGINA.jpg -// -// 05yqt21kruxwwlhhgrwrdyb6chhwszi9bqmzu16w0 2.jp.json <-- match also with LivePhoto matcher -// 05yqt21kruxwwlhhgrwrdyb6chhwszi9bqmzu16w0 2.jpg -// -// 😀😃😄😁😆😅😂🤣🥲☺️😊😇🙂🙃😉😌😍🥰😘😗😙😚😋.json -// 😀😃😄😁😆😅😂🤣🥲☺️😊😇🙂🙃😉😌😍🥰😘😗😙😚😋😛.jpg - -func matchWithOneCharOmitted(jsonName string, fileName string, sm metadata.SupportedMedia) bool { - baseJSON := strings.TrimSuffix(jsonName, path.Ext(jsonName)) - ext := path.Ext(baseJSON) - if sm.IsExtensionPrefix(ext) { - baseJSON = strings.TrimSuffix(baseJSON, ext) - } - fileName = strings.TrimSuffix(fileName, path.Ext(fileName)) - if fileName == baseJSON { - return true - } - if strings.HasPrefix(fileName, baseJSON) { - a, b := utf8.RuneCountInString(fileName), utf8.RuneCountInString(baseJSON) - if a-b <= 1 { - return true - } - } - return false -} - -// matchVeryLongNameWithNumber -// -// Backyard_ceremony_wedding_photography_xxxxxxx_(494).json -// Backyard_ceremony_wedding_photography_xxxxxxx_m(494).jpg -func matchVeryLongNameWithNumber(jsonName string, fileName string, sm metadata.SupportedMedia) bool { - jsonName = strings.TrimSuffix(jsonName, path.Ext(jsonName)) - - p1JSON := strings.Index(jsonName, "(") - if p1JSON < 0 { - return false - } - p2JSON := strings.Index(jsonName, ")") - if p2JSON < 0 || p2JSON != len(jsonName)-1 { - return false - } - p1File := strings.Index(fileName, "(") - if p1File < 0 || p1File != p1JSON+1 { - return false - } - if jsonName[:p1JSON] != fileName[:p1JSON] { - return false - } - p2File := strings.Index(fileName, ")") - return jsonName[p1JSON+1:p2JSON] == fileName[p1File+1:p2File] -} - -// matchDuplicateInYear -// -// IMG_3479.JPG(2).json -// IMG_3479(2).JPG -// - -// Fast implementation, but does't work with live photos -func matchDuplicateInYear(jsonName string, fileName string, sm metadata.SupportedMedia) bool { - jsonName = strings.TrimSuffix(jsonName, path.Ext(jsonName)) - p1JSON := strings.Index(jsonName, "(") - if p1JSON < 1 { - return false - } - p1File := strings.Index(fileName, "(") - if p1File < 0 { - return false - } - jsonExt := path.Ext(jsonName[:p1JSON]) - - p2JSON := strings.Index(jsonName, ")") - if p2JSON < 0 || p2JSON != len(jsonName)-1 { - return false - } - - p2File := strings.Index(fileName, ")") - if p2File < 0 || p2File < p1File { - return false - } - - fileExt := path.Ext(fileName) - - if fileExt != jsonExt { - return false - } - - jsonBase := strings.TrimSuffix(jsonName[:p1JSON], path.Ext(jsonName[:p1JSON])) - - if jsonBase != fileName[:p1File] { - return false - } - - if fileName[p1File+1:p2File] != jsonName[p1JSON+1:p2JSON] { - return false - } - - return true -} - -/* -// Regexp implementation, work with live photos, 10 times slower -var ( - reDupInYearJSON = regexp.MustCompile(`(.*)\.(.{2,4})\((\d+)\)\..{2,4}$`) - reDupInYearFile = regexp.MustCompile(`(.*)\((\d+)\)\..{2,4}$`) -) - -func matchDuplicateInYear(jsonName string, fileName string, sm immich.SupportedMedia) bool { - mFile := reDupInYearFile.FindStringSubmatch(fileName) - if len(mFile) < 3 { - return false - } - mJSON := reDupInYearJSON.FindStringSubmatch(jsonName) - if len(mJSON) < 4 { - return false - } - if mFile[1] == mJSON[1] && mFile[2] == mJSON[3] { - return true - } - return false -} -*/ - -// matchEditedName -// PXL_20220405_090123740.PORTRAIT.jpg.json -// PXL_20220405_090123740.PORTRAIT.jpg -// PXL_20220405_090123740.PORTRAIT-modifié.jpg - -func matchEditedName(jsonName string, fileName string, sm metadata.SupportedMedia) bool { - base := strings.TrimSuffix(jsonName, path.Ext(jsonName)) - ext := path.Ext(base) - if ext != "" { - if sm.IsMedia(ext) { - base := strings.TrimSuffix(base, ext) - fname := strings.TrimSuffix(fileName, path.Ext(fileName)) - return strings.HasPrefix(fname, base) - } - } - return false -} - -// TODO: This one interferes with matchVeryLongNameWithNumber - -// matchForgottenDuplicates -// "original_1d4caa6f-16c6-4c3d-901b-9387de10e528_.json" -// original_1d4caa6f-16c6-4c3d-901b-9387de10e528_P.jpg -// original_1d4caa6f-16c6-4c3d-901b-9387de10e528_P(1).jpg - -func matchForgottenDuplicates(jsonName string, fileName string, sm metadata.SupportedMedia) bool { - jsonName = strings.TrimSuffix(jsonName, path.Ext(jsonName)) - fileName = strings.TrimSuffix(fileName, path.Ext(fileName)) - if strings.HasPrefix(fileName, jsonName) { - a, b := utf8.RuneCountInString(jsonName), utf8.RuneCountInString(fileName) - if b-a < 10 { - return true - } - } - return false -} - -// Browse return a channel of assets -// -// Walkers are rewind, and scanned again -// each file net yet sent to immich is sent with associated metadata - -func (to *Takeout) Browse(ctx context.Context) chan *adapter.LocalAssetFile { - assetChan := make(chan *adapter.LocalAssetFile) - - go func() { - defer close(assetChan) - dirs := gen.MapKeys(to.catalogs) - sort.Strings(dirs) - for _, dir := range dirs { - if len(to.catalogs[dir].matchedFiles) > 0 { - err := to.passTwo(ctx, dir, assetChan) - if err != nil { - assetChan <- &adapters.LocalAssetFile{Err: err} - } - } - } - }() - return assetChan -} - -// detect livephotos and motion pictures -// 1. get all pictures -// 2. scan vidoes, if a picture matches, this is a live photo -func (to *Takeout) passTwo(ctx context.Context, dir string, assetChan chan *browser.LocalAssetFile) error { - catalog := to.catalogs[dir] - - linkedFiles := map[string]struct { - video *assetFile - image *assetFile - }{} - - // Scan pictures - for _, f := range gen.MapKeys(catalog.matchedFiles) { - ext := path.Ext(f) - if to.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { - linked := linkedFiles[f] - linked.image = catalog.matchedFiles[f] - linkedFiles[f] = linked - } - } - - // Scan videos -nextVideo: - for _, f := range gen.MapKeys(catalog.matchedFiles) { - fExt := path.Ext(f) - if to.flags.SupportedMedia.TypeFromExt(fExt) == metadata.TypeVideo { - name := strings.TrimSuffix(f, fExt) - for i, linked := range linkedFiles { - if linked.image == nil { - continue - } - if linked.image != nil && linked.video != nil { - continue - } - p := linked.image.base - ext := path.Ext(p) - p = strings.TrimSuffix(p, ext) - ext = path.Ext(p) - if strings.ToUpper(ext) == ".MP" || strings.HasPrefix(strings.ToUpper(ext), ".MP~") { - if fExt != ext { - continue - } - p = strings.TrimSuffix(p, ext) - } - if p == name { - linked.video = catalog.matchedFiles[f] - linkedFiles[i] = linked - continue nextVideo - } - } - linked := linkedFiles[f] - linked.video = catalog.matchedFiles[f] - linkedFiles[f] = linked - } - } - - for _, base := range gen.MapKeys(linkedFiles) { - var a *browser.LocalAssetFile - var err error - - linked := linkedFiles[base] - - if linked.image != nil { - a, err = to.makeAsset(ctx, linked.image.md, linked.image.fsys, path.Join(dir, linked.image.base)) - if err != nil { - to.log.Record(ctx, fileevent.Error, nil, path.Join(dir, linked.image.base), "error", err.Error()) - continue - } - if linked.video != nil { - i, err := to.makeAsset(ctx, linked.video.md, linked.video.fsys, path.Join(dir, linked.video.base)) - if err != nil { - to.log.Record(ctx, fileevent.Error, nil, path.Join(dir, linked.video.base), "error", err.Error()) - } else { - a.LivePhoto = i - } - } - } else { - a, err = to.makeAsset(ctx, linked.video.md, linked.video.fsys, path.Join(dir, linked.video.base)) - if err != nil { - to.log.Record(ctx, fileevent.Error, nil, path.Join(dir, linked.video.base), "error", err.Error()) - continue - } - } - select { - case <-ctx.Done(): - return ctx.Err() - default: - assetChan <- a - } - } - return nil -} - -// makeAsset makes a localAssetFile based on the google metadata -func (to *Takeout) makeAsset(ctx context.Context, md *GoogleMetaData, fsys fs.FS, name string) (*browser.LocalAssetFile, error) { - i, err := fs.Stat(fsys, name) - if err != nil { - return nil, err - } - - if md != nil { - if !to.flags.KeepArchived && md.Archived { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "discarding archived file") - return nil, nil - } - if !to.flags.KeepPartner && md.isPartner() { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "discarding partner file") - return nil, nil - } - if !to.flags.KeepTrashed && md.Trashed { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "discarding trashed file") - return nil, nil - } - if !to.flags.InclusionFlags.DateRange.InRange(md.PhotoTakenTime.Time()) { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "discarding files out of date range") - return nil, nil - } - } - - a := browser.LocalAssetFile{ - FileName: name, - FileSize: int(i.Size()), - Title: path.Base(name), - FSys: fsys, - } - - if to.flags.ImportFromAlbum != "" { - keep := false - if album, ok := to.albums[path.Dir(name)]; ok { - keep = keep || album.Title == to.flags.ImportFromAlbum - } - if !keep { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "discarding files not in the specified album") - return nil, nil - } - if to.flags.CreateAlbums { - a.Albums = []adapters.LocalAlbum{to.albums[path.Dir(name)]} - } - } else if to.flags.CreateAlbums { - if to.flags.ImportIntoAlbum != "" { - a.Albums = []adapters.LocalAlbum{{Title: to.flags.ImportIntoAlbum}} - } else { - if album, ok := to.albums[path.Dir(name)]; ok { - a.Albums = append(a.Albums, album) - } - } - } - if md != nil { - // Change file's title with the asset's title and the actual file's extension - title := md.Title - titleExt := path.Ext(title) - fileExt := path.Ext(name) - - if titleExt != fileExt { - title = strings.TrimSuffix(title, titleExt) - titleExt = path.Ext(title) - if titleExt != fileExt { - title = strings.TrimSuffix(title, titleExt) + fileExt - } - } - a.Title = title - a.Archived = md.Archived - a.FromPartner = md.isPartner() - a.Trashed = md.Trashed - a.Favorite = md.Favorited - - // Prepare sidecar data to force Immich with Google metadata - - sidecar := metadata.Metadata{ - Description: md.Description, - DateTaken: md.PhotoTakenTime.Time(), - } - - if md.GeoDataExif.Latitude != 0 || md.GeoDataExif.Longitude != 0 { - sidecar.Latitude = md.GeoDataExif.Latitude - sidecar.Longitude = md.GeoDataExif.Longitude - } - - if md.GeoData.Latitude != 0 || md.GeoData.Longitude != 0 { - sidecar.Latitude = md.GeoData.Latitude - sidecar.Longitude = md.GeoData.Longitude - } - for _, p := range md.foundInPaths { - if album, exists := to.albums[p]; exists { - if (album.Latitude != 0 || album.Longitude != 0) && (sidecar.Latitude == 0 && sidecar.Longitude == 0) { - sidecar.Latitude = album.Latitude - sidecar.Longitude = album.Longitude - } - } - } - a.Metadata = sidecar - } - return &a, nil -} diff --git a/adapters/googlePhotos/googlephotos_test.nogo b/adapters/googlePhotos/googlephotos_test.go similarity index 100% rename from adapters/googlePhotos/googlephotos_test.nogo rename to adapters/googlePhotos/googlephotos_test.go diff --git a/adapters/googlePhotos/json.nogo b/adapters/googlePhotos/json.go similarity index 87% rename from adapters/googlePhotos/json.nogo rename to adapters/googlePhotos/json.go index 342b7556..f0f4e226 100644 --- a/adapters/googlePhotos/json.nogo +++ b/adapters/googlePhotos/json.go @@ -6,7 +6,8 @@ import ( "strconv" "time" - "github.com/simulot/immich-go/helpers/tzone" + "github.com/simulot/immich-go/internal/metadata" + "github.com/simulot/immich-go/internal/tzone" ) type Metablock struct { @@ -34,6 +35,25 @@ type GoogleMetaData struct { foundInPaths []string // keep track of paths where the json has been found } +func (gmd GoogleMetaData) AsMetadata() *metadata.Metadata { + latitude, longitude := gmd.GeoDataExif.Latitude, gmd.GeoDataExif.Longitude + if latitude == 0 && longitude == 0 { + latitude, longitude = gmd.GeoData.Latitude, gmd.GeoData.Longitude + } + + return &metadata.Metadata{ + FileName: gmd.Title, + Description: gmd.Description, + DateTaken: gmd.PhotoTakenTime.Time(), + Latitude: latitude, + Longitude: longitude, + Trashed: gmd.Trashed, + Archived: gmd.Archived, + Favorited: gmd.Favorited, + FromPartner: gmd.isPartner(), + } +} + func (gmd *GoogleMetaData) UnmarshalJSON(data []byte) error { type gmetadata GoogleMetaData var gg gmetadata diff --git a/adapters/googlePhotos/json_test.nogo b/adapters/googlePhotos/json_test.go similarity index 100% rename from adapters/googlePhotos/json_test.nogo rename to adapters/googlePhotos/json_test.go diff --git a/adapters/googlePhotos/logs.go b/adapters/googlePhotos/logs.go new file mode 100644 index 00000000..3e9d948e --- /dev/null +++ b/adapters/googlePhotos/logs.go @@ -0,0 +1,91 @@ +package gp + +import ( + "context" + "encoding/csv" + "io" + "slices" + "sort" + "strconv" + "strings" + + "github.com/simulot/immich-go/helpers/gen" + "github.com/simulot/immich-go/internal/fileevent" +) + +// logMessage for the photo and the movie attached to the photo +func (to *Takeout) logMessage(ctx context.Context, code fileevent.Code, file string, reason string) { + t := "reason" + if code == fileevent.Error { + t = "error" + } + to.log.Record(ctx, code, nil, file, t, reason) +} + +func (to *Takeout) DebugDuplicates(w io.Writer) { + csv := csv.NewWriter(w) + _ = csv.Write([]string{"File", "Size", "Count"}) + dups := gen.MapKeys(to.duplicates) + + slices.SortFunc(dups, tackerKeySortFunc) + + for _, k := range dups { + _ = csv.Write([]string{k.baseName, strconv.Itoa(int(k.size)), strconv.Itoa(to.duplicates[k])}) + } + csv.Flush() +} + +func (to *Takeout) DebugLinkedFiles(w io.Writer) { + csvWriter := csv.NewWriter(w) + _ = csvWriter.Write([]string{"Dir", "Base", "Image", "Image Size", "Video", "Video Size"}) + + slices.SortFunc(to.debugLinkedFiles, func(a, b linkedFiles) int { + if cmp := strings.Compare(a.dir, b.dir); cmp != 0 { + return cmp + } + return strings.Compare(a.base, b.base) + }) + + line := make([]string, 6) + for _, k := range to.debugLinkedFiles { + line[0] = k.dir + line[1] = k.base + if k.image != nil { + line[2] = k.image.base + line[3] = strconv.Itoa(k.image.length) + } else { + line[2] = "" + line[3] = "" + } + if k.video != nil { + line[4] = k.video.base + line[5] = strconv.Itoa(k.video.length) + } else { + line[4] = "" + line[5] = "" + } + _ = csvWriter.Write(line) + } + csvWriter.Flush() +} + +func (to *Takeout) DebugFileTracker(w io.Writer) { + csv := csv.NewWriter(w) + _ = csv.Write([]string{"File", "Size", "Path"}) + + keys := gen.MapKeys(to.fileTracker) + + slices.SortFunc(keys, tackerKeySortFunc) + for _, k := range keys { + line := make([]string, 3) + line[0] = k.baseName + line[1] = strconv.Itoa(int(k.size)) + paths := to.fileTracker[k] + sort.Strings(paths) + for _, p := range paths { + line[2] = p + _ = csv.Write(line) + } + } + csv.Flush() +} diff --git a/adapters/googlePhotos/matchers.go b/adapters/googlePhotos/matchers.go new file mode 100644 index 00000000..8b8ccc27 --- /dev/null +++ b/adapters/googlePhotos/matchers.go @@ -0,0 +1,199 @@ +package gp + +import ( + "path" + "strings" + "unicode/utf8" + + "github.com/simulot/immich-go/internal/metadata" +) + +// normalMatch +// +// PXL_20230922_144936660.jpg.json +// PXL_20230922_144936660.jpg +func normalMatch(jsonName string, fileName string, sm metadata.SupportedMedia) bool { + base := strings.TrimSuffix(jsonName, path.Ext(jsonName)) + return base == fileName +} + +// livePhotoMatch +// 20231227_152817.jpg.json +// 20231227_152817.MP4 +// +// PXL_20231118_035751175.MP.jpg.json +// PXL_20231118_035751175.MP.jpg +// PXL_20231118_035751175.MP +func livePhotoMatch(jsonName string, fileName string, sm metadata.SupportedMedia) bool { + fileExt := path.Ext(fileName) + fileName = strings.TrimSuffix(fileName, fileExt) + base := strings.TrimSuffix(jsonName, path.Ext(jsonName)) + base = strings.TrimSuffix(base, path.Ext(base)) + if base == fileName { + return true + } + base = strings.TrimSuffix(base, path.Ext(base)) + return base == fileName +} + +// matchWithOneCharOmitted +// +// PXL_20230809_203449253.LONG_EXPOSURE-02.ORIGIN.json +// PXL_20230809_203449253.LONG_EXPOSURE-02.ORIGINA.jpg +// +// 05yqt21kruxwwlhhgrwrdyb6chhwszi9bqmzu16w0 2.jp.json <-- match also with LivePhoto matcher +// 05yqt21kruxwwlhhgrwrdyb6chhwszi9bqmzu16w0 2.jpg +// +// 😀😃😄😁😆😅😂🤣🥲☺️😊😇🙂🙃😉😌😍🥰😘😗😙😚😋.json +// 😀😃😄😁😆😅😂🤣🥲☺️😊😇🙂🙃😉😌😍🥰😘😗😙😚😋😛.jpg + +func matchWithOneCharOmitted(jsonName string, fileName string, sm metadata.SupportedMedia) bool { + baseJSON := strings.TrimSuffix(jsonName, path.Ext(jsonName)) + ext := path.Ext(baseJSON) + if sm.IsExtensionPrefix(ext) { + baseJSON = strings.TrimSuffix(baseJSON, ext) + } + fileName = strings.TrimSuffix(fileName, path.Ext(fileName)) + if fileName == baseJSON { + return true + } + if strings.HasPrefix(fileName, baseJSON) { + a, b := utf8.RuneCountInString(fileName), utf8.RuneCountInString(baseJSON) + if a-b <= 1 { + return true + } + } + return false +} + +// matchVeryLongNameWithNumber +// +// Backyard_ceremony_wedding_photography_xxxxxxx_(494).json +// Backyard_ceremony_wedding_photography_xxxxxxx_m(494).jpg +func matchVeryLongNameWithNumber(jsonName string, fileName string, sm metadata.SupportedMedia) bool { + jsonName = strings.TrimSuffix(jsonName, path.Ext(jsonName)) + + p1JSON := strings.Index(jsonName, "(") + if p1JSON < 0 { + return false + } + p2JSON := strings.Index(jsonName, ")") + if p2JSON < 0 || p2JSON != len(jsonName)-1 { + return false + } + p1File := strings.Index(fileName, "(") + if p1File < 0 || p1File != p1JSON+1 { + return false + } + if jsonName[:p1JSON] != fileName[:p1JSON] { + return false + } + p2File := strings.Index(fileName, ")") + return jsonName[p1JSON+1:p2JSON] == fileName[p1File+1:p2File] +} + +// matchDuplicateInYear +// +// IMG_3479.JPG(2).json +// IMG_3479(2).JPG +// + +// Fast implementation, but does't work with live photos +func matchDuplicateInYear(jsonName string, fileName string, sm metadata.SupportedMedia) bool { + jsonName = strings.TrimSuffix(jsonName, path.Ext(jsonName)) + p1JSON := strings.Index(jsonName, "(") + if p1JSON < 1 { + return false + } + p1File := strings.Index(fileName, "(") + if p1File < 0 { + return false + } + jsonExt := path.Ext(jsonName[:p1JSON]) + + p2JSON := strings.Index(jsonName, ")") + if p2JSON < 0 || p2JSON != len(jsonName)-1 { + return false + } + + p2File := strings.Index(fileName, ")") + if p2File < 0 || p2File < p1File { + return false + } + + fileExt := path.Ext(fileName) + + if fileExt != jsonExt { + return false + } + + jsonBase := strings.TrimSuffix(jsonName[:p1JSON], path.Ext(jsonName[:p1JSON])) + + if jsonBase != fileName[:p1File] { + return false + } + + if fileName[p1File+1:p2File] != jsonName[p1JSON+1:p2JSON] { + return false + } + + return true +} + +/* +// Regexp implementation, work with live photos, 10 times slower +var ( + reDupInYearJSON = regexp.MustCompile(`(.*)\.(.{2,4})\((\d+)\)\..{2,4}$`) + reDupInYearFile = regexp.MustCompile(`(.*)\((\d+)\)\..{2,4}$`) +) + +func matchDuplicateInYear(jsonName string, fileName string, sm immich.SupportedMedia) bool { + mFile := reDupInYearFile.FindStringSubmatch(fileName) + if len(mFile) < 3 { + return false + } + mJSON := reDupInYearJSON.FindStringSubmatch(jsonName) + if len(mJSON) < 4 { + return false + } + if mFile[1] == mJSON[1] && mFile[2] == mJSON[3] { + return true + } + return false +} +*/ + +// matchEditedName +// PXL_20220405_090123740.PORTRAIT.jpg.json +// PXL_20220405_090123740.PORTRAIT.jpg +// PXL_20220405_090123740.PORTRAIT-modifié.jpg + +func matchEditedName(jsonName string, fileName string, sm metadata.SupportedMedia) bool { + base := strings.TrimSuffix(jsonName, path.Ext(jsonName)) + ext := path.Ext(base) + if ext != "" && sm.IsMedia(ext) { + base = strings.TrimSuffix(base, ext) + fname := strings.TrimSuffix(fileName, path.Ext(fileName)) + return strings.HasPrefix(fname, base) + } + return false +} + +// TODO: This one interferes with matchVeryLongNameWithNumber + +// matchForgottenDuplicates +// "original_1d4caa6f-16c6-4c3d-901b-9387de10e528_.json" +// original_1d4caa6f-16c6-4c3d-901b-9387de10e528_P.jpg +// original_1d4caa6f-16c6-4c3d-901b-9387de10e528_P(1).jpg + +func matchForgottenDuplicates(jsonName string, fileName string, sm metadata.SupportedMedia) bool { + jsonName = strings.TrimSuffix(jsonName, path.Ext(jsonName)) + fileName = strings.TrimSuffix(fileName, path.Ext(fileName)) + if strings.HasPrefix(fileName, jsonName) { + a, b := utf8.RuneCountInString(jsonName), utf8.RuneCountInString(fileName) + if b-a < 10 { + return true + } + } + return false +} diff --git a/adapters/googlePhotos/testgp_bigread_test.nogo b/adapters/googlePhotos/testgp_bigread_test.go similarity index 79% rename from adapters/googlePhotos/testgp_bigread_test.nogo rename to adapters/googlePhotos/testgp_bigread_test.go index 5f5e70b1..5054f3ac 100644 --- a/adapters/googlePhotos/testgp_bigread_test.nogo +++ b/adapters/googlePhotos/testgp_bigread_test.go @@ -11,8 +11,8 @@ import ( "path/filepath" "testing" - "github.com/simulot/immich-go/helpers/fileevent" - "github.com/simulot/immich-go/helpers/fshelper" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/fshelper" "github.com/simulot/immich-go/internal/metadata" "github.com/telemachus/humane" ) @@ -42,7 +42,13 @@ func TestReadBigTakeout(t *testing.T) { return } - for range to.Browse(context.Background()) { + assets, err := to.Browse(context.Background()) + if err != nil { + t.Error(err) + return + } + + for range assets { cnt++ } l.Info(fmt.Sprintf("files seen %d", cnt)) diff --git a/adapters/googlePhotos/testgp_samples_test.nogo b/adapters/googlePhotos/testgp_samples_test.go similarity index 99% rename from adapters/googlePhotos/testgp_samples_test.nogo rename to adapters/googlePhotos/testgp_samples_test.go index 5183b1a1..e6955ccb 100644 --- a/adapters/googlePhotos/testgp_samples_test.nogo +++ b/adapters/googlePhotos/testgp_samples_test.go @@ -54,7 +54,7 @@ type jsonFn func(md *GoogleMetaData) func takenTime(date string) func(md *GoogleMetaData) { return func(md *GoogleMetaData) { - md.PhotoTakenTime.Timestamp = strconv.FormatInt(metadata.TakeTimeFromName(date).Unix(), 10) + md.PhotoTakenTime.Timestamp = strconv.FormatInt(metadata.TakeTimeFromName(date, time.UTC).Unix(), 10) } } diff --git a/adapters/googlePhotos/testgp_test.nogo b/adapters/googlePhotos/testgp_test.go similarity index 96% rename from adapters/googlePhotos/testgp_test.nogo rename to adapters/googlePhotos/testgp_test.go index 6f1e8acb..ead2b7af 100644 --- a/adapters/googlePhotos/testgp_test.nogo +++ b/adapters/googlePhotos/testgp_test.go @@ -10,8 +10,7 @@ import ( "testing" "github.com/kr/pretty" - "github.com/simulot/immich-go/browser" - "github.com/simulot/immich-go/helpers/fileevent" + "github.com/simulot/immich-go/internal/fileevent" "github.com/simulot/immich-go/internal/metadata" ) @@ -144,21 +143,23 @@ func TestBrowse(t *testing.T) { ctx := context.Background() log := slog.New(slog.NewTextHandler(io.Discard, nil)) - flags := &FlagImport{ + flags := &ImportFlags{ SupportedMedia: metadata.DefaultSupportedMedia, } b, err := NewTakeout(ctx, fileevent.NewRecorder(log, false), flags, fsys...) if err != nil { t.Error(err) + return } - err = b.Prepare(ctx) + assetChan, err := b.Browse(ctx) if err != nil { t.Error(err) + return } results := []fileResult{} - for a := range b.Browse(ctx) { + for a := range assetChan { results = append(results, fileResult{name: path.Base(a.FileName), size: a.FileSize, title: a.Title}) if a.LivePhoto != nil { results = append(results, fileResult{name: path.Base(a.LivePhoto.FileName), size: a.LivePhoto.FileSize, title: a.LivePhoto.Title}) @@ -222,20 +223,22 @@ func TestAlbums(t *testing.T) { t.Run(c.name, func(t *testing.T) { ctx := context.Background() fsys := c.gen() - flags := &FlagsImport{ + flags := &ImportFlags{ SupportedMedia: metadata.DefaultSupportedMedia, } b, err := NewTakeout(ctx, fileevent.NewRecorder(nil, false), flags, fsys...) if err != nil { t.Error(err) + return } - err = b.Prepare(ctx) + assetChan, err := b.Browse(ctx) if err != nil { t.Error(err) + return } albums := album{} - for a := range b.Browse(ctx) { + for a := range assetChan { if len(a.Albums) > 0 { for _, al := range a.Albums { l := albums[al.Title] @@ -345,23 +348,26 @@ func TestArchives(t *testing.T) { func(t *testing.T) { ctx := context.Background() fsys := c.gen() - flags := &browser.GooglePhotosFlags{ + flags := &ImportFlags{ SupportedMedia: metadata.DefaultSupportedMedia, KeepJSONLess: c.acceptMissingJSON, + CreateAlbums: true, } b, err := NewTakeout(ctx, fileevent.NewRecorder(nil, false), flags, fsys...) if err != nil { t.Error(err) + return } - err = b.Prepare(ctx) + assetChan, err := b.Browse(ctx) if err != nil { t.Error(err) + return } livePhotos := photo{} assets := photo{} albums := album{} - for a := range b.Browse(ctx) { + for a := range assetChan { if a.LivePhoto != nil { photo := a.FileName video := a.LivePhoto.FileName diff --git a/adapters/localfile.go b/adapters/localfile.go index 457552c4..28c92d85 100644 --- a/adapters/localfile.go +++ b/adapters/localfile.go @@ -35,11 +35,11 @@ type LocalAssetFile struct { SideCar metadata.SideCarFile // sidecar file if found Metadata metadata.Metadata // Metadata fields - // Google Photos flags - Trashed bool // The asset is trashed - Archived bool // The asset is archived - FromPartner bool // the asset comes from a partner - Favorite bool + // // Google Photos flags + // Trashed bool // The asset is trashed + // Archived bool // The asset is archived + // FromPartner bool // the asset comes from a partner + // Favorite bool // Live Photos LivePhoto *LocalAssetFile // Local asset of the movie part diff --git a/cmd/upload/cmdFolder.go b/cmd/upload/cmdFolder.go index 64551369..2ec8e9b4 100644 --- a/cmd/upload/cmdFolder.go +++ b/cmd/upload/cmdFolder.go @@ -15,6 +15,7 @@ func addFromFolderCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImmichFla cmdFolder := &cobra.Command{ Use: "from-folder [flags] [...]", Short: "import files from a folder structure", + Args: cobra.MinimumNArgs(1), } cmdFolder.Flags().SortFlags = false @@ -36,9 +37,6 @@ func addFromFolderCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImmichFla uploadCmd.AddCommand(cmdFolder) cmdFolder.RunE = func(cmd *cobra.Command, args []string) error { - // if UploadFolderFlags.ImportIntoAlbum != "" && UploadFolderFlags.UsePathAsAlbumName != folder.FolderModeNone { - // UploadFolderFlags.UsePathAsAlbumName = folder.FolderModeNone - // } UpCmd := &UpCmd{ Root: rootFlags, Server: cmdUpServerFlags, @@ -68,9 +66,9 @@ func addFromFolderCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImmichFla if err != nil { return err } - UploadFolderFlags.SupportedMedia = UpCmd.Server.Immich.SupportedMedia() + UpCmd.UploadFolderFlags.SupportedMedia = UpCmd.Server.Immich.SupportedMedia() - adapter, err := folder.NewLocalFiles(ctx, UpCmd.Jnl, &UploadFolderFlags, fsyss...) + adapter, err := folder.NewLocalFiles(ctx, UpCmd.Jnl, UpCmd.UploadFolderFlags, fsyss...) if err != nil { return err } diff --git a/cmd/upload/cmdGooglePhotos.go b/cmd/upload/cmdGooglePhotos.go new file mode 100644 index 00000000..df4b06c3 --- /dev/null +++ b/cmd/upload/cmdGooglePhotos.go @@ -0,0 +1,67 @@ +package upload + +import ( + "errors" + "strings" + + gp "github.com/simulot/immich-go/adapters/googlePhotos" + "github.com/simulot/immich-go/cmd" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/fshelper" + "github.com/spf13/cobra" +) + +func addFromGooglePhotosCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImmichFlags) { + cmdGP := &cobra.Command{ + Use: "from-google-photos [flags] | ", + Short: "Import files either from a Google Photos takeout zipped archive or decompressed folder", + Args: cobra.MinimumNArgs(1), + } + cmdGP.Flags().SortFlags = false + + cmdUpServerFlags := cmd.AddImmichServerFlagSet(cmdGP, rootFlags) + CommonFlags := addCommonFlags(cmdGP) + gpFlags := gp.ImportFlags{} + gp.AddGoogleTakeoutFlags(cmdGP, &gpFlags) + uploadCmd.AddCommand(cmdGP) + + cmdGP.RunE = func(cmd *cobra.Command, args []string) error { + UpCmd := &UpCmd{ + Root: rootFlags, + Server: cmdUpServerFlags, + CommonFlags: CommonFlags, + GooglePhotosFlags: &gpFlags, + } + + ctx := cmdGP.Context() + err := UpCmd.Root.Open() + if err != nil { + return err + } + + UpCmd.Jnl = fileevent.NewRecorder(rootFlags.Log, false) + + fsyss, err := fshelper.ParsePath(args) + if err != nil { + return err + } + if len(fsyss) == 0 { + UpCmd.Root.Message("No file found matching the pattern: %s", strings.Join(args, ",")) + return errors.New("No file found matching the pattern: " + strings.Join(args, ",")) + } + + err = UpCmd.Server.Open(rootFlags) + if err != nil { + return err + } + + UpCmd.GooglePhotosFlags.SupportedMedia = UpCmd.Server.Immich.SupportedMedia() + + adapter, err := gp.NewTakeout(ctx, UpCmd.Jnl, UpCmd.GooglePhotosFlags, fsyss...) + if err != nil { + return err + } + + return UpCmd.run(ctx, adapter) + } +} diff --git a/cmd/upload/cmdGooglePhotos.nogo b/cmd/upload/cmdGooglePhotos.nogo deleted file mode 100644 index 0bc1e320..00000000 --- a/cmd/upload/cmdGooglePhotos.nogo +++ /dev/null @@ -1,42 +0,0 @@ -package upload - -import ( - "fmt" - - gp "github.com/simulot/immich-go/adapters/googlePhotos" - "github.com/simulot/immich-go/cmd" - "github.com/spf13/cobra" -) - -func addFromGooglePhotosCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImmichFlags) { - cmdGP := &cobra.Command{ - Use: "from-google-photos [flags] | ", - Short: "Import files from a Google Photos takeout zipped archive or decompressed folder", - Args: cobra.MinimumNArgs(1), - } - cmdGP.Flags().SortFlags = false - uploadCmd.AddCommand(cmdGP) - - cmdUpServerFlags := cmd.AddImmichServerFlagSet(cmdGP) - CommonFlags := addCommonFlags(cmdGP) - gpFlags := gp.AddGoogleTakeoutFlags(cmdGP) - - cmdGP.RunE = func(cmd *cobra.Command, args []string) error { - _ = gpFlags - _ = CommonFlags - - err := rootFlags.Start() - if err != nil { - return err - } - err = cmdUpServerFlags.Start(rootFlags) - if err != nil { - return err - } - if cmdUpServerFlags.DryRun { - fmt.Println("Dry run mode enabled. No files will be uploaded.") - } - fmt.Println("run from-google-photos") - return nil - } -} diff --git a/cmd/upload/e2e_takeout_test.nogo b/cmd/upload/e2e_takeout_test.nogo deleted file mode 100644 index c513cd3a..00000000 --- a/cmd/upload/e2e_takeout_test.nogo +++ /dev/null @@ -1,85 +0,0 @@ -//go:build e2e -// +build e2e - -package upload - -import ( - "context" - "io/fs" - "os" - "path/filepath" - "testing" - - "github.com/simulot/immich-go/cmd" - "github.com/simulot/immich-go/internal/fakefs" -) - -// Simulate a takeout archive with the list of zipped files -func simulate_upload(t *testing.T, zipList string, dateFormat string, forceMissingJSON bool) { - ic := &icCatchUploadsAssets{ - albums: map[string][]string{}, - } - ctx := context.Background() - - // log := slog.New(slog.NewTextHandler(io.Discard, nil)) - serv := cmd.RootImmichFlags{ - Immich: ic, - LogLevel: "INFO", - // Jnl: fileevent.NewRecorder(log, false), - // Log: log, - } - - fsOpener := func() ([]fs.FS, error) { - return fakefs.ScanFileList(zipList, dateFormat) - } - os.Remove(filepath.Dir(zipList) + "/debug.log") - args := []string{"-google-photos", "-no-ui", "-debug-counters", "-log-file=" + filepath.Dir(zipList) + "/debug.log"} - - app, err := newCommand(ctx, &serv, args, fsOpener) - if err != nil { - t.Errorf("can't instantiate the UploadCmd: %s", err) - return - } - app.ForceUploadWhenNoJSON = forceMissingJSON - err = app.run(ctx) - if err != nil { - t.Errorf("can't run the UploadCmd: %s", err) - return - } -} - -func TestPixilTakeOut(t *testing.T) { - initMyEnv(t) - - simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/pixil/list.lst", "01-02-2006 15:04", false) -} - -func TestPhyl404TakeOut(t *testing.T) { - initMyEnv(t) - - simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/Phyl404/list.lst", "2006-01-02 15:04", false) -} - -func TestPhyl404_2TakeOut(t *testing.T) { - initMyEnv(t) - - simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/Phy404#2/list.lst", "2006-01-02 15:04", false) -} - -func TestSteve81TakeOut(t *testing.T) { - initMyEnv(t) - - simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/Steve81/list.list", "2006-01-02 15:04", false) -} - -func TestMuetyTakeOut(t *testing.T) { - initMyEnv(t) - - simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/muety/list.lst", "01-02-2006 15:04", false) -} - -func TestMissingJSONTakeOut(t *testing.T) { - initMyEnv(t) - - simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/MissingJSON/list.lst", "01-02-2006 15:04", true) -} diff --git a/cmd/upload/run.go b/cmd/upload/run.go index e8129426..9b9d8284 100644 --- a/cmd/upload/run.go +++ b/cmd/upload/run.go @@ -99,7 +99,10 @@ func (app *UpCmd) getImmichAssets(ctx context.Context, updateFn progressUpdate) func (app *UpCmd) uploadLoop(ctx context.Context) error { var err error - assetChan := app.browser.Browse(ctx) + assetChan, err := app.browser.Browse(ctx) + if err != nil { + return err + } assetLoop: for { select { diff --git a/cmd/upload/upload.go b/cmd/upload/upload.go index 2a776c6c..4b0804d0 100644 --- a/cmd/upload/upload.go +++ b/cmd/upload/upload.go @@ -7,6 +7,7 @@ import ( "github.com/simulot/immich-go/adapters" "github.com/simulot/immich-go/adapters/folder" + gp "github.com/simulot/immich-go/adapters/googlePhotos" "github.com/simulot/immich-go/internal/fileevent" "github.com/simulot/immich-go/internal/stacking" @@ -23,7 +24,7 @@ type UpCmd struct { Server *cmd.ImmichServerFlags // server flags attached to the import command *CommonFlags // Common flags between import sub-commands UploadFolderFlags *folder.ImportFlags // Folder import flags - // GooglePhotosFlags *gp.ImportFlags // Google Photos import flags + GooglePhotosFlags *gp.ImportFlags // Google Photos import flags AssetIndex *AssetIndex // List of assets present on the server deleteServerList []*immich.Asset // List of server assets to remove @@ -48,7 +49,7 @@ func AddCommand(root *cmd.RootImmichFlags) { } root.Command.AddCommand(upCommand) addFromFolderCommand(upCommand, root) - // addFromGooglePhotosCommand(upCommand, root) + addFromGooglePhotosCommand(upCommand, root) } /* diff --git a/go.mod b/go.mod index b43a5dd0..f05560e1 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,8 @@ require ( github.com/telemachus/humane v0.6.0 github.com/thlib/go-timezone-local v0.0.3 github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31 - golang.org/x/sync v0.1.0 + golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 + golang.org/x/sync v0.8.0 ) require ( diff --git a/go.sum b/go.sum index 91647402..fdf850fc 100644 --- a/go.sum +++ b/go.sum @@ -88,6 +88,8 @@ golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -100,8 +102,9 @@ golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -135,8 +138,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= -golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= +golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/helpers/gen/maps.go b/helpers/gen/maps.go index 249a9810..3bf6e138 100644 --- a/helpers/gen/maps.go +++ b/helpers/gen/maps.go @@ -1,5 +1,11 @@ package gen +import ( + "sort" + + "golang.org/x/exp/constraints" +) + func MapKeys[K comparable, T any](m map[K]T) []K { r := make([]K, len(m)) i := 0 @@ -10,6 +16,19 @@ func MapKeys[K comparable, T any](m map[K]T) []K { return r } +func MapKeysSorted[K constraints.Ordered, T any](m map[K]T) []K { + r := make([]K, len(m)) + i := 0 + for k := range m { + r[i] = k + i++ + } + sort.Slice(r, func(i, j int) bool { + return r[i] < r[j] + }) + return r +} + func MapFilterKeys[K comparable, T any](m map[K]T, f func(i T) bool) []K { r := make([]K, 0, len(m)) for k, v := range m { diff --git a/internal/cliFlags/dateFromNames.go b/internal/cliFlags/dateFromNames.go index 5635e547..cecba3e4 100644 --- a/internal/cliFlags/dateFromNames.go +++ b/internal/cliFlags/dateFromNames.go @@ -12,10 +12,10 @@ type DateMethod string const ( DateMethodNone DateMethod = "NONE" - DateMethodName DateMethod = "NAME" + DateMethodName DateMethod = "FILENAME" DateMethodEXIF DateMethod = "EXIF" - DateMethodNameThenExif DateMethod = "NAME-EXIF" - DateMethodExifThenName DateMethod = "EXIF-NAME" + DateMethodNameThenExif DateMethod = "FILENAME-EXIF" + DateMethodExifThenName DateMethod = "EXIF-FILENAME" ) func (dm *DateMethod) Set(s string) error { @@ -32,7 +32,7 @@ func (dm *DateMethod) Set(s string) error { *dm = DateMethod(s) return nil default: - return fmt.Errorf("invalid DateMethod: %s, expecting NONE|NAME|EXIF|NAME-EXIF|EXIF-NAME", s) + return fmt.Errorf("invalid DateMethod: %s, expecting NONE|FILENAME|EXIF|FILENAME-EXIF|EXIF-FILENAME", s) } } diff --git a/internal/fakefs/ziplist.go b/internal/fakefs/ziplist.go index 0cf892f7..521fa999 100644 --- a/internal/fakefs/ziplist.go +++ b/internal/fakefs/ziplist.go @@ -4,10 +4,13 @@ package fakefs for f in *.zip; do echo "$f: "; unzip -l $f; done >list.lst */ import ( + "archive/zip" "bufio" + "errors" "io" "io/fs" "os" + "path/filepath" "regexp" "sort" "strconv" @@ -19,7 +22,10 @@ import ( // ` 2104348 07-20-2023 00:00 Takeout/Google Photos/2020 - Costa Rica/IMG_3235.MP4` -var reZipList = regexp.MustCompile(`(-rw-r--r-- 0/0\s+)?(\d+)\s+(.{16})\s+(.*)$`) +var ( + reZipList = regexp.MustCompile(`(-rw-r--r-- 0/0\s+)?(\d+)\s+(.{16})\s+(.*)$`) + reFileLine = regexp.MustCompile(`^(\d+)\s+(\d+)\s+files$`) // 2144740441 10826 files +) func readFileLine(l string, dateFormat string) (string, int64, time.Time) { if len(l) < 30 { @@ -41,12 +47,34 @@ func ScanStringList(dateFormat string, s string) ([]fs.FS, error) { } func ScanFileList(name string, dateFormat string) ([]fs.FS, error) { + var r io.ReadCloser f, err := os.Open(name) if err != nil { return nil, err } + if strings.ToLower(filepath.Ext(name)) == ".zip" { + i, err := f.Stat() + if err != nil { + return nil, err + } + z, err := zip.NewReader(f, i.Size()) + if err != nil { + return nil, err + } + if len(z.File) == 0 { + return nil, errors.New("zip file is empty") + } + r, err = z.File[0].Open() + if err != nil { + return nil, err + } + defer r.Close() + } else { + r = f + } + defer f.Close() - return ScanFileListReader(f, dateFormat) + return ScanFileListReader(r, dateFormat) } func ScanFileListReader(f io.Reader, dateFormat string) ([]fs.FS, error) { @@ -84,6 +112,9 @@ func ScanFileListReader(f io.Reader, dateFormat string) ([]fs.FS, error) { } continue } + if reFileLine.MatchString(l) { + continue + } if name, size, modTime := readFileLine(l, dateFormat); name != "" { fsys.addFile(name, size, modTime) } diff --git a/internal/metadata/metadata.go b/internal/metadata/metadata.go index 16cc27b8..0b84afaa 100644 --- a/internal/metadata/metadata.go +++ b/internal/metadata/metadata.go @@ -9,11 +9,17 @@ import ( ) type Metadata struct { - Description string // Long description - DateTaken time.Time // Date of exposure Latitude float64 // GPS - Longitude float64 - Collections []string // Used to list albums that contain the file + Longitude float64 // GPS + FileName string // File name of the photo / video + DateTaken time.Time // Date of exposure + Description string // Long description + Collections []string // Used to list albums that contain the file + Rating byte // 0 to 5 + Trashed bool // Flag to indicate if the image has been trashed + Archived bool // Flag to indicate if the image has been archived + Favorited bool // Flag to indicate if the image has been favorited + FromPartner bool // Flag to indicate if the image is from a partner } func (m Metadata) IsSet() bool { From d68fcd657e539d2c963a958e2d7a89e2b8251bd3 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 22 Sep 2024 16:17:46 +0200 Subject: [PATCH 011/252] fix counters when duplicate files with the same path --- adapters/folder/e2e_readFolder_test.go | 4 +- adapters/folder/readFolder_test.go | 4 +- adapters/googlePhotos/changelog.md | 7 +- .../e2etests/e2e_nonregression_test.go | 44 ++--- .../googlePhotos/e2etests/e2e_takeout_test.go | 154 +++++++++++++-- adapters/googlePhotos/googlephotos.go | 176 +++++++++++------- adapters/googlePhotos/json.go | 3 +- adapters/googlePhotos/logs.go | 64 ++++--- adapters/localfile.go | 2 +- internal/fileevent/fileevents.go | 130 ++++--------- 10 files changed, 354 insertions(+), 234 deletions(-) diff --git a/adapters/folder/e2e_readFolder_test.go b/adapters/folder/e2e_readFolder_test.go index 8ec82b29..4f2889c3 100644 --- a/adapters/folder/e2e_readFolder_test.go +++ b/adapters/folder/e2e_readFolder_test.go @@ -188,14 +188,14 @@ func TestE2ELocalAssets(t *testing.T) { t.Error(err) } - err = b.Prepare(ctx) + assetChan, err := b.Browse(ctx) if err != nil { t.Error(err) } results := map[string]fileLinks{} albums := map[string][]string{} - for a := range b.Browse(ctx) { + for a := range assetChan { links := fileLinks{} ext := path.Ext(a.FileName) if b.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { diff --git a/adapters/folder/readFolder_test.go b/adapters/folder/readFolder_test.go index 90a58091..68e14caf 100644 --- a/adapters/folder/readFolder_test.go +++ b/adapters/folder/readFolder_test.go @@ -397,14 +397,14 @@ func TestLocalAssets(t *testing.T) { t.Error(err) } - err = b.Prepare(ctx) + assetChan, err := b.Browse(ctx) if err != nil { t.Error(err) } results := map[string]fileLinks{} albums := map[string][]string{} - for a := range b.Browse(ctx) { + for a := range assetChan { links := fileLinks{} ext := path.Ext(a.FileName) if b.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { diff --git a/adapters/googlePhotos/changelog.md b/adapters/googlePhotos/changelog.md index 164c5eec..7e975279 100644 --- a/adapters/googlePhotos/changelog.md +++ b/adapters/googlePhotos/changelog.md @@ -1 +1,6 @@ -- improve the duplicate counter +- improved counters + - duplicates counters when linked videos + - discarded partner's files not counted + - correct counters when the same path/file is found in different parts of the the archive +- improved logs + - the zip file that contains the asset file is now logged diff --git a/adapters/googlePhotos/e2etests/e2e_nonregression_test.go b/adapters/googlePhotos/e2etests/e2e_nonregression_test.go index c2a0d9bf..c8985822 100644 --- a/adapters/googlePhotos/e2etests/e2e_nonregression_test.go +++ b/adapters/googlePhotos/e2etests/e2e_nonregression_test.go @@ -35,7 +35,7 @@ func initMyEnv(t *testing.T) { type expectedCounts map[fileevent.Code]int64 -func checkAgainstFileList(t *testing.T, fileList string, flags *gp.ImportFlags, expected expectedCounts, fsyss []fs.FS) { +func simulateAndCheck(t *testing.T, fileList string, flags *gp.ImportFlags, expected expectedCounts, fsyss []fs.FS) { if flags.SupportedMedia == nil { flags.SupportedMedia = metadata.DefaultSupportedMedia } @@ -46,6 +46,19 @@ func checkAgainstFileList(t *testing.T, fileList string, flags *gp.ImportFlags, } counts := jnl.GetCounts() + + shouldUpload := counts[fileevent.DiscoveredImage] + + counts[fileevent.DiscoveredVideo] - + counts[fileevent.AnalysisLocalDuplicate] - + counts[fileevent.DiscoveredDiscarded] + if !flags.KeepJSONLess { + shouldUpload -= counts[fileevent.AnalysisMissingAssociatedMetadata] + } + diff := shouldUpload - counts[fileevent.Uploaded] + if diff != 0 { + t.Errorf("The counter[Uploaded]==%d, expected %d, diff %d", counts[fileevent.Uploaded], shouldUpload, diff) + } + for c := fileevent.Code(0); c < fileevent.MaxCode; c++ { if v, ok := expected[c]; ok { if counts[c] != v { @@ -55,7 +68,7 @@ func checkAgainstFileList(t *testing.T, fileList string, flags *gp.ImportFlags, } } -// Simulate a takeout archive with the list of zipped files +// Simulate takeout archive upload func simulate_upload(testname string, flags *gp.ImportFlags, fsys []fs.FS) (*fileevent.Recorder, error) { ctx := context.Background() @@ -80,24 +93,20 @@ func simulate_upload(testname string, flags *gp.ImportFlags, fsys []fs.FS) (*fil if a.Err != nil { return nil, a.Err } + jnl.Record(ctx, fileevent.Uploaded, fileevent.AsFileAndName(a.FSys, a.FileName)) + for _, album := range a.Albums { + jnl.Record(ctx, fileevent.UploadAddToAlbum, fileevent.AsFileAndName(a.FSys, a.FileName), "album", album.Title) + } } - csvFile, err := os.Create(testname + ".csv") - if err != nil { - return nil, err - } - defer csvFile.Close() - err = jnl.WriteFileCounts(csvFile) - if err != nil { - return nil, err - } + jnl.Report() - dupFile, err := os.Create(testname + ".dup.csv") + trackerFile, err := os.Create(testname + ".tracker.csv") if err != nil { return nil, err } - defer dupFile.Close() - adapter.DebugDuplicates(dupFile) + defer trackerFile.Close() + adapter.DebugFileTracker(trackerFile) linkedFiles, err := os.Create(testname + ".linked.csv") if err != nil { @@ -106,12 +115,5 @@ func simulate_upload(testname string, flags *gp.ImportFlags, fsys []fs.FS) (*fil defer linkedFiles.Close() adapter.DebugLinkedFiles(linkedFiles) - trackedFiles, err := os.Create(testname + ".tracked.csv") - if err != nil { - return nil, err - } - defer trackedFiles.Close() - adapter.DebugFileTracker(trackedFiles) - return jnl, nil } diff --git a/adapters/googlePhotos/e2etests/e2e_takeout_test.go b/adapters/googlePhotos/e2etests/e2e_takeout_test.go index fc38e63f..281878e6 100644 --- a/adapters/googlePhotos/e2etests/e2e_takeout_test.go +++ b/adapters/googlePhotos/e2etests/e2e_takeout_test.go @@ -21,13 +21,19 @@ func TestPixilTakeOut(t *testing.T) { t.Error(err) return } - checkAgainstFileList(t, files, &gp.ImportFlags{}, expectedCounts{ - fileevent.DiscoveredImage: 21340, - fileevent.DiscoveredVideo: 8644, - fileevent.DiscoveredSidecar: 21560, - fileevent.DiscoveredUnsupported: 8, - fileevent.AnalysisAssociatedMetadata: 29984, - fileevent.AnalysisLocalDuplicate: 13151, + simulateAndCheck(t, files, &gp.ImportFlags{ + CreateAlbums: true, + }, expectedCounts{ + fileevent.DiscoveredImage: 21340, + fileevent.DiscoveredVideo: 8644, + fileevent.DiscoveredSidecar: 21560, + fileevent.DiscoveredUnsupported: 8, + fileevent.DiscoveredDiscarded: 0, + fileevent.AnalysisAssociatedMetadata: 29984, + fileevent.AnalysisLocalDuplicate: 13151, + fileevent.UploadAddToAlbum: 13335, + fileevent.Uploaded: 16833, + fileevent.AnalysisMissingAssociatedMetadata: 0, }, fsyss) } @@ -40,44 +46,152 @@ func TestDemoTakeOut(t *testing.T) { t.Error(err) return } - checkAgainstFileList(t, files, &gp.ImportFlags{}, expectedCounts{ - fileevent.DiscoveredImage: 21340, - fileevent.DiscoveredVideo: 8644, - fileevent.DiscoveredSidecar: 21560, - fileevent.DiscoveredUnsupported: 8, - fileevent.AnalysisAssociatedMetadata: 29984, - fileevent.AnalysisLocalDuplicate: 13291, + simulateAndCheck(t, files, &gp.ImportFlags{ + CreateAlbums: true, + KeepJSONLess: true, + KeepPartner: false, + }, expectedCounts{ + fileevent.DiscoveredImage: 338, + fileevent.DiscoveredVideo: 9, + fileevent.DiscoveredSidecar: 345, + fileevent.DiscoveredUnsupported: 1, + fileevent.AnalysisAssociatedMetadata: 346, + fileevent.AnalysisLocalDuplicate: 49, + fileevent.UploadAddToAlbum: 215, + fileevent.Uploaded: 286, + fileevent.AnalysisMissingAssociatedMetadata: 0, }, fsyss) } /* +TestPhyl404TakeOut +In this dataset, a file can be present in different ZIP files, with the same path: + + ex: zip1:/album1/photo1.jpg and zip2:/album1/photo1.jpg +*/ func TestPhyl404TakeOut(t *testing.T) { initMyEnv(t) - simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/Phyl404/list.lst", "2006-01-02 15:04", false) + files := myEnv["IMMICH_TESTFILES"] + "/User Files/Phyl404/list.lst" + fsyss, err := fakefs.ScanFileList(files, "2006-01-02 15:04") + if err != nil { + t.Error(err) + return + } + simulateAndCheck(t, files, &gp.ImportFlags{ + CreateAlbums: true, + KeepPartner: true, + }, expectedCounts{ + fileevent.DiscoveredImage: 113181, + fileevent.DiscoveredVideo: 20542, + fileevent.DiscoveredSidecar: 139660, + fileevent.DiscoveredUnsupported: 5, + fileevent.AnalysisAssociatedMetadata: 111592, + fileevent.AnalysisLocalDuplicate: 20776, + fileevent.UploadAddToAlbum: 1776, + fileevent.Uploaded: 109966, + fileevent.AnalysisMissingAssociatedMetadata: 2978, + }, fsyss) } func TestPhyl404_2TakeOut(t *testing.T) { initMyEnv(t) - simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/Phy404#2/list.lst", "2006-01-02 15:04", false) + files := myEnv["IMMICH_TESTFILES"] + "/User Files/Phyl404#2/list.lst" + fsyss, err := fakefs.ScanFileList(files, "2006-01-02 15:04") + if err != nil { + t.Error(err) + return + } + simulateAndCheck(t, files, &gp.ImportFlags{ + CreateAlbums: true, + }, expectedCounts{ + fileevent.DiscoveredImage: 105918, + fileevent.DiscoveredVideo: 18607, + fileevent.DiscoveredSidecar: 122981, + fileevent.DiscoveredUnsupported: 5, + fileevent.AnalysisAssociatedMetadata: 124521, + fileevent.AnalysisLocalDuplicate: 2896, + fileevent.UploadAddToAlbum: 2902, + fileevent.Uploaded: 121625, + fileevent.AnalysisMissingAssociatedMetadata: 1, + }, fsyss) } func TestSteve81TakeOut(t *testing.T) { initMyEnv(t) - simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/Steve81/list.list", "2006-01-02 15:04", false) + files := myEnv["IMMICH_TESTFILES"] + "/User Files/Steve81/list.list" + fsyss, err := fakefs.ScanFileList(files, "2006-01-02 15:04") + if err != nil { + t.Error(err) + return + } + simulateAndCheck(t, files, &gp.ImportFlags{ + CreateAlbums: true, + KeepPartner: true, + }, expectedCounts{ + fileevent.DiscoveredImage: 44072, + fileevent.DiscoveredVideo: 4160, + fileevent.DiscoveredSidecar: 44987, + fileevent.DiscoveredUnsupported: 57, + fileevent.AnalysisAssociatedMetadata: 44907, + fileevent.AnalysisLocalDuplicate: 23131, + fileevent.UploadAddToAlbum: 22894, + fileevent.Uploaded: 25097, + fileevent.AnalysisMissingAssociatedMetadata: 4, + }, fsyss) } func TestMuetyTakeOut(t *testing.T) { initMyEnv(t) - simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/muety/list.lst", "01-02-2006 15:04", false) + files := myEnv["IMMICH_TESTFILES"] + "/User Files/muety/list.lst.zip" + fsyss, err := fakefs.ScanFileList(files, "01-02-2006 15:04") + if err != nil { + t.Error(err) + return + } + simulateAndCheck(t, files, &gp.ImportFlags{ + CreateAlbums: true, + KeepPartner: true, + }, expectedCounts{ + fileevent.DiscoveredImage: 25716, + fileevent.DiscoveredVideo: 470, + fileevent.DiscoveredSidecar: 20070, + fileevent.DiscoveredDiscarded: 1, + fileevent.DiscoveredUnsupported: 6, + fileevent.AnalysisAssociatedMetadata: 21420, + fileevent.AnalysisLocalDuplicate: 10045, + fileevent.UploadAddToAlbum: 5987, + fileevent.Uploaded: 16127, + fileevent.AnalysisMissingAssociatedMetadata: 13, + }, fsyss) } func TestMissingJSONTakeOut(t *testing.T) { initMyEnv(t) - simulate_upload(t, myEnv["IMMICH_TESTFILES"]+"/User Files/MissingJSON/list.lst", "01-02-2006 15:04", true) + files := myEnv["IMMICH_TESTFILES"] + "/User Files/MissingJSON/list.lst" + fsyss, err := fakefs.ScanFileList(files, "01-02-2006 15:04") + if err != nil { + t.Error(err) + return + } + simulateAndCheck(t, files, &gp.ImportFlags{ + CreateAlbums: true, + KeepPartner: true, + KeepJSONLess: true, + }, expectedCounts{ + fileevent.DiscoveredImage: 4, + fileevent.DiscoveredVideo: 1, + fileevent.DiscoveredSidecar: 2, + fileevent.DiscoveredDiscarded: 0, + fileevent.DiscoveredUnsupported: 0, + fileevent.AnalysisAssociatedMetadata: 1, + fileevent.AnalysisLocalDuplicate: 0, + fileevent.UploadAddToAlbum: 2, + fileevent.Uploaded: 5, + fileevent.AnalysisMissingAssociatedMetadata: 4, + }, fsyss) } -*/ diff --git a/adapters/googlePhotos/googlephotos.go b/adapters/googlePhotos/googlephotos.go index 08bf5edf..f930d4f5 100644 --- a/adapters/googlePhotos/googlephotos.go +++ b/adapters/googlePhotos/googlephotos.go @@ -17,21 +17,27 @@ import ( type Takeout struct { fsyss []fs.FS - catalogs map[string]directoryCatalog // file catalogs by directory in the set of the all takeout parts - albums map[string]adapters.LocalAlbum // track album names by folder - fileTracker map[tackerKey][]string // key is base name + file size, value is list of file paths - duplicates map[tackerKey]int // track local duplicates + catalogs map[string]directoryCatalog // file catalogs by directory in the set of the all takeout parts + albums map[string]adapters.LocalAlbum // track album names by folder + fileTracker map[fileKeyTracker]trackingInfo // key is base name + file size, value is list of file paths debugLinkedFiles []linkedFiles log *fileevent.Recorder flags *ImportFlags // command-line flags } -type tackerKey struct { +type fileKeyTracker struct { baseName string size int64 } -func tackerKeySortFunc(a, b tackerKey) int { +type trackingInfo struct { + paths []string + count int + metadata *metadata.Metadata + status fileevent.Code +} + +func trackerKeySortFunc(a, b fileKeyTracker) int { cmp := strings.Compare(a.baseName, b.baseName) if cmp != 0 { return cmp @@ -59,8 +65,7 @@ func NewTakeout(ctx context.Context, l *fileevent.Recorder, flags *ImportFlags, fsyss: fsyss, catalogs: map[string]directoryCatalog{}, albums: map[string]adapters.LocalAlbum{}, - fileTracker: map[tackerKey][]string{}, - duplicates: map[tackerKey]int{}, + fileTracker: map[fileKeyTracker]trackingInfo{}, log: l, flags: flags, } @@ -110,14 +115,9 @@ func (to *Takeout) passOneFsWalk(ctx context.Context, w fs.FS) error { dirCatalog.unMatchedFiles = map[string]*assetFile{} dirCatalog.matchedFiles = map[string]*assetFile{} } - if _, ok := dirCatalog.unMatchedFiles[base]; ok { - to.log.Record(ctx, fileevent.AnalysisLocalDuplicate, nil, name) - return nil - } - finfo, err := d.Info() if err != nil { - to.log.Record(ctx, fileevent.Error, nil, name, "error", err.Error()) + to.log.Record(ctx, fileevent.Error, fileevent.AsFileAndName(w, name), "error", err.Error()) return err } switch ext { @@ -126,12 +126,11 @@ func (to *Takeout) passOneFsWalk(ctx context.Context, w fs.FS) error { if err == nil { switch { case md.isAsset(): - md.foundInPaths = append(md.foundInPaths, dir) dirCatalog.jsons[base] = md.AsMetadata() // Keep metadata - to.log.Record(ctx, fileevent.DiscoveredSidecar, nil, name, "type", "asset metadata", "title", md.Title) + to.log.Record(ctx, fileevent.DiscoveredSidecar, fileevent.AsFileAndName(w, name), "type", "asset metadata", "title", md.Title) case md.isAlbum(): if !to.flags.KeepUntitled && md.Title == "" { - to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "discard untitled album") + to.log.Record(ctx, fileevent.DiscoveredUnsupported, fileevent.AsFileAndName(w, name), "reason", "discard untitled album") return nil } a := to.albums[dir] @@ -146,43 +145,58 @@ func (to *Takeout) passOneFsWalk(ctx context.Context, w fs.FS) error { a.Longitude = e.Longitude } to.albums[dir] = a - to.log.Record(ctx, fileevent.DiscoveredSidecar, nil, name, "type", "album metadata", "title", md.Title) + to.log.Record(ctx, fileevent.DiscoveredSidecar, fileevent.AsFileAndName(w, name), "type", "album metadata", "title", md.Title) default: - to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unknown JSONfile") + to.log.Record(ctx, fileevent.DiscoveredUnsupported, fileevent.AsFileAndName(w, name), "reason", "unknown JSONfile") return nil } } else { - to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unknown JSONfile") + to.log.Record(ctx, fileevent.DiscoveredUnsupported, fileevent.AsFileAndName(w, name), "reason", "unknown JSONfile") return nil } default: if to.flags.BannedFiles.Match(name) { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "banned file") + to.log.Record(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(w, name), "reason", "banned file") return nil } if !to.flags.InclusionFlags.IncludedExtensions.Include(ext) { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "file extension not selected") + to.log.Record(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(w, name), "reason", "file extension not selected") return nil } if to.flags.InclusionFlags.ExcludedExtensions.Exclude(ext) { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "file extension not allowed") + to.log.Record(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(w, name), "reason", "file extension not allowed") return nil } t := to.flags.SupportedMedia.TypeFromExt(ext) switch t { case metadata.TypeUnknown: - to.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unsupported file type") + to.log.Record(ctx, fileevent.DiscoveredUnsupported, fileevent.AsFileAndName(w, name), "reason", "unsupported file type") return nil case metadata.TypeVideo: - to.log.Record(ctx, fileevent.DiscoveredVideo, nil, name) + to.log.Record(ctx, fileevent.DiscoveredVideo, fileevent.AsFileAndName(w, name)) if strings.Contains(name, "Failed Videos") { - to.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "can't upload failed videos") + to.log.Record(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(w, name), "reason", "can't upload failed videos") return nil } case metadata.TypeImage: - to.log.Record(ctx, fileevent.DiscoveredImage, nil, name) + to.log.Record(ctx, fileevent.DiscoveredImage, fileevent.AsFileAndName(w, name)) + } + + key := fileKeyTracker{ + baseName: base, + size: finfo.Size(), + } + + tracking := to.fileTracker[key] + tracking.paths = append(tracking.paths, dir) + tracking.count++ + to.fileTracker[key] = tracking + + if _, ok := dirCatalog.unMatchedFiles[base]; ok { + to.log.Record(ctx, fileevent.AnalysisLocalDuplicate, fileevent.AsFileAndName(w, name), "reason", "duplicated in the folder") + return nil } dirCatalog.unMatchedFiles[base] = &assetFile{ @@ -190,14 +204,6 @@ func (to *Takeout) passOneFsWalk(ctx context.Context, w fs.FS) error { base: base, length: int(finfo.Size()), } - key := tackerKey{ - baseName: base, - size: finfo.Size(), - } - if _, exists := to.fileTracker[key]; !exists { - to.fileTracker[key] = []string{} - } - to.fileTracker[key] = append(to.fileTracker[key], dir) } to.catalogs[dir] = dirCatalog return nil @@ -267,7 +273,7 @@ func (to *Takeout) solvePuzzle(ctx context.Context) error { i := cat.unMatchedFiles[f] i.md = md cat.matchedFiles[f] = i - to.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, cat.unMatchedFiles[f], filepath.Join(dir, f), "json", json, "size", i.length, "matcher", matcher.name) + to.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, fileevent.AsFileAndName(nil, filepath.Join(dir, f)), "json", json, "size", i.length, "matcher", matcher.name) delete(cat.unMatchedFiles, f) } } @@ -275,13 +281,15 @@ func (to *Takeout) solvePuzzle(ctx context.Context) error { } } to.catalogs[dir] = cat - files := gen.MapKeys(cat.unMatchedFiles) - sort.Strings(files) - for _, f := range files { - to.log.Record(ctx, fileevent.AnalysisMissingAssociatedMetadata, f, filepath.Join(dir, f)) - if to.flags.KeepJSONLess { - cat.matchedFiles[f] = cat.unMatchedFiles[f] - delete(cat.unMatchedFiles, f) + if len(cat.unMatchedFiles) > 0 { + files := gen.MapKeys(cat.unMatchedFiles) + sort.Strings(files) + for _, f := range files { + to.log.Record(ctx, fileevent.AnalysisMissingAssociatedMetadata, fileevent.AsFileAndName(nil, filepath.Join(dir, f)), filepath.Join(dir, f)) + if to.flags.KeepJSONLess { + cat.matchedFiles[f] = cat.unMatchedFiles[f] + delete(cat.unMatchedFiles, f) + } } } } @@ -329,27 +337,24 @@ func (to *Takeout) passTwo(ctx context.Context, dir string, assetChan chan *adap newMatchedFiles := []string{} for _, name := range matchedFiles { file := catalog.matchedFiles[name] - key := tackerKey{baseName: file.base, size: int64(file.length)} - count := to.duplicates[key] + 1 - to.duplicates[key] = count - - if count == 1 { + key := fileKeyTracker{baseName: file.base, size: int64(file.length)} + track := to.fileTracker[key] + if track.status == fileevent.Uploaded { + // track.count++ + // to.fileTracker[key] = track + to.logMessage(ctx, fileevent.AnalysisLocalDuplicate, fileevent.AsFileAndName(file.fsys, path.Join(dir, name)), "local duplicate") continue } - newMatchedFiles = append(newMatchedFiles, name) - to.logMessage(ctx, fileevent.AnalysisLocalDuplicate, path.Join(dir, name), "local duplicate") - } - matchedFiles = newMatchedFiles - // Handle pictures first - for _, f := range matchedFiles { - ext := filepath.Ext(f) + newMatchedFiles = append(newMatchedFiles, name) + ext := filepath.Ext(name) if to.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { - linked := linkedFiles[f] - linked.image = catalog.matchedFiles[f] - linkedFiles[f] = linked + linked := linkedFiles[name] + linked.image = catalog.matchedFiles[name] + linkedFiles[name] = linked } } + matchedFiles = newMatchedFiles // Scan videos and try to detect motion pictures nextVideo: @@ -407,14 +412,18 @@ nextVideo: switch { case linked.image != nil && linked.video != nil: - mainAsset = to.makeAsset(ctx, dir, linked.image, linked.image.md) liveVideo = to.makeAsset(ctx, dir, linked.video, linked.video.md) + mainAsset = to.makeAsset(ctx, dir, linked.image, linked.image.md) case linked.image != nil && linked.video == nil: mainAsset = to.makeAsset(ctx, dir, linked.image, linked.image.md) case linked.video != nil && linked.image == nil: mainAsset = to.makeAsset(ctx, dir, linked.video, linked.video.md) } + if mainAsset == nil { + continue + } + if liveVideo != nil { err := to.pushAsset(ctx, assetChan, liveVideo) if err != nil { @@ -437,39 +446,56 @@ func (to *Takeout) pushAsset(ctx context.Context, assetChan chan *adapters.Local return ctx.Err() default: assetChan <- a + key := fileKeyTracker{ + baseName: path.Base(a.FileName), + size: int64(a.FileSize), + } + track := to.fileTracker[key] + track.status = fileevent.Uploaded + to.fileTracker[key] = track } return nil } // makeAsset makes a localAssetFile based on the google metadata func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md *metadata.Metadata) *adapters.LocalAssetFile { - key := tackerKey{ + key := fileKeyTracker{ baseName: f.base, size: int64(f.length), } + track := to.fileTracker[key] + track.metadata = md + defer func() { + to.fileTracker[key] = track + }() file := path.Join(dir, f.base) i, err := fs.Stat(f.fsys, file) if err != nil { - to.logMessage(ctx, fileevent.Error, file, err.Error()) + to.logMessage(ctx, fileevent.Error, fileevent.AsFileAndName(f.fsys, file), err.Error()) + track.status = fileevent.Error return nil } if md != nil { if !to.flags.KeepArchived && md.Archived { - to.logMessage(ctx, fileevent.DiscoveredDiscarded, file, "discarding archived file") + to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(f.fsys, file), "discarding archived file") + track.status = fileevent.DiscoveredDiscarded return nil } if !to.flags.KeepPartner && md.FromPartner { - to.logMessage(ctx, fileevent.DiscoveredDiscarded, file, "discarding partner file") + to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(f.fsys, file), "discarding partner file") + track.status = fileevent.DiscoveredDiscarded return nil } if !to.flags.KeepTrashed && md.Trashed { - to.logMessage(ctx, fileevent.DiscoveredDiscarded, file, "discarding trashed file") + to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(f.fsys, file), "discarding trashed file") + track.status = fileevent.DiscoveredDiscarded return nil } if !to.flags.InclusionFlags.DateRange.InRange(md.DateTaken) { - to.logMessage(ctx, fileevent.DiscoveredDiscarded, file, "discarding files out of date range") + to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(f.fsys, file), "discarding files out of date range") + track.status = fileevent.DiscoveredDiscarded return nil } } @@ -503,7 +529,8 @@ func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md * keep = keep || album.Title == to.flags.ImportFromAlbum } if !keep { - to.logMessage(ctx, fileevent.DiscoveredDiscarded, file, "discarding files not in the specified album") + to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(f.fsys, file), "discarding files not in the specified album") + track.status = fileevent.DiscoveredDiscarded return nil } } @@ -511,12 +538,12 @@ func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md * if to.flags.CreateAlbums { if to.flags.ImportIntoAlbum != "" { // Force this album - a.Albums = []adapters.LocalAlbum{{Title: to.flags.ImportIntoAlbum}} + a.AddAlbum(adapters.LocalAlbum{Title: to.flags.ImportIntoAlbum}) } else { // check if its duplicates are in some albums, and push them all at once - seenInPaths := to.fileTracker[key] - for _, p := range seenInPaths { + track := to.fileTracker[key] + for _, p := range track.paths { if album, ok := to.albums[p]; ok { title := album.Title if title == "" { @@ -525,7 +552,7 @@ func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md * } title = filepath.Base(album.Path) } - a.Albums = append(a.Albums, adapters.LocalAlbum{ + a.AddAlbum(adapters.LocalAlbum{ Title: title, Path: p, Description: album.Description, @@ -538,7 +565,14 @@ func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md * // Force this album for partners photos if to.flags.PartnerSharedAlbum != "" && md != nil && md.FromPartner { - a.Albums = append(a.Albums, adapters.LocalAlbum{Title: to.flags.PartnerSharedAlbum}) + a.AddAlbum(adapters.LocalAlbum{Title: to.flags.PartnerSharedAlbum}) + } + + if md != nil { + md.Collections = md.Collections[0:0] + for _, album := range a.Albums { + md.Collections = append(md.Collections, album.Title) + } } } diff --git a/adapters/googlePhotos/json.go b/adapters/googlePhotos/json.go index f0f4e226..ecfce964 100644 --- a/adapters/googlePhotos/json.go +++ b/adapters/googlePhotos/json.go @@ -6,6 +6,7 @@ import ( "strconv" "time" + "github.com/simulot/immich-go/internal/fileevent" "github.com/simulot/immich-go/internal/metadata" "github.com/simulot/immich-go/internal/tzone" ) @@ -32,7 +33,7 @@ type GoogleMetaData struct { } `json:"googlePhotosOrigin"` AlbumData *Metablock `json:"albumdata"` // Not in the JSON, for local treatment - foundInPaths []string // keep track of paths where the json has been found + foundInPaths []fileevent.FileAndName // keep track of paths where the json has been found } func (gmd GoogleMetaData) AsMetadata() *metadata.Metadata { diff --git a/adapters/googlePhotos/logs.go b/adapters/googlePhotos/logs.go index 3e9d948e..921fb7e3 100644 --- a/adapters/googlePhotos/logs.go +++ b/adapters/googlePhotos/logs.go @@ -5,7 +5,6 @@ import ( "encoding/csv" "io" "slices" - "sort" "strconv" "strings" @@ -14,25 +13,12 @@ import ( ) // logMessage for the photo and the movie attached to the photo -func (to *Takeout) logMessage(ctx context.Context, code fileevent.Code, file string, reason string) { +func (to *Takeout) logMessage(ctx context.Context, code fileevent.Code, f fileevent.FileAndName, reason string) { t := "reason" if code == fileevent.Error { t = "error" } - to.log.Record(ctx, code, nil, file, t, reason) -} - -func (to *Takeout) DebugDuplicates(w io.Writer) { - csv := csv.NewWriter(w) - _ = csv.Write([]string{"File", "Size", "Count"}) - dups := gen.MapKeys(to.duplicates) - - slices.SortFunc(dups, tackerKeySortFunc) - - for _, k := range dups { - _ = csv.Write([]string{k.baseName, strconv.Itoa(int(k.size)), strconv.Itoa(to.duplicates[k])}) - } - csv.Flush() + to.log.Record(ctx, code, f, t, reason) } func (to *Takeout) DebugLinkedFiles(w io.Writer) { @@ -71,21 +57,49 @@ func (to *Takeout) DebugLinkedFiles(w io.Writer) { func (to *Takeout) DebugFileTracker(w io.Writer) { csv := csv.NewWriter(w) - _ = csv.Write([]string{"File", "Size", "Path"}) + _ = csv.Write([]string{"File", "Size", "Count", "Duplicated", "Uploaded", "Status", "Date", "Albums", "Paths"}) keys := gen.MapKeys(to.fileTracker) - slices.SortFunc(keys, tackerKeySortFunc) + slices.SortFunc(keys, trackerKeySortFunc) + line := make([]string, 9) for _, k := range keys { - line := make([]string, 3) + track := to.fileTracker[k] line[0] = k.baseName - line[1] = strconv.Itoa(int(k.size)) - paths := to.fileTracker[k] - sort.Strings(paths) - for _, p := range paths { - line[2] = p - _ = csv.Write(line) + line[1] = strconv.Itoa(int(k.size)) // Size + line[2] = strconv.Itoa(track.count) // Count + line[3] = strconv.Itoa(track.count - 1) // Duplicated + if track.status == fileevent.Uploaded { + line[4] = "1" // Uploaded + } else { + line[4] = "0" } + line[5] = track.status.String() + if track.metadata != nil { + line[6] = track.metadata.DateTaken.Format("2006-01-02 15:04:05 -0700") // Date + line[7] = strings.Join(track.metadata.Collections, ",") // Albums + } else { + line[6] = "" + line[7] = "" + } + line[8] = strings.Join(track.paths, ",") // Paths + _ = csv.Write(line) + } + csv.Flush() +} + +/* +func (to *Takeout) DebugUploadedFiles(w io.Writer) { + csv := csv.NewWriter(w) + _ = csv.Write([]string{"File", "Size"}) + + slices.SortFunc(to.debugUploadedFile, trackerKeySortFunc) + line := make([]string, 2) + for _, k := range to.debugUploadedFile { + line[0] = k.baseName + line[1] = strconv.Itoa(int(k.size)) + _ = csv.Write(line) } csv.Flush() } +*/ diff --git a/adapters/localfile.go b/adapters/localfile.go index 28c92d85..189786c0 100644 --- a/adapters/localfile.go +++ b/adapters/localfile.go @@ -62,7 +62,7 @@ func (l LocalAssetFile) DebugObject() any { func (l *LocalAssetFile) AddAlbum(album LocalAlbum) { for _, al := range l.Albums { - if al == album { + if al.Title == album.Title { return } } diff --git a/internal/fileevent/fileevents.go b/internal/fileevent/fileevents.go index b6d29fa2..1f3ec176 100644 --- a/internal/fileevent/fileevents.go +++ b/internal/fileevent/fileevents.go @@ -2,18 +2,22 @@ package fileevent +/* + TODO: + - rename the package as journal + - use a filenemame type that keeps the fsys and the name in that fsys + +*/ import ( "context" "fmt" - "io" + "io/fs" "log/slog" - "sort" "strings" "sync" "sync/atomic" - "github.com/simulot/immich-go/adapters" - "github.com/simulot/immich-go/helpers/gen" + "github.com/simulot/immich-go/internal/fshelper" ) /* @@ -23,11 +27,12 @@ import ( type Code int const ( - DiscoveredImage Code = iota // = "Scanned image" - DiscoveredVideo // = "Scanned video" - DiscoveredSidecar // = "Scanned side car file" - DiscoveredDiscarded // = "Discarded" - DiscoveredUnsupported // = "File type not supported" + NotHandled Code = iota + DiscoveredImage // = "Scanned image" + DiscoveredVideo // = "Scanned video" + DiscoveredSidecar // = "Scanned side car file" + DiscoveredDiscarded // = "Discarded" + DiscoveredUnsupported // = "File type not supported" AnalysisAssociatedMetadata AnalysisMissingAssociatedMetadata @@ -51,6 +56,7 @@ const ( ) var _code = map[Code]string{ + NotHandled: "Not handled", DiscoveredImage: "scanned image file", DiscoveredVideo: "scanned video file", DiscoveredSidecar: "scanned sidecar file", @@ -85,42 +91,44 @@ func (e Code) String() string { } type Recorder struct { - lock sync.RWMutex - counts counts - fileEvents map[string]map[Code]int - log *slog.Logger - debug bool + lock sync.RWMutex + counts counts + log *slog.Logger +} + +type FileAndName struct { + fsys fs.FS + name string +} + +func AsFileAndName(fsys fs.FS, name string) FileAndName { + return FileAndName{fsys: fsys, name: name} +} + +func (fn FileAndName) Name() string { + fsys := fn.fsys + if fsys, ok := fsys.(fshelper.NameFS); ok { + return fsys.Name() + ":" + fn.name + } + return fn.name } type counts []int64 func NewRecorder(l *slog.Logger, debug bool) *Recorder { r := &Recorder{ - counts: make([]int64, MaxCode), - fileEvents: map[string]map[Code]int{}, - log: l, - debug: debug, + counts: make([]int64, MaxCode), + log: l, } return r } -func (r *Recorder) Record(ctx context.Context, code Code, object any, file string, args ...any) { +func (r *Recorder) Record(ctx context.Context, code Code, file FileAndName, args ...any) { atomic.AddInt64(&r.counts[code], 1) - if r.debug && file != "" { - r.lock.Lock() - events := r.fileEvents[file] - if events == nil { - events = map[Code]int{} - } - v := events[code] + 1 - events[code] = v - r.fileEvents[file] = events - r.lock.Unlock() - } if r.log != nil { level := slog.LevelInfo - if file != "" { - args = append([]any{"file", file}, args...) + if file.name != "" { + args = append([]any{"file", file.Name()}, args...) } for _, a := range args { if a == "error" { @@ -129,17 +137,6 @@ func (r *Recorder) Record(ctx context.Context, code Code, object any, file strin } r.log.Log(ctx, level, code.String(), args...) } - if a, ok := object.(*adapters.LocalAssetFile); ok && a.LivePhoto != nil { - arg2 := []any{} - for i := 0; i < len(args); i++ { - if args[i] == "file" { - i += 1 - continue - } - arg2 = append(arg2, args[i]) - } - r.Record(ctx, code, a.LivePhoto, a.LivePhoto.FileName, arg2...) - } } func (r *Recorder) SetLogger(l *slog.Logger) { @@ -191,53 +188,6 @@ func (r *Recorder) GetCounts() []int64 { return counts } -func (r *Recorder) WriteFileCounts(w io.Writer) error { - reportCodes := []Code{ - -1, - DiscoveredImage, - DiscoveredVideo, - AnalysisAssociatedMetadata, - DiscoveredDiscarded, - DiscoveredUnsupported, - AnalysisLocalDuplicate, - UploadNotSelected, - UploadUpgraded, - UploadServerBetter, - UploadServerDuplicate, - Uploaded, - } - fmt.Fprint(w, "File,") - for _, c := range reportCodes { - if c >= 0 { - fmt.Fprint(w, strings.Replace(c.String(), " ", "_", -1)+",") - } else { - fmt.Fprint(w, "check,") - } - } - fmt.Fprintln(w) - keys := gen.MapKeys(r.fileEvents) - sort.Strings(keys) - for _, f := range keys { - fmt.Fprint(w, "\"", f, "\",") - e := r.fileEvents[f] - check := 0 - for _, c := range reportCodes { - if c >= 0 { - check += e[c] - } - } - for _, c := range reportCodes { - if c >= 0 { - fmt.Fprint(w, e[c], ",") - } else { - fmt.Fprint(w, check, ",") - } - } - fmt.Fprintln(w) - } - return nil -} - func (r *Recorder) TotalAssets() int64 { return atomic.LoadInt64(&r.counts[DiscoveredImage]) + atomic.LoadInt64(&r.counts[DiscoveredVideo]) } From 914719faab27e19e3dbe11fc3070cf14ac061094 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 22 Sep 2024 16:25:37 +0200 Subject: [PATCH 012/252] adjust readfolder to new journal --- adapters/folder/readFolder.go | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/adapters/folder/readFolder.go b/adapters/folder/readFolder.go index 695ab3f5..a0460bcf 100644 --- a/adapters/folder/readFolder.go +++ b/adapters/folder/readFolder.go @@ -86,7 +86,7 @@ func (la *LocalAssetBrowser) passOneFsWalk(ctx context.Context, fsys fs.FS) erro return ctx.Err() default: if la.flags.BannedFiles.Match(name) { - la.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "banned file") + la.log.Record(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(fsys, name), "reason", "banned file") return nil } @@ -99,7 +99,7 @@ func (la *LocalAssetBrowser) passOneFsWalk(ctx context.Context, fsys fs.FS) erro mediaType := la.flags.SupportedMedia.TypeFromExt(ext) if mediaType == metadata.TypeUnknown { - la.log.Record(ctx, fileevent.DiscoveredUnsupported, nil, name, "reason", "unsupported file type") + la.log.Record(ctx, fileevent.DiscoveredUnsupported, fileevent.AsFileAndName(fsys, name), "reason", "unsupported file type") return nil } @@ -107,24 +107,24 @@ func (la *LocalAssetBrowser) passOneFsWalk(ctx context.Context, fsys fs.FS) erro switch mediaType { case metadata.TypeImage: - la.log.Record(ctx, fileevent.DiscoveredImage, nil, name) + la.log.Record(ctx, fileevent.DiscoveredImage, fileevent.AsFileAndName(fsys, name)) case metadata.TypeVideo: - la.log.Record(ctx, fileevent.DiscoveredVideo, nil, name) + la.log.Record(ctx, fileevent.DiscoveredVideo, fileevent.AsFileAndName(fsys, name)) case metadata.TypeSidecar: - la.log.Record(ctx, fileevent.DiscoveredSidecar, nil, name) + la.log.Record(ctx, fileevent.DiscoveredSidecar, fileevent.AsFileAndName(fsys, name)) if la.flags.IgnoreSideCarFiles { - la.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "sidecar file ignored") + la.log.Record(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(fsys, name), "reason", "sidecar file ignored") return nil } } if !la.flags.InclusionFlags.IncludedExtensions.Include(ext) { - la.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "extension not included") + la.log.Record(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(fsys, name), "reason", "extension not included") return nil } if la.flags.InclusionFlags.ExcludedExtensions.Exclude(ext) { - la.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "extension excluded") + la.log.Record(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(fsys, name), "reason", "extension excluded") return nil } @@ -145,9 +145,9 @@ func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.LocalAs defer la.exiftool.Close() } - errFn := func(name string, err error) { + errFn := func(name fileevent.FileAndName, err error) { if err != nil { - la.log.Record(ctx, fileevent.Error, nil, name, "error", err.Error()) + la.log.Record(ctx, fileevent.Error, name, "error", err.Error()) } } for _, fsys := range la.fsyss { @@ -237,20 +237,20 @@ func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.LocalAs if linked.image != "" { a, err = la.assetFromFile(ctx, fsys, linked.image) if err != nil { - errFn(linked.image, err) + errFn(fileevent.AsFileAndName(fsys, linked.image), err) return } if linked.video != "" { a.LivePhoto, err = la.assetFromFile(ctx, fsys, linked.video) if err != nil { - errFn(linked.video, err) + errFn(fileevent.AsFileAndName(fsys, linked.video), err) return } } } else if linked.video != "" { a, err = la.assetFromFile(ctx, fsys, linked.video) if err != nil { - errFn(linked.video, err) + errFn(fileevent.AsFileAndName(fsys, linked.video), err) return } } @@ -260,7 +260,7 @@ func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.LocalAs FSys: fsys, FileName: linked.sidecar, } - la.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, nil, linked.sidecar, "main", a.FileName) + la.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, fileevent.AsFileAndName(fsys, a.FileName), "sidecar", linked.sidecar) } // manage album @@ -344,7 +344,7 @@ func (la *LocalAssetBrowser) assetFromFile(ctx context.Context, fsys fs.FS, name if la.flags.InclusionFlags.DateRange.IsSet() && !la.flags.InclusionFlags.DateRange.InRange(a.Metadata.DateTaken) { a.Close() - la.log.Record(ctx, fileevent.DiscoveredDiscarded, nil, name, "reason", "asset outside date range") + la.log.Record(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(fsys, name), "reason", "asset outside date range") return nil, nil } return a, nil From 6dafa1c78ec7da7c4895c94837c56e88caff9e1e Mon Sep 17 00:00:00 2001 From: simulot Date: Sat, 28 Sep 2024 11:24:33 +0200 Subject: [PATCH 013/252] Remove redundant return statement in metadata adapter --- adapters/metadata.go | 1 - 1 file changed, 1 deletion(-) diff --git a/adapters/metadata.go b/adapters/metadata.go index 4e051829..98e4a4d9 100644 --- a/adapters/metadata.go +++ b/adapters/metadata.go @@ -39,7 +39,6 @@ func (la *LocalAssetFile) ReadMetadata(method cliflags.DateMethod, options ReadM if !la.Metadata.DateTaken.IsZero() { return nil } - return nil } case cliflags.DateMethodName: t := metadata.TakeTimeFromPath(la.FileName, options.FilenameTimeZone) From 1834167ee4a86fa2af075a5ecf9f32b189db71f5 Mon Sep 17 00:00:00 2001 From: simulot Date: Sat, 28 Sep 2024 11:25:05 +0200 Subject: [PATCH 014/252] Refactor asset browsing to support grouped assets - Updated `Browse` and `passTwo` methods in `LocalAssetBrowser` to return `AssetGroup` instead of `LocalAssetFile`. - Implemented logic to handle different types of asset groups (e.g., motion photos, single images, videos). - Added album management for asset groups. - Introduced `AssetGroup` struct in `group.go` to represent linked assets. - Updated tests to validate and handle `AssetGroup` instead of individual assets. - Removed redundant album management code from `assetFromFile` method. --- adapters/folder/e2e_readFolder_test.go | 35 +++--- adapters/folder/readFolder.go | 159 +++++++++++++++---------- adapters/folder/readFolder_test.go | 37 +++--- adapters/group.go | 57 +++++++++ adapters/localfile.go | 2 +- 5 files changed, 201 insertions(+), 89 deletions(-) create mode 100644 adapters/group.go diff --git a/adapters/folder/e2e_readFolder_test.go b/adapters/folder/e2e_readFolder_test.go index 4f2889c3..c281b150 100644 --- a/adapters/folder/e2e_readFolder_test.go +++ b/adapters/folder/e2e_readFolder_test.go @@ -195,27 +195,34 @@ func TestE2ELocalAssets(t *testing.T) { results := map[string]fileLinks{} albums := map[string][]string{} - for a := range assetChan { + for g := range assetChan { + if err := g.Validate(); err != nil { + t.Error(err) + return + } links := fileLinks{} - ext := path.Ext(a.FileName) - if b.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { - links.image = a.FileName - if a.LivePhoto != nil { - links.video = a.LivePhoto.FileName + fileName := g.Assets[0].FileName + for _, a := range g.Assets { + ext := path.Ext(a.FileName) + if b.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { + links.image = a.FileName + if a.LivePhoto != nil { + links.video = a.LivePhoto.FileName + } + } else { + links.video = a.FileName } - } else { - links.video = a.FileName + a.Close() } - if a.SideCar.FileName != "" { - links.sidecar = a.SideCar.FileName + if g.SideCar.FileName != "" { + links.sidecar = g.SideCar.FileName } - results[a.FileName] = links + results[fileName] = links if len(c.expectedAlbums) > 0 { - for _, album := range a.Albums { - albums[album.Title] = append(albums[album.Title], a.FileName) + for _, album := range g.Albums { + albums[album.Title] = append(albums[album.Title], fileName) } } - a.Close() } if !reflect.DeepEqual(results, c.expectedFiles) { diff --git a/adapters/folder/readFolder.go b/adapters/folder/readFolder.go index a0460bcf..2b896a20 100644 --- a/adapters/folder/readFolder.go +++ b/adapters/folder/readFolder.go @@ -55,7 +55,7 @@ func NewLocalFiles(ctx context.Context, l *fileevent.Recorder, flags *ImportFlag return &la, nil } -func (la *LocalAssetBrowser) Browse(ctx context.Context) (chan *adapters.LocalAssetFile, error) { +func (la *LocalAssetBrowser) Browse(ctx context.Context) (chan *adapters.AssetGroup, error) { for _, fsys := range la.fsyss { err := la.passOneFsWalk(ctx, fsys) if err != nil { @@ -135,8 +135,8 @@ func (la *LocalAssetBrowser) passOneFsWalk(ctx context.Context, fsys fs.FS) erro return err } -func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.LocalAssetFile { - fileChan := make(chan *adapters.LocalAssetFile) +func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.AssetGroup { + fileChan := make(chan *adapters.AssetGroup) // Browse all given FS to collect the list of files go func(ctx context.Context) { defer close(fileChan) @@ -216,7 +216,7 @@ func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.LocalAs } if strings.TrimSuffix(f, path.Ext(f)) == file { if image, ok := links[f]; ok { - // base.MP4 -> base.ext + // base.ext -> base image.video = file links[f] = image continue next @@ -232,47 +232,123 @@ func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.LocalAs sort.Strings(files) for _, file := range files { var a *adapters.LocalAssetFile + var g *adapters.AssetGroup linked := links[file] - if linked.image != "" { + switch { + case linked.image != "" && linked.video != "": a, err = la.assetFromFile(ctx, fsys, linked.image) if err != nil { errFn(fileevent.AsFileAndName(fsys, linked.image), err) return } - if linked.video != "" { - a.LivePhoto, err = la.assetFromFile(ctx, fsys, linked.video) - if err != nil { - errFn(fileevent.AsFileAndName(fsys, linked.video), err) - return + if a == nil { + continue + } + i, err := la.assetFromFile(ctx, fsys, linked.video) + if i != nil { + g = &adapters.AssetGroup{ + Kind: adapters.GroupKindMotionPhoto, + Assets: []*adapters.LocalAssetFile{a, i}, + CoverIndex: 0, + } + } else { + errFn(fileevent.AsFileAndName(fsys, linked.video), err) + g = &adapters.AssetGroup{ + Kind: adapters.GroupKindNone, + Assets: []*adapters.LocalAssetFile{a}, } } - } else if linked.video != "" { - a, err = la.assetFromFile(ctx, fsys, linked.video) + case linked.image != "": + a, err = la.assetFromFile(ctx, fsys, linked.image) if err != nil { - errFn(fileevent.AsFileAndName(fsys, linked.video), err) + errFn(fileevent.AsFileAndName(fsys, linked.image), err) return } + if a == nil { + continue + } + g = &adapters.AssetGroup{ + Kind: adapters.GroupKindNone, + Assets: []*adapters.LocalAssetFile{a}, + CoverIndex: 0, + } + case linked.video != "": + { + a, err = la.assetFromFile(ctx, fsys, linked.video) + if err != nil { + errFn(fileevent.AsFileAndName(fsys, linked.video), err) + return + } + if a == nil { + continue + } + + g = &adapters.AssetGroup{ + Kind: adapters.GroupKindNone, + Assets: []*adapters.LocalAssetFile{a}, + CoverIndex: 0, + } + + } } - if a != nil && linked.sidecar != "" { - a.SideCar = metadata.SideCarFile{ + if g == nil { + continue + } + + if linked.sidecar != "" { + g.SideCar = metadata.SideCarFile{ FSys: fsys, FileName: linked.sidecar, } la.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, fileevent.AsFileAndName(fsys, a.FileName), "sidecar", linked.sidecar) } - // manage album - if a != nil { - select { - case <-ctx.Done(): - return - default: - - fileChan <- a + // manage album options + if la.flags.ImportIntoAlbum != "" { + g.Albums = append(g.Albums, &adapters.LocalAlbum{ + Path: a.FileName, + Title: la.flags.ImportIntoAlbum, + }) + } else if la.flags.UsePathAsAlbumName != FolderModeNone { + switch la.flags.UsePathAsAlbumName { + case FolderModeFolder: + title := filepath.Base(filepath.Dir(a.FileName)) + if title == "." { + if fsys, ok := fsys.(fshelper.NameFS); ok { + title = fsys.Name() + } + } + if title != "" { + g.Albums = append(g.Albums, &adapters.LocalAlbum{ + Path: a.FileName, + Title: title, + }) + } + case FolderModePath: + parts := []string{} + if fsys, ok := fsys.(fshelper.NameFS); ok { + parts = append(parts, fsys.Name()) + } + path := filepath.Dir(a.FileName) + if path != "." { + parts = append(parts, strings.Split(path, "/")...) // TODO: Check on windows + } + Title := strings.Join(parts, la.flags.AlbumNamePathSeparator) + g.Albums = append(g.Albums, &adapters.LocalAlbum{ + Path: filepath.Dir(a.FileName), + Title: Title, + }) } } + + select { + case <-ctx.Done(): + return + default: + fileChan <- g + } } } } @@ -288,43 +364,6 @@ func (la *LocalAssetBrowser) assetFromFile(ctx context.Context, fsys fs.FS, name FSys: fsys, } - if la.flags.ImportIntoAlbum != "" { - a.Albums = append(a.Albums, adapters.LocalAlbum{ - Path: a.FileName, - Title: la.flags.ImportIntoAlbum, - }) - } else if la.flags.UsePathAsAlbumName != FolderModeNone { - switch la.flags.UsePathAsAlbumName { - case FolderModeFolder: - title := filepath.Base(filepath.Dir(a.FileName)) - if title == "." { - if fsys, ok := fsys.(fshelper.NameFS); ok { - title = fsys.Name() - } - } - if title != "" { - a.Albums = append(a.Albums, adapters.LocalAlbum{ - Path: a.FileName, - Title: title, - }) - } - case FolderModePath: - parts := []string{} - if fsys, ok := fsys.(fshelper.NameFS); ok { - parts = append(parts, fsys.Name()) - } - path := filepath.Dir(a.FileName) - if path != "." { - parts = append(parts, strings.Split(path, "/")...) // TODO: Check on windows - } - Title := strings.Join(parts, la.flags.AlbumNamePathSeparator) - a.Albums = append(a.Albums, adapters.LocalAlbum{ - Path: filepath.Dir(a.FileName), - Title: Title, - }) - } - } - err := a.ReadMetadata(la.flags.DateHandlingFlags.Method, adapters.ReadMetadataOptions{ ExifTool: la.exiftool, ExiftoolTimezone: la.flags.ExifToolFlags.Timezone.Location(), diff --git a/adapters/folder/readFolder_test.go b/adapters/folder/readFolder_test.go index 68e14caf..7824afd2 100644 --- a/adapters/folder/readFolder_test.go +++ b/adapters/folder/readFolder_test.go @@ -397,31 +397,40 @@ func TestLocalAssets(t *testing.T) { t.Error(err) } - assetChan, err := b.Browse(ctx) + groupChan, err := b.Browse(ctx) if err != nil { t.Error(err) } results := map[string]fileLinks{} albums := map[string][]string{} - for a := range assetChan { + for g := range groupChan { + if err = g.Validate(); err != nil { + t.Error(err) + return + } + fileName := g.Assets[0].FileName links := fileLinks{} - ext := path.Ext(a.FileName) - if b.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { - links.image = a.FileName - if a.LivePhoto != nil { - links.video = a.LivePhoto.FileName + for _, a := range g.Assets { + ext := path.Ext(a.FileName) + if b.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { + links.image = a.FileName + if a.LivePhoto != nil { + links.video = a.LivePhoto.FileName + } + } else { + links.video = a.FileName } - } else { - links.video = a.FileName + a.Close() } - if a.SideCar.FileName != "" { - links.sidecar = a.SideCar.FileName + if g.SideCar.FileName != "" { + links.sidecar = g.SideCar.FileName } - results[a.FileName] = links + results[fileName] = links + if len(c.expectedAlbums) > 0 { - for _, album := range a.Albums { - albums[album.Title] = append(albums[album.Title], a.FileName) + for _, album := range g.Albums { + albums[album.Title] = append(albums[album.Title], fileName) } } } diff --git a/adapters/group.go b/adapters/group.go new file mode 100644 index 00000000..b814d8ff --- /dev/null +++ b/adapters/group.go @@ -0,0 +1,57 @@ +package adapters + +import ( + "errors" + + "github.com/simulot/immich-go/internal/metadata" +) + +// A group of assets link assets that are linked together. This +// allows a specific treatment of the group. +// +// Groups can be: +// - A photo and a movie as for motion picture or live photo +// - A couple of RAW and JPG image +// - A burst of photos +// - A photo and its edited version +// +// A group has an asset that represents the group: +// - for Raw/JPG --> the JPG +// - for Bursts: the photo identified as the cover +// - not relevant for live photo +// +// All group's assets can be added to 0 or more albums + +type GroupKind int + +const ( + GroupKindNone GroupKind = iota + GroupKindMotionPhoto + GroupKindBurst + GroupKindRawJpg + GroupKindEdited +) + +type AssetGroup struct { + Kind GroupKind + CoverIndex int // index of the cover assert in the Assets slice + Assets []*LocalAssetFile + Albums []*LocalAlbum + SideCar metadata.SideCarFile +} + +func (g AssetGroup) Validate() error { + if len(g.Assets) == 0 { + return errors.New("empty group") + } + // test all asset not nil + for _, a := range g.Assets { + if a == nil { + return errors.New("nil asset in group") + } + } + if 0 > g.CoverIndex || g.CoverIndex > len(g.Assets) { + return errors.New("cover index out of range") + } + return nil +} diff --git a/adapters/localfile.go b/adapters/localfile.go index 189786c0..0a991f01 100644 --- a/adapters/localfile.go +++ b/adapters/localfile.go @@ -27,7 +27,7 @@ import ( */ type LocalAssetFile struct { - // Common fields + // Common fields FileName string // The asset's path in the fsys Title string // Google Photos may a have title longer than the filename Albums []LocalAlbum // The asset's album, if any From edb09f878293bbfec885897f0351f25e085c5c60 Mon Sep 17 00:00:00 2001 From: simulot Date: Sat, 28 Sep 2024 15:32:21 +0200 Subject: [PATCH 015/252] Refactor `LocalAssetFile` struct: remove metadata from asset --- adapters/localfile.go | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/adapters/localfile.go b/adapters/localfile.go index 0a991f01..4d9e1f38 100644 --- a/adapters/localfile.go +++ b/adapters/localfile.go @@ -9,7 +9,6 @@ import ( "time" "github.com/simulot/immich-go/internal/fshelper" - "github.com/simulot/immich-go/internal/metadata" ) /* @@ -27,13 +26,17 @@ import ( */ type LocalAssetFile struct { - // Common fields - FileName string // The asset's path in the fsys - Title string // Google Photos may a have title longer than the filename - Albums []LocalAlbum // The asset's album, if any - Err error // keep errors encountered - SideCar metadata.SideCarFile // sidecar file if found - Metadata metadata.Metadata // Metadata fields + // Common fields + FileName string // The asset's path in the fsys + Title string // Google Photos may a have title longer than the filename + FSys fs.FS // Asset's file system + FileSize int // File size in bytes + Err error // keep errors encountered + + // removed from assets to group of assets + // Albums []LocalAlbum // The asset's album, if any + // SideCar metadata.SideCarFile // sidecar file if found + // Metadata metadata.Metadata // Metadata fields // // Google Photos flags // Trashed bool // The asset is trashed @@ -42,11 +45,8 @@ type LocalAssetFile struct { // Favorite bool // Live Photos - LivePhoto *LocalAssetFile // Local asset of the movie part - LivePhotoID string // ID of the movie part, just uploaded - - FSys fs.FS // Asset's file system - FileSize int // File size in bytes + // LivePhoto *LocalAssetFile // Local asset of the movie part + // LivePhotoID string // ID of the movie part, just uploaded // buffer management sourceFile fs.File // the opened source file From 4610b05f583cc5244abd130f3f04f18698254429 Mon Sep 17 00:00:00 2001 From: simulot Date: Sat, 28 Sep 2024 16:04:41 +0200 Subject: [PATCH 016/252] Refactor metadata reading functions to return metadata and error - Updated `ReadMetadata`, `metadataFromExiftool`, and `metadataFromDirectRead` functions to return `*metadata.Metadata` and `error` instead of setting `la.Metadata` directly. - Adjusted logic to handle the returned metadata and error appropriately. --- adapters/metadata.go | 45 +++++++++++++++++++------------------------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/adapters/metadata.go b/adapters/metadata.go index 98e4a4d9..2ebf3326 100644 --- a/adapters/metadata.go +++ b/adapters/metadata.go @@ -16,75 +16,68 @@ type ReadMetadataOptions struct { FilenameTimeZone *time.Location } -func (la *LocalAssetFile) ReadMetadata(method cliflags.DateMethod, options ReadMetadataOptions) error { +func (la *LocalAssetFile) ReadMetadata(method cliflags.DateMethod, options ReadMetadataOptions) (*metadata.Metadata, error) { ms := strings.Split(string(method), "-") for _, m := range ms { switch cliflags.DateMethod(m) { case cliflags.DateMethodNone: - return nil + return nil, nil case cliflags.DateMethodEXIF: if options.ExifTool != nil { - err := la.metadataFromExiftool(options) + md, err := la.metadataFromExiftool(options) if err != nil { continue } - if !la.Metadata.DateTaken.IsZero() { - return nil + if !md.DateTaken.IsZero() { + return md, nil } } else { - err := la.metadataFromDirectRead(options.ExiftoolTimezone) + md, err := la.metadataFromDirectRead(options.ExiftoolTimezone) if err != nil { continue } - if !la.Metadata.DateTaken.IsZero() { - return nil + if !md.DateTaken.IsZero() { + return md, nil } } case cliflags.DateMethodName: t := metadata.TakeTimeFromPath(la.FileName, options.FilenameTimeZone) if !t.IsZero() { - la.Metadata.DateTaken = t - return nil + return &metadata.Metadata{ + DateTaken: t, + }, nil } } } - return nil + return nil, nil } // metadataFromExiftool call exiftool -func (la *LocalAssetFile) metadataFromExiftool(options ReadMetadataOptions) error { +func (la *LocalAssetFile) metadataFromExiftool(options ReadMetadataOptions) (*metadata.Metadata, error) { // Get a handler on a temporary file r, err := la.PartialSourceReader() if err != nil { - return err + return nil, err } // be sure the file is completely extracted in the temp file _, err = io.Copy(io.Discard, r) if err != nil { - return err + return nil, err } md, err := options.ExifTool.ReadMetaData(la.tempFile.Name()) - if err != nil { - return err - } - la.Metadata = *md - return nil + return md, err } -func (la *LocalAssetFile) metadataFromDirectRead(localTZ *time.Location) error { +func (la *LocalAssetFile) metadataFromDirectRead(localTZ *time.Location) (*metadata.Metadata, error) { // Get a handler on a temporary file r, err := la.PartialSourceReader() if err != nil { - return err + return nil, err } ext := filepath.Ext(la.FileName) md, err := metadata.GetFromReader(r, ext, localTZ) - if err != nil { - return err - } - la.Metadata = *md - return nil + return md, err } From 31941bb55173cbeba6e6649ad2de1d78c1985fab Mon Sep 17 00:00:00 2001 From: simulot Date: Sat, 28 Sep 2024 16:17:28 +0200 Subject: [PATCH 017/252] Add Metadata field to AssetGroup struct in adapters/group.go --- adapters/group.go | 1 + 1 file changed, 1 insertion(+) diff --git a/adapters/group.go b/adapters/group.go index b814d8ff..b01ba984 100644 --- a/adapters/group.go +++ b/adapters/group.go @@ -38,6 +38,7 @@ type AssetGroup struct { Assets []*LocalAssetFile Albums []*LocalAlbum SideCar metadata.SideCarFile + Metadata *metadata.Metadata } func (g AssetGroup) Validate() error { From 3df29e225fd4daa864c1e63bc9e9083c39382c65 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 29 Sep 2024 15:35:53 +0200 Subject: [PATCH 018/252] Refactor AssetGroup struct in adapters/group.go to support grouped assets --- adapters/group.go | 22 ++++++++++++++++++++-- adapters/localfile.go | 17 ++++++----------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/adapters/group.go b/adapters/group.go index b01ba984..d3700927 100644 --- a/adapters/group.go +++ b/adapters/group.go @@ -36,12 +36,30 @@ type AssetGroup struct { Kind GroupKind CoverIndex int // index of the cover assert in the Assets slice Assets []*LocalAssetFile - Albums []*LocalAlbum + Albums []LocalAlbum SideCar metadata.SideCarFile Metadata *metadata.Metadata } -func (g AssetGroup) Validate() error { +// AddAlbum assign the group to an album +func (g *AssetGroup) AddAlbum(album LocalAlbum) { + for _, al := range g.Albums { + if al.Title == album.Title { + return + } + } + g.Albums = append(g.Albums, album) +} + +// AddAsset add an asset to the group +func (g *AssetGroup) AddAsset(a *LocalAssetFile) { + g.Assets = append(g.Assets, a) +} + +func (g *AssetGroup) Validate() error { + if g == nil { + return errors.New("nil group") + } if len(g.Assets) == 0 { return errors.New("empty group") } diff --git a/adapters/localfile.go b/adapters/localfile.go index 4d9e1f38..68d34274 100644 --- a/adapters/localfile.go +++ b/adapters/localfile.go @@ -31,7 +31,7 @@ type LocalAssetFile struct { Title string // Google Photos may a have title longer than the filename FSys fs.FS // Asset's file system FileSize int // File size in bytes - Err error // keep errors encountered + // Err error // keep errors encountered // removed from assets to group of assets // Albums []LocalAlbum // The asset's album, if any @@ -60,15 +60,6 @@ func (l LocalAssetFile) DebugObject() any { return l } -func (l *LocalAssetFile) AddAlbum(album LocalAlbum) { - for _, al := range l.Albums { - if al.Title == album.Title { - return - } - } - l.Albums = append(l.Albums, album) -} - // Remove the temporary file func (l *LocalAssetFile) Remove() error { if fsys, ok := l.FSys.(fshelper.Remover); ok { @@ -173,7 +164,11 @@ func (l *LocalAssetFile) Mode() fs.FileMode { return 0 } // ModTime implements the fs.FILE interface func (l *LocalAssetFile) ModTime() time.Time { - return l.Metadata.DateTaken + s, err := fs.Stat(l.FSys, l.FileName) + if err != nil { + return time.Time{} + } + return s.ModTime() } // Sys implements the fs.FILE interface From 7b12bb763caab890584b2919b3adca71fc933c27 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 29 Sep 2024 15:36:10 +0200 Subject: [PATCH 019/252] Refactor asset browsing to support grouped assets --- adapters/folder/readFolder.go | 6 +- .../e2etests/e2e_nonregression_test.go | 17 +- .../googlePhotos/e2etests/e2e_takeout_test.go | 10 +- adapters/googlePhotos/googlephotos.go | 188 ++++++++++-------- adapters/googlePhotos/testgp_samples_test.go | 2 +- adapters/googlePhotos/testgp_test.go | 121 ++++++----- 6 files changed, 194 insertions(+), 150 deletions(-) diff --git a/adapters/folder/readFolder.go b/adapters/folder/readFolder.go index 2b896a20..83e7569a 100644 --- a/adapters/folder/readFolder.go +++ b/adapters/folder/readFolder.go @@ -307,7 +307,7 @@ func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.AssetGr // manage album options if la.flags.ImportIntoAlbum != "" { - g.Albums = append(g.Albums, &adapters.LocalAlbum{ + g.Albums = append(g.Albums, adapters.LocalAlbum{ Path: a.FileName, Title: la.flags.ImportIntoAlbum, }) @@ -321,7 +321,7 @@ func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.AssetGr } } if title != "" { - g.Albums = append(g.Albums, &adapters.LocalAlbum{ + g.Albums = append(g.Albums, adapters.LocalAlbum{ Path: a.FileName, Title: title, }) @@ -336,7 +336,7 @@ func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.AssetGr parts = append(parts, strings.Split(path, "/")...) // TODO: Check on windows } Title := strings.Join(parts, la.flags.AlbumNamePathSeparator) - g.Albums = append(g.Albums, &adapters.LocalAlbum{ + g.Albums = append(g.Albums, adapters.LocalAlbum{ Path: filepath.Dir(a.FileName), Title: Title, }) diff --git a/adapters/googlePhotos/e2etests/e2e_nonregression_test.go b/adapters/googlePhotos/e2etests/e2e_nonregression_test.go index c8985822..96a0bb08 100644 --- a/adapters/googlePhotos/e2etests/e2e_nonregression_test.go +++ b/adapters/googlePhotos/e2etests/e2e_nonregression_test.go @@ -85,17 +85,18 @@ func simulate_upload(testname string, flags *gp.ImportFlags, fsys []fs.FS) (*fil return nil, err } - assets, err := adapter.Browse(ctx) + assetsGroups, err := adapter.Browse(ctx) if err != nil { return nil, err } - for a := range assets { - if a.Err != nil { - return nil, a.Err - } - jnl.Record(ctx, fileevent.Uploaded, fileevent.AsFileAndName(a.FSys, a.FileName)) - for _, album := range a.Albums { - jnl.Record(ctx, fileevent.UploadAddToAlbum, fileevent.AsFileAndName(a.FSys, a.FileName), "album", album.Title) + for g := range assetsGroups { + for i, a := range g.Assets { + jnl.Record(ctx, fileevent.Uploaded, fileevent.AsFileAndName(a.FSys, a.FileName)) + if i >= 0 { + for _, album := range g.Albums { + jnl.Record(ctx, fileevent.UploadAddToAlbum, fileevent.AsFileAndName(a.FSys, a.FileName), "album", album.Title) + } + } } } diff --git a/adapters/googlePhotos/e2etests/e2e_takeout_test.go b/adapters/googlePhotos/e2etests/e2e_takeout_test.go index 281878e6..10a29935 100644 --- a/adapters/googlePhotos/e2etests/e2e_takeout_test.go +++ b/adapters/googlePhotos/e2etests/e2e_takeout_test.go @@ -31,7 +31,7 @@ func TestPixilTakeOut(t *testing.T) { fileevent.DiscoveredDiscarded: 0, fileevent.AnalysisAssociatedMetadata: 29984, fileevent.AnalysisLocalDuplicate: 13151, - fileevent.UploadAddToAlbum: 13335, + fileevent.UploadAddToAlbum: 13391, fileevent.Uploaded: 16833, fileevent.AnalysisMissingAssociatedMetadata: 0, }, fsyss) @@ -88,7 +88,7 @@ func TestPhyl404TakeOut(t *testing.T) { fileevent.DiscoveredUnsupported: 5, fileevent.AnalysisAssociatedMetadata: 111592, fileevent.AnalysisLocalDuplicate: 20776, - fileevent.UploadAddToAlbum: 1776, + fileevent.UploadAddToAlbum: 1782, fileevent.Uploaded: 109966, fileevent.AnalysisMissingAssociatedMetadata: 2978, }, fsyss) @@ -112,7 +112,7 @@ func TestPhyl404_2TakeOut(t *testing.T) { fileevent.DiscoveredUnsupported: 5, fileevent.AnalysisAssociatedMetadata: 124521, fileevent.AnalysisLocalDuplicate: 2896, - fileevent.UploadAddToAlbum: 2902, + fileevent.UploadAddToAlbum: 2933, fileevent.Uploaded: 121625, fileevent.AnalysisMissingAssociatedMetadata: 1, }, fsyss) @@ -137,7 +137,7 @@ func TestSteve81TakeOut(t *testing.T) { fileevent.DiscoveredUnsupported: 57, fileevent.AnalysisAssociatedMetadata: 44907, fileevent.AnalysisLocalDuplicate: 23131, - fileevent.UploadAddToAlbum: 22894, + fileevent.UploadAddToAlbum: 23026, fileevent.Uploaded: 25097, fileevent.AnalysisMissingAssociatedMetadata: 4, }, fsyss) @@ -163,7 +163,7 @@ func TestMuetyTakeOut(t *testing.T) { fileevent.DiscoveredUnsupported: 6, fileevent.AnalysisAssociatedMetadata: 21420, fileevent.AnalysisLocalDuplicate: 10045, - fileevent.UploadAddToAlbum: 5987, + fileevent.UploadAddToAlbum: 5990, fileevent.Uploaded: 16127, fileevent.AnalysisMissingAssociatedMetadata: 13, }, fsyss) diff --git a/adapters/googlePhotos/googlephotos.go b/adapters/googlePhotos/googlephotos.go index f930d4f5..45969454 100644 --- a/adapters/googlePhotos/googlephotos.go +++ b/adapters/googlePhotos/googlephotos.go @@ -23,6 +23,7 @@ type Takeout struct { debugLinkedFiles []linkedFiles log *fileevent.Recorder flags *ImportFlags // command-line flags + exiftool *metadata.ExifTool } type fileKeyTracker struct { @@ -69,6 +70,13 @@ func NewTakeout(ctx context.Context, l *fileevent.Recorder, flags *ImportFlags, log: l, flags: flags, } + if flags.ExifToolFlags.UseExifTool { + et, err := metadata.NewExifTool(&flags.ExifToolFlags) + if err != nil { + return nil, err + } + to.exiftool = et + } return &to, nil } @@ -76,7 +84,7 @@ func NewTakeout(ctx context.Context, l *fileevent.Recorder, flags *ImportFlags, // Prepare scans all files in all walker to build the file catalog of the archive // metadata files content is read and kept -func (to *Takeout) Browse(ctx context.Context) (chan *adapters.LocalAssetFile, error) { +func (to *Takeout) Browse(ctx context.Context) (chan *adapters.AssetGroup, error) { for _, w := range to.fsyss { err := to.passOneFsWalk(ctx, w) if err != nil { @@ -301,8 +309,8 @@ func (to *Takeout) solvePuzzle(ctx context.Context) error { // Walkers are rewind, and scanned again // each file net yet sent to immich is sent with associated metadata -func (to *Takeout) nextPass(ctx context.Context) chan *adapters.LocalAssetFile { - assetChan := make(chan *adapters.LocalAssetFile) +func (to *Takeout) nextPass(ctx context.Context) chan *adapters.AssetGroup { + assetChan := make(chan *adapters.AssetGroup) go func() { defer close(assetChan) @@ -312,7 +320,8 @@ func (to *Takeout) nextPass(ctx context.Context) chan *adapters.LocalAssetFile { if len(to.catalogs[dir].matchedFiles) > 0 { err := to.passTwo(ctx, dir, assetChan) if err != nil { - assetChan <- &adapters.LocalAssetFile{Err: err} + // TODO: check how errors are managed in the passTwo function + return } } } @@ -327,7 +336,7 @@ type linkedFiles struct { image *assetFile } -func (to *Takeout) passTwo(ctx context.Context, dir string, assetChan chan *adapters.LocalAssetFile) error { +func (to *Takeout) passTwo(ctx context.Context, dir string, assetChan chan *adapters.AssetGroup) error { catalog := to.catalogs[dir] linkedFiles := map[string]linkedFiles{} @@ -404,6 +413,7 @@ nextVideo: mainAsset *adapters.LocalAssetFile liveVideo *adapters.LocalAssetFile ) + g := &adapters.AssetGroup{} linked := linkedFiles[base] linked.base = base @@ -412,53 +422,49 @@ nextVideo: switch { case linked.image != nil && linked.video != nil: - liveVideo = to.makeAsset(ctx, dir, linked.video, linked.video.md) - mainAsset = to.makeAsset(ctx, dir, linked.image, linked.image.md) + mainAsset = to.makeAsset(ctx, g, dir, linked.image, linked.image.md) + liveVideo = to.makeAsset(ctx, g, dir, linked.video, linked.video.md) + if mainAsset != nil && liveVideo != nil { + g.Kind = adapters.GroupKindMotionPhoto + } else if mainAsset != nil && liveVideo == nil { + g.Kind = adapters.GroupKindNone + } else if liveVideo != nil { + g.Kind = adapters.GroupKindNone + } case linked.image != nil && linked.video == nil: - mainAsset = to.makeAsset(ctx, dir, linked.image, linked.image.md) + mainAsset = to.makeAsset(ctx, g, dir, linked.image, linked.image.md) case linked.video != nil && linked.image == nil: - mainAsset = to.makeAsset(ctx, dir, linked.video, linked.video.md) + mainAsset = to.makeAsset(ctx, g, dir, linked.video, linked.video.md) } - if mainAsset == nil { + if g.Validate() != nil { continue } - if liveVideo != nil { - err := to.pushAsset(ctx, assetChan, liveVideo) - if err != nil { - return err + // debugging trackers + for _, a := range g.Assets { + key := fileKeyTracker{ + baseName: path.Base(a.FileName), + size: int64(a.FileSize), } - mainAsset.LivePhoto = liveVideo - } - err := to.pushAsset(ctx, assetChan, mainAsset) - if err != nil { - return err + track := to.fileTracker[key] + track.status = fileevent.Uploaded + to.fileTracker[key] = track } - } - return nil -} -// pushAsset sends the asset to the next layer -func (to *Takeout) pushAsset(ctx context.Context, assetChan chan *adapters.LocalAssetFile, a *adapters.LocalAssetFile) error { - select { - case <-ctx.Done(): - return ctx.Err() - default: - assetChan <- a - key := fileKeyTracker{ - baseName: path.Base(a.FileName), - size: int64(a.FileSize), + select { + case <-ctx.Done(): + return ctx.Err() + default: + assetChan <- g + } - track := to.fileTracker[key] - track.status = fileevent.Uploaded - to.fileTracker[key] = track } return nil } // makeAsset makes a localAssetFile based on the google metadata -func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md *metadata.Metadata) *adapters.LocalAssetFile { +func (to *Takeout) makeAsset(ctx context.Context, g *adapters.AssetGroup, dir string, f *assetFile, md *metadata.Metadata) *adapters.LocalAssetFile { key := fileKeyTracker{ baseName: f.base, size: int64(f.length), @@ -470,39 +476,23 @@ func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md * }() file := path.Join(dir, f.base) - i, err := fs.Stat(f.fsys, file) - if err != nil { - to.logMessage(ctx, fileevent.Error, fileevent.AsFileAndName(f.fsys, file), err.Error()) - track.status = fileevent.Error - return nil + a := &adapters.LocalAssetFile{ + FileName: file, + FileSize: f.length, + Title: f.base, + FSys: f.fsys, } - if md != nil { - if !to.flags.KeepArchived && md.Archived { - to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(f.fsys, file), "discarding archived file") - track.status = fileevent.DiscoveredDiscarded - return nil - } - if !to.flags.KeepPartner && md.FromPartner { - to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(f.fsys, file), "discarding partner file") - track.status = fileevent.DiscoveredDiscarded - return nil - } - if !to.flags.KeepTrashed && md.Trashed { - to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(f.fsys, file), "discarding trashed file") - track.status = fileevent.DiscoveredDiscarded - return nil - } - if !to.flags.InclusionFlags.DateRange.InRange(md.DateTaken) { - to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(f.fsys, file), "discarding files out of date range") - track.status = fileevent.DiscoveredDiscarded - return nil - } + md, code := to.filterOnMetadata(ctx, a, md) + if code != 0 { + track.status = code + return nil } - title := f.base - if md != nil { - title = md.FileName + // get the original file name from metadata + if md != nil && md.FileName != "" { + title := md.FileName + // trim superfluous extensions titleExt := path.Ext(title) fileExt := path.Ext(file) @@ -514,15 +504,12 @@ func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md * title = strings.TrimSuffix(title, titleExt) + fileExt } } - md.FileName = title - } - a := adapters.LocalAssetFile{ - FileName: file, - FileSize: int(i.Size()), - Title: title, - FSys: f.fsys, + // md.FileName = title + a.Title = title } + // Manage albums + if to.flags.ImportFromAlbum != "" { keep := false if album, ok := to.albums[dir]; ok { @@ -538,7 +525,7 @@ func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md * if to.flags.CreateAlbums { if to.flags.ImportIntoAlbum != "" { // Force this album - a.AddAlbum(adapters.LocalAlbum{Title: to.flags.ImportIntoAlbum}) + g.AddAlbum(adapters.LocalAlbum{Title: to.flags.ImportIntoAlbum}) } else { // check if its duplicates are in some albums, and push them all at once @@ -552,7 +539,7 @@ func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md * } title = filepath.Base(album.Path) } - a.AddAlbum(adapters.LocalAlbum{ + g.AddAlbum(adapters.LocalAlbum{ Title: title, Path: p, Description: album.Description, @@ -565,29 +552,66 @@ func (to *Takeout) makeAsset(ctx context.Context, dir string, f *assetFile, md * // Force this album for partners photos if to.flags.PartnerSharedAlbum != "" && md != nil && md.FromPartner { - a.AddAlbum(adapters.LocalAlbum{Title: to.flags.PartnerSharedAlbum}) + g.AddAlbum(adapters.LocalAlbum{Title: to.flags.PartnerSharedAlbum}) } if md != nil { md.Collections = md.Collections[0:0] - for _, album := range a.Albums { + for _, album := range g.Albums { md.Collections = append(md.Collections, album.Title) } } } if md != nil { - a.Metadata = *md - if a.Metadata.Latitude == 0 && a.Metadata.Longitude == 0 { - for _, album := range a.Albums { + if md.Latitude == 0 && md.Longitude == 0 { + for _, album := range g.Albums { if album.Latitude != 0 || album.Longitude != 0 { // when there isn't GPS information on the photo, but the album has a location, use that location - a.Metadata.Latitude = album.Latitude - a.Metadata.Longitude = album.Longitude + md.Latitude = album.Latitude + md.Longitude = album.Longitude break } } } + g.Metadata = md + } + g.AddAsset(a) + return a +} + +func (to *Takeout) filterOnMetadata(ctx context.Context, a *adapters.LocalAssetFile, md *metadata.Metadata) (*metadata.Metadata, fileevent.Code) { + if md != nil { + if !to.flags.KeepArchived && md.Archived { + to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(a.FSys, a.FileName), "discarding archived file") + return nil, fileevent.DiscoveredDiscarded + } + if !to.flags.KeepPartner && md.FromPartner { + to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(a.FSys, a.FileName), "discarding partner file") + return nil, fileevent.DiscoveredDiscarded + } + if !to.flags.KeepTrashed && md.Trashed { + to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(a.FSys, a.FileName), "discarding trashed file") + return nil, fileevent.DiscoveredDiscarded + } + } else { + // wasn't associated + var err error + md, err = a.ReadMetadata(to.flags.DateHandlingFlags.Method, adapters.ReadMetadataOptions{ + ExifTool: to.exiftool, + ExiftoolTimezone: to.flags.ExifToolFlags.Timezone.Location(), + FilenameTimeZone: to.flags.DateHandlingFlags.FilenameTimeZone.Location(), + }) + if err != nil { + to.logMessage(ctx, fileevent.Error, fileevent.AsFileAndName(a.FSys, a.FileName), err.Error()) + a.Close() + return nil, fileevent.Error + } + } + if to.flags.InclusionFlags.DateRange.IsSet() && md != nil && !to.flags.InclusionFlags.DateRange.InRange(md.DateTaken) { + to.logMessage(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(a.FSys, a.FileName), "discarding files out of date range") + a.Close() + return nil, fileevent.DiscoveredDiscarded } - return &a + return md, fileevent.Code(0) } diff --git a/adapters/googlePhotos/testgp_samples_test.go b/adapters/googlePhotos/testgp_samples_test.go index e6955ccb..d6a5ed6e 100644 --- a/adapters/googlePhotos/testgp_samples_test.go +++ b/adapters/googlePhotos/testgp_samples_test.go @@ -267,7 +267,7 @@ func checkLivePhoto() []fs.FS { addJSONImage("Motion test/20231227_152817.jpg.json", "20231227_152817.jpg"). addImage("Motion test/20231227_152817.jpg", 7426453). addImage("Motion test/20231227_152817.MP4", 5192477). - addJSONImage("Motion Test/PXL_20231118_035751175.MP.jpg.json", "20231118_035751175.MP.jpg"). + addJSONImage("Motion Test/PXL_20231118_035751175.MP.jpg.json", "PXL_20231118_035751175.MP.jpg"). addImage("Motion Test/PXL_20231118_035751175.MP", 3478685). addImage("Motion Test/PXL_20231118_035751175.MP.jpg", 8025699).FSs() } diff --git a/adapters/googlePhotos/testgp_test.go b/adapters/googlePhotos/testgp_test.go index ead2b7af..13826994 100644 --- a/adapters/googlePhotos/testgp_test.go +++ b/adapters/googlePhotos/testgp_test.go @@ -7,9 +7,12 @@ import ( "log/slog" "path" "reflect" + "slices" "testing" "github.com/kr/pretty" + "github.com/simulot/immich-go/adapters" + "github.com/simulot/immich-go/helpers/gen" "github.com/simulot/immich-go/internal/fileevent" "github.com/simulot/immich-go/internal/metadata" ) @@ -31,19 +34,16 @@ func TestBrowse(t *testing.T) { { "simpleAlbum", simpleAlbum, sortFileResult([]fileResult{ - {name: "PXL_20230922_144936660.jpg", size: 10, title: "PXL_20230922_144936660.jpg"}, {name: "PXL_20230922_144936660.jpg", size: 10, title: "PXL_20230922_144936660.jpg"}, {name: "PXL_20230922_144934440.jpg", size: 15, title: "PXL_20230922_144934440.jpg"}, {name: "IMG_8172.jpg", size: 25, title: "IMG_8172.jpg"}, {name: "IMG_8172.jpg", size: 52, title: "IMG_8172.jpg"}, - {name: "IMG_8172.jpg", size: 52, title: "IMG_8172.jpg"}, }), }, { "albumWithoutImage", albumWithoutImage, sortFileResult([]fileResult{ - {name: "PXL_20230922_144936660.jpg", size: 10, title: "PXL_20230922_144936660.jpg"}, {name: "PXL_20230922_144936660.jpg", size: 10, title: "PXL_20230922_144936660.jpg"}, {name: "PXL_20230922_144934440.jpg", size: 15, title: "PXL_20230922_144934440.jpg"}, }), @@ -84,11 +84,8 @@ func TestBrowse(t *testing.T) { "namesIssue39", namesIssue39, sortFileResult([]fileResult{ {name: "Backyard_ceremony_wedding_photography_xxxxxxx_m.jpg", size: 1, title: "Backyard_ceremony_wedding_photography_xxxxxxx_magnoliastudios-371.jpg"}, - {name: "Backyard_ceremony_wedding_photography_xxxxxxx_m.jpg", size: 1, title: "Backyard_ceremony_wedding_photography_xxxxxxx_magnoliastudios-371.jpg"}, - {name: "Backyard_ceremony_wedding_photography_xxxxxxx_m(1).jpg", size: 181, title: "Backyard_ceremony_wedding_photography_xxxxxxx_magnoliastudios-181.jpg"}, {name: "Backyard_ceremony_wedding_photography_xxxxxxx_m(1).jpg", size: 181, title: "Backyard_ceremony_wedding_photography_xxxxxxx_magnoliastudios-181.jpg"}, {name: "Backyard_ceremony_wedding_photography_xxxxxxx_m(494).jpg", size: 494, title: "Backyard_ceremony_wedding_photography_markham_magnoliastudios-19.jpg"}, - {name: "Backyard_ceremony_wedding_photography_xxxxxxx_m(494).jpg", size: 494, title: "Backyard_ceremony_wedding_photography_markham_magnoliastudios-19.jpg"}, }), }, { @@ -129,10 +126,6 @@ func TestBrowse(t *testing.T) { {name: "IMG_0170.MP4", size: 6024972, title: "IMG_0170.MP4"}, {name: "IMG_0170.HEIC", size: 4443973, title: "IMG_0170.HEIC"}, {name: "IMG_0170.MP4", size: 2288647, title: "IMG_0170.MP4"}, - {name: "IMG_0170.JPG", size: 4570661, title: "IMG_0170.JPG"}, - {name: "IMG_0170.MP4", size: 6024972, title: "IMG_0170.MP4"}, - {name: "IMG_0170.HEIC", size: 4443973, title: "IMG_0170.HEIC"}, - {name: "IMG_0170.jpg", size: 514963, title: "IMG_0170.jpg"}, }), }, } @@ -145,6 +138,7 @@ func TestBrowse(t *testing.T) { log := slog.New(slog.NewTextHandler(io.Discard, nil)) flags := &ImportFlags{ SupportedMedia: metadata.DefaultSupportedMedia, + CreateAlbums: true, } b, err := NewTakeout(ctx, fileevent.NewRecorder(log, false), flags, fsys...) if err != nil { @@ -159,10 +153,13 @@ func TestBrowse(t *testing.T) { } results := []fileResult{} - for a := range assetChan { - results = append(results, fileResult{name: path.Base(a.FileName), size: a.FileSize, title: a.Title}) - if a.LivePhoto != nil { - results = append(results, fileResult{name: path.Base(a.LivePhoto.FileName), size: a.LivePhoto.FileSize, title: a.LivePhoto.Title}) + for g := range assetChan { + if err = g.Validate(); err != nil { + t.Error(err) + return + } + for _, a := range g.Assets { + results = append(results, fileResult{name: path.Base(a.FileName), size: a.FileSize, title: a.Title}) } } results = sortFileResult(results) @@ -225,6 +222,7 @@ func TestAlbums(t *testing.T) { fsys := c.gen() flags := &ImportFlags{ SupportedMedia: metadata.DefaultSupportedMedia, + CreateAlbums: true, } b, err := NewTakeout(ctx, fileevent.NewRecorder(nil, false), flags, fsys...) if err != nil { @@ -238,12 +236,14 @@ func TestAlbums(t *testing.T) { } albums := album{} - for a := range assetChan { - if len(a.Albums) > 0 { - for _, al := range a.Albums { - l := albums[al.Title] - l = append(l, fileResult{name: path.Base(a.FileName), size: a.FileSize, title: a.Title}) - albums[al.Title] = l + for g := range assetChan { + for _, a := range g.Assets { + if len(g.Albums) > 0 { + for _, al := range g.Albums { + l := albums[al.Title] + l = append(l, fileResult{name: path.Base(a.FileName), size: a.FileSize, title: a.Title}) + albums[al.Title] = l + } } } } @@ -261,8 +261,8 @@ func TestAlbums(t *testing.T) { } func TestArchives(t *testing.T) { - type photo map[string]string - type album map[string][]string + type photo map[fileKeyTracker]fileKeyTracker + type album map[string][]fileKeyTracker tc := []struct { name string gen func() []fs.FS @@ -276,8 +276,8 @@ func TestArchives(t *testing.T) { gen: checkLivePhoto, wantAsset: photo{}, wantLivePhotos: photo{ - "Motion Test/PXL_20231118_035751175.MP.jpg": "Motion Test/PXL_20231118_035751175.MP", - "Motion test/20231227_152817.jpg": "Motion test/20231227_152817.MP4", + fileKeyTracker{baseName: "PXL_20231118_035751175.MP.jpg", size: 8025699}: fileKeyTracker{baseName: "PXL_20231118_035751175.MP", size: 3478685}, + fileKeyTracker{baseName: "20231227_152817.jpg", size: 7426453}: fileKeyTracker{baseName: "20231227_152817.MP4", size: 5192477}, }, wantAlbum: album{}, }, @@ -286,20 +286,18 @@ func TestArchives(t *testing.T) { gen: checkLivePhotoPixil, wantAsset: photo{}, wantLivePhotos: photo{ - "Takeout/Google Photos/2022 - Germany - Private/IMG_4573.HEIC": "Takeout/Google Photos/2022 - Germany - Private/IMG_4573.MP4", - "Takeout/Google Photos/Photos from 2022/IMG_4573.HEIC": "Takeout/Google Photos/Photos from 2022/IMG_4573.MP4", - "Takeout/Google Photos/2022 - Germany/IMG_4573.HEIC": "Takeout/Google Photos/2022 - Germany/IMG_4573.MP4", + fileKeyTracker{baseName: "IMG_4573.HEIC", size: 3530351}: fileKeyTracker{baseName: "IMG_4573.MP4", size: 2232086}, }, wantAlbum: album{ - "2022 - Germany - Private": []string{"IMG_4573.HEIC"}, - "2022 - Germany": []string{"IMG_4573.HEIC"}, + "2022 - Germany - Private": []fileKeyTracker{{baseName: "IMG_4573.HEIC", size: 3530351}}, + "2022 - Germany": []fileKeyTracker{{baseName: "IMG_4573.HEIC", size: 3530351}}, }, }, { name: "checkMissingJSON-No", gen: checkMissingJSON, wantAsset: photo{ - "Takeout/Google Photos/Photos from 2022/IMG_4573.HEIC": "", + fileKeyTracker{baseName: "IMG_4573.HEIC", size: 3530351}: fileKeyTracker{}, }, wantLivePhotos: photo{}, wantAlbum: album{}, @@ -309,24 +307,23 @@ func TestArchives(t *testing.T) { gen: checkMissingJSON, acceptMissingJSON: true, wantAsset: photo{ - "Takeout/Google Photos/Photos from 2022/IMG_4573.HEIC": "", - "Takeout/Google Foto/Photos from 2016/IMG-20161201-WA0035.jpeg": "", - "Takeout/Google Photos/2022 - Germany - Private/IMG_4553.HEIC": "", + fileKeyTracker{baseName: "IMG_4573.HEIC", size: 3530351}: fileKeyTracker{}, + fileKeyTracker{baseName: "IMG-20161201-WA0035.jpeg", size: 1352455}: fileKeyTracker{}, + fileKeyTracker{baseName: "IMG_4553.HEIC", size: 3530351}: fileKeyTracker{}, }, wantLivePhotos: photo{ - "Takeout/Google Photos/2022 - Germany/IMG_1234.HEIC": "Takeout/Google Photos/2022 - Germany/IMG_1234.MP4", + fileKeyTracker{baseName: "IMG_1234.HEIC", size: 3530351}: fileKeyTracker{baseName: "IMG_1234.MP4", size: 2232086}, }, wantAlbum: album{ - "2022 - Germany": []string{"IMG_1234.HEIC"}, + "2022 - Germany": []fileKeyTracker{{baseName: "IMG_1234.HEIC", size: 3530351}}, }, }, { name: "checkDuplicates", gen: checkDuplicates, wantAsset: photo{ - "Takeout/Google Foto/[E&S] 2016-01-05 - Castello De Albertis e Mostra d/20160105_121621_LLS.jpg": "", - "Takeout/Google Foto/Photos from 2016/20160105_121621_LLS.jpg": "", - "Takeout/Google Foto/2016-01-05 - _3/20160105_121621_LLS.jpg": "", + fileKeyTracker{baseName: "20160105_121621_LLS.jpg", size: 365022}: fileKeyTracker{}, + fileKeyTracker{baseName: "20160105_121621_LLS.jpg", size: 364041}: fileKeyTracker{}, }, wantLivePhotos: photo{}, wantAlbum: album{}, @@ -335,8 +332,8 @@ func TestArchives(t *testing.T) { name: "checkMP_405", gen: checkMPissue405, wantLivePhotos: photo{ - "Takeout/Google Photos/Untitled(1)/PXL_20210102_221126856.MP.jpg": "Takeout/Google Photos/Untitled(1)/PXL_20210102_221126856.MP", - "Takeout/Google Photos/Untitled(1)/PXL_20210102_221126856.MP~2.jpg": "Takeout/Google Photos/Untitled(1)/PXL_20210102_221126856.MP~2", + fileKeyTracker{baseName: "PXL_20210102_221126856.MP.jpg", size: 6486725}: fileKeyTracker{baseName: "PXL_20210102_221126856.MP", size: 3242290}, + fileKeyTracker{baseName: "PXL_20210102_221126856.MP~2.jpg", size: 4028710}: fileKeyTracker{baseName: "PXL_20210102_221126856.MP~2", size: 1214365}, }, wantAlbum: album{}, wantAsset: photo{}, @@ -367,25 +364,25 @@ func TestArchives(t *testing.T) { livePhotos := photo{} assets := photo{} albums := album{} - for a := range assetChan { - if a.LivePhoto != nil { - photo := a.FileName - video := a.LivePhoto.FileName - livePhotos[photo] = video - } else { - assets[a.FileName] = "" + for g := range assetChan { + switch g.Kind { + case adapters.GroupKindNone: + assets[fileKeyTracker{baseName: g.Assets[0].Title, size: g.Assets[0].Size()}] = fileKeyTracker{} + case adapters.GroupKindMotionPhoto: + livePhotos[fileKeyTracker{baseName: g.Assets[0].Title, size: g.Assets[0].Size()}] = fileKeyTracker{baseName: g.Assets[1].Title, size: g.Assets[1].Size()} } - for _, al := range a.Albums { + for _, al := range g.Albums { l := albums[al.Title] - l = append(l, path.Base(a.FileName)) + l = append(l, fileKeyTracker{baseName: g.Assets[0].Title, size: g.Assets[0].Size()}) albums[al.Title] = l } } - if !reflect.DeepEqual(assets, c.wantAsset) { + + if !equalPhotos(assets, c.wantAsset) { t.Errorf("difference assets\n") pretty.Ldiff(t, c.wantAsset, assets) } - if !reflect.DeepEqual(livePhotos, c.wantLivePhotos) { + if !equalPhotos(livePhotos, c.wantLivePhotos) { t.Errorf("difference LivePhotos\n") pretty.Ldiff(t, c.wantLivePhotos, livePhotos) } @@ -397,3 +394,25 @@ func TestArchives(t *testing.T) { ) } } + +func equalPhotos(a, b map[fileKeyTracker]fileKeyTracker) bool { + if len(a) != len(b) { + return false + } + ka := gen.MapKeys(a) + kb := gen.MapKeys(b) + + slices.SortFunc(ka, trackerKeySortFunc) + slices.SortFunc(kb, trackerKeySortFunc) + + if !reflect.DeepEqual(ka, kb) { + return false + } + + for key, value := range a { + if val, ok := b[key]; !ok || val != value { + return false + } + } + return true +} From a57f85ccbc976761f850bd3d31d8b9d45fd127b5 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 29 Sep 2024 17:06:34 +0200 Subject: [PATCH 020/252] Refactor `LocalAssetFile` struct: remove metadata from asset --- adapters/localfile.go | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/adapters/localfile.go b/adapters/localfile.go index 68d34274..680385eb 100644 --- a/adapters/localfile.go +++ b/adapters/localfile.go @@ -26,24 +26,30 @@ import ( */ type LocalAssetFile struct { - // Common fields + // File system and file name + FSys fs.FS // Asset's file system FileName string // The asset's path in the fsys + + // Common fields Title string // Google Photos may a have title longer than the filename - FSys fs.FS // Asset's file system FileSize int // File size in bytes - // Err error // keep errors encountered + ID string // Immich ID after upload + + // Err error // keep errors encountered + + // Flags that are provided to Immich Upload API call + CaptureDate time.Time // Date of the capture + Trashed bool // The asset is trashed + Archived bool // The asset is archived + FromPartner bool // the asset comes from a partner + Favorite bool // the asset is marked as favorite + Stars int // the asset is marked with stars // removed from assets to group of assets // Albums []LocalAlbum // The asset's album, if any // SideCar metadata.SideCarFile // sidecar file if found // Metadata metadata.Metadata // Metadata fields - // // Google Photos flags - // Trashed bool // The asset is trashed - // Archived bool // The asset is archived - // FromPartner bool // the asset comes from a partner - // Favorite bool - // Live Photos // LivePhoto *LocalAssetFile // Local asset of the movie part // LivePhotoID string // ID of the movie part, just uploaded From ac4af01e287e04b01494f4ef7a638bc57b45d95e Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 29 Sep 2024 17:55:49 +0200 Subject: [PATCH 021/252] Refactor Adapter interface to support browsing grouped assets --- adapters/adpaters.go | 2 +- adapters/folder/e2e_readFolder_test.go | 8 +-- adapters/folder/readFolder.go | 99 +++++++++++++------------- adapters/folder/readFolder_test.go | 16 +++-- adapters/googlePhotos/googlephotos.go | 16 +++-- adapters/group.go | 12 ++-- adapters/localfile.go | 9 ++- 7 files changed, 88 insertions(+), 74 deletions(-) diff --git a/adapters/adpaters.go b/adapters/adpaters.go index c3ab604f..f67b432e 100644 --- a/adapters/adpaters.go +++ b/adapters/adpaters.go @@ -6,5 +6,5 @@ import ( // TODO: rename to Importer type Adapter interface { - Browse(cxt context.Context) (chan *LocalAssetFile, error) + Browse(cxt context.Context) (chan *AssetGroup, error) } diff --git a/adapters/folder/e2e_readFolder_test.go b/adapters/folder/e2e_readFolder_test.go index c281b150..713aa7de 100644 --- a/adapters/folder/e2e_readFolder_test.go +++ b/adapters/folder/e2e_readFolder_test.go @@ -201,22 +201,18 @@ func TestE2ELocalAssets(t *testing.T) { return } links := fileLinks{} + fileName := g.Assets[0].FileName + for _, a := range g.Assets { ext := path.Ext(a.FileName) if b.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { links.image = a.FileName - if a.LivePhoto != nil { - links.video = a.LivePhoto.FileName - } } else { links.video = a.FileName } a.Close() } - if g.SideCar.FileName != "" { - links.sidecar = g.SideCar.FileName - } results[fileName] = links if len(c.expectedAlbums) > 0 { for _, album := range g.Albums { diff --git a/adapters/folder/readFolder.go b/adapters/folder/readFolder.go index 83e7569a..a6be18f2 100644 --- a/adapters/folder/readFolder.go +++ b/adapters/folder/readFolder.go @@ -235,76 +235,71 @@ func (la *LocalAssetBrowser) passTwo(ctx context.Context) chan *adapters.AssetGr var g *adapters.AssetGroup linked := links[file] + redo: switch { case linked.image != "" && linked.video != "": + i, err := la.assetFromFile(ctx, fsys, linked.video) + if err != nil { + // If the video file is not found, remove the link and try again + errFn(fileevent.AsFileAndName(fsys, linked.video), err) + linked.video = "" + goto redo + } + a, err = la.assetFromFile(ctx, fsys, linked.image) if err != nil { + // If the image file is not found, remove the link and try again + linked.image = "" errFn(fileevent.AsFileAndName(fsys, linked.image), err) - return - } - if a == nil { - continue + goto redo } - i, err := la.assetFromFile(ctx, fsys, linked.video) - if i != nil { - g = &adapters.AssetGroup{ - Kind: adapters.GroupKindMotionPhoto, - Assets: []*adapters.LocalAssetFile{a, i}, - CoverIndex: 0, - } - } else { - errFn(fileevent.AsFileAndName(fsys, linked.video), err) - g = &adapters.AssetGroup{ - Kind: adapters.GroupKindNone, - Assets: []*adapters.LocalAssetFile{a}, + + if linked.sidecar != "" { + la.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, fileevent.AsFileAndName(fsys, a.FileName), "sidecar", linked.sidecar) + a.SideCar = metadata.SideCarFile{ + FSys: fsys, + FileName: linked.sidecar, } } - case linked.image != "": + // The video must be the first asset in the group + g = adapters.NewAssetGroup(adapters.GroupKindMotionPhoto, i, a) + case linked.image != "" && linked.video == "": a, err = la.assetFromFile(ctx, fsys, linked.image) if err != nil { errFn(fileevent.AsFileAndName(fsys, linked.image), err) - return - } - if a == nil { continue } - g = &adapters.AssetGroup{ - Kind: adapters.GroupKindNone, - Assets: []*adapters.LocalAssetFile{a}, - CoverIndex: 0, - } - case linked.video != "": - { - a, err = la.assetFromFile(ctx, fsys, linked.video) - if err != nil { - errFn(fileevent.AsFileAndName(fsys, linked.video), err) - return - } - if a == nil { - continue + if linked.sidecar != "" { + la.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, fileevent.AsFileAndName(fsys, a.FileName), "sidecar", linked.sidecar) + a.SideCar = metadata.SideCarFile{ + FSys: fsys, + FileName: linked.sidecar, } + } + g = adapters.NewAssetGroup(adapters.GroupKindNone, a) - g = &adapters.AssetGroup{ - Kind: adapters.GroupKindNone, - Assets: []*adapters.LocalAssetFile{a}, - CoverIndex: 0, - } + case linked.video != "" && linked.image == "": + a, err = la.assetFromFile(ctx, fsys, linked.video) + if err != nil { + errFn(fileevent.AsFileAndName(fsys, linked.video), err) + continue + } + if linked.sidecar != "" { + la.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, fileevent.AsFileAndName(fsys, a.FileName), "sidecar", linked.sidecar) + a.SideCar = metadata.SideCarFile{ + FSys: fsys, + FileName: linked.sidecar, + } } + g = adapters.NewAssetGroup(adapters.GroupKindNone, a) } - if g == nil { + // If the asset is not found, skip it + if g == nil || g.Validate() != nil { continue } - if linked.sidecar != "" { - g.SideCar = metadata.SideCarFile{ - FSys: fsys, - FileName: linked.sidecar, - } - la.log.Record(ctx, fileevent.AnalysisAssociatedMetadata, fileevent.AsFileAndName(fsys, a.FileName), "sidecar", linked.sidecar) - } - // manage album options if la.flags.ImportIntoAlbum != "" { g.Albums = append(g.Albums, adapters.LocalAlbum{ @@ -364,7 +359,7 @@ func (la *LocalAssetBrowser) assetFromFile(ctx context.Context, fsys fs.FS, name FSys: fsys, } - err := a.ReadMetadata(la.flags.DateHandlingFlags.Method, adapters.ReadMetadataOptions{ + md, err := a.ReadMetadata(la.flags.DateHandlingFlags.Method, adapters.ReadMetadataOptions{ ExifTool: la.exiftool, ExiftoolTimezone: la.flags.ExifToolFlags.Timezone.Location(), FilenameTimeZone: la.flags.DateHandlingFlags.FilenameTimeZone.Location(), @@ -381,7 +376,11 @@ func (la *LocalAssetBrowser) assetFromFile(ctx context.Context, fsys fs.FS, name } a.FileSize = int(i.Size()) - if la.flags.InclusionFlags.DateRange.IsSet() && !la.flags.InclusionFlags.DateRange.InRange(a.Metadata.DateTaken) { + if md != nil { + a.CaptureDate = md.DateTaken + } + + if la.flags.InclusionFlags.DateRange.IsSet() && !la.flags.InclusionFlags.DateRange.InRange(a.CaptureDate) { a.Close() la.log.Record(ctx, fileevent.DiscoveredDiscarded, fileevent.AsFileAndName(fsys, name), "reason", "asset outside date range") return nil, nil diff --git a/adapters/folder/readFolder_test.go b/adapters/folder/readFolder_test.go index 7824afd2..2d54883c 100644 --- a/adapters/folder/readFolder_test.go +++ b/adapters/folder/readFolder_test.go @@ -12,6 +12,7 @@ import ( "github.com/kr/pretty" "github.com/psanford/memfs" + "github.com/simulot/immich-go/adapters" cliflags "github.com/simulot/immich-go/internal/cliFlags" "github.com/simulot/immich-go/internal/fileevent" "github.com/simulot/immich-go/internal/metadata" @@ -413,19 +414,20 @@ func TestLocalAssets(t *testing.T) { links := fileLinks{} for _, a := range g.Assets { ext := path.Ext(a.FileName) - if b.flags.SupportedMedia.TypeFromExt(ext) == metadata.TypeImage { + switch b.flags.SupportedMedia.TypeFromExt(ext) { + case metadata.TypeImage: links.image = a.FileName - if a.LivePhoto != nil { - links.video = a.LivePhoto.FileName + if g.Kind == adapters.GroupKindMotionPhoto { + fileName = a.FileName } - } else { + case metadata.TypeVideo: links.video = a.FileName } + if a.SideCar.FileName != "" { + links.sidecar = a.SideCar.FileName + } a.Close() } - if g.SideCar.FileName != "" { - links.sidecar = g.SideCar.FileName - } results[fileName] = links if len(c.expectedAlbums) > 0 { diff --git a/adapters/googlePhotos/googlephotos.go b/adapters/googlePhotos/googlephotos.go index 45969454..97b28af9 100644 --- a/adapters/googlePhotos/googlephotos.go +++ b/adapters/googlePhotos/googlephotos.go @@ -422,8 +422,9 @@ nextVideo: switch { case linked.image != nil && linked.video != nil: - mainAsset = to.makeAsset(ctx, g, dir, linked.image, linked.image.md) + // Live video must be the first asset in the group... liveVideo = to.makeAsset(ctx, g, dir, linked.video, linked.video.md) + mainAsset = to.makeAsset(ctx, g, dir, linked.image, linked.image.md) if mainAsset != nil && liveVideo != nil { g.Kind = adapters.GroupKindMotionPhoto } else if mainAsset != nil && liveVideo == nil { @@ -564,17 +565,22 @@ func (to *Takeout) makeAsset(ctx context.Context, g *adapters.AssetGroup, dir st } if md != nil { - if md.Latitude == 0 && md.Longitude == 0 { + a.Archived = md.Archived + a.Favorite = md.Favorited + a.Trashed = md.Trashed + a.Latitude = md.Latitude + a.Longitude = md.Longitude + + if a.Latitude == 0 && a.Longitude == 0 { for _, album := range g.Albums { if album.Latitude != 0 || album.Longitude != 0 { // when there isn't GPS information on the photo, but the album has a location, use that location - md.Latitude = album.Latitude - md.Longitude = album.Longitude + a.Latitude = album.Latitude + a.Longitude = album.Longitude break } } } - g.Metadata = md } g.AddAsset(a) return a diff --git a/adapters/group.go b/adapters/group.go index d3700927..01163d24 100644 --- a/adapters/group.go +++ b/adapters/group.go @@ -2,8 +2,6 @@ package adapters import ( "errors" - - "github.com/simulot/immich-go/internal/metadata" ) // A group of assets link assets that are linked together. This @@ -37,8 +35,14 @@ type AssetGroup struct { CoverIndex int // index of the cover assert in the Assets slice Assets []*LocalAssetFile Albums []LocalAlbum - SideCar metadata.SideCarFile - Metadata *metadata.Metadata +} + +// NewAssetGroup create a new asset group +func NewAssetGroup(kind GroupKind, a ...*LocalAssetFile) *AssetGroup { + return &AssetGroup{ + Kind: kind, + Assets: a, + } } // AddAlbum assign the group to an album diff --git a/adapters/localfile.go b/adapters/localfile.go index 680385eb..611ed2d3 100644 --- a/adapters/localfile.go +++ b/adapters/localfile.go @@ -9,6 +9,7 @@ import ( "time" "github.com/simulot/immich-go/internal/fshelper" + "github.com/simulot/immich-go/internal/metadata" ) /* @@ -45,9 +46,15 @@ type LocalAssetFile struct { Favorite bool // the asset is marked as favorite Stars int // the asset is marked with stars + // GPS location + Latitude float64 // GPS latitude + Longitude float64 // GPS longitude + + // When a sidecar is found beside the asset + SideCar metadata.SideCarFile // sidecar file if found + // removed from assets to group of assets // Albums []LocalAlbum // The asset's album, if any - // SideCar metadata.SideCarFile // sidecar file if found // Metadata metadata.Metadata // Metadata fields // Live Photos From 4a47677ccf9c9d134cea11b26ae3912130bb36ee Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 29 Sep 2024 18:05:15 +0200 Subject: [PATCH 022/252] Refactor `AssetUpload` function in immich/asset.go don't force XMP --- immich/asset.go | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/immich/asset.go b/immich/asset.go index f090fc4d..6009762c 100644 --- a/immich/asset.go +++ b/immich/asset.go @@ -99,7 +99,7 @@ func (ic *ImmichClient) AssetUpload(ctx context.Context, la *adapters.LocalAsset if err != nil { return } - err = m.WriteField("fileCreatedAt", la.Metadata.DateTaken.Format(time.RFC3339)) + err = m.WriteField("fileCreatedAt", la.CaptureDate.Format(time.RFC3339)) if err != nil { return } @@ -127,12 +127,6 @@ func (ic *ImmichClient) AssetUpload(ctx context.Context, la *adapters.LocalAsset if err != nil { return } - if la.LivePhotoID != "" { - err = m.WriteField("livePhotoVideoId", la.LivePhotoID) - if err != nil { - return - } - } h := textproto.MIMEHeader{} h.Set("Content-Disposition", @@ -166,22 +160,6 @@ func (ic *ImmichClient) AssetUpload(ctx context.Context, la *adapters.LocalAsset if err != nil { return } - } else if la.Metadata.IsSet() { - scName := path.Base(la.FileName) + ".xmp" - h.Set("Content-Disposition", - fmt.Sprintf(`form-data; name="%s"; filename="%s"`, - escapeQuotes("sidecarData"), escapeQuotes(scName))) - h.Set("Content-Type", "application/xml") - - var part io.Writer - part, err = m.CreatePart(h) - if err != nil { - return - } - err = la.Metadata.Write(part) - if err != nil { - return - } } }() From ba4acca95c4665c1f98480fad85810c7f36dade4 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 29 Sep 2024 18:25:48 +0200 Subject: [PATCH 023/252] Refactor `UpdateAsset` pass a structure with paramters --- immich/asset.go | 29 +++++++++++------------------ immich/immich.go | 2 +- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/immich/asset.go b/immich/asset.go index 6009762c..56aa7317 100644 --- a/immich/asset.go +++ b/immich/asset.go @@ -171,9 +171,6 @@ func (ic *ImmichClient) AssetUpload(ctx context.Context, la *adapters.LocalAsset if la.SideCar.IsSet() { callValues[ctxSideCarName] = la.SideCar.FileName } - if la.LivePhoto != nil { - callValues[ctxLiveVideoName] = la.LivePhoto.FileName - } } errCall := ic.newServerCall(ctx, "AssetUpload"). @@ -283,24 +280,20 @@ func (ic *ImmichClient) UpdateAssets(ctx context.Context, ids []string, return ic.newServerCall(ctx, "updateAssets").do(putRequest("/assets", setJSONBody(param))) } -func (ic *ImmichClient) UpdateAsset(ctx context.Context, id string, a *adapters.LocalAssetFile) (*Asset, error) { +// UpdAssetField is used to update asset with fields given in the struct fields +type UpdAssetField struct { + IsArchived bool `json:"isArchived"` + IsFavorite bool `json:"isFavorite"` + Latitude float64 `json:"latitude,omitempty"` + Longitude float64 `json:"longitude,omitempty"` + Description string `json:"description,omitempty"` + LivePhotoVideoID string `json:"livePhotoVideoId,omitempty"` +} + +func (ic *ImmichClient) UpdateAsset(ctx context.Context, id string, param UpdAssetField) (*Asset, error) { if ic.dryRun { return nil, nil } - type updAsset struct { - IsArchived bool `json:"isArchived"` - IsFavorite bool `json:"isFavorite"` - Latitude float64 `json:"latitude,omitempty"` - Longitude float64 `json:"longitude,omitempty"` - Description string `json:"description,omitempty"` - } - param := updAsset{ - IsArchived: a.Archived, - IsFavorite: a.Favorite, - Description: a.Metadata.Description, - Latitude: a.Metadata.Latitude, - Longitude: a.Metadata.Longitude, - } r := Asset{} err := ic.newServerCall(ctx, "updateAsset").do(putRequest("/assets/"+id, setJSONBody(param)), responseJSON(&r)) return &r, err diff --git a/immich/immich.go b/immich/immich.go index a6482734..9f8d24c8 100644 --- a/immich/immich.go +++ b/immich/immich.go @@ -24,7 +24,7 @@ type ImmichInterface interface { GetServerStatistics(ctx context.Context) (ServerStatistics, error) GetAssetStatistics(ctx context.Context) (UserStatistics, error) - UpdateAsset(ctx context.Context, ID string, a *adapters.LocalAssetFile) (*Asset, error) + UpdateAsset(ctx context.Context, id string, param UpdAssetField) (*Asset, error) GetAllAssets(ctx context.Context) ([]*Asset, error) AddAssetToAlbum(context.Context, string, []string) ([]UpdateAlbumResult, error) UpdateAssets(ctx context.Context, IDs []string, isArchived bool, isFavorite bool, latitude float64, longitude float64, removeParent bool, stackParentID string) error From 194e8f8f2659a934d8b47ee6afaa3e916ffe6772 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 29 Sep 2024 18:35:15 +0200 Subject: [PATCH 024/252] Refactor `UpdateAsset` to accept a structure with parameters --- immich/asset.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/immich/asset.go b/immich/asset.go index 56aa7317..181efdf6 100644 --- a/immich/asset.go +++ b/immich/asset.go @@ -282,12 +282,14 @@ func (ic *ImmichClient) UpdateAssets(ctx context.Context, ids []string, // UpdAssetField is used to update asset with fields given in the struct fields type UpdAssetField struct { - IsArchived bool `json:"isArchived"` - IsFavorite bool `json:"isFavorite"` - Latitude float64 `json:"latitude,omitempty"` - Longitude float64 `json:"longitude,omitempty"` - Description string `json:"description,omitempty"` - LivePhotoVideoID string `json:"livePhotoVideoId,omitempty"` + IsArchived bool `json:"isArchived"` + IsFavorite bool `json:"isFavorite"` + Latitude float64 `json:"latitude,omitempty"` + Longitude float64 `json:"longitude,omitempty"` + Description string `json:"description,omitempty"` + Rating int `json:"rating,omitempty"` + LivePhotoVideoID string `json:"livePhotoVideoId,omitempty"` + DateTimeOriginal time.Time `json:"dateTimeOriginal,omitempty"` } func (ic *ImmichClient) UpdateAsset(ctx context.Context, id string, param UpdAssetField) (*Asset, error) { From 9e05df298fbecf0735dab4fdb0fbdcf72ead032c Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 29 Sep 2024 18:40:20 +0200 Subject: [PATCH 025/252] Refactor asset group handling in upload command: manage the live photo --- cmd/upload/run.go | 240 +++++++++++++++++++++++----------------------- 1 file changed, 121 insertions(+), 119 deletions(-) diff --git a/cmd/upload/run.go b/cmd/upload/run.go index 9b9d8284..d023c249 100644 --- a/cmd/upload/run.go +++ b/cmd/upload/run.go @@ -2,14 +2,15 @@ package upload import ( "context" + "errors" "fmt" - "strings" + "path" "github.com/gdamore/tcell/v2" "github.com/simulot/immich-go/adapters" "github.com/simulot/immich-go/immich" "github.com/simulot/immich-go/internal/fileevent" - "github.com/simulot/immich-go/internal/stacking" + "github.com/simulot/immich-go/internal/metadata" ) func (app *UpCmd) run(ctx context.Context, adapter adapters.Adapter) error { @@ -99,7 +100,7 @@ func (app *UpCmd) getImmichAssets(ctx context.Context, updateFn progressUpdate) func (app *UpCmd) uploadLoop(ctx context.Context) error { var err error - assetChan, err := app.browser.Browse(ctx) + groupChan, err := app.browser.Browse(ctx) if err != nil { return err } @@ -109,41 +110,37 @@ assetLoop: case <-ctx.Done(): return ctx.Err() - case a, ok := <-assetChan: + case g, ok := <-groupChan: if !ok { break assetLoop } - if a.Err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, a.Err.Error()) - } else { - err = app.handleAsset(ctx, a) - if err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, a.Err.Error()) - } + err = app.handleGroup(ctx, g) + if err != nil { + return err } } } - if app.StackBurstPhotos || app.StackJpgWithRaw { - stacks := app.stacks.Stacks() - if len(stacks) > 0 { - app.Root.Log.Info("Creating stacks") - nextStack: - for _, s := range stacks { - switch { - case !app.StackBurstPhotos && s.StackType == stacking.StackBurst: - continue nextStack - case !app.StackJpgWithRaw && s.StackType == stacking.StackRawJpg: - continue nextStack - } - app.Root.Message(fmt.Sprintf("Stacking %s...", strings.Join(s.Names, ", "))) - err = app.Server.Immich.StackAssets(ctx, s.CoverID, s.IDs) - if err != nil { - app.Root.Log.Error(fmt.Sprintf("Can't stack images: %s", err)) - } - } - } - } + // if app.StackBurstPhotos || app.StackJpgWithRaw { + // stacks := app.stacks.Stacks() + // if len(stacks) > 0 { + // app.Root.Log.Info("Creating stacks") + // nextStack: + // for _, s := range stacks { + // switch { + // case !app.StackBurstPhotos && s.StackType == stacking.StackBurst: + // continue nextStack + // case !app.StackJpgWithRaw && s.StackType == stacking.StackRawJpg: + // continue nextStack + // } + // app.Root.Message(fmt.Sprintf("Stacking %s...", strings.Join(s.Names, ", "))) + // err = app.Server.Immich.StackAssets(ctx, s.CoverID, s.IDs) + // if err != nil { + // app.Root.Log.Error(fmt.Sprintf("Can't stack images: %s", err)) + // } + // } + // } + // } // if app.CreateAlbums || app.CreateAlbumAfterFolder || (app.KeepPartner && app.PartnerAlbum != "") || app.ImportIntoAlbum != "" { // app.Log.Info("Managing albums") @@ -172,7 +169,45 @@ assetLoop: return err } -func (app *UpCmd) handleAsset(ctx context.Context, a *adapters.LocalAssetFile) error { +func (app *UpCmd) handleGroup(ctx context.Context, g *adapters.AssetGroup) error { + var errGroup error + + // Upload assets from the group + for _, a := range g.Assets { + err := app.handleAsset(ctx, g, a) + errGroup = errors.Join(err) + } + if errGroup != nil { + return errGroup + } + + switch g.Kind { + case adapters.GroupKindMotionPhoto: + var imageAsset *adapters.LocalAssetFile + var videoAsset *adapters.LocalAssetFile + for _, a := range g.Assets { + switch app.Server.Immich.SupportedMedia().TypeFromExt(path.Ext(a.FileName)) { + case metadata.TypeImage: + imageAsset = a + case metadata.TypeVideo: + videoAsset = a + } + } + app.Jnl.Record(ctx, fileevent.LivePhoto, fileevent.AsFileAndName(imageAsset.FSys, imageAsset.FileName), "video", videoAsset.FileName) + _, err := app.Server.Immich.UpdateAsset(ctx, imageAsset.ID, immich.UpdAssetField{LivePhotoVideoID: videoAsset.ID}) + if err != nil { + app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, "error", err.Error()) + } + } + + // Manage albums + if len(g.Albums) > 0 { + app.manageGroupAlbums(ctx, g) + } + return nil +} + +func (app *UpCmd) handleAsset(ctx context.Context, g *adapters.AssetGroup, a *adapters.LocalAssetFile) error { defer func() { a.Close() // Close and clean resources linked to the local asset }() @@ -184,130 +219,102 @@ func (app *UpCmd) handleAsset(ctx context.Context, a *adapters.LocalAssetFile) e switch advice.Advice { case NotOnServer: // Upload and manage albums - ID, err := app.UploadAsset(ctx, a) - if err != nil { - return nil - } - app.manageAssetAlbum(ctx, ID, a) - + err = app.uploadAsset(ctx, a) + return err case SmallerOnServer: // Upload, manage albums and delete the server's asset - app.Jnl.Record(ctx, fileevent.UploadUpgraded, a, a.FileName, "reason", advice.Message) + app.Jnl.Record(ctx, fileevent.UploadUpgraded, fileevent.AsFileAndName(a.FSys, a.FileName), "reason", advice.Message) - // Get existing asset's albums, if any + // Remember existing asset's albums, if any for _, al := range advice.ServerAsset.Albums { - a.Albums = append(a.Albums, adapters.LocalAlbum{ + g.AddAlbum(adapters.LocalAlbum{ Title: al.AlbumName, Description: al.Description, }) } // Upload the superior asset - ID, err := app.UploadAsset(ctx, a) + err = app.uploadAsset(ctx, a) if err != nil { - return nil + return err } - app.manageAssetAlbum(ctx, ID, a) // delete the existing lower quality asset - err = app.Server.Immich.DeleteAssets(ctx, []string{ID}, true) + err = app.Server.Immich.DeleteAssets(ctx, []string{advice.ServerAsset.ID}, true) if err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, "error", err.Error()) + app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, "error", err.Error()) } + return err - case SameOnServer: // manage albums - // Set add the server asset into albums determined locally - if !advice.ServerAsset.JustUploaded { - app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, a, a.FileName, "reason", advice.Message) - } else { - app.Jnl.Record(ctx, fileevent.AnalysisLocalDuplicate, a, a.FileName) + case SameOnServer: + a.ID = advice.ServerAsset.ID + for _, al := range advice.ServerAsset.Albums { + g.AddAlbum(adapters.LocalAlbum{ + Title: al.AlbumName, + Description: al.Description, + }) } - app.manageAssetAlbum(ctx, advice.ServerAsset.ID, a) + app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, fileevent.AsFileAndName(a.FSys, a.FileName), "reason", advice.Message) case BetterOnServer: // and manage albums - app.Jnl.Record(ctx, fileevent.UploadServerBetter, a, a.FileName, "reason", advice.Message) - app.manageAssetAlbum(ctx, advice.ServerAsset.ID, a) + app.Jnl.Record(ctx, fileevent.UploadServerBetter, fileevent.AsFileAndName(a.FSys, a.FileName), "reason", advice.Message) } return nil } -// manageAssetAlbum adds the asset to all albums it should be in. +func (app *UpCmd) uploadAsset(ctx context.Context, a *adapters.LocalAssetFile) error { + ar, err := app.Server.Immich.AssetUpload(ctx, a) + if err != nil { + app.Jnl.Record(ctx, fileevent.UploadServerError, fileevent.AsFileAndName(a.FSys, a.FileName), "error", err.Error()) + return err // Must signal the error to the caller + } + if ar.Status == immich.UploadDuplicate { + app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, fileevent.AsFileAndName(a.FSys, a.FileName), "info", "the server has this file") + } else { + app.Jnl.Record(ctx, fileevent.Uploaded, fileevent.AsFileAndName(a.FSys, a.FileName)) + } + a.ID = ar.ID + return nil +} + +// manageGroupAlbums add the assets to the albums listed in the group. // If an album does not exist, it is created. // Errors are logged. -func (app *UpCmd) manageAssetAlbum(ctx context.Context, id string, a *adapters.LocalAssetFile) { - addedTo := map[string]bool{} +func (app *UpCmd) manageGroupAlbums(ctx context.Context, g *adapters.AssetGroup) { + assetIDs := []string{} + for _, a := range g.Assets { + assetIDs = append(assetIDs, a.ID) + } - for _, album := range a.Albums { - if addedTo[album.Title] { - continue - } + for _, album := range g.Albums { title := album.Title l, exist := app.albums[title] if !exist { - newAl, err := app.Server.Immich.CreateAlbum(ctx, title, album.Description, []string{id}) + newAl, err := app.Server.Immich.CreateAlbum(ctx, title, album.Description, assetIDs) if err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, err) - continue + app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, err) + return } - app.Jnl.Record(ctx, fileevent.UploadAddToAlbum, a, a.FileName, "Album", newAl.AlbumName) app.albums[title] = &newAl l = &newAl } else { - _, err := app.Server.Immich.AddAssetToAlbum(ctx, l.ID, []string{id}) + _, err := app.Server.Immich.AddAssetToAlbum(ctx, l.ID, assetIDs) if err != nil { - app.Jnl.Record(ctx, fileevent.Error, a, a.FileName, err) - continue + app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, err) + return } - app.Jnl.Record(ctx, fileevent.UploadAddToAlbum, a, a.FileName, "Album", l.AlbumName) } - addedTo[l.AlbumName] = true - } -} - -// func (app *UpCmd) isInAlbum(a *adapters.LocalAssetFile, album string) bool { -// for _, al := range a.Albums { -// if app.albumName(al) == album { -// return true -// } -// } -// return false -// } - -// UploadAsset upload the asset on the server -// Add the assets into listed albums -// return ID of the asset -func (app *UpCmd) UploadAsset(ctx context.Context, a *adapters.LocalAssetFile) (string, error) { - var resp, liveResp immich.AssetResponse - var err error - if a.LivePhoto != nil { - liveResp, err = app.Server.Immich.AssetUpload(ctx, a.LivePhoto) - if err == nil { - if liveResp.Status == immich.UploadDuplicate { - app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, a.LivePhoto, a.LivePhoto.FileName, "info", "the server has this file") - } else { - app.Jnl.Record(ctx, fileevent.Uploaded, a.LivePhoto, a.LivePhoto.FileName) - } - a.LivePhotoID = liveResp.ID - } else { - app.Jnl.Record(ctx, fileevent.UploadServerError, a.LivePhoto, a.LivePhoto.FileName, "error", err.Error()) - } - } - b := *a // Keep a copy of the asset to log errors specifically on the image - resp, err = app.Server.Immich.AssetUpload(ctx, a) - if err == nil { - if resp.Status == immich.UploadDuplicate { - app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, a, a.FileName, "info", "the server has this file") - } else { - b.LivePhoto = nil - app.Jnl.Record(ctx, fileevent.Uploaded, &b, b.FileName, "capture date", b.Metadata.DateTaken.String()) + // Log the action + for _, a := range g.Assets { + app.Jnl.Record(ctx, fileevent.UploadAddToAlbum, fileevent.AsFileAndName(a.FSys, a.FileName), "Album", title) } - } else { - app.Jnl.Record(ctx, fileevent.UploadServerError, a, a.FileName, "error", err.Error()) - return "", err } +} - return resp.ID, nil +func (app *UpCmd) DeleteServerAssets(ctx context.Context, ids []string) error { + app.Root.Message(fmt.Sprintf("%d server assets to delete.", len(ids))) + return app.Server.Immich.DeleteAssets(ctx, ids, false) } /* @@ -328,8 +335,3 @@ func (app *UpCmd) DeleteLocalAssets() error { return nil } */ - -func (app *UpCmd) DeleteServerAssets(ctx context.Context, ids []string) error { - app.Root.Message(fmt.Sprintf("%d server assets to delete.", len(ids))) - return app.Server.Immich.DeleteAssets(ctx, ids, false) -} From a6bbf5b59e0d0a2473704921d17586f5f541d063 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 29 Sep 2024 19:12:15 +0200 Subject: [PATCH 026/252] Refactor file browsing in upload command to use asset groups --- adapters/googlePhotos/googlephotos.go | 1 + cmd/upload/advice.go | 2 +- cmd/upload/assets.go | 6 +++--- cmd/upload/noui.go | 9 ++++++--- cmd/upload/run.go | 16 ++++++---------- cmd/upload/ui.go | 13 ++++++++----- cmd/upload/upload.go | 13 +++++-------- 7 files changed, 30 insertions(+), 30 deletions(-) diff --git a/adapters/googlePhotos/googlephotos.go b/adapters/googlePhotos/googlephotos.go index 97b28af9..96c12d45 100644 --- a/adapters/googlePhotos/googlephotos.go +++ b/adapters/googlePhotos/googlephotos.go @@ -83,6 +83,7 @@ func NewTakeout(ctx context.Context, l *fileevent.Recorder, flags *ImportFlags, // Prepare scans all files in all walker to build the file catalog of the archive // metadata files content is read and kept +// return a channel of asset groups after the puzzle is solved func (to *Takeout) Browse(ctx context.Context) (chan *adapters.AssetGroup, error) { for _, w := range to.fsyss { diff --git a/cmd/upload/advice.go b/cmd/upload/advice.go index 4c2203f3..26e7484d 100644 --- a/cmd/upload/advice.go +++ b/cmd/upload/advice.go @@ -125,7 +125,7 @@ func (ai *AssetIndex) ShouldUpload(la *adapters.LocalAssetFile) (*Advice, error) } if len(l) > 0 { - dateTaken := la.Metadata.DateTaken + dateTaken := la.CaptureDate size := int(la.Size()) for _, sa = range l { diff --git a/cmd/upload/assets.go b/cmd/upload/assets.go index 1dadc5ea..689028e4 100644 --- a/cmd/upload/assets.go +++ b/cmd/upload/assets.go @@ -47,9 +47,9 @@ func (ai *AssetIndex) AddLocalAsset(la *adapters.LocalAssetFile, immichID string OriginalFileName: strings.TrimSuffix(path.Base(la.Title), path.Ext(la.Title)), ExifInfo: immich.ExifInfo{ FileSizeInByte: int(la.Size()), - DateTimeOriginal: immich.ImmichTime{Time: la.Metadata.DateTaken}, - Latitude: la.Metadata.Latitude, - Longitude: la.Metadata.Longitude, + DateTimeOriginal: immich.ImmichTime{Time: la.CaptureDate}, + Latitude: la.Latitude, + Longitude: la.Longitude, }, JustUploaded: true, } diff --git a/cmd/upload/noui.go b/cmd/upload/noui.go index 98c4e2f8..194ac002 100644 --- a/cmd/upload/noui.go +++ b/cmd/upload/noui.go @@ -8,6 +8,7 @@ import ( "sync/atomic" "time" + "github.com/simulot/immich-go/adapters" "github.com/simulot/immich-go/internal/fileevent" "golang.org/x/sync/errgroup" ) @@ -85,6 +86,8 @@ func (app *UpCmd) runNoUI(ctx context.Context) error { uiGrp.Go(func() error { processGrp := errgroup.Group{} + var groupChan chan *adapters.AssetGroup + var err error processGrp.Go(func() error { // Get immich asset @@ -99,13 +102,13 @@ func (app *UpCmd) runNoUI(ctx context.Context) error { }) processGrp.Go(func() error { // Run Prepare - err := app.browser.Prepare(ctx) + groupChan, err = app.browser.Browse(ctx) if err != nil { cancel(err) } return err }) - err := processGrp.Wait() + err = processGrp.Wait() if err != nil { err := context.Cause(ctx) if err != nil { @@ -114,7 +117,7 @@ func (app *UpCmd) runNoUI(ctx context.Context) error { } } preparationDone.Store(true) - err = app.uploadLoop(ctx) + err = app.uploadLoop(ctx, groupChan) if err != nil { cancel(err) } diff --git a/cmd/upload/run.go b/cmd/upload/run.go index d023c249..799e557c 100644 --- a/cmd/upload/run.go +++ b/cmd/upload/run.go @@ -47,7 +47,7 @@ func (app *UpCmd) run(ctx context.Context, adapter adapters.Adapter) error { func (app *UpCmd) getImmichAlbums(ctx context.Context) error { serverAlbums, err := app.Server.Immich.GetAllAlbums(ctx) - app.albums = map[string]*immich.AlbumSimplified{} + app.albums = map[string]immich.AlbumSimplified{} if err != nil { return fmt.Errorf("can't get the album list from the server: %w", err) } @@ -56,7 +56,7 @@ func (app *UpCmd) getImmichAlbums(ctx context.Context) error { case <-ctx.Done(): return ctx.Err() default: - app.albums[a.AlbumName] = &a + app.albums[a.AlbumName] = a } } return nil @@ -98,12 +98,8 @@ func (app *UpCmd) getImmichAssets(ctx context.Context, updateFn progressUpdate) return nil } -func (app *UpCmd) uploadLoop(ctx context.Context) error { +func (app *UpCmd) uploadLoop(ctx context.Context, groupChan chan *adapters.AssetGroup) error { var err error - groupChan, err := app.browser.Browse(ctx) - if err != nil { - return err - } assetLoop: for { select { @@ -295,8 +291,8 @@ func (app *UpCmd) manageGroupAlbums(ctx context.Context, g *adapters.AssetGroup) app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, err) return } - app.albums[title] = &newAl - l = &newAl + app.albums[title] = newAl + l = newAl } else { _, err := app.Server.Immich.AddAssetToAlbum(ctx, l.ID, assetIDs) if err != nil { @@ -313,7 +309,7 @@ func (app *UpCmd) manageGroupAlbums(ctx context.Context, g *adapters.AssetGroup) } func (app *UpCmd) DeleteServerAssets(ctx context.Context, ids []string) error { - app.Root.Message(fmt.Sprintf("%d server assets to delete.", len(ids))) + app.Root.Message("%d server assets to delete.", len(ids)) return app.Server.Immich.DeleteAssets(ctx, ids, false) } diff --git a/cmd/upload/ui.go b/cmd/upload/ui.go index 204c2f62..6dd28ff8 100644 --- a/cmd/upload/ui.go +++ b/cmd/upload/ui.go @@ -13,6 +13,7 @@ import ( "github.com/gdamore/tcell/v2" "github.com/navidys/tvxwidgets" "github.com/rivo/tview" + "github.com/simulot/immich-go/adapters" "github.com/simulot/immich-go/internal/fileevent" "golang.org/x/sync/errgroup" ) @@ -156,17 +157,19 @@ func (app *UpCmd) runUI(ctx context.Context) error { // start the processes uiGroup.Go(func() error { + var groupChan chan *adapters.AssetGroup + var err error processGrp := errgroup.Group{} processGrp.Go(func() error { // Get immich asset - err := app.getImmichAssets(ctx, ui.updateImmichReading) + err = app.getImmichAssets(ctx, ui.updateImmichReading) if err != nil { stopUI(err) } return err }) processGrp.Go(func() error { - err := app.getImmichAlbums(ctx) + err = app.getImmichAlbums(ctx) if err != nil { stopUI(err) } @@ -174,7 +177,7 @@ func (app *UpCmd) runUI(ctx context.Context) error { }) processGrp.Go(func() error { // Run Prepare - err := app.browser.Prepare(ctx) + groupChan, err = app.browser.Browse(ctx) if err != nil { stopUI(err) } @@ -182,14 +185,14 @@ func (app *UpCmd) runUI(ctx context.Context) error { }) // Wait the end of the preparation: immich assets, albums and first browsing - err := processGrp.Wait() + err = processGrp.Wait() if err != nil { return context.Cause(ctx) } preparationDone.Store(true) // we can upload assets - err = app.uploadLoop(ctx) + err = app.uploadLoop(ctx, groupChan) if err != nil { return context.Cause(ctx) } diff --git a/cmd/upload/upload.go b/cmd/upload/upload.go index 4b0804d0..d9def501 100644 --- a/cmd/upload/upload.go +++ b/cmd/upload/upload.go @@ -8,18 +8,15 @@ import ( "github.com/simulot/immich-go/adapters" "github.com/simulot/immich-go/adapters/folder" gp "github.com/simulot/immich-go/adapters/googlePhotos" - "github.com/simulot/immich-go/internal/fileevent" - "github.com/simulot/immich-go/internal/stacking" - - // gp "github.com/simulot/immich-go/adapters/googlePhotos" "github.com/simulot/immich-go/cmd" "github.com/simulot/immich-go/immich" + "github.com/simulot/immich-go/internal/fileevent" "github.com/spf13/cobra" ) type UpCmd struct { UploadCmd *cobra.Command // The import command - Jnl *fileevent.Recorder // File event recorder + Jnl *fileevent.Recorder // File event recorder Root *cmd.RootImmichFlags // global flags Server *cmd.ImmichServerFlags // server flags attached to the import command *CommonFlags // Common flags between import sub-commands @@ -29,13 +26,13 @@ type UpCmd struct { AssetIndex *AssetIndex // List of assets present on the server deleteServerList []*immich.Asset // List of server assets to remove // deleteLocalList []*adapters.LocalAssetFile // List of local assets to remove - stacks *stacking.StackBuilder + // stacks *stacking.StackBuilder browser adapters.Adapter DebugCounters bool // Enable CSV action counters per file // fsyss []fs.FS // pseudo file system to browse - Paths []string // Path to explore - albums map[string]*immich.AlbumSimplified // Albums by title + Paths []string // Path to explore + albums map[string]immich.AlbumSimplified // Albums by title } func AddCommand(root *cmd.RootImmichFlags) { From 2169d985d0d67aef9c7d26bae9d465b819f8f9a0 Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 30 Sep 2024 10:41:06 +0200 Subject: [PATCH 027/252] Refactor date handling flags in AddDateHandlingFlags function default is DateMethodNameThenExif --- internal/cliFlags/dateFromNames.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/cliFlags/dateFromNames.go b/internal/cliFlags/dateFromNames.go index cecba3e4..792e5de6 100644 --- a/internal/cliFlags/dateFromNames.go +++ b/internal/cliFlags/dateFromNames.go @@ -50,7 +50,7 @@ type DateHandlingFlags struct { } func AddDateHandlingFlags(cmd *cobra.Command, flags *DateHandlingFlags) { - flags.Method = DateMethodNameThenExif + flags.Method = DateMethodExifThenName _ = flags.FilenameTimeZone.Set("Local") cmd.Flags().Var(&flags.Method, "capture-date-method", "Specify the method to determine the capture date when not provided in a sidecar file. Options: NONE (do not attempt to determine), FILENAME (extract from filename), EXIF (extract from EXIF metadata), FILENAME-EXIF (try filename first, then EXIF), EXIF-FILENAME (try EXIF first, then filename)") From a5937da594eb7b1b970e7f7725cecf3d3e56c12a Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 30 Sep 2024 18:38:53 +0200 Subject: [PATCH 028/252] Refactor logging in Recorder.Report() --- internal/fileevent/fileevents.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/internal/fileevent/fileevents.go b/internal/fileevent/fileevents.go index 1f3ec176..5623e675 100644 --- a/internal/fileevent/fileevents.go +++ b/internal/fileevent/fileevents.go @@ -43,7 +43,8 @@ const ( UploadServerDuplicate // = "Server has photo" UploadServerBetter // = "Server's asset is better" UploadAlbumCreated - UploadAddToAlbum // = "Added to an album" + UploadAddToAlbum // = "Added to an album" + UploadLi UploadServerError // = "Server error" Uploaded // = "Uploaded" @@ -175,9 +176,11 @@ func (r *Recorder) Report() { } { sb.WriteString(fmt.Sprintf("%-40s: %7d\n", c.String(), r.counts[c])) } - - r.log.Info(sb.String()) fmt.Println(sb.String()) + lines := strings.Split(sb.String(), "\n") + for _, s := range lines { + r.log.Info(s) + } } func (r *Recorder) GetCounts() []int64 { From fbaf9dd240c0dede196fcf721a49085edcc30476 Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 30 Sep 2024 18:40:48 +0200 Subject: [PATCH 029/252] Refactor Open() - Add functionality to list the flags and arguments used in the command to provide more context in the logs. --- cmd/rootCmd.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/cmd/rootCmd.go b/cmd/rootCmd.go index 3473487d..e0882b77 100644 --- a/cmd/rootCmd.go +++ b/cmd/rootCmd.go @@ -10,6 +10,7 @@ import ( "github.com/simulot/immich-go/helpers/configuration" "github.com/simulot/immich-go/ui" "github.com/spf13/cobra" + "github.com/spf13/pflag" "github.com/telemachus/humane" ) @@ -44,7 +45,7 @@ type RootImmichFlags struct { Level slog.Level // Set the log level } -func (app *RootImmichFlags) Open() error { +func (app *RootImmichFlags) Open(cmd *cobra.Command) error { fmt.Println(app.Banner.String()) var w io.WriteCloser if app.LogFile != "" { @@ -70,6 +71,22 @@ func (app *RootImmichFlags) Open() error { app.LogWriterCloser = w app.Log.Info(app.Banner.Version()) + // List flags + app.Log.Info("Flags:") + cmd.Flags().VisitAll(func(flag *pflag.Flag) { + val := flag.Value.String() + // if flag.Name == "key" { + // val = "********" + // } + app.Log.Info(fmt.Sprintf(" --%s: %q", flag.Name, val)) + }) + + // List arguments + app.Log.Info("Arguments:") + for _, arg := range cmd.Flags().Args() { + app.Log.Info(fmt.Sprintf(" %q", arg)) + } + return nil } From e226463ee8f826a98047f0aff502549b785fa07c Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 30 Sep 2024 18:42:44 +0200 Subject: [PATCH 030/252] Refactor Open() in cmdFolder.go to use cmdFolder as a parameter --- cmd/upload/cmdFolder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/upload/cmdFolder.go b/cmd/upload/cmdFolder.go index 2ec8e9b4..4d7f9bcc 100644 --- a/cmd/upload/cmdFolder.go +++ b/cmd/upload/cmdFolder.go @@ -46,7 +46,7 @@ func addFromFolderCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImmichFla ctx := cmd.Context() - err := UpCmd.Root.Open() + err := UpCmd.Root.Open(cmdFolder) if err != nil { return err } From dd6e25299eb68a47620eb62b321dbbf1b5598a19 Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 30 Sep 2024 18:42:57 +0200 Subject: [PATCH 031/252] Refactor Open() in cmdFolder.go to use cmdFolder as a parameter --- cmd/upload/cmdGooglePhotos.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/upload/cmdGooglePhotos.go b/cmd/upload/cmdGooglePhotos.go index df4b06c3..9ce37147 100644 --- a/cmd/upload/cmdGooglePhotos.go +++ b/cmd/upload/cmdGooglePhotos.go @@ -34,7 +34,7 @@ func addFromGooglePhotosCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImm } ctx := cmdGP.Context() - err := UpCmd.Root.Open() + err := UpCmd.Root.Open(cmdGP) if err != nil { return err } From 1e95c5661a9a6727ee2a3ec3ec19c639d0dec61c Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 30 Sep 2024 18:43:08 +0200 Subject: [PATCH 032/252] Refactor Open() in cmdFolder.go to use cmdFolder as a parameter --- cmd/stack/stack.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/stack/stack.go b/cmd/stack/stack.go index 48ce2f9d..5d2cc2ef 100644 --- a/cmd/stack/stack.go +++ b/cmd/stack/stack.go @@ -44,7 +44,7 @@ func AddCommand(root *cmd.RootImmichFlags) { func (app *StackCmd) run(cmd *cobra.Command, args []string) error { ctx := cmd.Context() - err := app.RootImmichFlags.Open() + err := app.RootImmichFlags.Open(cmd) if err != nil { return err } From 027b8ec8ccd25fb9712e519b98478d2aae78739a Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 30 Sep 2024 20:51:29 +0200 Subject: [PATCH 033/252] Refactor Open() in cmdFolder.go to use cmdFolder as a parameter and bind flags to environment variables --- cmd/immichSeverFlags.go | 10 ++++++++++ go.mod | 21 ++++++++++++++++++++- go.sum | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) diff --git a/cmd/immichSeverFlags.go b/cmd/immichSeverFlags.go index 14efda5a..a094e15f 100644 --- a/cmd/immichSeverFlags.go +++ b/cmd/immichSeverFlags.go @@ -12,6 +12,7 @@ import ( "github.com/simulot/immich-go/immich" "github.com/simulot/immich-go/internal/tzone" "github.com/spf13/cobra" + "github.com/spf13/viper" ) // ImmichServerFlags provides all flags to establish a connection with an immich server @@ -40,6 +41,7 @@ func AddImmichServerFlagSet(cmd *cobra.Command, rootFlags *RootImmichFlags) *Imm flags := ImmichServerFlags{} // Server flags are available for sub commands flags.DeviceUUID, _ = os.Hostname() + cmd.Flags().StringVarP(&flags.Server, "server", "s", flags.Server, "Immich server address (example http://your-ip:2283 or https://your-domain)") cmd.Flags().StringVar(&flags.API, "api", flags.API, "Immich api endpoint (example http://container_ip:3301)") cmd.Flags().StringVarP(&flags.Key, "key", "k", flags.Key, "API Key") @@ -64,6 +66,14 @@ func AddImmichServerFlagSet(cmd *cobra.Command, rootFlags *RootImmichFlags) *Imm func (SrvFlags *ImmichServerFlags) Open(rootFlags *RootImmichFlags) error { var err error + // Bind the Server flag with the environment variable IMMICH_HOST + viper.BindEnv("server", "IMMICH_HOST") + SrvFlags.Server = viper.GetString("server") + + // Bind the Key flag with the environment variable IMMICH_KEY + viper.BindEnv("key", "IMMICH_KEY") + SrvFlags.Key = viper.GetString("key") + if SrvFlags.Server != "" && SrvFlags.API != "" { err = errors.Join(err, errors.New(`flags 'server' and 'api' are mutually exclusive`)) } diff --git a/go.mod b/go.mod index f05560e1..7c185c0a 100644 --- a/go.mod +++ b/go.mod @@ -21,6 +21,24 @@ require ( golang.org/x/sync v0.8.0 ) +require ( + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + go.uber.org/atomic v1.9.0 // indirect + go.uber.org/multierr v1.9.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) + require ( github.com/gdamore/encoding v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -33,7 +51,8 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/crypto v0.17.0 // indirect + github.com/spf13/viper v1.19.0 + golang.org/x/crypto v0.21.0 // indirect golang.org/x/sys v0.20.0 // indirect golang.org/x/term v0.20.0 // indirect golang.org/x/text v0.15.0 // indirect diff --git a/go.sum b/go.sum index fdf850fc..61bac438 100644 --- a/go.sum +++ b/go.sum @@ -5,6 +5,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/gdamore/tcell/v2 v2.7.4 h1:sg6/UnTM9jGpZU+oFYAsDahfchWAFW8Xx2yFinNSAYU= @@ -20,6 +22,8 @@ github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQN github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= @@ -32,16 +36,22 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/melbahja/goph v1.4.0 h1:z0PgDbBFe66lRYl3v5dGb9aFgPy0kotuQ37QOwSQFqs= github.com/melbahja/goph v1.4.0/go.mod h1:uG+VfK2Dlhk+O32zFrRlc3kYKTlV6+BtvPWd/kK7U68= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/navidys/tvxwidgets v0.7.0 h1:ls5tikzqXnsHwAAV/8zwnRwx/DvSybepUih9txkwjwE= github.com/navidys/tvxwidgets v0.7.0/go.mod h1:hzFnllDl4o2Ten/67T0F8ZgC1NiLrZYqWxLVjxWu+zo= github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -63,17 +73,35 @@ github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/f github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/telemachus/humane v0.6.0 h1:JNT5SWeg8pOHTRo3STy24E247LpQYBy2vxD2HwYwyvU= github.com/telemachus/humane v0.6.0/go.mod h1:T2XzA97m+JPk/WDe9VHamk/JOArXlOy4jlIGDKte3ic= github.com/thlib/go-timezone-local v0.0.3 h1:ie5XtZWG5lQ4+1MtC5KZ/FeWlOKzW2nPoUnXYUbV/1s= @@ -81,6 +109,10 @@ github.com/thlib/go-timezone-local v0.0.3/go.mod h1:/Tnicc6m/lsJE0irFMA0LfIwTBo4 github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31 h1:OXcKh35JaYsGMRzpvFkLv/MEyPuL49CThT1pZ8aSml4= github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= @@ -88,6 +120,7 @@ golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -143,6 +176,8 @@ golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 820073807a5fc4d28df0faf6b4a31c7eb06f470d Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 30 Sep 2024 21:17:19 +0200 Subject: [PATCH 034/252] Refactor Open() in cmdFolder.go to use cmdFolder as a parameter and bind flags to environment variables --- cmd/immichSeverFlags.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/cmd/immichSeverFlags.go b/cmd/immichSeverFlags.go index a094e15f..d66652a2 100644 --- a/cmd/immichSeverFlags.go +++ b/cmd/immichSeverFlags.go @@ -62,16 +62,19 @@ func AddImmichServerFlagSet(cmd *cobra.Command, rootFlags *RootImmichFlags) *Imm // Validate the flags and initialize the server as required // - fields fs.Server and fs.API are mutually exclusive // - either fields fs.Server or fs.API must be given -// - fs.Key is mandatory +// - Key is mandatory func (SrvFlags *ImmichServerFlags) Open(rootFlags *RootImmichFlags) error { var err error - // Bind the Server flag with the environment variable IMMICH_HOST - viper.BindEnv("server", "IMMICH_HOST") + if err := viper.BindEnv("server", "IMMICH_HOST"); err != nil { + return err + } SrvFlags.Server = viper.GetString("server") // Bind the Key flag with the environment variable IMMICH_KEY - viper.BindEnv("key", "IMMICH_KEY") + if err := viper.BindEnv("key", "IMMICH_KEY"); err != nil { + return err + } SrvFlags.Key = viper.GetString("key") if SrvFlags.Server != "" && SrvFlags.API != "" { @@ -110,8 +113,7 @@ func (SrvFlags *ImmichServerFlags) Open(rootFlags *RootImmichFlags) error { if SrvFlags.APITrace { if SrvFlags.APITraceWriter == nil { - err := configuration.MakeDirForFile(rootFlags.LogFile) - if err != nil { + if err := configuration.MakeDirForFile(rootFlags.LogFile); err != nil { return err } SrvFlags.APITraceWriterName = strings.TrimSuffix(rootFlags.LogFile, filepath.Ext(rootFlags.LogFile)) + ".trace.log" @@ -125,8 +127,7 @@ func (SrvFlags *ImmichServerFlags) Open(rootFlags *RootImmichFlags) error { } ctx := rootFlags.Command.Context() - err = SrvFlags.Immich.PingServer(ctx) - if err != nil { + if err := SrvFlags.Immich.PingServer(ctx); err != nil { return err } rootFlags.Message(`Server status: OK`) From 67d931299132e0dd68e65cdd0e572c46f6c8705a Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 08:55:17 +0200 Subject: [PATCH 035/252] =?UTF-8?q?Refactor=20Open()=20in=20cmdFolder.go?= =?UTF-8?q?=20to=20use=20cmdFolder=20as=20a=20parameter=20and=20bind=20fla?= =?UTF-8?q?gs=20to=20environment=20variables=20Refactor=20NewRecorder()=20?= =?UTF-8?q?in=20fileevents.go=20to=20remove=20debug=20parameter=20Refactor?= =?UTF-8?q?=20AddCommands()=20in=20commands.go=20to=20use=20context=20and?= =?UTF-8?q?=20application=20parameters=20Refactor=20.goreleaser.yaml=20to?= =?UTF-8?q?=20update=20ldflags=20for=20version=20and=20commit=20Refactor?= =?UTF-8?q?=20CommandTool()=20in=20tool.nogo=20to=20remove=20unused=20impo?= =?UTF-8?q?rts=20and=20update=20error=20message=20Refactor=20readFolder.go?= =?UTF-8?q?=20to=20update=20function=20signature=20and=20parameter=20names?= =?UTF-8?q?=20Refactor=20version.go=20to=20initialize=20version=20and=20co?= =?UTF-8?q?mmit=20at=20runtime=20Refactor=20banner.go=20to=20update=20bann?= =?UTF-8?q?er=20with=20version=20information=20Refactor=20flagsCommon.go?= =?UTF-8?q?=20to=20remove=20unused=20flags=20and=20function=20Refactor=20u?= =?UTF-8?q?pload/TEST=5FDATA/Takeout3/Photos=20from=202023/DSC=5F0238.JPG.?= =?UTF-8?q?json=20to=20update=20creationTime=20and=20photoTakenTime=20Refa?= =?UTF-8?q?ctor=20upload/TEST=5FDATA/Takeout3/Photos=20from=202023/DSC=5F0?= =?UTF-8?q?238=5F1.JPG.json=20to=20update=20creationTime=20and=20photoTake?= =?UTF-8?q?nTime=20Refactor=20upload/TEST=5FDATA/Takeout3/Photos=20from=20?= =?UTF-8?q?2023/DSC=5F0238.JPG(1).json=20to=20update=20creationTime=20and?= =?UTF-8?q?=20photoTakenTime=20Refactor=20upload/TEST=5FDATA/Takeout3/Phot?= =?UTF-8?q?os=20from=202023/DSC=5F0238.JPG=20to=20add=20new=20file=20Refac?= =?UTF-8?q?tor=20upload/TEST=5FDATA/Takeout3/Photos=20from=202023/DSC=5F02?= =?UTF-8?q?38=5F1.JPG=20to=20add=20new=20file=20Refactor=20upload/TEST=5FD?= =?UTF-8?q?ATA/Takeout3/Photos=20from=202023/DSC=5F0238(1).JPG=20to=20add?= =?UTF-8?q?=20new=20file=20Refactor=20upload/TEST=5FDATA/Takeout2/Google?= =?UTF-8?q?=20Photos/Sans=20titre(9)/m=C3=A9tadonn=C3=A9es.json=20to=20add?= =?UTF-8?q?=20new=20file=20Refactor=20upload/TEST=5FDATA/Takeout1/Google?= =?UTF-8?q?=20Photos/Album=20test=206-10-23/m=C3=A9tadonn=C3=A9es.json=20t?= =?UTF-8?q?o=20add=20new=20file=20Refactor=20cmdVersion/version.go=20to=20?= =?UTF-8?q?remove=20unused=20file=20Refactor=20version/version.go=20to=20u?= =?UTF-8?q?pdate=20version=20and=20commit=20initialization=20Refactor=20up?= =?UTF-8?q?load/TEST=5FDATA/Takeout3/Photos=20from=202023/DSC=5F0238.JPG.j?= =?UTF-8?q?son=20to=20update=20geoData=20Refactor=20upload/TEST=5FDATA/Tak?= =?UTF-8?q?eout3/Photos=20from=202023/DSC=5F0238=5F1.JPG.json=20to=20updat?= =?UTF-8?q?e=20geoData=20Refactor=20upload/TEST=5FDATA/Takeout3/Photos=20f?= =?UTF-8?q?rom=202023/DSC=5F0238.JPG(1).json=20to=20update=20geoData=20Ref?= =?UTF-8?q?actor=20upload/TEST=5FDATA/Takeout3/Photos=20from=202023/DSC=5F?= =?UTF-8?q?0238.JPG=20to=20update=20title=20and=20creationTime=20Refactor?= =?UTF-8?q?=20upload/TEST=5FDATA/Takeout3/Photos=20from=202023/DSC=5F0238?= =?UTF-8?q?=5F1.JPG=20to=20update=20title=20and=20creationTime=20Refactor?= =?UTF-8?q?=20upload/TEST=5FDATA/Takeout3/Photos=20from=202023/DSC=5F0238(?= =?UTF-8?q?1).JPG=20to=20update=20title=20and=20creationTime=20Refactor=20?= =?UTF-8?q?upload/TEST=5FDATA/Takeout2/Google=20Photos/Sans=20titre(9)/m?= =?UTF-8?q?=C3=A9tadonn=C3=A9es.json=20to=20update=20title=20and=20creatio?= =?UTF-8?q?nTime=20Refactor=20upload/TEST=5FDATA/Takeout1/Google=20Photos/?= =?UTF-8?q?Album=20test=206-10-23/m=C3=A9tadonn=C3=A9es.json=20to=20update?= =?UTF-8?q?=20title=20and=20creationTime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .goreleaser.yaml | 2 +- adapters/folder/e2e_readFolder_test.go | 14 +- adapters/folder/{flags.go => options.go} | 28 +- adapters/folder/readFolder.go | 4 +- adapters/folder/readFolder_test.go | 24 +- cmd/cmdVersion/version.go | 19 -- cmd/immichSeverFlags.go | 150 ---------- cmd/rootCmd.go | 273 ------------------ cmd/upload/flagsCommon.go | 25 -- {cmd => commands}/album/album.nogo | 0 commands/application/app.go | 54 ++++ commands/application/client.go | 148 ++++++++++ commands/application/log.go | 119 ++++++++ commands/commands.go | 15 + {cmd => commands}/duplicate/duplicate.nogo | 0 commands/immichSeverFlags.gono | 104 +++++++ {cmd => commands}/metadata/metadata.nogo | 0 commands/run.gono | 71 +++++ {cmd => commands}/stack/stack.go | 0 {cmd => commands}/tool/tool.nogo | 0 .../PXL_20231006_063000139.jpg | Bin .../PXL_20231006_063000139.jpg.json | 0 .../PXL_20231006_063029647.jpg | Bin .../PXL_20231006_063029647.jpg.json | 0 .../PXL_20231006_063108407.jpg | Bin .../PXL_20231006_063108407.jpg.json | 0 .../PXL_20231006_063121958.jpg | Bin .../PXL_20231006_063121958.jpg.json | 0 .../PXL_20231006_063357420.jpg | Bin .../PXL_20231006_063357420.jpg.json | 0 .../PXL_20231006_063536303.jpg | Bin .../PXL_20231006_063536303.jpg.json | 0 .../PXL_20231006_063851485.jpg | Bin .../PXL_20231006_063851485.jpg.json | 0 .../PXL_20231006_063909898.LS.mp4 | Bin .../PXL_20231006_063909898.LS.mp4.json | 0 .../m\303\251tadonn\303\251es.json" | 0 .../PXL_20231006_063000139.jpg | Bin .../PXL_20231006_063000139.jpg.json | 0 .../PXL_20231006_063528961.jpg | Bin .../PXL_20231006_063528961.jpg.json | 0 .../Sans titre(9)/PXL_20231006_063108407.jpg | Bin .../PXL_20231006_063108407.jpg.json | 0 .../m\303\251tadonn\303\251es.json" | 0 .../Takeout3/Photos from 2023/DSC_0238(1).JPG | 0 .../Takeout3/Photos from 2023/DSC_0238.JPG | 0 .../Photos from 2023/DSC_0238.JPG(1).json | 0 .../Photos from 2023/DSC_0238.JPG.json | 0 .../Takeout3/Photos from 2023/DSC_0238_1.JPG | 0 .../Photos from 2023/DSC_0238_1.JPG.json | 0 .../banned/PXL_20231006_063000139.jpg | Bin .../banned/PXL_20231006_063029647.jpg | Bin .../banned/PXL_20231006_063108407.jpg | Bin .../PXL_20231006_063121958 (another copy).jpg | Bin .../banned/PXL_20231006_063121958 (copy).jpg | Bin .../banned/PXL_20231006_063121958.jpg | Bin .../banned/backup/PXL_20231006_063357420.jpg | Bin .../banned/backup/PXL_20231006_063528961.jpg | Bin .../banned/backup/PXL_20231006_063536303.jpg | Bin .../banned/backup/PXL_20231006_063851485.jpg | Bin .../high/AlbumA/PXL_20231006_063000139.jpg | Bin .../high/AlbumA/PXL_20231006_063029647.jpg | Bin .../high/AlbumA/PXL_20231006_063108407.jpg | Bin .../high/AlbumA/PXL_20231006_063121958.jpg | Bin .../high/AlbumA/PXL_20231006_063357420.jpg | Bin .../high/AlbumB/PXL_20231006_063528961.jpg | Bin .../high/AlbumB/PXL_20231006_063536303.jpg | Bin .../high/AlbumB/PXL_20231006_063851485.jpg | Bin .../folder/low/PXL_20231006_063000139.jpg | Bin .../folder/low/PXL_20231006_063029647.jpg | Bin .../folder/low/PXL_20231006_063108407.jpg | Bin .../folder/low/PXL_20231006_063121958.jpg | Bin .../folder/low/PXL_20231006_063357420.jpg | Bin .../folder/low/PXL_20231006_063528961.jpg | Bin .../folder/low/PXL_20231006_063536303.jpg | Bin .../folder/low/PXL_20231006_063851485.jpg | Bin .../upload/TEST_DATA/nodate/NO_DATE.jpg | Bin {cmd => commands}/upload/advice.go | 0 {cmd => commands}/upload/assets.go | 0 .../upload/cmdFolder.gono | 9 +- .../upload/cmdGooglePhotos.gono | 0 commands/upload/command.go | 88 ++++++ .../upload/e2e_upload_folder_test.nogo | 0 .../noui.go => commands/upload/noui.gono | 0 cmd/upload/run.go => commands/upload/run.gono | 0 cmd/upload/ui.go => commands/upload/ui.gono | 0 .../upload.go => commands/upload/upload.gono | 0 {cmd => commands}/upload/upload_test.nogo | 0 commands/version/banner.go | 38 +++ commands/version/version.go | 40 +++ internal/fileevent/fileevents.go | 2 +- main.go | 151 +++------- ui/banner.go | 54 ---- 93 files changed, 743 insertions(+), 689 deletions(-) rename adapters/folder/{flags.go => options.go} (56%) delete mode 100644 cmd/cmdVersion/version.go delete mode 100644 cmd/immichSeverFlags.go delete mode 100644 cmd/rootCmd.go delete mode 100644 cmd/upload/flagsCommon.go rename {cmd => commands}/album/album.nogo (100%) create mode 100644 commands/application/app.go create mode 100644 commands/application/client.go create mode 100644 commands/application/log.go create mode 100644 commands/commands.go rename {cmd => commands}/duplicate/duplicate.nogo (100%) create mode 100644 commands/immichSeverFlags.gono rename {cmd => commands}/metadata/metadata.nogo (100%) create mode 100644 commands/run.gono rename {cmd => commands}/stack/stack.go (100%) rename {cmd => commands}/tool/tool.nogo (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063000139.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063000139.jpg.json (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063029647.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063029647.jpg.json (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063108407.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063108407.jpg.json (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063121958.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063121958.jpg.json (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063357420.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063357420.jpg.json (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063536303.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063536303.jpg.json (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063851485.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063851485.jpg.json (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063909898.LS.mp4 (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063909898.LS.mp4.json (100%) rename "cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/m\303\251tadonn\303\251es.json" => "commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/m\303\251tadonn\303\251es.json" (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063000139.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063000139.jpg.json (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063528961.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063528961.jpg.json (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/PXL_20231006_063108407.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/PXL_20231006_063108407.jpg.json (100%) rename "cmd/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/m\303\251tadonn\303\251es.json" => "commands/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/m\303\251tadonn\303\251es.json" (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238(1).JPG (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG(1).json (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG.json (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238_1.JPG (100%) rename {cmd => commands}/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238_1.JPG.json (100%) rename {cmd => commands}/upload/TEST_DATA/banned/PXL_20231006_063000139.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/banned/PXL_20231006_063029647.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/banned/PXL_20231006_063108407.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/banned/PXL_20231006_063121958 (another copy).jpg (100%) rename {cmd => commands}/upload/TEST_DATA/banned/PXL_20231006_063121958 (copy).jpg (100%) rename {cmd => commands}/upload/TEST_DATA/banned/PXL_20231006_063121958.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/banned/backup/PXL_20231006_063357420.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/banned/backup/PXL_20231006_063528961.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/banned/backup/PXL_20231006_063536303.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/banned/backup/PXL_20231006_063851485.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063000139.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063029647.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063108407.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063121958.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063357420.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063528961.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063536303.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063851485.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/low/PXL_20231006_063000139.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/low/PXL_20231006_063029647.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/low/PXL_20231006_063108407.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/low/PXL_20231006_063121958.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/low/PXL_20231006_063357420.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/low/PXL_20231006_063528961.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/low/PXL_20231006_063536303.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/folder/low/PXL_20231006_063851485.jpg (100%) rename {cmd => commands}/upload/TEST_DATA/nodate/NO_DATE.jpg (100%) rename {cmd => commands}/upload/advice.go (100%) rename {cmd => commands}/upload/assets.go (100%) rename cmd/upload/cmdFolder.go => commands/upload/cmdFolder.gono (88%) rename cmd/upload/cmdGooglePhotos.go => commands/upload/cmdGooglePhotos.gono (100%) create mode 100644 commands/upload/command.go rename {cmd => commands}/upload/e2e_upload_folder_test.nogo (100%) rename cmd/upload/noui.go => commands/upload/noui.gono (100%) rename cmd/upload/run.go => commands/upload/run.gono (100%) rename cmd/upload/ui.go => commands/upload/ui.gono (100%) rename cmd/upload/upload.go => commands/upload/upload.gono (100%) rename {cmd => commands}/upload/upload_test.nogo (100%) create mode 100644 commands/version/banner.go create mode 100644 commands/version/version.go delete mode 100644 ui/banner.go diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 80d7835c..5828d9d0 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -23,7 +23,7 @@ builds: flags: - -trimpath ldflags: - - '-s -w "-extldflags=-static" -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}} -X main.builtBy=goreleaser' + - '-s -w "-extldflags=-static" -X version.Version={{.Version}} -X version.Commit={{.Commit}} -X Version.Date={{.Date}} -X main.builtBy=goreleaser' archives: - format: tar.gz diff --git a/adapters/folder/e2e_readFolder_test.go b/adapters/folder/e2e_readFolder_test.go index 713aa7de..f32c1eb6 100644 --- a/adapters/folder/e2e_readFolder_test.go +++ b/adapters/folder/e2e_readFolder_test.go @@ -20,14 +20,14 @@ func TestE2ELocalAssets(t *testing.T) { tc := []struct { name string fsys []fs.FS - flags ImportFlags + flags ImportFolderOptions expectedFiles map[string]fileLinks expectedCounts []int64 expectedAlbums map[string][]string }{ { name: "easy", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, DateHandlingFlags: cliflags.DateHandlingFlags{ Method: cliflags.DateMethodNone, @@ -49,7 +49,7 @@ func TestE2ELocalAssets(t *testing.T) { }, { name: "date on name", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, DateHandlingFlags: cliflags.DateHandlingFlags{ Method: cliflags.DateMethodName, @@ -71,7 +71,7 @@ func TestE2ELocalAssets(t *testing.T) { }, { name: "select exif date not using exiftool", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, DateHandlingFlags: cliflags.DateHandlingFlags{ Method: cliflags.DateMethodEXIF, @@ -98,7 +98,7 @@ func TestE2ELocalAssets(t *testing.T) { }, { name: "select exif date using exiftool", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, DateHandlingFlags: cliflags.DateHandlingFlags{ Method: cliflags.DateMethodEXIF, @@ -125,7 +125,7 @@ func TestE2ELocalAssets(t *testing.T) { }, { name: "select exif date using exiftool then date", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, DateHandlingFlags: cliflags.DateHandlingFlags{ Method: cliflags.DateMethodExifThenName, @@ -153,7 +153,7 @@ func TestE2ELocalAssets(t *testing.T) { }, { name: "select on date in the name", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, DateHandlingFlags: cliflags.DateHandlingFlags{ Method: cliflags.DateMethodName, diff --git a/adapters/folder/flags.go b/adapters/folder/options.go similarity index 56% rename from adapters/folder/flags.go rename to adapters/folder/options.go index 7c8cfea6..4da0ed4e 100644 --- a/adapters/folder/flags.go +++ b/adapters/folder/options.go @@ -7,11 +7,10 @@ import ( cliflags "github.com/simulot/immich-go/internal/cliFlags" "github.com/simulot/immich-go/internal/metadata" "github.com/simulot/immich-go/internal/namematcher" - "github.com/spf13/cobra" ) -// ImportFlags represents the flags used for importing assets from a file system. -type ImportFlags struct { +// ImportFolderOptions represents the flags used for importing assets from a file system. +type ImportFolderOptions struct { // UsePathAsAlbumName determines whether to create albums based on the full path to the asset. UsePathAsAlbumName AlbumFolderMode @@ -43,29 +42,6 @@ type ImportFlags struct { SupportedMedia metadata.SupportedMedia } -func AddUploadFolderFlags(cmd *cobra.Command, flags *ImportFlags) { - flags.BannedFiles, _ = namematcher.New( - `@eaDir/`, - `@__thumb/`, // QNAP - `SYNOFILE_THUMB_*.*`, // SYNOLOGY - `Lightroom Catalog/`, // LR - `thumbnails/`, // Android photo - `.DS_Store/`, // Mac OS custom attributes - ) - flags.UsePathAsAlbumName = FolderModeNone - - cmd.Flags().StringVar(&flags.ImportIntoAlbum, "into-album", "", "Specify an album to import all files into") - cmd.Flags().Var(&flags.UsePathAsAlbumName, "folder-as-album", "Import all files in albums defined by the folder structure. Can be set to 'FOLDER' to use the folder name as the album name, or 'PATH' to use the full path as the album name") - cmd.Flags().StringVar(&flags.AlbumNamePathSeparator, "album-path-joiner", " / ", "Specify a string to use when joining multiple folder names to create an album name (e.g. ' ',' - ')") - cmd.Flags().BoolVar(&flags.Recursive, "recursive", true, "Explore the folder and all its sub-folders") - cmd.Flags().Var(&flags.BannedFiles, "ban-file", "Exclude a file based on a pattern (case-insensitive). Can be specified multiple times.") - cmd.Flags().BoolVar(&flags.IgnoreSideCarFiles, "ignore-sidecar-files", false, "Don't upload sidecar with the photo.") - cliflags.AddInclusionFlags(cmd, &flags.InclusionFlags) - cliflags.AddDateHandlingFlags(cmd, &flags.DateHandlingFlags) - metadata.AddExifToolFlags(cmd, &flags.ExifToolFlags) - flags.SupportedMedia = metadata.DefaultSupportedMedia -} - // AlbumFolderMode represents the mode in which album folders are organized. // Implement the interface pflag.Value diff --git a/adapters/folder/readFolder.go b/adapters/folder/readFolder.go index a6be18f2..a466a0e3 100644 --- a/adapters/folder/readFolder.go +++ b/adapters/folder/readFolder.go @@ -27,11 +27,11 @@ type LocalAssetBrowser struct { albums map[string]string catalogs map[fs.FS]map[string][]string log *fileevent.Recorder - flags *ImportFlags + flags *ImportFolderOptions exiftool *metadata.ExifTool } -func NewLocalFiles(ctx context.Context, l *fileevent.Recorder, flags *ImportFlags, fsyss ...fs.FS) (*LocalAssetBrowser, error) { +func NewLocalFiles(ctx context.Context, l *fileevent.Recorder, flags *ImportFolderOptions, fsyss ...fs.FS) (*LocalAssetBrowser, error) { if flags.ImportIntoAlbum != "" && flags.UsePathAsAlbumName != FolderModeNone { return nil, errors.New("cannot use both --into-album and --folder-as-album") } diff --git a/adapters/folder/readFolder_test.go b/adapters/folder/readFolder_test.go index 2d54883c..0e9b14a3 100644 --- a/adapters/folder/readFolder_test.go +++ b/adapters/folder/readFolder_test.go @@ -51,14 +51,14 @@ func TestLocalAssets(t *testing.T) { tc := []struct { name string fsys []fs.FS - flags ImportFlags + flags ImportFolderOptions expectedFiles map[string]fileLinks expectedCounts []int64 expectedAlbums map[string][]string }{ { name: "easy", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, }, fsys: []fs.FS{ @@ -72,7 +72,7 @@ func TestLocalAssets(t *testing.T) { }, { name: "recursive", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, Recursive: true, }, @@ -89,7 +89,7 @@ func TestLocalAssets(t *testing.T) { }, { name: "non-recursive", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, Recursive: false, }, @@ -105,7 +105,7 @@ func TestLocalAssets(t *testing.T) { }, { name: "banned files", - flags: ImportFlags{ + flags: ImportFolderOptions{ BannedFiles: namematcher.MustList(`@eaDir/`, `.@__thumb`, `SYNOFILE_THUMB_*.*`, "BLOG/", "*/Database/*"), SupportedMedia: metadata.DefaultSupportedMedia, DateHandlingFlags: cliflags.DateHandlingFlags{ @@ -145,7 +145,7 @@ func TestLocalAssets(t *testing.T) { }, { name: "excluded extensions", - flags: ImportFlags{ + flags: ImportFolderOptions{ BannedFiles: namematcher.MustList(`@eaDir/`, `.@__thumb`, `SYNOFILE_THUMB_*.*`), SupportedMedia: metadata.DefaultSupportedMedia, DateHandlingFlags: cliflags.DateHandlingFlags{ @@ -181,7 +181,7 @@ func TestLocalAssets(t *testing.T) { }, { name: "included extensions", - flags: ImportFlags{ + flags: ImportFolderOptions{ BannedFiles: namematcher.MustList(`@eaDir/`, `.@__thumb`, `SYNOFILE_THUMB_*.*`), SupportedMedia: metadata.DefaultSupportedMedia, DateHandlingFlags: cliflags.DateHandlingFlags{ @@ -214,7 +214,7 @@ func TestLocalAssets(t *testing.T) { }, { name: "motion picture", - flags: ImportFlags{ + flags: ImportFolderOptions{ BannedFiles: namematcher.MustList(`@eaDir/`, `.@__thumb`, `SYNOFILE_THUMB_*.*`), SupportedMedia: metadata.DefaultSupportedMedia, DateHandlingFlags: cliflags.DateHandlingFlags{ @@ -243,7 +243,7 @@ func TestLocalAssets(t *testing.T) { { name: "sidecar", - flags: ImportFlags{ + flags: ImportFolderOptions{ BannedFiles: namematcher.MustList(`@eaDir/`, `.@__thumb`, `SYNOFILE_THUMB_*.*`), DateHandlingFlags: cliflags.DateHandlingFlags{ Method: cliflags.DateMethodNone, @@ -277,7 +277,7 @@ func TestLocalAssets(t *testing.T) { }, { name: "date in range", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, DateHandlingFlags: cliflags.DateHandlingFlags{ Method: cliflags.DateMethodName, @@ -311,7 +311,7 @@ func TestLocalAssets(t *testing.T) { { name: "path as album name", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, UsePathAsAlbumName: FolderModePath, AlbumNamePathSeparator: " ¤ ", @@ -350,7 +350,7 @@ func TestLocalAssets(t *testing.T) { }, { name: "folder as album name", - flags: ImportFlags{ + flags: ImportFolderOptions{ SupportedMedia: metadata.DefaultSupportedMedia, UsePathAsAlbumName: FolderModeFolder, AlbumNamePathSeparator: " ¤ ", diff --git a/cmd/cmdVersion/version.go b/cmd/cmdVersion/version.go deleted file mode 100644 index 4412ee6e..00000000 --- a/cmd/cmdVersion/version.go +++ /dev/null @@ -1,19 +0,0 @@ -package cmdVersion - -import ( - "fmt" - - "github.com/simulot/immich-go/cmd" - "github.com/spf13/cobra" -) - -func AddCommand(root *cmd.RootImmichFlags, version string, commit string, date string) { - versionCmd := &cobra.Command{ - Use: "version", - Short: "Print the version number of Immich", - Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("immich-go %s, commit %s, built at %s\n", version, commit, date) - }, - } - root.Command.AddCommand(versionCmd) -} diff --git a/cmd/immichSeverFlags.go b/cmd/immichSeverFlags.go deleted file mode 100644 index d66652a2..00000000 --- a/cmd/immichSeverFlags.go +++ /dev/null @@ -1,150 +0,0 @@ -package cmd - -import ( - "errors" - "io" - "os" - "path/filepath" - "strings" - "time" - - "github.com/simulot/immich-go/helpers/configuration" - "github.com/simulot/immich-go/immich" - "github.com/simulot/immich-go/internal/tzone" - "github.com/spf13/cobra" - "github.com/spf13/viper" -) - -// ImmichServerFlags provides all flags to establish a connection with an immich server -type ImmichServerFlags struct { - Server string // Immich server address (http://:2283/api or https:///api) - API string // Immich api endpoint (http://container_ip:3301) - Key string // API Key - APITrace bool // Enable API call traces - SkipSSL bool // Skip SSL Verification - ClientTimeout time.Duration // Set the client request timeout - DeviceUUID string // Set a device UUID - DryRun bool // Protect the server from changes - TimeZone string // Override default TZ - - // Jnl *fileevent.Recorder // Program's logger - APITraceWriter io.WriteCloser // API tracer - APITraceWriterName string // API trace log name - Immich immich.ImmichInterface // Immich client - - // NoUI bool // Disable user interface - // DebugFileList bool // When true, the file argument is a file wile the list of Takeout files -} - -// NewImmichServerFlagSet add server flags to the command cmd -func AddImmichServerFlagSet(cmd *cobra.Command, rootFlags *RootImmichFlags) *ImmichServerFlags { - flags := ImmichServerFlags{} - // Server flags are available for sub commands - flags.DeviceUUID, _ = os.Hostname() - - cmd.Flags().StringVarP(&flags.Server, "server", "s", flags.Server, "Immich server address (example http://your-ip:2283 or https://your-domain)") - cmd.Flags().StringVar(&flags.API, "api", flags.API, "Immich api endpoint (example http://container_ip:3301)") - cmd.Flags().StringVarP(&flags.Key, "key", "k", flags.Key, "API Key") - cmd.Flags().BoolVar(&flags.APITrace, "api-trace", false, "Enable trace of api calls") - cmd.Flags().BoolVar(&flags.SkipSSL, "skip-verify-ssl", false, "Skip SSL verification") - cmd.Flags().DurationVar(&flags.ClientTimeout, "client-timeout", 5*time.Minute, "Set server calls timeout") - cmd.Flags().StringVar(&flags.DeviceUUID, "device-uuid", flags.DeviceUUID, "Set a device UUID") - cmd.Flags().BoolVar(&flags.DryRun, "dry-run", false, "Simulate all actions") - cmd.Flags().StringVar(&flags.TimeZone, "time-zone", flags.TimeZone, "Override the system time zone") - - cmd.PostRunE = func(cmd *cobra.Command, args []string) error { - return flags.Close(rootFlags) - } - return &flags -} - -// Initialize the ImmichServerFlags flagset -// Validate the flags and initialize the server as required -// - fields fs.Server and fs.API are mutually exclusive -// - either fields fs.Server or fs.API must be given -// - Key is mandatory -func (SrvFlags *ImmichServerFlags) Open(rootFlags *RootImmichFlags) error { - var err error - // Bind the Server flag with the environment variable IMMICH_HOST - if err := viper.BindEnv("server", "IMMICH_HOST"); err != nil { - return err - } - SrvFlags.Server = viper.GetString("server") - - // Bind the Key flag with the environment variable IMMICH_KEY - if err := viper.BindEnv("key", "IMMICH_KEY"); err != nil { - return err - } - SrvFlags.Key = viper.GetString("key") - - if SrvFlags.Server != "" && SrvFlags.API != "" { - err = errors.Join(err, errors.New(`flags 'server' and 'api' are mutually exclusive`)) - } - if SrvFlags.Server == "" && SrvFlags.API == "" { - err = errors.Join(err, errors.New(`either 'server' or 'api' flag must be provided`)) - } - if SrvFlags.Key == "" { - err = errors.Join(err, errors.New(`flag 'key' is mandatory`)) - } - if SrvFlags.TimeZone != "" { - if _, e := tzone.SetLocal(SrvFlags.TimeZone); e != nil { - err = errors.Join(err, e) - } - } - if err != nil { - return err - } - - rootFlags.Message(`Connection to the server %s`, SrvFlags.Server) - SrvFlags.Immich, err = immich.NewImmichClient(SrvFlags.Server, SrvFlags.Key, - immich.OptionVerifySSL(SrvFlags.SkipSSL), - immich.OptionConnectionTimeout(SrvFlags.ClientTimeout), - immich.OptionDryRun(SrvFlags.DryRun), - ) - if err != nil { - return err - } - if SrvFlags.API != "" { - SrvFlags.Immich.SetEndPoint(SrvFlags.API) - } - if SrvFlags.DeviceUUID != "" { - SrvFlags.Immich.SetDeviceUUID(SrvFlags.DeviceUUID) - } - - if SrvFlags.APITrace { - if SrvFlags.APITraceWriter == nil { - if err := configuration.MakeDirForFile(rootFlags.LogFile); err != nil { - return err - } - SrvFlags.APITraceWriterName = strings.TrimSuffix(rootFlags.LogFile, filepath.Ext(rootFlags.LogFile)) + ".trace.log" - SrvFlags.APITraceWriter, err = os.OpenFile(SrvFlags.APITraceWriterName, os.O_CREATE|os.O_WRONLY, 0o664) - if err != nil { - return err - } - SrvFlags.Immich.EnableAppTrace(SrvFlags.APITraceWriter) - rootFlags.Message("API log file: %s", SrvFlags.APITraceWriterName) - } - } - - ctx := rootFlags.Command.Context() - if err := SrvFlags.Immich.PingServer(ctx); err != nil { - return err - } - rootFlags.Message(`Server status: OK`) - - user, err := SrvFlags.Immich.ValidateConnection(ctx) - if err != nil { - return err - } - rootFlags.Message(`Connected, user: %s`, user.Email) - - return err -} - -func (flags *ImmichServerFlags) Close(rootFlags *RootImmichFlags) error { - if flags.APITrace { - flags.APITraceWriter.Close() - rootFlags.Message("Check the API traces files %s", flags.APITraceWriterName) - } - return rootFlags.Close() -} diff --git a/cmd/rootCmd.go b/cmd/rootCmd.go deleted file mode 100644 index e0882b77..00000000 --- a/cmd/rootCmd.go +++ /dev/null @@ -1,273 +0,0 @@ -package cmd - -import ( - "fmt" - "io" - "log/slog" - "os" - "strings" - - "github.com/simulot/immich-go/helpers/configuration" - "github.com/simulot/immich-go/ui" - "github.com/spf13/cobra" - "github.com/spf13/pflag" - "github.com/telemachus/humane" -) - -func CreateRootCommand(b ui.Banner) *RootImmichFlags { - rootFlags := RootImmichFlags{ - Command: &cobra.Command{ - Use: "immich-go", - Short: "Immich-go is a command line application to interact with the Immich application using its API", - Long: `An alternative to the immich-CLI command that doesn't depend on nodejs installation. It tries its best for importing google photos takeout archives.`, - }, - Banner: b, - } - - rootFlags.Command.PersistentFlags().StringVar(&rootFlags.ConfigurationFile, "use-configuration", rootFlags.ConfigurationFile, "Specifies the configuration to use") - rootFlags.Command.PersistentFlags().StringVar(&rootFlags.LogLevel, "log-level", "INFO", "Log level (DEBUG|INFO|WARN|ERROR), default INFO") - rootFlags.Command.PersistentFlags().StringVar(&rootFlags.LogFile, "log-file", configuration.DefaultLogFile(), "Write log messages into the file") - rootFlags.Command.PersistentFlags().BoolVar(&rootFlags.JSONLog, "log-json", false, "Output line-delimited JSON file, default FALSE") - - return &rootFlags -} - -// RootImmichFlags is the root command flags -type RootImmichFlags struct { - Command *cobra.Command // Cobra root command - ConfigurationFile string // Path to the configuration file to use - JSONLog bool // Enable JSON structured log - Banner ui.Banner // Immich-go banner - Log *slog.Logger // Logger - LogFile string // Log file name - LogWriterCloser io.WriteCloser // the log writer - LogLevel string // Indicate the log level (string) - Level slog.Level // Set the log level -} - -func (app *RootImmichFlags) Open(cmd *cobra.Command) error { - fmt.Println(app.Banner.String()) - var w io.WriteCloser - if app.LogFile != "" { - if app.LogWriterCloser == nil { - err := configuration.MakeDirForFile(app.LogFile) - if err != nil { - return err - } - w, err = os.OpenFile(app.LogFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o664) - if err != nil { - return err - } - err = app.Level.UnmarshalText([]byte(strings.ToUpper(app.LogLevel))) - if err != nil { - return err - } - app.Message("Log file: %s", app.LogFile) - } - } else { - w = os.Stdout - } - app.SetLogWriter(w) - app.LogWriterCloser = w - app.Log.Info(app.Banner.Version()) - - // List flags - app.Log.Info("Flags:") - cmd.Flags().VisitAll(func(flag *pflag.Flag) { - val := flag.Value.String() - // if flag.Name == "key" { - // val = "********" - // } - app.Log.Info(fmt.Sprintf(" --%s: %q", flag.Name, val)) - }) - - // List arguments - app.Log.Info("Arguments:") - for _, arg := range cmd.Flags().Args() { - app.Log.Info(fmt.Sprintf(" %q", arg)) - } - - return nil -} - -func (app *RootImmichFlags) SetLogWriter(w io.Writer) { - var handler slog.Handler - if app.JSONLog { - handler = slog.NewJSONHandler(w, &slog.HandlerOptions{}) - } else { - handler = humane.NewHandler(w, &humane.Options{Level: app.Level}) - } - app.Log = slog.New(handler) -} - -func (app *RootImmichFlags) Message(msg string, values ...any) { - s := fmt.Sprintf(msg, values...) - fmt.Println(s) - if app.Log != nil { - app.Log.Info(s) - } -} - -func (app *RootImmichFlags) Close() error { - if app.LogFile != "" { - app.Message("Check the log file: %s", app.LogFile) - } - return nil -} - -/* - -func (app *RootImmichFlags) InitSharedFlags() { - app.ConfigurationFile = configuration.DefaultConfigFile() - app.LogFile = configuration.DefaultLogFile() - app.APITrace = false - app.Debug = false - app.SkipSSL = false - app.LogLevel = "INFO" - app.NoUI = false - app.JSONLog = false - app.ClientTimeout = 5 * time.Minute -} - -// // SetFlag add common flags to a flagset -// func (app *ImmichServerFlags) SetFlags(fs *flag.FlagSet) { -// fs.StringVar(&app.ConfigurationFile, "use-configuration", app.ConfigurationFile, "Specifies the configuration to use") -// fs.StringVar(&app.Server, "server", app.Server, "Immich server address (http://:2283 or https://)") -// fs.StringVar(&app.API, "api", app.API, "Immich api endpoint (http://container_ip:3301)") -// fs.StringVar(&app.Key, "key", app.Key, "API Key") -// fs.StringVar(&app.DeviceUUID, "device-uuid", app.DeviceUUID, "Set a device UUID") -// fs.StringVar(&app.LogLevel, "log-level", app.LogLevel, "Log level (DEBUG|INFO|WARN|ERROR), default INFO") -// fs.StringVar(&app.LogFile, "log-file", app.LogFile, "Write log messages into the file") -// fs.BoolFunc("log-json", "Output line-delimited JSON file, default FALSE", myflag.BoolFlagFn(&app.JSONLog, app.JSONLog)) -// fs.BoolFunc("api-trace", "enable trace of api calls", myflag.BoolFlagFn(&app.APITrace, app.APITrace)) -// fs.BoolFunc("debug", "enable debug messages", myflag.BoolFlagFn(&app.Debug, app.Debug)) -// fs.StringVar(&app.TimeZone, "time-zone", app.TimeZone, "Override the system time zone") -// fs.BoolFunc("skip-verify-ssl", "Skip SSL verification", myflag.BoolFlagFn(&app.SkipSSL, app.SkipSSL)) -// fs.BoolFunc("no-ui", "Disable the user interface", myflag.BoolFlagFn(&app.NoUI, app.NoUI)) -// fs.Func("client-timeout", "Set server calls timeout, default 1m", myflag.DurationFlagFn(&app.ClientTimeout, app.ClientTimeout)) -// fs.BoolFunc("debug-counters", "generate a CSV file with actions per handled files", myflag.BoolFlagFn(&app.DebugCounters, false)) -// } - -func (app *RootImmichFlags) Start(ctx context.Context) error { - var joinedErr error - if app.Server != "" { - app.Server = strings.TrimSuffix(app.Server, "/") - } - if app.TimeZone != "" { - _, err := tzone.SetLocal(app.TimeZone) - joinedErr = errors.Join(joinedErr, err) - } - - if app.Jnl == nil { - app.Jnl = fileevent.NewRecorder(nil, app.DebugCounters) - } - - if app.DebugFileList { - app.Immich = &fakeimmich.MockedCLient{} - _ = os.Remove(app.LogFile) - } - - if app.LogFile != "" { - if app.LogWriterCloser == nil { - err := configuration.MakeDirForFile(app.LogFile) - if err != nil { - return err - } - f, err := os.OpenFile(app.LogFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o664) - if err != nil { - return err - } - err = app.Level.UnmarshalText([]byte(strings.ToUpper(app.LogLevel))) - if err != nil { - return err - } - app.SetLogWriter(f) - app.LogWriterCloser = f - } - } - - // If the client isn't yet initialized - if app.Immich == nil { - if app.Server == "" && app.API == "" && app.Key == "" { - conf, err := configuration.ConfigRead(app.ConfigurationFile) - confExist := err == nil - if confExist && app.Server == "" && app.Key == "" && app.API == "" { - app.Server = conf.ServerURL - app.Key = conf.APIKey - app.API = conf.APIURL - } - } - - switch { - case app.Server == "" && app.API == "": - joinedErr = errors.Join(joinedErr, errors.New("missing -server, Immich server address (http://:2283 or https://)")) - case app.Server != "" && app.API != "": - joinedErr = errors.Join(joinedErr, errors.New("give either the -server or the -api option")) - } - if app.Key == "" { - joinedErr = errors.Join(joinedErr, errors.New("missing -key")) - } - - if joinedErr != nil { - return joinedErr - } - - // Connection details are saved into the configuration file - conf := configuration.Configuration{ - ServerURL: app.Server, - APIKey: app.Key, - APIURL: app.API, - } - err := configuration.MakeDirForFile(app.ConfigurationFile) - if err != nil { - return err - } - err = conf.Write(app.ConfigurationFile) - if err != nil { - return fmt.Errorf("can't write into the configuration file: %w", err) - } - app.Log.Info("Connection to the server " + app.Server) - - app.Immich, err = immich.NewImmichClient(app.Server, app.Key, immich.OptionVerifySSL(app.SkipSSL), immich.OptionConnectionTimeout(app.ClientTimeout)) - if err != nil { - return err - } - if app.API != "" { - app.Immich.SetEndPoint(app.API) - } - if app.DeviceUUID != "" { - app.Immich.SetDeviceUUID(app.DeviceUUID) - } - - if app.APITrace { - if app.APITraceWriter == nil { - err := configuration.MakeDirForFile(app.LogFile) - if err != nil { - return err - } - app.APITraceWriterName = strings.TrimSuffix(app.LogFile, filepath.Ext(app.LogFile)) + ".trace.log" - app.APITraceWriter, err = os.OpenFile(app.APITraceWriterName, os.O_CREATE|os.O_WRONLY, 0o664) - if err != nil { - return err - } - app.Immich.EnableAppTrace(app.APITraceWriter) - } - } - - err = app.Immich.PingServer(ctx) - if err != nil { - return err - } - app.Log.Info("Server status: OK") - - user, err := app.Immich.ValidateConnection(ctx) - if err != nil { - return err - } - app.Log.Info(fmt.Sprintf("Connected, user: %s", user.Email)) - } - - return nil -} - -*/ diff --git a/cmd/upload/flagsCommon.go b/cmd/upload/flagsCommon.go deleted file mode 100644 index b608c456..00000000 --- a/cmd/upload/flagsCommon.go +++ /dev/null @@ -1,25 +0,0 @@ -package upload - -import ( - "github.com/simulot/immich-go/internal/fileevent" - "github.com/spf13/cobra" -) - -// CommonFlags represents a set of common flags used for filtering assets. -type CommonFlags struct { - NoUI bool // Disable UI - StackJpgWithRaw bool // Stack jpg/raw (Default: TRUE) - StackBurstPhotos bool // Stack burst (Default: TRUE) - - Jnl *fileevent.Recorder // Log file events -} - -// addCommonFlags adds the common flags to a Cobra command. -func addCommonFlags(cmd *cobra.Command) *CommonFlags { - flags := CommonFlags{} - - cmd.Flags().BoolVar(&flags.NoUI, "no-ui", false, "Disable the user interface") - cmd.Flags().BoolVar(&flags.StackJpgWithRaw, "stack-jpg-with-raw", false, "Stack JPG images with their corresponding raw images in Immich") - cmd.Flags().BoolVar(&flags.StackBurstPhotos, "stack-burst-photos", false, "Stack bursts of photos in Immich") - return &flags -} diff --git a/cmd/album/album.nogo b/commands/album/album.nogo similarity index 100% rename from cmd/album/album.nogo rename to commands/album/album.nogo diff --git a/commands/application/app.go b/commands/application/app.go new file mode 100644 index 00000000..0400ac3b --- /dev/null +++ b/commands/application/app.go @@ -0,0 +1,54 @@ +package application + +import ( + "context" + + "github.com/spf13/cobra" +) + +type ( + RunE func(cmd *cobra.Command, args []string) error + RunEAdaptor func(ctx context.Context, cmd *cobra.Command, app *Application) error +) + +// Application holds configuration used by commands +type Application struct { + client Client + log Log + + // TODO manage configuration file + // ConfigurationFile string // Path to the configuration file to use +} + +func New(ctx context.Context, cmd *cobra.Command) *Application { + // application's context + app := &Application{} + // app.PersistentFlags().StringVar(&app.ConfigurationFile, "use-configuration", app.ConfigurationFile, "Specifies the configuration to use") + AddLogFlags(ctx, cmd, app) + return app +} + +func (app *Application) Client() *Client { + return &app.client +} + +func (app *Application) Log() *Log { + return &app.log +} + +func ChainRunEFunctions(prev RunE, fn RunEAdaptor, ctx context.Context, cmd *cobra.Command, app *Application) RunE { + if prev == nil { + return func(cmd *cobra.Command, args []string) error { + return fn(ctx, cmd, app) + } + } + return func(cmd *cobra.Command, args []string) error { + if prev != nil { + err := prev(cmd, args) + if err != nil { + return err + } + } + return fn(ctx, cmd, app) + } +} diff --git a/commands/application/client.go b/commands/application/client.go new file mode 100644 index 00000000..b7221893 --- /dev/null +++ b/commands/application/client.go @@ -0,0 +1,148 @@ +package application + +import ( + "context" + "errors" + "fmt" + "io" + "os" + "path/filepath" + "strings" + "time" + + "github.com/simulot/immich-go/helpers/configuration" + "github.com/simulot/immich-go/immich" + "github.com/simulot/immich-go/internal/tzone" + "github.com/spf13/cobra" +) + +type Client struct { + Server string // Immich server address (http://:2283/api or https:///api) + API string // Immich api endpoint (http://container_ip:3301) + APIKey string // API Key + APITrace bool // Enable API call traces + SkipSSL bool // Skip SSL Verification + ClientTimeout time.Duration // Set the client request timeout + DeviceUUID string // Set a device UUID + DryRun bool // Protect the server from changes + TimeZone string // Override default TZ + + APITraceWriter io.WriteCloser // API tracer + APITraceWriterName string // API trace log name + Immich immich.ImmichInterface // Immich client + + // NoUI bool // Disable user interface + // DebugFileList bool // When true, the file argument is a file wile the list of Takeout files +} + +// add server flags to the command cmd +func AddClientFlags(ctx context.Context, cmd *cobra.Command, app *Application) { + client := app.Client() + client.DeviceUUID, _ = os.Hostname() + + cmd.PersistentFlags().StringVarP(&client.Server, "server", "s", client.Server, "Immich server address (example http://your-ip:2283 or https://your-domain)") + cmd.PersistentFlags().StringVar(&client.API, "api", "", "Immich api endpoint (example http://container_ip:3301)") + cmd.PersistentFlags().StringVarP(&client.APIKey, "api-key", "k", "", "API Key") + cmd.PersistentFlags().BoolVar(&client.APITrace, "api-trace", false, "Enable trace of api calls") + cmd.PersistentFlags().BoolVar(&client.SkipSSL, "skip-verify-ssl", false, "Skip SSL verification") + cmd.PersistentFlags().DurationVar(&client.ClientTimeout, "client-timeout", 5*time.Minute, "Set server calls timeout") + cmd.PersistentFlags().StringVar(&client.DeviceUUID, "device-uuid", client.DeviceUUID, "Set a device UUID") + cmd.PersistentFlags().BoolVar(&client.DryRun, "dry-run", false, "Simulate all actions") + cmd.PersistentFlags().StringVar(&client.TimeZone, "time-zone", client.TimeZone, "Override the system time zone") + + cmd.PersistentPreRunE = ChainRunEFunctions(cmd.PersistentPreRunE, StartClient, ctx, cmd, app) +} + +func StartClient(ctx context.Context, cmd *cobra.Command, app *Application) error { + client := app.Client() + log := app.Log() + + var joinedErr error + if client.Server != "" { + client.Server = strings.TrimSuffix(client.Server, "/") + } + if client.TimeZone != "" { + _, err := tzone.SetLocal(client.TimeZone) + joinedErr = errors.Join(joinedErr, err) + } + + // Plug the journal on the Log + if log.File != "" { + if log.writerCloser == nil { + err := configuration.MakeDirForFile(log.File) + if err != nil { + return err + } + f, err := os.OpenFile(log.File, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o664) + if err != nil { + return err + } + err = log.sLevel.UnmarshalText([]byte(strings.ToUpper(log.Level))) + if err != nil { + return err + } + log.SetLogWriter(f) + log.writerCloser = f + } + } + + // If the client isn't yet initialized + if client.Immich == nil { + switch { + case client.Server == "" && client.API == "": + joinedErr = errors.Join(joinedErr, errors.New("missing --server, Immich server address (http://:2283 or https://)")) + case client.Server != "" && client.API != "": + joinedErr = errors.Join(joinedErr, errors.New("give either the --server or the --api option")) + } + if client.APIKey == "" { + joinedErr = errors.Join(joinedErr, errors.New("missing --API-key")) + } + + if joinedErr != nil { + return joinedErr + } + + log.Info("Connection to the server " + client.Server) + + var err error + client.Immich, err = immich.NewImmichClient(client.Server, client.APIKey, immich.OptionVerifySSL(client.SkipSSL), immich.OptionConnectionTimeout(client.ClientTimeout)) + if err != nil { + return err + } + if client.API != "" { + client.Immich.SetEndPoint(client.API) + } + if client.DeviceUUID != "" { + client.Immich.SetDeviceUUID(client.DeviceUUID) + } + + if client.APITrace { + if client.APITraceWriter == nil { + err := configuration.MakeDirForFile(log.File) + if err != nil { + return err + } + client.APITraceWriterName = strings.TrimSuffix(log.File, filepath.Ext(log.File)) + ".trace.log" + client.APITraceWriter, err = os.OpenFile(client.APITraceWriterName, os.O_CREATE|os.O_WRONLY, 0o664) + if err != nil { + return err + } + client.Immich.EnableAppTrace(client.APITraceWriter) + } + } + + err = client.Immich.PingServer(ctx) + if err != nil { + return err + } + log.Info("Server status: OK") + + user, err := client.Immich.ValidateConnection(ctx) + if err != nil { + return err + } + log.Info(fmt.Sprintf("Connected, user: %s", user.Email)) + } + + return nil +} diff --git a/commands/application/log.go b/commands/application/log.go new file mode 100644 index 00000000..dc217826 --- /dev/null +++ b/commands/application/log.go @@ -0,0 +1,119 @@ +package application + +import ( + "context" + "fmt" + "io" + "log/slog" + "os" + "strings" + + "github.com/simulot/immich-go/commands/version" + "github.com/simulot/immich-go/helpers/configuration" + "github.com/spf13/cobra" + "github.com/spf13/pflag" + "github.com/spf13/viper" + "github.com/telemachus/humane" +) + +type Log struct { + *slog.Logger // Logger + + Type string // Log format : text|json + File string // Log file name + Level string // Indicate the log level (string) + + writerCloser io.WriteCloser // the log writer + sLevel slog.Level // the log level value +} + +func AddLogFlags(ctx context.Context, cmd *cobra.Command, app *Application) { + log := app.Log() + cmd.PersistentFlags().StringVar(&log.Level, "log-level", "INFO", "Log level (DEBUG|INFO|WARN|ERROR), default INFO") + cmd.PersistentFlags().StringVarP(&log.File, "log-file", "l", "", "Write log messages into the file") + cmd.PersistentFlags().StringVar(&log.Type, "log-type", "text", "Log formatted as text of JSON file") + + cmd.PersistentPreRunE = ChainRunEFunctions(cmd.PersistentPreRunE, log.Open, ctx, cmd, app) +} + +func (log *Log) Open(ctx context.Context, cmd *cobra.Command, app *Application) error { + fmt.Println(version.Banner()) + var w io.WriteCloser + + if log.File == "" { + log.File = configuration.DefaultLogFile() + } + if log.File != "" { + if log.writerCloser == nil { + err := configuration.MakeDirForFile(log.File) + if err != nil { + return err + } + w, err = os.OpenFile(log.File, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o664) + if err != nil { + return err + } + err = log.sLevel.UnmarshalText([]byte(strings.ToUpper(log.Level))) + if err != nil { + return err + } + log.Message("Log file: %s", log.File) + } + } else { + w = os.Stdout + } + log.SetLogWriter(w) + log.writerCloser = w + log.Info(version.GetVersion()) + + // List flags + log.Info(fmt.Sprintf("Command: %s", cmd.Use)) + log.Info("Flags:") + cmd.Flags().VisitAll(func(flag *pflag.Flag) { + val := flag.Value.String() + if val == "" { + if v := viper.GetString(flag.Name); v != "" { + val = v + } + } + // if flag.Name == "key" { + // val = "********" + // } + log.Info(fmt.Sprintf(" --%s: %q", flag.Name, val)) + }) + + // List arguments + log.Info("Arguments:") + for _, arg := range cmd.Flags().Args() { + log.Info(fmt.Sprintf(" %q", arg)) + } + + return nil +} + +func (log *Log) SetLogWriter(w io.Writer) { + var handler slog.Handler + + switch log.Type { + case "JSON": + handler = slog.NewJSONHandler(w, &slog.HandlerOptions{}) + default: + handler = humane.NewHandler(w, &humane.Options{Level: log.sLevel}) + } + log.Logger = slog.New(handler) +} + +func (log *Log) Message(msg string, values ...any) { + s := fmt.Sprintf(msg, values...) + fmt.Println(s) + if log.Logger != nil { + log.Info(s) + } +} + +func (log *Log) Close(cmd *cobra.Command, args []string) error { + if log.File != "" { + log.Message("Check the log file: %s", log.File) + } + return nil +} diff --git a/commands/commands.go b/commands/commands.go new file mode 100644 index 00000000..ba3e5af6 --- /dev/null +++ b/commands/commands.go @@ -0,0 +1,15 @@ +package commands + +import ( + "context" + + "github.com/simulot/immich-go/commands/application" + "github.com/simulot/immich-go/commands/upload" + "github.com/spf13/cobra" +) + +func AddCommands(cmd *cobra.Command, ctx context.Context, app *application.Application) { + cmd.AddCommand( + upload.NewUploadCommand(ctx, app), + ) +} diff --git a/cmd/duplicate/duplicate.nogo b/commands/duplicate/duplicate.nogo similarity index 100% rename from cmd/duplicate/duplicate.nogo rename to commands/duplicate/duplicate.nogo diff --git a/commands/immichSeverFlags.gono b/commands/immichSeverFlags.gono new file mode 100644 index 00000000..cb0e423e --- /dev/null +++ b/commands/immichSeverFlags.gono @@ -0,0 +1,104 @@ +package commands + +import ( + "errors" + "os" + "path/filepath" + "strings" + + "github.com/simulot/immich-go/helpers/configuration" + "github.com/simulot/immich-go/immich" + "github.com/simulot/immich-go/internal/tzone" + "github.com/spf13/viper" +) + +// Initialize the ImmichServerFlags flagset +// Validate the flags and initialize the server as required +// - fields fs.Server and fs.API are mutually exclusive +// - either fields fs.Server or fs.API must be given +// - Key is mandatory +func (SrvFlags *ImmichServerFlags) Open(rootFlags *Application) error { + var err error + // Bind the Server flag with the environment variable IMMICH_SERVER + if err := viper.BindEnv("server", "IMMICH_SERVER"); err != nil { + return err + } + SrvFlags.Server = viper.GetString("server") + + // Bind the Key flag with the environment variable IMMICH_KEY + if err := viper.BindEnv("api-key", "IMMICH_APIKEY"); err != nil { + return err + } + SrvFlags.APIKey = viper.GetString("api-key") + + if SrvFlags.Server != "" && SrvFlags.API != "" { + err = errors.Join(err, errors.New(`flags '--server' and '--api' are mutually exclusive`)) + } + if SrvFlags.Server == "" && SrvFlags.API == "" { + err = errors.Join(err, errors.New(`either '--server' or '--api' flag must be provided`)) + } + if SrvFlags.APIKey == "" { + err = errors.Join(err, errors.New(`flag '--api-key' is mandatory`)) + } + if SrvFlags.TimeZone != "" { + if _, e := tzone.SetLocal(SrvFlags.TimeZone); e != nil { + err = errors.Join(err, e) + } + } + if err != nil { + return err + } + + rootFlags.Message(`Connection to the server %s`, SrvFlags.Server) + SrvFlags.Immich, err = immich.NewImmichClient(SrvFlags.Server, SrvFlags.APIKey, + immich.OptionVerifySSL(SrvFlags.SkipSSL), + immich.OptionConnectionTimeout(SrvFlags.ClientTimeout), + immich.OptionDryRun(SrvFlags.DryRun), + ) + if err != nil { + return err + } + if SrvFlags.API != "" { + SrvFlags.Immich.SetEndPoint(SrvFlags.API) + } + if SrvFlags.DeviceUUID != "" { + SrvFlags.Immich.SetDeviceUUID(SrvFlags.DeviceUUID) + } + + if SrvFlags.APITrace { + if SrvFlags.APITraceWriter == nil { + if err := configuration.MakeDirForFile(rootFlags.LogFile); err != nil { + return err + } + SrvFlags.APITraceWriterName = strings.TrimSuffix(rootFlags.LogFile, filepath.Ext(rootFlags.LogFile)) + ".trace.log" + SrvFlags.APITraceWriter, err = os.OpenFile(SrvFlags.APITraceWriterName, os.O_CREATE|os.O_WRONLY, 0o664) + if err != nil { + return err + } + SrvFlags.Immich.EnableAppTrace(SrvFlags.APITraceWriter) + rootFlags.Message("API log file: %s", SrvFlags.APITraceWriterName) + } + } + + ctx := rootFlags.Command.Context() + if err := SrvFlags.Immich.PingServer(ctx); err != nil { + return err + } + rootFlags.Message(`Server status: OK`) + + user, err := SrvFlags.Immich.ValidateConnection(ctx) + if err != nil { + return err + } + rootFlags.Message(`Connected, user: %s`, user.Email) + + return err +} + +func (flags *ImmichServerFlags) Close(rootFlags *RootImmichFlags) error { + if flags.APITrace { + flags.APITraceWriter.Close() + rootFlags.Message("Check the API traces files %s", flags.APITraceWriterName) + } + return rootFlags.Close() +} diff --git a/cmd/metadata/metadata.nogo b/commands/metadata/metadata.nogo similarity index 100% rename from cmd/metadata/metadata.nogo rename to commands/metadata/metadata.nogo diff --git a/commands/run.gono b/commands/run.gono new file mode 100644 index 00000000..916ddd86 --- /dev/null +++ b/commands/run.gono @@ -0,0 +1,71 @@ +package commands + +import ( + "context" +) + +func Run(ctx context.Context, version string, commit string, date string) error { + app := initializeApplication(version, commit, date) + err := app.Command.ExecuteContext(ctx) + + // fmt.Println(app.Banner.String()) + + /* + app := cmd.ImmichServerFlags{ + Log: slog.New(humane.NewHandler(os.Stdout, &humane.Options{Level: slog.LevelInfo})), + Banner: ui.NewBanner(version, commit, date), + } + fs := flag.NewFlagSet("main", flag.ExitOnError) + fs.BoolFunc("version", "Get immich-go version", func(s string) error { + printVersion() + os.Exit(0) + return nil + }) + */ + /* + app.InitSharedFlags() + app.SetFlags(fs) + + err := fs.Parse(os.Args[1:]) + if err != nil { + app.Log.Error(err.Error()) + return err + } + + if len(fs.Args()) == 0 { + err = errors.New("missing command upload|duplicate|stack|tool") + } + + if err != nil { + app.Log.Error(err.Error()) + return err + } + + cmd := fs.Args()[0] + switch cmd { + case "upload": + err = upload.UploadCommand(ctx, &app, fs.Args()[1:]) + case "duplicate": + err = duplicate.DuplicateCommand(ctx, &app, fs.Args()[1:]) + case "metadata": + err = metadata.MetadataCommand(ctx, &app, fs.Args()[1:]) + case "stack": + err = stack.NewStackCommand(ctx, &app, fs.Args()[1:]) + case "tool": + err = tool.CommandTool(ctx, &app, fs.Args()[1:]) + default: + err = fmt.Errorf("unknown command: %q", cmd) + } + */ + + // if err != nil { + // app.Log.Error(err.Error()) + // } + // fmt.Println("Check the log file: ", app.LogFile) + // if app.APITraceWriter != nil { + // fmt.Println("Check the trace file: ", app.APITraceWriterName) + // } + // return err + + return err +} diff --git a/cmd/stack/stack.go b/commands/stack/stack.go similarity index 100% rename from cmd/stack/stack.go rename to commands/stack/stack.go diff --git a/cmd/tool/tool.nogo b/commands/tool/tool.nogo similarity index 100% rename from cmd/tool/tool.nogo rename to commands/tool/tool.nogo diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063000139.jpg b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063000139.jpg similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063000139.jpg rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063000139.jpg diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063000139.jpg.json b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063000139.jpg.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063000139.jpg.json rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063000139.jpg.json diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063029647.jpg b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063029647.jpg similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063029647.jpg rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063029647.jpg diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063029647.jpg.json b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063029647.jpg.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063029647.jpg.json rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063029647.jpg.json diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063108407.jpg b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063108407.jpg similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063108407.jpg rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063108407.jpg diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063108407.jpg.json b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063108407.jpg.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063108407.jpg.json rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063108407.jpg.json diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063121958.jpg b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063121958.jpg similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063121958.jpg rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063121958.jpg diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063121958.jpg.json b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063121958.jpg.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063121958.jpg.json rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063121958.jpg.json diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063357420.jpg b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063357420.jpg similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063357420.jpg rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063357420.jpg diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063357420.jpg.json b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063357420.jpg.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063357420.jpg.json rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063357420.jpg.json diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063536303.jpg b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063536303.jpg similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063536303.jpg rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063536303.jpg diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063536303.jpg.json b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063536303.jpg.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063536303.jpg.json rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063536303.jpg.json diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063851485.jpg b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063851485.jpg similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063851485.jpg rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063851485.jpg diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063851485.jpg.json b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063851485.jpg.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063851485.jpg.json rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063851485.jpg.json diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063909898.LS.mp4 b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063909898.LS.mp4 similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063909898.LS.mp4 rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063909898.LS.mp4 diff --git a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063909898.LS.mp4.json b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063909898.LS.mp4.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063909898.LS.mp4.json rename to commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/PXL_20231006_063909898.LS.mp4.json diff --git "a/cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/m\303\251tadonn\303\251es.json" "b/commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/m\303\251tadonn\303\251es.json" similarity index 100% rename from "cmd/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/m\303\251tadonn\303\251es.json" rename to "commands/upload/TEST_DATA/Takeout1/Google Photos/Album test 6-10-23/m\303\251tadonn\303\251es.json" diff --git a/cmd/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063000139.jpg b/commands/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063000139.jpg similarity index 100% rename from cmd/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063000139.jpg rename to commands/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063000139.jpg diff --git a/cmd/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063000139.jpg.json b/commands/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063000139.jpg.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063000139.jpg.json rename to commands/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063000139.jpg.json diff --git a/cmd/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063528961.jpg b/commands/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063528961.jpg similarity index 100% rename from cmd/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063528961.jpg rename to commands/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063528961.jpg diff --git a/cmd/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063528961.jpg.json b/commands/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063528961.jpg.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063528961.jpg.json rename to commands/upload/TEST_DATA/Takeout2/Google Photos/Photos from 2023/PXL_20231006_063528961.jpg.json diff --git a/cmd/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/PXL_20231006_063108407.jpg b/commands/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/PXL_20231006_063108407.jpg similarity index 100% rename from cmd/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/PXL_20231006_063108407.jpg rename to commands/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/PXL_20231006_063108407.jpg diff --git a/cmd/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/PXL_20231006_063108407.jpg.json b/commands/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/PXL_20231006_063108407.jpg.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/PXL_20231006_063108407.jpg.json rename to commands/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/PXL_20231006_063108407.jpg.json diff --git "a/cmd/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/m\303\251tadonn\303\251es.json" "b/commands/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/m\303\251tadonn\303\251es.json" similarity index 100% rename from "cmd/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/m\303\251tadonn\303\251es.json" rename to "commands/upload/TEST_DATA/Takeout2/Google Photos/Sans titre(9)/m\303\251tadonn\303\251es.json" diff --git a/cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238(1).JPG b/commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238(1).JPG similarity index 100% rename from cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238(1).JPG rename to commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238(1).JPG diff --git a/cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG b/commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG similarity index 100% rename from cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG rename to commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG diff --git a/cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG(1).json b/commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG(1).json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG(1).json rename to commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG(1).json diff --git a/cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG.json b/commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG.json rename to commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238.JPG.json diff --git a/cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238_1.JPG b/commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238_1.JPG similarity index 100% rename from cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238_1.JPG rename to commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238_1.JPG diff --git a/cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238_1.JPG.json b/commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238_1.JPG.json similarity index 100% rename from cmd/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238_1.JPG.json rename to commands/upload/TEST_DATA/Takeout3/Photos from 2023/DSC_0238_1.JPG.json diff --git a/cmd/upload/TEST_DATA/banned/PXL_20231006_063000139.jpg b/commands/upload/TEST_DATA/banned/PXL_20231006_063000139.jpg similarity index 100% rename from cmd/upload/TEST_DATA/banned/PXL_20231006_063000139.jpg rename to commands/upload/TEST_DATA/banned/PXL_20231006_063000139.jpg diff --git a/cmd/upload/TEST_DATA/banned/PXL_20231006_063029647.jpg b/commands/upload/TEST_DATA/banned/PXL_20231006_063029647.jpg similarity index 100% rename from cmd/upload/TEST_DATA/banned/PXL_20231006_063029647.jpg rename to commands/upload/TEST_DATA/banned/PXL_20231006_063029647.jpg diff --git a/cmd/upload/TEST_DATA/banned/PXL_20231006_063108407.jpg b/commands/upload/TEST_DATA/banned/PXL_20231006_063108407.jpg similarity index 100% rename from cmd/upload/TEST_DATA/banned/PXL_20231006_063108407.jpg rename to commands/upload/TEST_DATA/banned/PXL_20231006_063108407.jpg diff --git a/cmd/upload/TEST_DATA/banned/PXL_20231006_063121958 (another copy).jpg b/commands/upload/TEST_DATA/banned/PXL_20231006_063121958 (another copy).jpg similarity index 100% rename from cmd/upload/TEST_DATA/banned/PXL_20231006_063121958 (another copy).jpg rename to commands/upload/TEST_DATA/banned/PXL_20231006_063121958 (another copy).jpg diff --git a/cmd/upload/TEST_DATA/banned/PXL_20231006_063121958 (copy).jpg b/commands/upload/TEST_DATA/banned/PXL_20231006_063121958 (copy).jpg similarity index 100% rename from cmd/upload/TEST_DATA/banned/PXL_20231006_063121958 (copy).jpg rename to commands/upload/TEST_DATA/banned/PXL_20231006_063121958 (copy).jpg diff --git a/cmd/upload/TEST_DATA/banned/PXL_20231006_063121958.jpg b/commands/upload/TEST_DATA/banned/PXL_20231006_063121958.jpg similarity index 100% rename from cmd/upload/TEST_DATA/banned/PXL_20231006_063121958.jpg rename to commands/upload/TEST_DATA/banned/PXL_20231006_063121958.jpg diff --git a/cmd/upload/TEST_DATA/banned/backup/PXL_20231006_063357420.jpg b/commands/upload/TEST_DATA/banned/backup/PXL_20231006_063357420.jpg similarity index 100% rename from cmd/upload/TEST_DATA/banned/backup/PXL_20231006_063357420.jpg rename to commands/upload/TEST_DATA/banned/backup/PXL_20231006_063357420.jpg diff --git a/cmd/upload/TEST_DATA/banned/backup/PXL_20231006_063528961.jpg b/commands/upload/TEST_DATA/banned/backup/PXL_20231006_063528961.jpg similarity index 100% rename from cmd/upload/TEST_DATA/banned/backup/PXL_20231006_063528961.jpg rename to commands/upload/TEST_DATA/banned/backup/PXL_20231006_063528961.jpg diff --git a/cmd/upload/TEST_DATA/banned/backup/PXL_20231006_063536303.jpg b/commands/upload/TEST_DATA/banned/backup/PXL_20231006_063536303.jpg similarity index 100% rename from cmd/upload/TEST_DATA/banned/backup/PXL_20231006_063536303.jpg rename to commands/upload/TEST_DATA/banned/backup/PXL_20231006_063536303.jpg diff --git a/cmd/upload/TEST_DATA/banned/backup/PXL_20231006_063851485.jpg b/commands/upload/TEST_DATA/banned/backup/PXL_20231006_063851485.jpg similarity index 100% rename from cmd/upload/TEST_DATA/banned/backup/PXL_20231006_063851485.jpg rename to commands/upload/TEST_DATA/banned/backup/PXL_20231006_063851485.jpg diff --git a/cmd/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063000139.jpg b/commands/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063000139.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063000139.jpg rename to commands/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063000139.jpg diff --git a/cmd/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063029647.jpg b/commands/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063029647.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063029647.jpg rename to commands/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063029647.jpg diff --git a/cmd/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063108407.jpg b/commands/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063108407.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063108407.jpg rename to commands/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063108407.jpg diff --git a/cmd/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063121958.jpg b/commands/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063121958.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063121958.jpg rename to commands/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063121958.jpg diff --git a/cmd/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063357420.jpg b/commands/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063357420.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063357420.jpg rename to commands/upload/TEST_DATA/folder/high/AlbumA/PXL_20231006_063357420.jpg diff --git a/cmd/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063528961.jpg b/commands/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063528961.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063528961.jpg rename to commands/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063528961.jpg diff --git a/cmd/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063536303.jpg b/commands/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063536303.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063536303.jpg rename to commands/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063536303.jpg diff --git a/cmd/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063851485.jpg b/commands/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063851485.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063851485.jpg rename to commands/upload/TEST_DATA/folder/high/AlbumB/PXL_20231006_063851485.jpg diff --git a/cmd/upload/TEST_DATA/folder/low/PXL_20231006_063000139.jpg b/commands/upload/TEST_DATA/folder/low/PXL_20231006_063000139.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/low/PXL_20231006_063000139.jpg rename to commands/upload/TEST_DATA/folder/low/PXL_20231006_063000139.jpg diff --git a/cmd/upload/TEST_DATA/folder/low/PXL_20231006_063029647.jpg b/commands/upload/TEST_DATA/folder/low/PXL_20231006_063029647.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/low/PXL_20231006_063029647.jpg rename to commands/upload/TEST_DATA/folder/low/PXL_20231006_063029647.jpg diff --git a/cmd/upload/TEST_DATA/folder/low/PXL_20231006_063108407.jpg b/commands/upload/TEST_DATA/folder/low/PXL_20231006_063108407.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/low/PXL_20231006_063108407.jpg rename to commands/upload/TEST_DATA/folder/low/PXL_20231006_063108407.jpg diff --git a/cmd/upload/TEST_DATA/folder/low/PXL_20231006_063121958.jpg b/commands/upload/TEST_DATA/folder/low/PXL_20231006_063121958.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/low/PXL_20231006_063121958.jpg rename to commands/upload/TEST_DATA/folder/low/PXL_20231006_063121958.jpg diff --git a/cmd/upload/TEST_DATA/folder/low/PXL_20231006_063357420.jpg b/commands/upload/TEST_DATA/folder/low/PXL_20231006_063357420.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/low/PXL_20231006_063357420.jpg rename to commands/upload/TEST_DATA/folder/low/PXL_20231006_063357420.jpg diff --git a/cmd/upload/TEST_DATA/folder/low/PXL_20231006_063528961.jpg b/commands/upload/TEST_DATA/folder/low/PXL_20231006_063528961.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/low/PXL_20231006_063528961.jpg rename to commands/upload/TEST_DATA/folder/low/PXL_20231006_063528961.jpg diff --git a/cmd/upload/TEST_DATA/folder/low/PXL_20231006_063536303.jpg b/commands/upload/TEST_DATA/folder/low/PXL_20231006_063536303.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/low/PXL_20231006_063536303.jpg rename to commands/upload/TEST_DATA/folder/low/PXL_20231006_063536303.jpg diff --git a/cmd/upload/TEST_DATA/folder/low/PXL_20231006_063851485.jpg b/commands/upload/TEST_DATA/folder/low/PXL_20231006_063851485.jpg similarity index 100% rename from cmd/upload/TEST_DATA/folder/low/PXL_20231006_063851485.jpg rename to commands/upload/TEST_DATA/folder/low/PXL_20231006_063851485.jpg diff --git a/cmd/upload/TEST_DATA/nodate/NO_DATE.jpg b/commands/upload/TEST_DATA/nodate/NO_DATE.jpg similarity index 100% rename from cmd/upload/TEST_DATA/nodate/NO_DATE.jpg rename to commands/upload/TEST_DATA/nodate/NO_DATE.jpg diff --git a/cmd/upload/advice.go b/commands/upload/advice.go similarity index 100% rename from cmd/upload/advice.go rename to commands/upload/advice.go diff --git a/cmd/upload/assets.go b/commands/upload/assets.go similarity index 100% rename from cmd/upload/assets.go rename to commands/upload/assets.go diff --git a/cmd/upload/cmdFolder.go b/commands/upload/cmdFolder.gono similarity index 88% rename from cmd/upload/cmdFolder.go rename to commands/upload/cmdFolder.gono index 4d7f9bcc..ec89fc39 100644 --- a/cmd/upload/cmdFolder.go +++ b/commands/upload/cmdFolder.gono @@ -1,18 +1,19 @@ package upload import ( + "context" "errors" "strings" "github.com/simulot/immich-go/adapters/folder" - "github.com/simulot/immich-go/cmd" + "github.com/simulot/immich-go/commands/application" "github.com/simulot/immich-go/internal/fileevent" "github.com/simulot/immich-go/internal/fshelper" "github.com/spf13/cobra" ) -func addFromFolderCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImmichFlags) { - cmdFolder := &cobra.Command{ +func NewUplodaFormFolder(ctx context.Context, app *application.Application) *cobra.Command { + cmd := &cobra.Command{ Use: "from-folder [flags] [...]", Short: "import files from a folder structure", Args: cobra.MinimumNArgs(1), @@ -22,7 +23,7 @@ func addFromFolderCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImmichFla cmdUpServerFlags := cmd.AddImmichServerFlagSet(cmdFolder, rootFlags) CommonFlags := addCommonFlags(cmdFolder) - UploadFolderFlags := folder.ImportFlags{} + UploadFolderFlags := folder.ImportFolderOptions{} folder.AddUploadFolderFlags(cmdFolder, &UploadFolderFlags) // TODO: provide the mapping between old and new flags diff --git a/cmd/upload/cmdGooglePhotos.go b/commands/upload/cmdGooglePhotos.gono similarity index 100% rename from cmd/upload/cmdGooglePhotos.go rename to commands/upload/cmdGooglePhotos.gono diff --git a/commands/upload/command.go b/commands/upload/command.go new file mode 100644 index 00000000..c83943a1 --- /dev/null +++ b/commands/upload/command.go @@ -0,0 +1,88 @@ +package upload + +import ( + "context" + "errors" + "fmt" + + "github.com/simulot/immich-go/adapters/folder" + "github.com/simulot/immich-go/commands/application" + cliflags "github.com/simulot/immich-go/internal/cliFlags" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/metadata" + "github.com/simulot/immich-go/internal/namematcher" + "github.com/spf13/cobra" +) + +// UploadOption represents a set of common flags used for filtering assets. +type UploadOption struct { + NoUI bool // Disable UI + StackJpgWithRaw bool // Stack jpg/raw (Default: TRUE) + StackBurstPhotos bool // Stack burst (Default: TRUE) + + Jnl *fileevent.Recorder // Log file events +} + +// NewUploadCommand adds the Upload command +func NewUploadCommand(ctx context.Context, app *application.Application) *cobra.Command { + options := &UploadOption{} + cmd := &cobra.Command{ + Use: "upload sub-command", + Short: "Upload photos on an Immich server", + } + application.AddClientFlags(ctx, cmd, app) + cmd.TraverseChildren = true + cmd.PersistentFlags().BoolVar(&options.NoUI, "no-ui", false, "Disable the user interface") + cmd.PersistentFlags().BoolVar(&options.StackJpgWithRaw, "stack-jpg-with-raw", false, "Stack JPG images with their corresponding raw images in Immich") + cmd.PersistentFlags().BoolVar(&options.StackBurstPhotos, "stack-burst-photos", false, "Stack bursts of photos in Immich") + cmd.PersistentPreRunE = application.ChainRunEFunctions(cmd.PersistentPreRunE, options.Open, ctx, cmd, app) + cmd.RunE = func(cmd *cobra.Command, args []string) error { + return errors.New("misisng sub-command") + } + cmd.AddCommand(NewUploadFolderCommand(ctx, app)) + return cmd +} + +func (options *UploadOption) Open(ctx context.Context, cmd *cobra.Command, app *application.Application) error { + // Initialize the Journal + if options.Jnl == nil { + options.Jnl = fileevent.NewRecorder(app.Log().Logger) + } + return nil +} + +func NewUploadFolderCommand(ctx context.Context, app *application.Application) *cobra.Command { + options := &folder.ImportFolderOptions{} + options.BannedFiles, _ = namematcher.New( + `@eaDir/`, + `@__thumb/`, // QNAP + `SYNOFILE_THUMB_*.*`, // SYNOLOGY + `Lightroom Catalog/`, // LR + `thumbnails/`, // Android photo + `.DS_Store/`, // Mac OS custom attributes + ) + options.SupportedMedia = metadata.DefaultSupportedMedia + options.UsePathAsAlbumName = folder.FolderModeNone + + cmd := &cobra.Command{ + Use: "from-folder [OPTIONS] ...", + Short: "Upload photos from a folder", + } + // cmd.Flags().SortFlags = false + + cmd.Flags().StringVar(&options.ImportIntoAlbum, "into-album", "", "Specify an album to import all files into") + cmd.Flags().Var(&options.UsePathAsAlbumName, "folder-as-album", "Import all files in albums defined by the folder structure. Can be set to 'FOLDER' to use the folder name as the album name, or 'PATH' to use the full path as the album name") + cmd.Flags().StringVar(&options.AlbumNamePathSeparator, "album-path-joiner", " / ", "Specify a string to use when joining multiple folder names to create an album name (e.g. ' ',' - ')") + cmd.Flags().BoolVar(&options.Recursive, "recursive", true, "Explore the folder and all its sub-folders") + cmd.Flags().Var(&options.BannedFiles, "ban-file", "Exclude a file based on a pattern (case-insensitive). Can be specified multiple times.") + cmd.Flags().BoolVar(&options.IgnoreSideCarFiles, "ignore-sidecar-files", false, "Don't upload sidecar with the photo.") + cliflags.AddInclusionFlags(cmd, &options.InclusionFlags) + cliflags.AddDateHandlingFlags(cmd, &options.DateHandlingFlags) + metadata.AddExifToolFlags(cmd, &options.ExifToolFlags) + + cmd.RunE = func(cmd *cobra.Command, args []string) error { + fmt.Println("Upload folder!", args) + return nil + } + return cmd +} diff --git a/cmd/upload/e2e_upload_folder_test.nogo b/commands/upload/e2e_upload_folder_test.nogo similarity index 100% rename from cmd/upload/e2e_upload_folder_test.nogo rename to commands/upload/e2e_upload_folder_test.nogo diff --git a/cmd/upload/noui.go b/commands/upload/noui.gono similarity index 100% rename from cmd/upload/noui.go rename to commands/upload/noui.gono diff --git a/cmd/upload/run.go b/commands/upload/run.gono similarity index 100% rename from cmd/upload/run.go rename to commands/upload/run.gono diff --git a/cmd/upload/ui.go b/commands/upload/ui.gono similarity index 100% rename from cmd/upload/ui.go rename to commands/upload/ui.gono diff --git a/cmd/upload/upload.go b/commands/upload/upload.gono similarity index 100% rename from cmd/upload/upload.go rename to commands/upload/upload.gono diff --git a/cmd/upload/upload_test.nogo b/commands/upload/upload_test.nogo similarity index 100% rename from cmd/upload/upload_test.nogo rename to commands/upload/upload_test.nogo diff --git a/commands/version/banner.go b/commands/version/banner.go new file mode 100644 index 00000000..318ab10f --- /dev/null +++ b/commands/version/banner.go @@ -0,0 +1,38 @@ +package version + +import ( + "fmt" + "strings" +) + +// Banner Ascii art +// Generator : http://patorjk.com/software/taag-v1/ +// Font: Three point + +var _banner = []string{ + ". _ _ _ _ . _|_ _ _ ", + "|| | || | ||(_| | ─ (_|(_)", + " _) ", +} + +// String generate a string with new lines and place the given text on the latest line +func Banner() string { + const lenVersion = 20 + var text string + if Version != "" { + text = fmt.Sprintf("v %s", Version) + } + sb := strings.Builder{} + for i := range _banner { + if i == len(_banner)-1 && text != "" { + if len(text) >= lenVersion { + text = text[:lenVersion] + } + sb.WriteString(_banner[i][:lenVersion-len(text)] + text + _banner[i][lenVersion:]) + } else { + sb.WriteString(_banner[i]) + } + sb.WriteRune('\n') + } + return sb.String() +} diff --git a/commands/version/version.go b/commands/version/version.go new file mode 100644 index 00000000..8468ed30 --- /dev/null +++ b/commands/version/version.go @@ -0,0 +1,40 @@ +package version + +import ( + "fmt" + "runtime/debug" +) + +var ( + Version = "dev" + Commit = "none" + Date = "unknown" +) + +// initialize version and commit at the runtime +func init() { + dirty := false + buildvcs := false + + buildinfo, _ := debug.ReadBuildInfo() + for _, s := range buildinfo.Settings { + switch s.Key { + case "vcs.revision": + buildvcs = true + Commit = s.Value + case "vcs.modified": + if s.Value == "true" { + dirty = true + } + case "vcs.time": + Date = s.Value + } + } + if buildvcs && dirty { + Commit += "-dirty" + } +} + +func GetVersion() string { + return fmt.Sprintf("immich-go version:%s, commit:%s, date:%s", Version, Commit, Date) +} diff --git a/internal/fileevent/fileevents.go b/internal/fileevent/fileevents.go index 5623e675..3f8fffa2 100644 --- a/internal/fileevent/fileevents.go +++ b/internal/fileevent/fileevents.go @@ -116,7 +116,7 @@ func (fn FileAndName) Name() string { type counts []int64 -func NewRecorder(l *slog.Logger, debug bool) *Recorder { +func NewRecorder(l *slog.Logger) *Recorder { r := &Recorder{ counts: make([]int64, MaxCode), log: l, diff --git a/main.go b/main.go index eaba3a4b..0ff2fc34 100644 --- a/main.go +++ b/main.go @@ -6,144 +6,65 @@ import ( "fmt" "os" "os/signal" - "runtime/debug" - "github.com/simulot/immich-go/cmd" - "github.com/simulot/immich-go/cmd/cmdVersion" - "github.com/simulot/immich-go/cmd/stack" - "github.com/simulot/immich-go/cmd/upload" - "github.com/simulot/immich-go/ui" + "github.com/simulot/immich-go/commands" + "github.com/simulot/immich-go/commands/application" + "github.com/simulot/immich-go/commands/version" + "github.com/spf13/cobra" + "github.com/spf13/viper" ) -var ( - version = "dev" - commit = "none" - date = "unknown" -) - -func getCommitInfo() string { - dirty := false - buildvcs := false - - buildinfo, _ := debug.ReadBuildInfo() - for _, s := range buildinfo.Settings { - switch s.Key { - case "vcs.revision": - buildvcs = true - commit = s.Value - case "vcs.modified": - if s.Value == "true" { - dirty = true - } - case "vcs.time": - date = s.Value +// immich-go entry point +func main() { + ctx := context.Background() + err := immichGoMain(ctx) + if err != nil { + if e := context.Cause(ctx); e != nil { + err = e } + _, _ = fmt.Fprintln(os.Stderr, err) + os.Exit(1) } - if buildvcs && dirty { - commit += "-dirty" - } - return commit } -func main() { - var err error - +// makes immich-go breakable with ^C and run it +func immichGoMain(ctx context.Context) error { // Create a context with cancel function to gracefully handle Ctrl+C events - ctx, cancel := context.WithCancelCause(context.Background()) + ctx, cancel := context.WithCancelCause(ctx) // Handle Ctrl+C signal (SIGINT) signalChannel := make(chan os.Signal, 1) signal.Notify(signalChannel, os.Interrupt) + // Watch for ^C to be pressed go func() { <-signalChannel fmt.Println("\nCtrl+C received. Shutting down...") cancel(errors.New("Ctrl+C received")) // Cancel the context when Ctrl+C is received }() - select { - case <-ctx.Done(): - err = ctx.Err() - default: - err = Run(ctx) - } - if err != nil { - if e := context.Cause(ctx); e != nil { - err = e - } - fmt.Println(err.Error()) - os.Exit(1) - } + return runImmichGo(ctx) } -func Run(ctx context.Context) error { - banner := ui.NewBanner(version, commit, date) - rootCmd := cmd.CreateRootCommand(banner) - cmdVersion.AddCommand(rootCmd, version, getCommitInfo(), date) - - stack.AddCommand(rootCmd) - upload.AddCommand(rootCmd) +// Run immich-go +func runImmichGo(ctx context.Context) error { + viper.SetEnvPrefix("IMMICHGO") - err := rootCmd.Command.ExecuteContext(ctx) + // Create the application context - // fmt.Println(app.Banner.String()) - - /* - app := cmd.ImmichServerFlags{ - Log: slog.New(humane.NewHandler(os.Stdout, &humane.Options{Level: slog.LevelInfo})), - Banner: ui.NewBanner(version, commit, date), - } - fs := flag.NewFlagSet("main", flag.ExitOnError) - fs.BoolFunc("version", "Get immich-go version", func(s string) error { - printVersion() - os.Exit(0) - return nil - }) - */ - /* - app.InitSharedFlags() - app.SetFlags(fs) - - err := fs.Parse(os.Args[1:]) - if err != nil { - app.Log.Error(err.Error()) - return err - } - - if len(fs.Args()) == 0 { - err = errors.New("missing command upload|duplicate|stack|tool") - } - - if err != nil { - app.Log.Error(err.Error()) - return err - } - - cmd := fs.Args()[0] - switch cmd { - case "upload": - err = upload.UploadCommand(ctx, &app, fs.Args()[1:]) - case "duplicate": - err = duplicate.DuplicateCommand(ctx, &app, fs.Args()[1:]) - case "metadata": - err = metadata.MetadataCommand(ctx, &app, fs.Args()[1:]) - case "stack": - err = stack.NewStackCommand(ctx, &app, fs.Args()[1:]) - case "tool": - err = tool.CommandTool(ctx, &app, fs.Args()[1:]) - default: - err = fmt.Errorf("unknown command: %q", cmd) - } - */ + // Add the root command + cmd := &cobra.Command{ + Use: "immich-go", + Short: "Immich-go is a command line application to interact with the Immich application using its API", + Long: `An alternative to the immich-CLI command that doesn't depend on nodejs installation. It tries its best for importing google photos takeout archives.`, + Version: version.Version, + } + cobra.EnableTraverseRunHooks = true // doc: cobra/site/content/user_guide.md + app := application.New(ctx, cmd) - // if err != nil { - // app.Log.Error(err.Error()) - // } - // fmt.Println("Check the log file: ", app.LogFile) - // if app.APITraceWriter != nil { - // fmt.Println("Check the trace file: ", app.APITraceWriterName) - // } - // return err + // add immich-go commands + commands.AddCommands(cmd, ctx, app) - return err + // let's start + return cmd.ExecuteContext(ctx) } diff --git a/ui/banner.go b/ui/banner.go deleted file mode 100644 index 4ea26003..00000000 --- a/ui/banner.go +++ /dev/null @@ -1,54 +0,0 @@ -package ui - -import ( - "fmt" - "strings" -) - -type Banner struct { - b []string - version, commit, date string -} - -// Banner Ascii art -// Generator : http://patorjk.com/software/taag-v1/ -// Font: Three point - -func NewBanner(version, commit, date string) Banner { - return Banner{ - b: []string{ - ". _ _ _ _ . _|_ _ _ ", - "|| | || | ||(_| | ─ (_|(_)", - " _) ", - }, - version: version, - commit: commit, - date: date, - } -} - -// String generate a string with new lines and place the given text on the latest line -func (b Banner) String() string { - const lenVersion = 20 - var text string - if b.version != "" { - text = fmt.Sprintf("v %s", b.version) - } - sb := strings.Builder{} - for i := range b.b { - if i == len(b.b)-1 && text != "" { - if len(text) >= lenVersion { - text = text[:lenVersion] - } - sb.WriteString(b.b[i][:lenVersion-len(text)] + text + b.b[i][lenVersion:]) - } else { - sb.WriteString(b.b[i]) - } - sb.WriteRune('\n') - } - return sb.String() -} - -func (b Banner) Version() string { - return fmt.Sprintf("immich-go version:%s, commit:%s, date:%s", b.version, b.commit, b.date) -} From b573dd763c19ea05fa8f82f6a4a705bc8e6cd83b Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 11:18:24 +0200 Subject: [PATCH 036/252] wip --- adapters/folder/e2e_readFolder_test.go | 2 +- adapters/folder/options.go | 6 ++ adapters/folder/readFolder_test.go | 2 +- .../e2etests/e2e_nonregression_test.go | 2 +- adapters/googlePhotos/testgp_bigread_test.go | 2 +- adapters/googlePhotos/testgp_test.go | 6 +- commands/application/log.go | 4 + commands/stack/{stack.go => stack.gono} | 1 - .../upload/{command.go => from-folder.go} | 76 ++++++++----------- commands/upload/{noui.gono => noui.go} | 2 +- commands/upload/{run.gono => run.go} | 66 +++++++++++----- commands/upload/{ui.gono => ui.go} | 63 ++++++++------- commands/upload/upload.go | 43 +++++++++++ main.go | 6 +- 14 files changed, 175 insertions(+), 106 deletions(-) rename commands/stack/{stack.go => stack.gono} (98%) rename commands/upload/{command.go => from-folder.go} (52%) rename commands/upload/{noui.gono => noui.go} (98%) rename commands/upload/{run.gono => run.go} (80%) rename commands/upload/{ui.gono => ui.go} (89%) create mode 100644 commands/upload/upload.go diff --git a/adapters/folder/e2e_readFolder_test.go b/adapters/folder/e2e_readFolder_test.go index f32c1eb6..b4702253 100644 --- a/adapters/folder/e2e_readFolder_test.go +++ b/adapters/folder/e2e_readFolder_test.go @@ -182,7 +182,7 @@ func TestE2ELocalAssets(t *testing.T) { for _, c := range tc { t.Run(c.name, func(t *testing.T) { ctx := context.Background() - recorder := fileevent.NewRecorder(nil, false) + recorder := fileevent.NewRecorder(nil) b, err := NewLocalFiles(ctx, recorder, &c.flags, c.fsys...) if err != nil { t.Error(err) diff --git a/adapters/folder/options.go b/adapters/folder/options.go index 4da0ed4e..5f50c6eb 100644 --- a/adapters/folder/options.go +++ b/adapters/folder/options.go @@ -38,6 +38,12 @@ type ImportFolderOptions struct { // IgnoreSideCarFiles indicates whether to ignore XMP files during the import process. IgnoreSideCarFiles bool + // Stack jpg/raw + StackJpgWithRaw bool + + // Stack burst + StackBurstPhotos bool + // SupportedMedia is the server's actual list of supported media types. SupportedMedia metadata.SupportedMedia } diff --git a/adapters/folder/readFolder_test.go b/adapters/folder/readFolder_test.go index 0e9b14a3..792a1f79 100644 --- a/adapters/folder/readFolder_test.go +++ b/adapters/folder/readFolder_test.go @@ -392,7 +392,7 @@ func TestLocalAssets(t *testing.T) { for _, c := range tc { t.Run(c.name, func(t *testing.T) { ctx := context.Background() - recorder := fileevent.NewRecorder(nil, false) + recorder := fileevent.NewRecorder(nil) b, err := NewLocalFiles(ctx, recorder, &c.flags, c.fsys...) if err != nil { t.Error(err) diff --git a/adapters/googlePhotos/e2etests/e2e_nonregression_test.go b/adapters/googlePhotos/e2etests/e2e_nonregression_test.go index 96a0bb08..ba2905a0 100644 --- a/adapters/googlePhotos/e2etests/e2e_nonregression_test.go +++ b/adapters/googlePhotos/e2etests/e2e_nonregression_test.go @@ -79,7 +79,7 @@ func simulate_upload(testname string, flags *gp.ImportFlags, fsys []fs.FS) (*fil defer logFile.Close() log := slog.New(slog.NewTextHandler(logFile, nil)) - jnl := fileevent.NewRecorder(log, true) + jnl := fileevent.NewRecorder(log) adapter, err := gp.NewTakeout(ctx, jnl, flags, fsys...) if err != nil { return nil, err diff --git a/adapters/googlePhotos/testgp_bigread_test.go b/adapters/googlePhotos/testgp_bigread_test.go index 5054f3ac..49c30054 100644 --- a/adapters/googlePhotos/testgp_bigread_test.go +++ b/adapters/googlePhotos/testgp_bigread_test.go @@ -24,7 +24,7 @@ func TestReadBigTakeout(t *testing.T) { } l := slog.New(humane.NewHandler(f, &humane.Options{Level: slog.LevelInfo})) - j := fileevent.NewRecorder(l, false) + j := fileevent.NewRecorder(l) m, err := filepath.Glob("../../../test-data/full_takeout/*.zip") if err != nil { t.Error(err) diff --git a/adapters/googlePhotos/testgp_test.go b/adapters/googlePhotos/testgp_test.go index 13826994..b89f352b 100644 --- a/adapters/googlePhotos/testgp_test.go +++ b/adapters/googlePhotos/testgp_test.go @@ -140,7 +140,7 @@ func TestBrowse(t *testing.T) { SupportedMedia: metadata.DefaultSupportedMedia, CreateAlbums: true, } - b, err := NewTakeout(ctx, fileevent.NewRecorder(log, false), flags, fsys...) + b, err := NewTakeout(ctx, fileevent.NewRecorder(log), flags, fsys...) if err != nil { t.Error(err) return @@ -224,7 +224,7 @@ func TestAlbums(t *testing.T) { SupportedMedia: metadata.DefaultSupportedMedia, CreateAlbums: true, } - b, err := NewTakeout(ctx, fileevent.NewRecorder(nil, false), flags, fsys...) + b, err := NewTakeout(ctx, fileevent.NewRecorder(nil), flags, fsys...) if err != nil { t.Error(err) return @@ -350,7 +350,7 @@ func TestArchives(t *testing.T) { KeepJSONLess: c.acceptMissingJSON, CreateAlbums: true, } - b, err := NewTakeout(ctx, fileevent.NewRecorder(nil, false), flags, fsys...) + b, err := NewTakeout(ctx, fileevent.NewRecorder(nil), flags, fsys...) if err != nil { t.Error(err) return diff --git a/commands/application/log.go b/commands/application/log.go index dc217826..7e31cd87 100644 --- a/commands/application/log.go +++ b/commands/application/log.go @@ -117,3 +117,7 @@ func (log *Log) Close(cmd *cobra.Command, args []string) error { } return nil } + +func (log *Log) GetWriter() io.WriteCloser { + return log.writerCloser +} diff --git a/commands/stack/stack.go b/commands/stack/stack.gono similarity index 98% rename from commands/stack/stack.go rename to commands/stack/stack.gono index 5d2cc2ef..b8ed1ab9 100644 --- a/commands/stack/stack.go +++ b/commands/stack/stack.gono @@ -5,7 +5,6 @@ import ( "sort" "time" - "github.com/simulot/immich-go/cmd" "github.com/simulot/immich-go/immich" cliflags "github.com/simulot/immich-go/internal/cliFlags" "github.com/simulot/immich-go/internal/stacking" diff --git a/commands/upload/command.go b/commands/upload/from-folder.go similarity index 52% rename from commands/upload/command.go rename to commands/upload/from-folder.go index c83943a1..b223f55a 100644 --- a/commands/upload/command.go +++ b/commands/upload/from-folder.go @@ -3,55 +3,18 @@ package upload import ( "context" "errors" - "fmt" + "strings" "github.com/simulot/immich-go/adapters/folder" "github.com/simulot/immich-go/commands/application" cliflags "github.com/simulot/immich-go/internal/cliFlags" - "github.com/simulot/immich-go/internal/fileevent" + "github.com/simulot/immich-go/internal/fshelper" "github.com/simulot/immich-go/internal/metadata" "github.com/simulot/immich-go/internal/namematcher" "github.com/spf13/cobra" ) -// UploadOption represents a set of common flags used for filtering assets. -type UploadOption struct { - NoUI bool // Disable UI - StackJpgWithRaw bool // Stack jpg/raw (Default: TRUE) - StackBurstPhotos bool // Stack burst (Default: TRUE) - - Jnl *fileevent.Recorder // Log file events -} - -// NewUploadCommand adds the Upload command -func NewUploadCommand(ctx context.Context, app *application.Application) *cobra.Command { - options := &UploadOption{} - cmd := &cobra.Command{ - Use: "upload sub-command", - Short: "Upload photos on an Immich server", - } - application.AddClientFlags(ctx, cmd, app) - cmd.TraverseChildren = true - cmd.PersistentFlags().BoolVar(&options.NoUI, "no-ui", false, "Disable the user interface") - cmd.PersistentFlags().BoolVar(&options.StackJpgWithRaw, "stack-jpg-with-raw", false, "Stack JPG images with their corresponding raw images in Immich") - cmd.PersistentFlags().BoolVar(&options.StackBurstPhotos, "stack-burst-photos", false, "Stack bursts of photos in Immich") - cmd.PersistentPreRunE = application.ChainRunEFunctions(cmd.PersistentPreRunE, options.Open, ctx, cmd, app) - cmd.RunE = func(cmd *cobra.Command, args []string) error { - return errors.New("misisng sub-command") - } - cmd.AddCommand(NewUploadFolderCommand(ctx, app)) - return cmd -} - -func (options *UploadOption) Open(ctx context.Context, cmd *cobra.Command, app *application.Application) error { - // Initialize the Journal - if options.Jnl == nil { - options.Jnl = fileevent.NewRecorder(app.Log().Logger) - } - return nil -} - -func NewUploadFolderCommand(ctx context.Context, app *application.Application) *cobra.Command { +func NewFromFolderCommand(ctx context.Context, app *application.Application, upOptions *UploadOptions) *cobra.Command { options := &folder.ImportFolderOptions{} options.BannedFiles, _ = namematcher.New( `@eaDir/`, @@ -65,10 +28,10 @@ func NewUploadFolderCommand(ctx context.Context, app *application.Application) * options.UsePathAsAlbumName = folder.FolderModeNone cmd := &cobra.Command{ - Use: "from-folder [OPTIONS] ...", + Use: "from-folder [flags] ...", Short: "Upload photos from a folder", } - // cmd.Flags().SortFlags = false + cmd.SetContext(ctx) cmd.Flags().StringVar(&options.ImportIntoAlbum, "into-album", "", "Specify an album to import all files into") cmd.Flags().Var(&options.UsePathAsAlbumName, "folder-as-album", "Import all files in albums defined by the folder structure. Can be set to 'FOLDER' to use the folder name as the album name, or 'PATH' to use the full path as the album name") @@ -76,13 +39,38 @@ func NewUploadFolderCommand(ctx context.Context, app *application.Application) * cmd.Flags().BoolVar(&options.Recursive, "recursive", true, "Explore the folder and all its sub-folders") cmd.Flags().Var(&options.BannedFiles, "ban-file", "Exclude a file based on a pattern (case-insensitive). Can be specified multiple times.") cmd.Flags().BoolVar(&options.IgnoreSideCarFiles, "ignore-sidecar-files", false, "Don't upload sidecar with the photo.") + // cmd.Flags().BoolVar(&options.StackJpgWithRaw, "stack-jpg-with-raw", false, "Stack JPG images with their corresponding raw images in Immich") + // cmd.Flags().BoolVar(&options.StackBurstPhotos, "stack-burst-photos", false, "Stack bursts of photos in Immich") + cliflags.AddInclusionFlags(cmd, &options.InclusionFlags) cliflags.AddDateHandlingFlags(cmd, &options.DateHandlingFlags) metadata.AddExifToolFlags(cmd, &options.ExifToolFlags) cmd.RunE = func(cmd *cobra.Command, args []string) error { - fmt.Println("Upload folder!", args) - return nil + // ready to run + ctx := cmd.Context() + log := app.Log() + client := app.Client() + + // parse arguments + fsyss, err := fshelper.ParsePath(args) + if err != nil { + return err + } + if len(fsyss) == 0 { + log.Message("No file found matching the pattern: %s", strings.Join(args, ",")) + return errors.New("No file found matching the pattern: " + strings.Join(args, ",")) + } + + // create the adapter for folders + options.SupportedMedia = client.Immich.SupportedMedia() + adapter, err := folder.NewLocalFiles(ctx, upOptions.Jnl, options, fsyss...) + if err != nil { + return err + } + + return newUpload(app, upOptions).run(ctx, adapter) } + return cmd } diff --git a/commands/upload/noui.gono b/commands/upload/noui.go similarity index 98% rename from commands/upload/noui.gono rename to commands/upload/noui.go index 194ac002..42484707 100644 --- a/commands/upload/noui.gono +++ b/commands/upload/noui.go @@ -102,7 +102,7 @@ func (app *UpCmd) runNoUI(ctx context.Context) error { }) processGrp.Go(func() error { // Run Prepare - groupChan, err = app.browser.Browse(ctx) + groupChan, err = app.adapter.Browse(ctx) if err != nil { cancel(err) } diff --git a/commands/upload/run.gono b/commands/upload/run.go similarity index 80% rename from commands/upload/run.gono rename to commands/upload/run.go index 799e557c..06183f7e 100644 --- a/commands/upload/run.gono +++ b/commands/upload/run.go @@ -8,12 +8,41 @@ import ( "github.com/gdamore/tcell/v2" "github.com/simulot/immich-go/adapters" + "github.com/simulot/immich-go/commands/application" "github.com/simulot/immich-go/immich" "github.com/simulot/immich-go/internal/fileevent" "github.com/simulot/immich-go/internal/metadata" ) -func (app *UpCmd) run(ctx context.Context, adapter adapters.Adapter) error { +type UpCmd struct { + *UploadOptions + *application.Log + *application.Client + + AssetIndex *AssetIndex // List of assets present on the server + deleteServerList []*immich.Asset // List of server assets to remove + + // deleteLocalList []*adapters.LocalAssetFile // List of local assets to remove + // stacks *stacking.StackBuilder + adapter adapters.Adapter + DebugCounters bool // Enable CSV action counters per file + + // fsyss []fs.FS // pseudo file system to browse + Paths []string // Path to explore + albums map[string]immich.AlbumSimplified // Albums by title +} + +func newUpload(app *application.Application, options *UploadOptions) *UpCmd { + upCmd := &UpCmd{ + UploadOptions: options, + Log: app.Log(), + Client: app.Client(), + } + return upCmd +} + +func (upCmd *UpCmd) run(ctx context.Context, adapter adapters.Adapter) error { + upCmd.adapter = adapter // if app.CommonFlags.StackBurstPhotos || app.CommonFlags.StackJpgWithRaw { // app.stacks = stacking.NewStackBuilder(app.ImmichServerFlags.Immich.SupportedMedia()) // } @@ -31,22 +60,20 @@ func (app *UpCmd) run(ctx context.Context, adapter adapters.Adapter) error { // } // }() - app.browser = adapter - - if app.NoUI { - return app.runNoUI(ctx) + if upCmd.NoUI { + return upCmd.runNoUI(ctx) } _, err := tcell.NewScreen() if err != nil { - app.Root.Log.Error("can't initialize the screen for the UI mode. Falling back to no-gui mode") + upCmd.Error("can't initialize the screen for the UI mode. Falling back to no-gui mode") fmt.Println("can't initialize the screen for the UI mode. Falling back to no-gui mode") - return app.runNoUI(ctx) + return upCmd.runNoUI(ctx) } - return app.runUI(ctx) + return upCmd.runUI(ctx) } func (app *UpCmd) getImmichAlbums(ctx context.Context) error { - serverAlbums, err := app.Server.Immich.GetAllAlbums(ctx) + serverAlbums, err := app.Immich.GetAllAlbums(ctx) app.albums = map[string]immich.AlbumSimplified{} if err != nil { return fmt.Errorf("can't get the album list from the server: %w", err) @@ -63,7 +90,7 @@ func (app *UpCmd) getImmichAlbums(ctx context.Context) error { } func (app *UpCmd) getImmichAssets(ctx context.Context, updateFn progressUpdate) error { - statistics, err := app.Server.Immich.GetAssetStatistics(ctx) + statistics, err := app.Immich.GetAssetStatistics(ctx) if err != nil { return err } @@ -72,7 +99,7 @@ func (app *UpCmd) getImmichAssets(ctx context.Context, updateFn progressUpdate) var list []*immich.Asset - err = app.Server.Immich.GetAllAssetsWithFilter(ctx, func(a *immich.Asset) error { + err = app.Immich.GetAllAssetsWithFilter(ctx, func(a *immich.Asset) error { select { case <-ctx.Done(): return ctx.Err() @@ -182,7 +209,7 @@ func (app *UpCmd) handleGroup(ctx context.Context, g *adapters.AssetGroup) error var imageAsset *adapters.LocalAssetFile var videoAsset *adapters.LocalAssetFile for _, a := range g.Assets { - switch app.Server.Immich.SupportedMedia().TypeFromExt(path.Ext(a.FileName)) { + switch app.Immich.SupportedMedia().TypeFromExt(path.Ext(a.FileName)) { case metadata.TypeImage: imageAsset = a case metadata.TypeVideo: @@ -190,7 +217,7 @@ func (app *UpCmd) handleGroup(ctx context.Context, g *adapters.AssetGroup) error } } app.Jnl.Record(ctx, fileevent.LivePhoto, fileevent.AsFileAndName(imageAsset.FSys, imageAsset.FileName), "video", videoAsset.FileName) - _, err := app.Server.Immich.UpdateAsset(ctx, imageAsset.ID, immich.UpdAssetField{LivePhotoVideoID: videoAsset.ID}) + _, err := app.Immich.UpdateAsset(ctx, imageAsset.ID, immich.UpdAssetField{LivePhotoVideoID: videoAsset.ID}) if err != nil { app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, "error", err.Error()) } @@ -235,7 +262,7 @@ func (app *UpCmd) handleAsset(ctx context.Context, g *adapters.AssetGroup, a *ad } // delete the existing lower quality asset - err = app.Server.Immich.DeleteAssets(ctx, []string{advice.ServerAsset.ID}, true) + err = app.Immich.DeleteAssets(ctx, []string{advice.ServerAsset.ID}, true) if err != nil { app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, "error", err.Error()) } @@ -259,7 +286,7 @@ func (app *UpCmd) handleAsset(ctx context.Context, g *adapters.AssetGroup, a *ad } func (app *UpCmd) uploadAsset(ctx context.Context, a *adapters.LocalAssetFile) error { - ar, err := app.Server.Immich.AssetUpload(ctx, a) + ar, err := app.Immich.AssetUpload(ctx, a) if err != nil { app.Jnl.Record(ctx, fileevent.UploadServerError, fileevent.AsFileAndName(a.FSys, a.FileName), "error", err.Error()) return err // Must signal the error to the caller @@ -286,15 +313,14 @@ func (app *UpCmd) manageGroupAlbums(ctx context.Context, g *adapters.AssetGroup) title := album.Title l, exist := app.albums[title] if !exist { - newAl, err := app.Server.Immich.CreateAlbum(ctx, title, album.Description, assetIDs) + newAl, err := app.Immich.CreateAlbum(ctx, title, album.Description, assetIDs) if err != nil { app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, err) - return } app.albums[title] = newAl l = newAl } else { - _, err := app.Server.Immich.AddAssetToAlbum(ctx, l.ID, assetIDs) + _, err := app.Immich.AddAssetToAlbum(ctx, l.ID, assetIDs) if err != nil { app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, err) return @@ -309,8 +335,8 @@ func (app *UpCmd) manageGroupAlbums(ctx context.Context, g *adapters.AssetGroup) } func (app *UpCmd) DeleteServerAssets(ctx context.Context, ids []string) error { - app.Root.Message("%d server assets to delete.", len(ids)) - return app.Server.Immich.DeleteAssets(ctx, ids, false) + app.Message("%d server assets to delete.", len(ids)) + return app.Immich.DeleteAssets(ctx, ids, false) } /* diff --git a/commands/upload/ui.gono b/commands/upload/ui.go similarity index 89% rename from commands/upload/ui.gono rename to commands/upload/ui.go index 6dd28ff8..a21afb94 100644 --- a/commands/upload/ui.gono +++ b/commands/upload/ui.go @@ -5,7 +5,6 @@ import ( "errors" "fmt" "io" - "log/slog" "strings" "sync/atomic" "time" @@ -14,24 +13,30 @@ import ( "github.com/navidys/tvxwidgets" "github.com/rivo/tview" "github.com/simulot/immich-go/adapters" + "github.com/simulot/immich-go/commands/version" "github.com/simulot/immich-go/internal/fileevent" "golang.org/x/sync/errgroup" ) type uiPage struct { - // app *UpCmd - screen *tview.Grid - footer *tview.Grid - prepareCounts *tview.Grid - uploadCounts *tview.Grid - serverJobs *tvxwidgets.Sparkline - logView *tview.TextView - counts map[fileevent.Code]*tview.TextView - prevSlog *slog.Logger + screen *tview.Grid + footer *tview.Grid + prepareCounts *tview.Grid + uploadCounts *tview.Grid + serverJobs *tvxwidgets.Sparkline + logView *tview.TextView + counts map[fileevent.Code]*tview.TextView + + // preserve the inherited log writer + prevSlogWriter io.WriteCloser + + // server's activity history serverActivity []float64 - // prevLogFile io.WriteCloser + + // detect when the server is idling lastTimeServerActive atomic.Int64 + // gauges immichReading *tvxwidgets.PercentageModeGauge immichPrepare *tvxwidgets.PercentageModeGauge immichUpload *tvxwidgets.PercentageModeGauge @@ -41,11 +46,11 @@ type uiPage struct { // quitting chan any } -func (app *UpCmd) runUI(ctx context.Context) error { +func (upCmd *UpCmd) runUI(ctx context.Context) error { ctx, cancel := context.WithCancelCause(ctx) uiApp := tview.NewApplication() - ui := newUI(ctx, app) + ui := newUI(ctx, upCmd) defer cancel(nil) pages := tview.NewPages() @@ -70,7 +75,7 @@ func (app *UpCmd) runUI(ctx context.Context) error { uiApp.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { switch event.Key() { case tcell.KeyCtrlQ, tcell.KeyCtrlC: - app.Root.Log = ui.prevSlog + upCmd.Log.SetLogWriter(ui.prevSlogWriter) cancel(errors.New("interrupted: Ctrl+C or Ctrl+Q pressed")) case tcell.KeyEnter: if uploadDone.Load() { @@ -90,7 +95,7 @@ func (app *UpCmd) runUI(ctx context.Context) error { tick.Stop() return case <-tick.C: - jobs, err := app.Server.Immich.GetJobs(ctx) + jobs, err := upCmd.Immich.GetJobs(ctx) if err == nil { jobCount := 0 jobWaiting := 0 @@ -124,7 +129,7 @@ func (app *UpCmd) runUI(ctx context.Context) error { return case <-tick.C: uiApp.QueueUpdateDraw(func() { - counts := app.Jnl.GetCounts() + counts := upCmd.Jnl.GetCounts() for c := range ui.counts { ui.getCountView(c, counts[c]) } @@ -162,14 +167,14 @@ func (app *UpCmd) runUI(ctx context.Context) error { processGrp := errgroup.Group{} processGrp.Go(func() error { // Get immich asset - err = app.getImmichAssets(ctx, ui.updateImmichReading) + err = upCmd.getImmichAssets(ctx, ui.updateImmichReading) if err != nil { stopUI(err) } return err }) processGrp.Go(func() error { - err = app.getImmichAlbums(ctx) + err = upCmd.getImmichAlbums(ctx) if err != nil { stopUI(err) } @@ -177,7 +182,7 @@ func (app *UpCmd) runUI(ctx context.Context) error { }) processGrp.Go(func() error { // Run Prepare - groupChan, err = app.browser.Browse(ctx) + groupChan, err = upCmd.adapter.Browse(ctx) if err != nil { stopUI(err) } @@ -192,12 +197,12 @@ func (app *UpCmd) runUI(ctx context.Context) error { preparationDone.Store(true) // we can upload assets - err = app.uploadLoop(ctx, groupChan) + err = upCmd.uploadLoop(ctx, groupChan) if err != nil { return context.Cause(ctx) } uploadDone.Store(true) - counts := app.Jnl.GetCounts() + counts := upCmd.Jnl.GetCounts() if counts[fileevent.Error]+counts[fileevent.UploadServerError] > 0 { messages.WriteString("Some errors have occurred. Look at the log file for details\n") } @@ -223,7 +228,7 @@ func (app *UpCmd) runUI(ctx context.Context) error { } // Time to leave - app.Jnl.Report() + upCmd.Jnl.Report() if messages.Len() > 0 { return (errors.New(messages.String())) } @@ -259,7 +264,7 @@ func newUI(ctx context.Context, app *UpCmd) *uiPage { ui.screen = tview.NewGrid() - ui.screen.AddItem(tview.NewTextView().SetText(app.Root.Banner.String()), 0, 0, 1, 1, 0, 0, false) + ui.screen.AddItem(tview.NewTextView().SetText(version.Banner()), 0, 0, 1, 1, 0, 0, false) ui.prepareCounts = tview.NewGrid() ui.prepareCounts.SetBorder(true).SetTitle("Input analysis") @@ -286,7 +291,7 @@ func newUI(ctx context.Context, app *UpCmd) *uiPage { ui.addCounter(ui.uploadCounts, 5, "Server has better quality", fileevent.UploadServerBetter) ui.uploadCounts.SetSize(6, 2, 1, 1).SetColumns(30, 10) - if _, err := app.Server.Immich.GetJobs(ctx); err == nil { + if _, err := app.Immich.GetJobs(ctx); err == nil { ui.watchJobs = true ui.serverJobs = tvxwidgets.NewSparkline() @@ -310,15 +315,9 @@ func newUI(ctx context.Context, app *UpCmd) *uiPage { // Hijack the log ui.logView = tview.NewTextView().SetMaxLines(100).ScrollToEnd() - ui.prevSlog = app.Root.Log - if app.Root.LogWriterCloser != nil { - w := io.MultiWriter(app.Root.LogWriterCloser, ui.logView) - app.Root.SetLogWriter(w) - } else { - app.Root.SetLogWriter(ui.logView) - } - app.Jnl.SetLogger(app.Root.Log) + ui.prevSlogWriter = app.Log.GetWriter() + app.Log.SetLogWriter(io.MultiWriter(ui.prevSlogWriter, ui.logView)) ui.logView.SetBorder(true).SetTitle("Log") ui.screen.AddItem(ui.logView, 2, 0, 1, 1, 0, 0, false) diff --git a/commands/upload/upload.go b/commands/upload/upload.go new file mode 100644 index 00000000..60db4904 --- /dev/null +++ b/commands/upload/upload.go @@ -0,0 +1,43 @@ +package upload + +import ( + "context" + "errors" + + "github.com/simulot/immich-go/commands/application" + "github.com/simulot/immich-go/internal/fileevent" + "github.com/spf13/cobra" +) + +// UploadOptions represents a set of common flags used for filtering assets. +type UploadOptions struct { + // TODO place this option at the top + NoUI bool // Disable UI + Jnl *fileevent.Recorder +} + +// NewUploadCommand adds the Upload command +func NewUploadCommand(ctx context.Context, app *application.Application) *cobra.Command { + options := &UploadOptions{} + cmd := &cobra.Command{ + Use: "upload ...", + Short: "Upload photos on an Immich server from various sources", + } + application.AddClientFlags(ctx, cmd, app) + cmd.TraverseChildren = true + cmd.PersistentFlags().BoolVar(&options.NoUI, "no-ui", false, "Disable the user interface") + cmd.PersistentPreRunE = application.ChainRunEFunctions(cmd.PersistentPreRunE, options.Open, ctx, cmd, app) + cmd.RunE = func(cmd *cobra.Command, args []string) error { + return errors.New("missing from... sub-command") + } + cmd.AddCommand(NewFromFolderCommand(ctx, app, options)) + return cmd +} + +func (options *UploadOptions) Open(ctx context.Context, cmd *cobra.Command, app *application.Application) error { + // Initialize the Journal + if options.Jnl == nil { + options.Jnl = fileevent.NewRecorder(app.Log().Logger) + } + return nil +} diff --git a/main.go b/main.go index 0ff2fc34..71d1eeb9 100644 --- a/main.go +++ b/main.go @@ -66,5 +66,9 @@ func runImmichGo(ctx context.Context) error { commands.AddCommands(cmd, ctx, app) // let's start - return cmd.ExecuteContext(ctx) + err := cmd.ExecuteContext(ctx) + if err != nil { + app.Log().Error(err.Error()) + } + return err } From 968be4fde135360e353f54fdbb870c5cf4d65000 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 16:50:02 +0200 Subject: [PATCH 037/252] fix log in UI wip --- commands/application/app.go | 22 ++++++- commands/application/client.go | 4 +- commands/application/log.go | 25 +++++--- commands/upload/from-folder.go | 4 +- commands/upload/noui.go | 19 +++--- commands/upload/run.go | 108 ++++++++++++++++----------------- commands/upload/ui.go | 35 +++++++---- commands/upload/upload.go | 5 +- 8 files changed, 126 insertions(+), 96 deletions(-) diff --git a/commands/application/app.go b/commands/application/app.go index 0400ac3b..00f33b10 100644 --- a/commands/application/app.go +++ b/commands/application/app.go @@ -3,6 +3,7 @@ package application import ( "context" + "github.com/simulot/immich-go/internal/fileevent" "github.com/spf13/cobra" ) @@ -14,7 +15,8 @@ type ( // Application holds configuration used by commands type Application struct { client Client - log Log + log *Log + jnl *fileevent.Recorder // TODO manage configuration file // ConfigurationFile string // Path to the configuration file to use @@ -22,7 +24,9 @@ type Application struct { func New(ctx context.Context, cmd *cobra.Command) *Application { // application's context - app := &Application{} + app := &Application{ + log: &Log{}, + } // app.PersistentFlags().StringVar(&app.ConfigurationFile, "use-configuration", app.ConfigurationFile, "Specifies the configuration to use") AddLogFlags(ctx, cmd, app) return app @@ -32,8 +36,20 @@ func (app *Application) Client() *Client { return &app.client } +func (app *Application) Jnl() *fileevent.Recorder { + return app.jnl +} + +func (app *Application) SetJnl(jnl *fileevent.Recorder) { + app.jnl = jnl +} + func (app *Application) Log() *Log { - return &app.log + return app.log +} + +func (app *Application) SetLog(log *Log) { + app.log = log } func ChainRunEFunctions(prev RunE, fn RunEAdaptor, ctx context.Context, cmd *cobra.Command, app *Application) RunE { diff --git a/commands/application/client.go b/commands/application/client.go index b7221893..ddf2033e 100644 --- a/commands/application/client.go +++ b/commands/application/client.go @@ -68,7 +68,7 @@ func StartClient(ctx context.Context, cmd *cobra.Command, app *Application) erro // Plug the journal on the Log if log.File != "" { - if log.writerCloser == nil { + if log.writer == nil { err := configuration.MakeDirForFile(log.File) if err != nil { return err @@ -82,7 +82,7 @@ func StartClient(ctx context.Context, cmd *cobra.Command, app *Application) erro return err } log.SetLogWriter(f) - log.writerCloser = f + log.writer = f } } diff --git a/commands/application/log.go b/commands/application/log.go index 7e31cd87..4e52506c 100644 --- a/commands/application/log.go +++ b/commands/application/log.go @@ -13,7 +13,6 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" "github.com/spf13/viper" - "github.com/telemachus/humane" ) type Log struct { @@ -23,8 +22,8 @@ type Log struct { File string // Log file name Level string // Indicate the log level (string) - writerCloser io.WriteCloser // the log writer - sLevel slog.Level // the log level value + writer io.Writer // the log writer + sLevel slog.Level // the log level value } func AddLogFlags(ctx context.Context, cmd *cobra.Command, app *Application) { @@ -44,7 +43,7 @@ func (log *Log) Open(ctx context.Context, cmd *cobra.Command, app *Application) log.File = configuration.DefaultLogFile() } if log.File != "" { - if log.writerCloser == nil { + if log.writer == nil { err := configuration.MakeDirForFile(log.File) if err != nil { return err @@ -63,7 +62,6 @@ func (log *Log) Open(ctx context.Context, cmd *cobra.Command, app *Application) w = os.Stdout } log.SetLogWriter(w) - log.writerCloser = w log.Info(version.GetVersion()) // List flags @@ -91,16 +89,22 @@ func (log *Log) Open(ctx context.Context, cmd *cobra.Command, app *Application) return nil } -func (log *Log) SetLogWriter(w io.Writer) { +func (log *Log) SetLogWriter(w io.Writer) *slog.Logger { var handler slog.Handler switch log.Type { case "JSON": handler = slog.NewJSONHandler(w, &slog.HandlerOptions{}) default: - handler = humane.NewHandler(w, &humane.Options{Level: log.sLevel}) + handler = slog.NewTextHandler(w, &slog.HandlerOptions{ + Level: log.sLevel, + }) + + // humane.NewHandler(w, &humane.Options{Level: log.sLevel}) } + log.writer = w log.Logger = slog.New(handler) + return log.Logger } func (log *Log) Message(msg string, values ...any) { @@ -115,9 +119,12 @@ func (log *Log) Close(cmd *cobra.Command, args []string) error { if log.File != "" { log.Message("Check the log file: %s", log.File) } + if closer, ok := log.writer.(io.Closer); ok { + return closer.Close() + } return nil } -func (log *Log) GetWriter() io.WriteCloser { - return log.writerCloser +func (log *Log) GetWriter() io.Writer { + return log.writer } diff --git a/commands/upload/from-folder.go b/commands/upload/from-folder.go index b223f55a..55074b2e 100644 --- a/commands/upload/from-folder.go +++ b/commands/upload/from-folder.go @@ -64,12 +64,12 @@ func NewFromFolderCommand(ctx context.Context, app *application.Application, upO // create the adapter for folders options.SupportedMedia = client.Immich.SupportedMedia() - adapter, err := folder.NewLocalFiles(ctx, upOptions.Jnl, options, fsyss...) + adapter, err := folder.NewLocalFiles(ctx, app.Jnl(), options, fsyss...) if err != nil { return err } - return newUpload(app, upOptions).run(ctx, adapter) + return newUpload(app, upOptions).run(ctx, adapter, app) } return cmd diff --git a/commands/upload/noui.go b/commands/upload/noui.go index 42484707..03d3a1b2 100644 --- a/commands/upload/noui.go +++ b/commands/upload/noui.go @@ -9,11 +9,12 @@ import ( "time" "github.com/simulot/immich-go/adapters" + "github.com/simulot/immich-go/commands/application" "github.com/simulot/immich-go/internal/fileevent" "golang.org/x/sync/errgroup" ) -func (app *UpCmd) runNoUI(ctx context.Context) error { +func (upCmd *UpCmd) runNoUI(ctx context.Context, app *application.Application) error { ctx, cancel := context.WithCancelCause(ctx) defer cancel(nil) @@ -29,7 +30,7 @@ func (app *UpCmd) runNoUI(ctx context.Context) error { } progressString := func() string { - counts := app.Jnl.GetCounts() + counts := app.Jnl().GetCounts() defer func() { spinIdx++ if spinIdx == len(spinner) { @@ -60,7 +61,7 @@ func (app *UpCmd) runNoUI(ctx context.Context) error { // immichPct, app.Jnl.TotalAssets(), gpPercent, counts[fileevent.UploadServerError], upPercent, string(spinner[spinIdx])) // } - return fmt.Sprintf("\rImmich read %d%%, Assets found: %d, Upload errors: %d, Uploaded %d %s", immichPct, app.Jnl.TotalAssets(), counts[fileevent.UploadServerError], counts[fileevent.Uploaded], string(spinner[spinIdx])) + return fmt.Sprintf("\rImmich read %d%%, Assets found: %d, Upload errors: %d, Uploaded %d %s", immichPct, app.Jnl().TotalAssets(), counts[fileevent.UploadServerError], counts[fileevent.Uploaded], string(spinner[spinIdx])) } uiGrp := errgroup.Group{} @@ -91,18 +92,18 @@ func (app *UpCmd) runNoUI(ctx context.Context) error { processGrp.Go(func() error { // Get immich asset - err := app.getImmichAssets(ctx, immichUpdate) + err := upCmd.getImmichAssets(ctx, immichUpdate) if err != nil { cancel(err) } return err }) processGrp.Go(func() error { - return app.getImmichAlbums(ctx) + return upCmd.getImmichAlbums(ctx) }) processGrp.Go(func() error { // Run Prepare - groupChan, err = app.adapter.Browse(ctx) + groupChan, err = upCmd.adapter.Browse(ctx) if err != nil { cancel(err) } @@ -117,12 +118,12 @@ func (app *UpCmd) runNoUI(ctx context.Context) error { } } preparationDone.Store(true) - err = app.uploadLoop(ctx, groupChan) + err = upCmd.uploadLoop(ctx, groupChan) if err != nil { cancel(err) } - counts := app.Jnl.GetCounts() + counts := app.Jnl().GetCounts() messages := strings.Builder{} if counts[fileevent.Error]+counts[fileevent.UploadServerError] > 0 { messages.WriteString("Some errors have occurred. Look at the log file for details\n") @@ -144,6 +145,6 @@ func (app *UpCmd) runNoUI(ctx context.Context) error { if err != nil { err = context.Cause(ctx) } - app.Jnl.Report() + app.Jnl().Report() return err } diff --git a/commands/upload/run.go b/commands/upload/run.go index 06183f7e..804f72cf 100644 --- a/commands/upload/run.go +++ b/commands/upload/run.go @@ -16,8 +16,7 @@ import ( type UpCmd struct { *UploadOptions - *application.Log - *application.Client + app *application.Application AssetIndex *AssetIndex // List of assets present on the server deleteServerList []*immich.Asset // List of server assets to remove @@ -35,13 +34,12 @@ type UpCmd struct { func newUpload(app *application.Application, options *UploadOptions) *UpCmd { upCmd := &UpCmd{ UploadOptions: options, - Log: app.Log(), - Client: app.Client(), + app: app, } return upCmd } -func (upCmd *UpCmd) run(ctx context.Context, adapter adapters.Adapter) error { +func (upCmd *UpCmd) run(ctx context.Context, adapter adapters.Adapter, app *application.Application) error { upCmd.adapter = adapter // if app.CommonFlags.StackBurstPhotos || app.CommonFlags.StackJpgWithRaw { // app.stacks = stacking.NewStackBuilder(app.ImmichServerFlags.Immich.SupportedMedia()) @@ -61,20 +59,20 @@ func (upCmd *UpCmd) run(ctx context.Context, adapter adapters.Adapter) error { // }() if upCmd.NoUI { - return upCmd.runNoUI(ctx) + return upCmd.runNoUI(ctx, app) } _, err := tcell.NewScreen() if err != nil { - upCmd.Error("can't initialize the screen for the UI mode. Falling back to no-gui mode") + upCmd.app.Log().Error("can't initialize the screen for the UI mode. Falling back to no-gui mode") fmt.Println("can't initialize the screen for the UI mode. Falling back to no-gui mode") - return upCmd.runNoUI(ctx) + return upCmd.runNoUI(ctx, app) } - return upCmd.runUI(ctx) + return upCmd.runUI(ctx, app) } -func (app *UpCmd) getImmichAlbums(ctx context.Context) error { - serverAlbums, err := app.Immich.GetAllAlbums(ctx) - app.albums = map[string]immich.AlbumSimplified{} +func (upCmd *UpCmd) getImmichAlbums(ctx context.Context) error { + serverAlbums, err := upCmd.app.Client().Immich.GetAllAlbums(ctx) + upCmd.albums = map[string]immich.AlbumSimplified{} if err != nil { return fmt.Errorf("can't get the album list from the server: %w", err) } @@ -83,14 +81,14 @@ func (app *UpCmd) getImmichAlbums(ctx context.Context) error { case <-ctx.Done(): return ctx.Err() default: - app.albums[a.AlbumName] = a + upCmd.albums[a.AlbumName] = a } } return nil } -func (app *UpCmd) getImmichAssets(ctx context.Context, updateFn progressUpdate) error { - statistics, err := app.Immich.GetAssetStatistics(ctx) +func (upCmd *UpCmd) getImmichAssets(ctx context.Context, updateFn progressUpdate) error { + statistics, err := upCmd.app.Client().Immich.GetAssetStatistics(ctx) if err != nil { return err } @@ -99,7 +97,7 @@ func (app *UpCmd) getImmichAssets(ctx context.Context, updateFn progressUpdate) var list []*immich.Asset - err = app.Immich.GetAllAssetsWithFilter(ctx, func(a *immich.Asset) error { + err = upCmd.app.Client().Immich.GetAllAssetsWithFilter(ctx, func(a *immich.Asset) error { select { case <-ctx.Done(): return ctx.Err() @@ -118,14 +116,14 @@ func (app *UpCmd) getImmichAssets(ctx context.Context, updateFn progressUpdate) if updateFn != nil { updateFn(totalOnImmich, totalOnImmich) } - app.AssetIndex = &AssetIndex{ + upCmd.AssetIndex = &AssetIndex{ assets: list, } - app.AssetIndex.ReIndex() + upCmd.AssetIndex.ReIndex() return nil } -func (app *UpCmd) uploadLoop(ctx context.Context, groupChan chan *adapters.AssetGroup) error { +func (upCmd *UpCmd) uploadLoop(ctx context.Context, groupChan chan *adapters.AssetGroup) error { var err error assetLoop: for { @@ -137,7 +135,7 @@ assetLoop: if !ok { break assetLoop } - err = app.handleGroup(ctx, g) + err = upCmd.handleGroup(ctx, g) if err != nil { return err } @@ -174,12 +172,12 @@ assetLoop: // } // } - if len(app.deleteServerList) > 0 { + if len(upCmd.deleteServerList) > 0 { ids := []string{} - for _, da := range app.deleteServerList { + for _, da := range upCmd.deleteServerList { ids = append(ids, da.ID) } - err := app.DeleteServerAssets(ctx, ids) + err := upCmd.DeleteServerAssets(ctx, ids) if err != nil { return fmt.Errorf("can't delete server's assets: %w", err) } @@ -192,12 +190,12 @@ assetLoop: return err } -func (app *UpCmd) handleGroup(ctx context.Context, g *adapters.AssetGroup) error { +func (upCmd *UpCmd) handleGroup(ctx context.Context, g *adapters.AssetGroup) error { var errGroup error // Upload assets from the group for _, a := range g.Assets { - err := app.handleAsset(ctx, g, a) + err := upCmd.handleAsset(ctx, g, a) errGroup = errors.Join(err) } if errGroup != nil { @@ -209,43 +207,43 @@ func (app *UpCmd) handleGroup(ctx context.Context, g *adapters.AssetGroup) error var imageAsset *adapters.LocalAssetFile var videoAsset *adapters.LocalAssetFile for _, a := range g.Assets { - switch app.Immich.SupportedMedia().TypeFromExt(path.Ext(a.FileName)) { + switch upCmd.app.Client().Immich.SupportedMedia().TypeFromExt(path.Ext(a.FileName)) { case metadata.TypeImage: imageAsset = a case metadata.TypeVideo: videoAsset = a } } - app.Jnl.Record(ctx, fileevent.LivePhoto, fileevent.AsFileAndName(imageAsset.FSys, imageAsset.FileName), "video", videoAsset.FileName) - _, err := app.Immich.UpdateAsset(ctx, imageAsset.ID, immich.UpdAssetField{LivePhotoVideoID: videoAsset.ID}) + upCmd.app.Jnl().Record(ctx, fileevent.LivePhoto, fileevent.AsFileAndName(imageAsset.FSys, imageAsset.FileName), "video", videoAsset.FileName) + _, err := upCmd.app.Client().Immich.UpdateAsset(ctx, imageAsset.ID, immich.UpdAssetField{LivePhotoVideoID: videoAsset.ID}) if err != nil { - app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, "error", err.Error()) + upCmd.app.Jnl().Record(ctx, fileevent.Error, fileevent.FileAndName{}, "error", err.Error()) } } // Manage albums if len(g.Albums) > 0 { - app.manageGroupAlbums(ctx, g) + upCmd.manageGroupAlbums(ctx, g) } return nil } -func (app *UpCmd) handleAsset(ctx context.Context, g *adapters.AssetGroup, a *adapters.LocalAssetFile) error { +func (upCmd *UpCmd) handleAsset(ctx context.Context, g *adapters.AssetGroup, a *adapters.LocalAssetFile) error { defer func() { a.Close() // Close and clean resources linked to the local asset }() - advice, err := app.AssetIndex.ShouldUpload(a) + advice, err := upCmd.AssetIndex.ShouldUpload(a) if err != nil { return err } switch advice.Advice { case NotOnServer: // Upload and manage albums - err = app.uploadAsset(ctx, a) + err = upCmd.uploadAsset(ctx, a) return err case SmallerOnServer: // Upload, manage albums and delete the server's asset - app.Jnl.Record(ctx, fileevent.UploadUpgraded, fileevent.AsFileAndName(a.FSys, a.FileName), "reason", advice.Message) + upCmd.app.Jnl().Record(ctx, fileevent.UploadUpgraded, fileevent.AsFileAndName(a.FSys, a.FileName), "reason", advice.Message) // Remember existing asset's albums, if any for _, al := range advice.ServerAsset.Albums { @@ -256,15 +254,15 @@ func (app *UpCmd) handleAsset(ctx context.Context, g *adapters.AssetGroup, a *ad } // Upload the superior asset - err = app.uploadAsset(ctx, a) + err = upCmd.uploadAsset(ctx, a) if err != nil { return err } // delete the existing lower quality asset - err = app.Immich.DeleteAssets(ctx, []string{advice.ServerAsset.ID}, true) + err = upCmd.app.Client().Immich.DeleteAssets(ctx, []string{advice.ServerAsset.ID}, true) if err != nil { - app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, "error", err.Error()) + upCmd.app.Jnl().Record(ctx, fileevent.Error, fileevent.FileAndName{}, "error", err.Error()) } return err @@ -276,25 +274,25 @@ func (app *UpCmd) handleAsset(ctx context.Context, g *adapters.AssetGroup, a *ad Description: al.Description, }) } - app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, fileevent.AsFileAndName(a.FSys, a.FileName), "reason", advice.Message) + upCmd.app.Jnl().Record(ctx, fileevent.UploadServerDuplicate, fileevent.AsFileAndName(a.FSys, a.FileName), "reason", advice.Message) case BetterOnServer: // and manage albums - app.Jnl.Record(ctx, fileevent.UploadServerBetter, fileevent.AsFileAndName(a.FSys, a.FileName), "reason", advice.Message) + upCmd.app.Jnl().Record(ctx, fileevent.UploadServerBetter, fileevent.AsFileAndName(a.FSys, a.FileName), "reason", advice.Message) } return nil } -func (app *UpCmd) uploadAsset(ctx context.Context, a *adapters.LocalAssetFile) error { - ar, err := app.Immich.AssetUpload(ctx, a) +func (upCmd *UpCmd) uploadAsset(ctx context.Context, a *adapters.LocalAssetFile) error { + ar, err := upCmd.app.Client().Immich.AssetUpload(ctx, a) if err != nil { - app.Jnl.Record(ctx, fileevent.UploadServerError, fileevent.AsFileAndName(a.FSys, a.FileName), "error", err.Error()) + upCmd.app.Jnl().Record(ctx, fileevent.UploadServerError, fileevent.AsFileAndName(a.FSys, a.FileName), "error", err.Error()) return err // Must signal the error to the caller } if ar.Status == immich.UploadDuplicate { - app.Jnl.Record(ctx, fileevent.UploadServerDuplicate, fileevent.AsFileAndName(a.FSys, a.FileName), "info", "the server has this file") + upCmd.app.Jnl().Record(ctx, fileevent.UploadServerDuplicate, fileevent.AsFileAndName(a.FSys, a.FileName), "info", "the server has this file") } else { - app.Jnl.Record(ctx, fileevent.Uploaded, fileevent.AsFileAndName(a.FSys, a.FileName)) + upCmd.app.Jnl().Record(ctx, fileevent.Uploaded, fileevent.AsFileAndName(a.FSys, a.FileName)) } a.ID = ar.ID return nil @@ -303,7 +301,7 @@ func (app *UpCmd) uploadAsset(ctx context.Context, a *adapters.LocalAssetFile) e // manageGroupAlbums add the assets to the albums listed in the group. // If an album does not exist, it is created. // Errors are logged. -func (app *UpCmd) manageGroupAlbums(ctx context.Context, g *adapters.AssetGroup) { +func (upCmd *UpCmd) manageGroupAlbums(ctx context.Context, g *adapters.AssetGroup) { assetIDs := []string{} for _, a := range g.Assets { assetIDs = append(assetIDs, a.ID) @@ -311,32 +309,32 @@ func (app *UpCmd) manageGroupAlbums(ctx context.Context, g *adapters.AssetGroup) for _, album := range g.Albums { title := album.Title - l, exist := app.albums[title] + l, exist := upCmd.albums[title] if !exist { - newAl, err := app.Immich.CreateAlbum(ctx, title, album.Description, assetIDs) + newAl, err := upCmd.app.Client().Immich.CreateAlbum(ctx, title, album.Description, assetIDs) if err != nil { - app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, err) + upCmd.app.Jnl().Record(ctx, fileevent.Error, fileevent.FileAndName{}, err) } - app.albums[title] = newAl + upCmd.albums[title] = newAl l = newAl } else { - _, err := app.Immich.AddAssetToAlbum(ctx, l.ID, assetIDs) + _, err := upCmd.app.Client().Immich.AddAssetToAlbum(ctx, l.ID, assetIDs) if err != nil { - app.Jnl.Record(ctx, fileevent.Error, fileevent.FileAndName{}, err) + upCmd.app.Jnl().Record(ctx, fileevent.Error, fileevent.FileAndName{}, err) return } } // Log the action for _, a := range g.Assets { - app.Jnl.Record(ctx, fileevent.UploadAddToAlbum, fileevent.AsFileAndName(a.FSys, a.FileName), "Album", title) + upCmd.app.Jnl().Record(ctx, fileevent.UploadAddToAlbum, fileevent.AsFileAndName(a.FSys, a.FileName), "Album", title) } } } -func (app *UpCmd) DeleteServerAssets(ctx context.Context, ids []string) error { - app.Message("%d server assets to delete.", len(ids)) - return app.Immich.DeleteAssets(ctx, ids, false) +func (upCmd *UpCmd) DeleteServerAssets(ctx context.Context, ids []string) error { + upCmd.app.Log().Message("%d server assets to delete.", len(ids)) + return upCmd.app.Client().Immich.DeleteAssets(ctx, ids, false) } /* diff --git a/commands/upload/ui.go b/commands/upload/ui.go index a21afb94..4d346af2 100644 --- a/commands/upload/ui.go +++ b/commands/upload/ui.go @@ -13,6 +13,7 @@ import ( "github.com/navidys/tvxwidgets" "github.com/rivo/tview" "github.com/simulot/immich-go/adapters" + "github.com/simulot/immich-go/commands/application" "github.com/simulot/immich-go/commands/version" "github.com/simulot/immich-go/internal/fileevent" "golang.org/x/sync/errgroup" @@ -28,8 +29,7 @@ type uiPage struct { counts map[fileevent.Code]*tview.TextView // preserve the inherited log writer - prevSlogWriter io.WriteCloser - + prevLogWriter io.Writer // server's activity history serverActivity []float64 @@ -46,11 +46,21 @@ type uiPage struct { // quitting chan any } -func (upCmd *UpCmd) runUI(ctx context.Context) error { +func (ui *uiPage) highJackLogger(app *application.Application) { + ui.prevLogWriter = app.Log().GetWriter() + w := io.MultiWriter(ui.prevLogWriter, ui.logView) + app.Jnl().SetLogger(app.Log().SetLogWriter(w)) +} + +func (ui *uiPage) restoreLogger(app *application.Application) { + app.Jnl().SetLogger(app.Log().SetLogWriter(ui.prevLogWriter)) +} + +func (upCmd *UpCmd) runUI(ctx context.Context, app *application.Application) error { ctx, cancel := context.WithCancelCause(ctx) uiApp := tview.NewApplication() - ui := newUI(ctx, upCmd) + ui := newUI(ctx, app) defer cancel(nil) pages := tview.NewPages() @@ -75,7 +85,7 @@ func (upCmd *UpCmd) runUI(ctx context.Context) error { uiApp.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { switch event.Key() { case tcell.KeyCtrlQ, tcell.KeyCtrlC: - upCmd.Log.SetLogWriter(ui.prevSlogWriter) + ui.restoreLogger(app) cancel(errors.New("interrupted: Ctrl+C or Ctrl+Q pressed")) case tcell.KeyEnter: if uploadDone.Load() { @@ -95,7 +105,7 @@ func (upCmd *UpCmd) runUI(ctx context.Context) error { tick.Stop() return case <-tick.C: - jobs, err := upCmd.Immich.GetJobs(ctx) + jobs, err := upCmd.app.Client().Immich.GetJobs(ctx) if err == nil { jobCount := 0 jobWaiting := 0 @@ -129,7 +139,7 @@ func (upCmd *UpCmd) runUI(ctx context.Context) error { return case <-tick.C: uiApp.QueueUpdateDraw(func() { - counts := upCmd.Jnl.GetCounts() + counts := app.Jnl().GetCounts() for c := range ui.counts { ui.getCountView(c, counts[c]) } @@ -202,7 +212,7 @@ func (upCmd *UpCmd) runUI(ctx context.Context) error { return context.Cause(ctx) } uploadDone.Store(true) - counts := upCmd.Jnl.GetCounts() + counts := app.Jnl().GetCounts() if counts[fileevent.Error]+counts[fileevent.UploadServerError] > 0 { messages.WriteString("Some errors have occurred. Look at the log file for details\n") } @@ -228,7 +238,7 @@ func (upCmd *UpCmd) runUI(ctx context.Context) error { } // Time to leave - upCmd.Jnl.Report() + app.Jnl().Report() if messages.Len() > 0 { return (errors.New(messages.String())) } @@ -257,7 +267,7 @@ func newModal(message string) tview.Primitive { return modal(text, 80, 2+lines) } -func newUI(ctx context.Context, app *UpCmd) *uiPage { +func newUI(ctx context.Context, app *application.Application) *uiPage { ui := &uiPage{ counts: map[fileevent.Code]*tview.TextView{}, } @@ -291,7 +301,7 @@ func newUI(ctx context.Context, app *UpCmd) *uiPage { ui.addCounter(ui.uploadCounts, 5, "Server has better quality", fileevent.UploadServerBetter) ui.uploadCounts.SetSize(6, 2, 1, 1).SetColumns(30, 10) - if _, err := app.Immich.GetJobs(ctx); err == nil { + if _, err := app.Client().Immich.GetJobs(ctx); err == nil { ui.watchJobs = true ui.serverJobs = tvxwidgets.NewSparkline() @@ -315,9 +325,8 @@ func newUI(ctx context.Context, app *UpCmd) *uiPage { // Hijack the log ui.logView = tview.NewTextView().SetMaxLines(100).ScrollToEnd() + ui.highJackLogger(app) - ui.prevSlogWriter = app.Log.GetWriter() - app.Log.SetLogWriter(io.MultiWriter(ui.prevSlogWriter, ui.logView)) ui.logView.SetBorder(true).SetTitle("Log") ui.screen.AddItem(ui.logView, 2, 0, 1, 1, 0, 0, false) diff --git a/commands/upload/upload.go b/commands/upload/upload.go index 60db4904..dcba0063 100644 --- a/commands/upload/upload.go +++ b/commands/upload/upload.go @@ -13,7 +13,6 @@ import ( type UploadOptions struct { // TODO place this option at the top NoUI bool // Disable UI - Jnl *fileevent.Recorder } // NewUploadCommand adds the Upload command @@ -36,8 +35,8 @@ func NewUploadCommand(ctx context.Context, app *application.Application) *cobra. func (options *UploadOptions) Open(ctx context.Context, cmd *cobra.Command, app *application.Application) error { // Initialize the Journal - if options.Jnl == nil { - options.Jnl = fileevent.NewRecorder(app.Log().Logger) + if app.Jnl() == nil { + app.SetJnl(fileevent.NewRecorder(app.Log().Logger)) } return nil } From 3c5110ae9407a0558d8a09889740e5dbf313d971 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 17:37:07 +0200 Subject: [PATCH 038/252] Refactor upload command to use separate sub-commands for different sources - The `upload` command has been refactored to use separate sub-commands for different sources of photos. - The `upload` command now has a `from-folder` sub-command to upload photos from a folder. - The `upload` command also has a `from-google-photos` sub-command to upload photos from a Google Photos takeout. --- .../googlePhotos/{flags.go => options.go} | 19 ----- commands/upload/cmdGooglePhotos.gono | 67 ------------------ commands/upload/from-folder.go | 3 + commands/upload/fromGooglePhotos.go | 70 +++++++++++++++++++ commands/upload/upload.go | 8 +-- 5 files changed, 76 insertions(+), 91 deletions(-) rename adapters/googlePhotos/{flags.go => options.go} (54%) delete mode 100644 commands/upload/cmdGooglePhotos.gono create mode 100644 commands/upload/fromGooglePhotos.go diff --git a/adapters/googlePhotos/flags.go b/adapters/googlePhotos/options.go similarity index 54% rename from adapters/googlePhotos/flags.go rename to adapters/googlePhotos/options.go index 7a3ca92f..a8311645 100644 --- a/adapters/googlePhotos/flags.go +++ b/adapters/googlePhotos/options.go @@ -6,7 +6,6 @@ import ( cliflags "github.com/simulot/immich-go/internal/cliFlags" "github.com/simulot/immich-go/internal/metadata" "github.com/simulot/immich-go/internal/namematcher" - "github.com/spf13/cobra" ) // ImportFlags represents the command-line flags for the Google Photos takeout import command. @@ -56,21 +55,3 @@ type ImportFlags struct { // SupportedMedia represents the server's actual list of supported media. This is not a flag. SupportedMedia metadata.SupportedMedia } - -// AddGoogleTakeoutFlags adds the command-line flags for the Google Photos takeout import command to the provided Cobra command. -func AddGoogleTakeoutFlags(cmd *cobra.Command, flags *ImportFlags) { - cmd.Flags().BoolVarP(&flags.UseJSONMetadata, "use-json-metadata", "j", true, "Use JSON metadata for date and GPS information") - cmd.Flags().BoolVar(&flags.CreateAlbums, "sync-albums", true, "Automatically create albums in Immich that match the albums in your Google Photos takeout") - cmd.Flags().StringVar(&flags.ImportFromAlbum, "import-from-album-name", "", "Only import photos from the specified Google Photos album") - cmd.Flags().BoolVar(&flags.KeepUntitled, "include-untitled-albums", false, "Include photos from albums without a title in the import process") - cmd.Flags().BoolVarP(&flags.KeepTrashed, "include-trashed", "t", false, "Import photos that are marked as trashed in Google Photos") - cmd.Flags().BoolVarP(&flags.KeepPartner, "include-partner", "p", true, "Import photos from your partner's Google Photos account") - cmd.Flags().StringVar(&flags.PartnerSharedAlbum, "partner-shared-album", "", "Add partner's photo to the specified album name") - cmd.Flags().BoolVarP(&flags.KeepArchived, "include-archived", "a", true, "Import archived Google Photos") - cmd.Flags().BoolVarP(&flags.KeepJSONLess, "include-unmatched", "u", false, "Import photos that do not have a matching JSON file in the takeout") - cmd.Flags().Var(&flags.BannedFiles, "ban-file", "Exclude a file based on a pattern (case-insensitive). Can be specified multiple times.") - cliflags.AddInclusionFlags(cmd, &flags.InclusionFlags) - cliflags.AddDateHandlingFlags(cmd, &flags.DateHandlingFlags) - metadata.AddExifToolFlags(cmd, &flags.ExifToolFlags) - flags.SupportedMedia = metadata.DefaultSupportedMedia -} diff --git a/commands/upload/cmdGooglePhotos.gono b/commands/upload/cmdGooglePhotos.gono deleted file mode 100644 index 9ce37147..00000000 --- a/commands/upload/cmdGooglePhotos.gono +++ /dev/null @@ -1,67 +0,0 @@ -package upload - -import ( - "errors" - "strings" - - gp "github.com/simulot/immich-go/adapters/googlePhotos" - "github.com/simulot/immich-go/cmd" - "github.com/simulot/immich-go/internal/fileevent" - "github.com/simulot/immich-go/internal/fshelper" - "github.com/spf13/cobra" -) - -func addFromGooglePhotosCommand(uploadCmd *cobra.Command, rootFlags *cmd.RootImmichFlags) { - cmdGP := &cobra.Command{ - Use: "from-google-photos [flags] | ", - Short: "Import files either from a Google Photos takeout zipped archive or decompressed folder", - Args: cobra.MinimumNArgs(1), - } - cmdGP.Flags().SortFlags = false - - cmdUpServerFlags := cmd.AddImmichServerFlagSet(cmdGP, rootFlags) - CommonFlags := addCommonFlags(cmdGP) - gpFlags := gp.ImportFlags{} - gp.AddGoogleTakeoutFlags(cmdGP, &gpFlags) - uploadCmd.AddCommand(cmdGP) - - cmdGP.RunE = func(cmd *cobra.Command, args []string) error { - UpCmd := &UpCmd{ - Root: rootFlags, - Server: cmdUpServerFlags, - CommonFlags: CommonFlags, - GooglePhotosFlags: &gpFlags, - } - - ctx := cmdGP.Context() - err := UpCmd.Root.Open(cmdGP) - if err != nil { - return err - } - - UpCmd.Jnl = fileevent.NewRecorder(rootFlags.Log, false) - - fsyss, err := fshelper.ParsePath(args) - if err != nil { - return err - } - if len(fsyss) == 0 { - UpCmd.Root.Message("No file found matching the pattern: %s", strings.Join(args, ",")) - return errors.New("No file found matching the pattern: " + strings.Join(args, ",")) - } - - err = UpCmd.Server.Open(rootFlags) - if err != nil { - return err - } - - UpCmd.GooglePhotosFlags.SupportedMedia = UpCmd.Server.Immich.SupportedMedia() - - adapter, err := gp.NewTakeout(ctx, UpCmd.Jnl, UpCmd.GooglePhotosFlags, fsyss...) - if err != nil { - return err - } - - return UpCmd.run(ctx, adapter) - } -} diff --git a/commands/upload/from-folder.go b/commands/upload/from-folder.go index 55074b2e..c5bc985f 100644 --- a/commands/upload/from-folder.go +++ b/commands/upload/from-folder.go @@ -30,6 +30,7 @@ func NewFromFolderCommand(ctx context.Context, app *application.Application, upO cmd := &cobra.Command{ Use: "from-folder [flags] ...", Short: "Upload photos from a folder", + Args: cobra.MinimumNArgs(1), } cmd.SetContext(ctx) @@ -39,6 +40,8 @@ func NewFromFolderCommand(ctx context.Context, app *application.Application, upO cmd.Flags().BoolVar(&options.Recursive, "recursive", true, "Explore the folder and all its sub-folders") cmd.Flags().Var(&options.BannedFiles, "ban-file", "Exclude a file based on a pattern (case-insensitive). Can be specified multiple times.") cmd.Flags().BoolVar(&options.IgnoreSideCarFiles, "ignore-sidecar-files", false, "Don't upload sidecar with the photo.") + + // TODO // cmd.Flags().BoolVar(&options.StackJpgWithRaw, "stack-jpg-with-raw", false, "Stack JPG images with their corresponding raw images in Immich") // cmd.Flags().BoolVar(&options.StackBurstPhotos, "stack-burst-photos", false, "Stack bursts of photos in Immich") diff --git a/commands/upload/fromGooglePhotos.go b/commands/upload/fromGooglePhotos.go new file mode 100644 index 00000000..570a4069 --- /dev/null +++ b/commands/upload/fromGooglePhotos.go @@ -0,0 +1,70 @@ +package upload + +import ( + "context" + "errors" + "strings" + + gp "github.com/simulot/immich-go/adapters/googlePhotos" + "github.com/simulot/immich-go/commands/application" + cliflags "github.com/simulot/immich-go/internal/cliFlags" + "github.com/simulot/immich-go/internal/fshelper" + "github.com/simulot/immich-go/internal/metadata" + "github.com/spf13/cobra" +) + +func NewFromGooglePhotosCommand(ctx context.Context, app *application.Application, upOptions *UploadOptions) *cobra.Command { + options := &gp.ImportFlags{} + + cmd := &cobra.Command{ + Use: "from-google-photos [flags] | ", + Short: "Upload files either from a zipped Google Photos takeout or decompressed archive", + Args: cobra.MinimumNArgs(1), + } + cmd.SetContext(ctx) + + // AddGoogleTakeoutFlags adds the command-line flags for the Google Photos takeout import command + cmd.Flags().BoolVarP(&options.UseJSONMetadata, "use-json-metadata", "j", true, "Use JSON metadata for date and GPS information") + cmd.Flags().BoolVar(&options.CreateAlbums, "sync-albums", true, "Automatically create albums in Immich that match the albums in your Google Photos takeout") + cmd.Flags().StringVar(&options.ImportFromAlbum, "import-from-album-name", "", "Only import photos from the specified Google Photos album") + cmd.Flags().BoolVar(&options.KeepUntitled, "include-untitled-albums", false, "Include photos from albums without a title in the import process") + cmd.Flags().BoolVarP(&options.KeepTrashed, "include-trashed", "t", false, "Import photos that are marked as trashed in Google Photos") + cmd.Flags().BoolVarP(&options.KeepPartner, "include-partner", "p", true, "Import photos from your partner's Google Photos account") + cmd.Flags().StringVar(&options.PartnerSharedAlbum, "partner-shared-album", "", "Add partner's photo to the specified album name") + cmd.Flags().BoolVarP(&options.KeepArchived, "include-archived", "a", true, "Import archived Google Photos") + cmd.Flags().BoolVarP(&options.KeepJSONLess, "include-unmatched", "u", false, "Import photos that do not have a matching JSON file in the takeout") + cmd.Flags().Var(&options.BannedFiles, "ban-file", "Exclude a file based on a pattern (case-insensitive). Can be specified multiple times.") + + // TODO + // cmd.Flags().BoolVar(&options.StackJpgWithRaw, "stack-jpg-with-raw", false, "Stack JPG images with their corresponding raw images in Immich") + // cmd.Flags().BoolVar(&options.StackBurstPhotos, "stack-burst-photos", false, "Stack bursts of photos in Immich") + + cliflags.AddInclusionFlags(cmd, &options.InclusionFlags) + cliflags.AddDateHandlingFlags(cmd, &options.DateHandlingFlags) + metadata.AddExifToolFlags(cmd, &options.ExifToolFlags) + options.SupportedMedia = metadata.DefaultSupportedMedia + + cmd.RunE = func(cmd *cobra.Command, args []string) error { + ctx := cmd.Context() + log := app.Log() + client := app.Client() + + fsyss, err := fshelper.ParsePath(args) + if err != nil { + return err + } + if len(fsyss) == 0 { + log.Message("No file found matching the pattern: %s", strings.Join(args, ",")) + return errors.New("No file found matching the pattern: " + strings.Join(args, ",")) + } + + options.SupportedMedia = client.Immich.SupportedMedia() + adapter, err := gp.NewTakeout(ctx, app.Jnl(), options, fsyss...) + if err != nil { + return err + } + return newUpload(app, upOptions).run(ctx, adapter, app) + } + + return cmd +} diff --git a/commands/upload/upload.go b/commands/upload/upload.go index dcba0063..91d297bb 100644 --- a/commands/upload/upload.go +++ b/commands/upload/upload.go @@ -2,7 +2,6 @@ package upload import ( "context" - "errors" "github.com/simulot/immich-go/commands/application" "github.com/simulot/immich-go/internal/fileevent" @@ -19,17 +18,16 @@ type UploadOptions struct { func NewUploadCommand(ctx context.Context, app *application.Application) *cobra.Command { options := &UploadOptions{} cmd := &cobra.Command{ - Use: "upload ...", + Use: "upload command", Short: "Upload photos on an Immich server from various sources", } application.AddClientFlags(ctx, cmd, app) cmd.TraverseChildren = true cmd.PersistentFlags().BoolVar(&options.NoUI, "no-ui", false, "Disable the user interface") cmd.PersistentPreRunE = application.ChainRunEFunctions(cmd.PersistentPreRunE, options.Open, ctx, cmd, app) - cmd.RunE = func(cmd *cobra.Command, args []string) error { - return errors.New("missing from... sub-command") - } + cmd.AddCommand(NewFromFolderCommand(ctx, app, options)) + cmd.AddCommand(NewFromGooglePhotosCommand(ctx, app, options)) return cmd } From 04ca9270c532438555e19d79eac857398b5e18d0 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 17:44:47 +0200 Subject: [PATCH 039/252] typo in upload command --- commands/upload/upload.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/upload/upload.go b/commands/upload/upload.go index 91d297bb..cd54d37d 100644 --- a/commands/upload/upload.go +++ b/commands/upload/upload.go @@ -18,8 +18,8 @@ type UploadOptions struct { func NewUploadCommand(ctx context.Context, app *application.Application) *cobra.Command { options := &UploadOptions{} cmd := &cobra.Command{ - Use: "upload command", - Short: "Upload photos on an Immich server from various sources", + Use: "upload", + Short: "Upload photos to an Immich server from various sources", } application.AddClientFlags(ctx, cmd, app) cmd.TraverseChildren = true From dddff546f3aab86a39dc6239f5d47f23a723e1fd Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 17:45:00 +0200 Subject: [PATCH 040/252] Refactor NewImmichClient() in client.go to include option for dry run --- commands/application/client.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/commands/application/client.go b/commands/application/client.go index ddf2033e..69c79f29 100644 --- a/commands/application/client.go +++ b/commands/application/client.go @@ -105,7 +105,13 @@ func StartClient(ctx context.Context, cmd *cobra.Command, app *Application) erro log.Info("Connection to the server " + client.Server) var err error - client.Immich, err = immich.NewImmichClient(client.Server, client.APIKey, immich.OptionVerifySSL(client.SkipSSL), immich.OptionConnectionTimeout(client.ClientTimeout)) + client.Immich, err = immich.NewImmichClient( + client.Server, + client.APIKey, + immich.OptionVerifySSL(client.SkipSSL), + immich.OptionConnectionTimeout(client.ClientTimeout), + immich.OptionDryRun(client.DryRun), + ) if err != nil { return err } From 997d72f06325ba8fa68b501547b9d018cb00aff8 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 17:46:41 +0200 Subject: [PATCH 041/252] Refactor upload command to use more descriptive wording for Google Photos source --- commands/upload/fromGooglePhotos.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/upload/fromGooglePhotos.go b/commands/upload/fromGooglePhotos.go index 570a4069..cba3ae89 100644 --- a/commands/upload/fromGooglePhotos.go +++ b/commands/upload/fromGooglePhotos.go @@ -18,7 +18,7 @@ func NewFromGooglePhotosCommand(ctx context.Context, app *application.Applicatio cmd := &cobra.Command{ Use: "from-google-photos [flags] | ", - Short: "Upload files either from a zipped Google Photos takeout or decompressed archive", + Short: "Upload photos either from a zipped Google Photos takeout or decompressed archive", Args: cobra.MinimumNArgs(1), } cmd.SetContext(ctx) From 717dd3a2131307653695b6a6840a05b822a56d45 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 17:54:37 +0200 Subject: [PATCH 042/252] Refactor client.go to write dry-run indication on the log --- commands/application/client.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/commands/application/client.go b/commands/application/client.go index 69c79f29..8715623a 100644 --- a/commands/application/client.go +++ b/commands/application/client.go @@ -50,10 +50,11 @@ func AddClientFlags(ctx context.Context, cmd *cobra.Command, app *Application) { cmd.PersistentFlags().BoolVar(&client.DryRun, "dry-run", false, "Simulate all actions") cmd.PersistentFlags().StringVar(&client.TimeZone, "time-zone", client.TimeZone, "Override the system time zone") - cmd.PersistentPreRunE = ChainRunEFunctions(cmd.PersistentPreRunE, StartClient, ctx, cmd, app) + cmd.PersistentPreRunE = ChainRunEFunctions(cmd.PersistentPreRunE, OpenClient, ctx, cmd, app) + cmd.PersistentPostRunE = ChainRunEFunctions(cmd.PersistentPostRunE, CloseClient, ctx, cmd, app) } -func StartClient(ctx context.Context, cmd *cobra.Command, app *Application) error { +func OpenClient(ctx context.Context, cmd *cobra.Command, app *Application) error { client := app.Client() log := app.Log() @@ -148,7 +149,19 @@ func StartClient(ctx context.Context, cmd *cobra.Command, app *Application) erro return err } log.Info(fmt.Sprintf("Connected, user: %s", user.Email)) + if client.DryRun { + log.Info("Dry-run mode enabled. No changes will be made to the server.") + } } return nil } + +func CloseClient(ctx context.Context, cmd *cobra.Command, app *Application) error { + client := app.Client() + log := app.Log() + if client.DryRun { + log.Info("Dry-run mode enabled. No changes were made to the server.") + } + return nil +} From 6f77c4f0003133ed3230a6318b9ac369648743ab Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 18:01:21 +0200 Subject: [PATCH 043/252] Refactor log.go to mask the API key flag --- commands/application/log.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/commands/application/log.go b/commands/application/log.go index 4e52506c..5a47f3d8 100644 --- a/commands/application/log.go +++ b/commands/application/log.go @@ -74,9 +74,9 @@ func (log *Log) Open(ctx context.Context, cmd *cobra.Command, app *Application) val = v } } - // if flag.Name == "key" { - // val = "********" - // } + if flag.Name == "api-key" && len(val) > 4 { + val = strings.Repeat("*", len(val)-4) + val[len(val)-4:] + } log.Info(fmt.Sprintf(" --%s: %q", flag.Name, val)) }) From 29fca64367f2d24bbb711aa34be32d9df62470fb Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 18:17:10 +0200 Subject: [PATCH 044/252] Refactor testgp_test.go to fix the order of live photos in the livePhotos map --- adapters/googlePhotos/testgp_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adapters/googlePhotos/testgp_test.go b/adapters/googlePhotos/testgp_test.go index b89f352b..0e8356cd 100644 --- a/adapters/googlePhotos/testgp_test.go +++ b/adapters/googlePhotos/testgp_test.go @@ -369,7 +369,7 @@ func TestArchives(t *testing.T) { case adapters.GroupKindNone: assets[fileKeyTracker{baseName: g.Assets[0].Title, size: g.Assets[0].Size()}] = fileKeyTracker{} case adapters.GroupKindMotionPhoto: - livePhotos[fileKeyTracker{baseName: g.Assets[0].Title, size: g.Assets[0].Size()}] = fileKeyTracker{baseName: g.Assets[1].Title, size: g.Assets[1].Size()} + livePhotos[fileKeyTracker{baseName: g.Assets[1].Title, size: g.Assets[1].Size()}] = fileKeyTracker{baseName: g.Assets[0].Title, size: g.Assets[0].Size()} } for _, al := range g.Albums { l := albums[al.Title] From f1d27d043ae93e22d1df37a1269ad784a346a6f8 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 18:25:23 +0200 Subject: [PATCH 045/252] Refactor testgp_test.go to fix the order of live photos in the livePhotos map --- adapters/googlePhotos/testgp_test.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/adapters/googlePhotos/testgp_test.go b/adapters/googlePhotos/testgp_test.go index 0e8356cd..f88852cb 100644 --- a/adapters/googlePhotos/testgp_test.go +++ b/adapters/googlePhotos/testgp_test.go @@ -365,15 +365,29 @@ func TestArchives(t *testing.T) { assets := photo{} albums := album{} for g := range assetChan { + var ( + photo *adapters.LocalAssetFile + video *adapters.LocalAssetFile + ) + for _, a := range g.Assets { + ext := path.Ext(a.FileName) + switch b.flags.SupportedMedia.TypeFromExt(ext) { + case metadata.TypeImage: + photo = a + case metadata.TypeVideo: + video = a + } + a.Close() + } switch g.Kind { case adapters.GroupKindNone: - assets[fileKeyTracker{baseName: g.Assets[0].Title, size: g.Assets[0].Size()}] = fileKeyTracker{} + assets[fileKeyTracker{baseName: photo.Title, size: photo.Size()}] = fileKeyTracker{} case adapters.GroupKindMotionPhoto: - livePhotos[fileKeyTracker{baseName: g.Assets[1].Title, size: g.Assets[1].Size()}] = fileKeyTracker{baseName: g.Assets[0].Title, size: g.Assets[0].Size()} + livePhotos[fileKeyTracker{baseName: photo.Title, size: photo.Size()}] = fileKeyTracker{baseName: video.Title, size: video.Size()} } for _, al := range g.Albums { l := albums[al.Title] - l = append(l, fileKeyTracker{baseName: g.Assets[0].Title, size: g.Assets[0].Size()}) + l = append(l, fileKeyTracker{baseName: photo.Title, size: photo.Size()}) albums[al.Title] = l } } From 7ce5dd52c70eced5337048f1ec110300d7c7afdc Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 18:27:18 +0200 Subject: [PATCH 046/252] remove useless source files --- adapters/readersearch.nogo | 47 ----------------- adapters/readersearch_test.nogo | 92 --------------------------------- commands/upload/cmdFolder.gono | 79 ---------------------------- 3 files changed, 218 deletions(-) delete mode 100644 adapters/readersearch.nogo delete mode 100644 adapters/readersearch_test.nogo delete mode 100644 commands/upload/cmdFolder.gono diff --git a/adapters/readersearch.nogo b/adapters/readersearch.nogo deleted file mode 100644 index 8217f6a0..00000000 --- a/adapters/readersearch.nogo +++ /dev/null @@ -1,47 +0,0 @@ -package browser - -import ( - "bytes" - "io" -) - -const searchBufferSize = 32 * 1024 - -func searchPattern(r io.Reader, pattern []byte, maxDataLen int) ([]byte, error) { - var err error - pos := 0 - // Create a buffer to hold the chunk of dataZ - buffer := make([]byte, searchBufferSize) - ofs := 0 - - var bytesRead int - for { - // Read a chunk of data into the buffer - bytesRead, err = r.Read(buffer[bytesRead-ofs:]) - if err != nil && err != io.EOF { - return nil, err - } - - // Search for the pattern within the buffer - index := bytes.Index(buffer, pattern) - if index >= 0 { - if index < searchBufferSize-maxDataLen { - return buffer[index : index+maxDataLen], nil - } - ofs = index - } else { - ofs = bytesRead - maxDataLen - 1 - } - - // Check if end of file is reached - if err == io.EOF { - break - } - - // Move the remaining bytes of the current buffer to the beginning - copy(buffer, buffer[ofs:bytesRead]) - pos += bytesRead - } - - return nil, io.EOF -} diff --git a/adapters/readersearch_test.nogo b/adapters/readersearch_test.nogo deleted file mode 100644 index c4d7479f..00000000 --- a/adapters/readersearch_test.nogo +++ /dev/null @@ -1,92 +0,0 @@ -package adapter - -import ( - "bytes" - "crypto/rand" - "io" - "reflect" - "testing" -) - -func GenRandomBytes(size int) (blk []byte) { - blk = make([]byte, size) - _, _ = rand.Read(blk) - return -} - -func Test_searchPattern(t *testing.T) { - type args struct { - r io.Reader - pattern []byte - maxDataLen int - } - tests := []struct { - name string - args args - want []byte - wantErr bool - }{ - { - name: "notin", - args: args{ - r: bytes.NewReader(append(GenRandomBytes(searchBufferSize/3), "this is the date:2023-08-01T20:20:00 in the middle of the buffer"...)), - pattern: []byte("nothere"), - maxDataLen: 24, - }, - want: nil, - wantErr: true, - }, - { - name: "middle", - args: args{ - r: bytes.NewReader(append(GenRandomBytes(searchBufferSize/3), "this is the date:2023-08-01T20:20:00 in the middle of the buffer"...)), - pattern: []byte("date:"), - maxDataLen: 24, - }, - want: []byte("date:2023-08-01T20:20:00"), - wantErr: false, - }, - { - name: "beginning", - args: args{ - r: bytes.NewReader([]byte("date:2023-08-01T20:20:00 in the middle of the buffer")), - pattern: []byte("date:"), - maxDataLen: 24, - }, - want: []byte("date:2023-08-01T20:20:00"), - wantErr: false, - }, - { - name: "2ndbuffer", - args: args{ - r: bytes.NewReader(append(GenRandomBytes(3*searchBufferSize), "this is the date:2023-08-01T20:20:00 in the middle of the buffer"...)), - pattern: []byte("date:"), - maxDataLen: 24, - }, - want: []byte("date:2023-08-01T20:20:00"), - wantErr: false, - }, - { - name: "crossing buffer boundaries", - args: args{ - r: bytes.NewReader(append(append(GenRandomBytes(2*searchBufferSize-10), "date:2023-08-01T20:20:00 in the middle of the buffer"...), GenRandomBytes(searchBufferSize-10)...)), - pattern: []byte("date:"), - maxDataLen: 24, - }, - want: []byte("date:2023-08-01T20:20:00"), - wantErr: false, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got, err := searchPattern(tt.args.r, tt.args.pattern, tt.args.maxDataLen) - if (err != nil) != tt.wantErr { - t.Errorf("searchPattern() error = %v, wantErr %v", err, tt.wantErr) - return - } - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("searchPattern() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/commands/upload/cmdFolder.gono b/commands/upload/cmdFolder.gono deleted file mode 100644 index ec89fc39..00000000 --- a/commands/upload/cmdFolder.gono +++ /dev/null @@ -1,79 +0,0 @@ -package upload - -import ( - "context" - "errors" - "strings" - - "github.com/simulot/immich-go/adapters/folder" - "github.com/simulot/immich-go/commands/application" - "github.com/simulot/immich-go/internal/fileevent" - "github.com/simulot/immich-go/internal/fshelper" - "github.com/spf13/cobra" -) - -func NewUplodaFormFolder(ctx context.Context, app *application.Application) *cobra.Command { - cmd := &cobra.Command{ - Use: "from-folder [flags] [...]", - Short: "import files from a folder structure", - Args: cobra.MinimumNArgs(1), - } - cmdFolder.Flags().SortFlags = false - - cmdUpServerFlags := cmd.AddImmichServerFlagSet(cmdFolder, rootFlags) - CommonFlags := addCommonFlags(cmdFolder) - - UploadFolderFlags := folder.ImportFolderOptions{} - folder.AddUploadFolderFlags(cmdFolder, &UploadFolderFlags) - - // TODO: provide the mapping between old and new flags - - // TODO: add missing options - // -stack-burst - // -stack-jpg-raw - - // TODO: Add Examples - // immich-go upload from-folder --ban-file @eaDir/ --ban-file @__thumb/ --ban-file SYNOFILE_THUMB_* - - uploadCmd.AddCommand(cmdFolder) - - cmdFolder.RunE = func(cmd *cobra.Command, args []string) error { - UpCmd := &UpCmd{ - Root: rootFlags, - Server: cmdUpServerFlags, - CommonFlags: CommonFlags, - UploadFolderFlags: &UploadFolderFlags, - } - - ctx := cmd.Context() - - err := UpCmd.Root.Open(cmdFolder) - if err != nil { - return err - } - - UpCmd.Jnl = fileevent.NewRecorder(rootFlags.Log, false) - - fsyss, err := fshelper.ParsePath(args) - if err != nil { - return err - } - if len(fsyss) == 0 { - UpCmd.Root.Message("No file found matching the pattern: %s", strings.Join(args, ",")) - return errors.New("No file found matching the pattern: " + strings.Join(args, ",")) - } - - err = UpCmd.Server.Open(UpCmd.Root) - if err != nil { - return err - } - UpCmd.UploadFolderFlags.SupportedMedia = UpCmd.Server.Immich.SupportedMedia() - - adapter, err := folder.NewLocalFiles(ctx, UpCmd.Jnl, UpCmd.UploadFolderFlags, fsyss...) - if err != nil { - return err - } - - return UpCmd.run(ctx, adapter) - } -} From 7d7e0b50db25d66b02879032e8654e9aec166f5f Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 18:44:04 +0200 Subject: [PATCH 047/252] Refactor main.go to handle nil log writer when logging errors --- main.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index 71d1eeb9..3fd92549 100644 --- a/main.go +++ b/main.go @@ -68,7 +68,9 @@ func runImmichGo(ctx context.Context) error { // let's start err := cmd.ExecuteContext(ctx) if err != nil { - app.Log().Error(err.Error()) + if app.Log() != nil && app.Log().GetWriter() != nil { + app.Log().Error(err.Error()) + } } return err } From d693f4135c2bc2e099e308ceef3c4d41e4635757 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 20:12:12 +0200 Subject: [PATCH 048/252] Refactor upload command to remove exif flags for the google-photos --- commands/upload/fromGooglePhotos.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commands/upload/fromGooglePhotos.go b/commands/upload/fromGooglePhotos.go index cba3ae89..2712bd1d 100644 --- a/commands/upload/fromGooglePhotos.go +++ b/commands/upload/fromGooglePhotos.go @@ -40,8 +40,8 @@ func NewFromGooglePhotosCommand(ctx context.Context, app *application.Applicatio // cmd.Flags().BoolVar(&options.StackBurstPhotos, "stack-burst-photos", false, "Stack bursts of photos in Immich") cliflags.AddInclusionFlags(cmd, &options.InclusionFlags) - cliflags.AddDateHandlingFlags(cmd, &options.DateHandlingFlags) - metadata.AddExifToolFlags(cmd, &options.ExifToolFlags) + // cliflags.AddDateHandlingFlags(cmd, &options.DateHandlingFlags) + // metadata.AddExifToolFlags(cmd, &options.ExifToolFlags) options.SupportedMedia = metadata.DefaultSupportedMedia cmd.RunE = func(cmd *cobra.Command, args []string) error { From dde3c60868c6667f303b752eb90dd9e976e9bf95 Mon Sep 17 00:00:00 2001 From: simulot Date: Sun, 6 Oct 2024 20:16:04 +0200 Subject: [PATCH 049/252] Refactor .goreleaser.yaml --- .goreleaser.yaml | 188 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 5828d9d0..4dc552dd 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -54,3 +54,191 @@ changelog: # Feel free to remove those if you don't want/use them. # yaml-language-server: $schema=https://goreleaser.com/static/schema.json # vim: set ts=2 sw=2 tw=0 fo=cnqoj + +# .goreleaser.yaml +release: + # Repo in which the release will be created. + # Default: extracted from the origin remote URL or empty if its private hosted. + # github: + # owner: user + # name: repo + + # IDs of the archives to use. + # Empty means all IDs. + # + # Default: []. + # ids: + # - foo + # - bar + + # If set to true, will not auto-publish the release. + # Note: all GitHub releases start as drafts while artifacts are uploaded. + # Available only for GitHub and Gitea. + draft: true + + # Whether to remove existing draft releases with the same name before creating + # a new one. + # + # Only effective if `draft` is set to true. + # Available only for GitHub. + replace_existing_draft: true + + # Whether to remove an artifact that already exists. + # + # Available only for GitHub. + # This might be a bit expensive (rate-limiting speaking), so it is only done + # when the upload of an artifact fails with a 422 (which means it already + # exists in the release). + # We then grab the list of artifacts from the release, and delete the file + # that matches the one we're trying to upload. + # GoReleaser will then retry its upload. + replace_existing_artifacts: true + + # Useful if you want to delay the creation of the tag in the remote. + # You can create the tag locally, but not push it, and run GoReleaser. + # It'll then set the `target_commitish` portion of the GitHub release to the + # value of this field. + # Only works on GitHub. + # + # Default: ''. + # Templates: allowed. + target_commitish: "{{ .Commit }}" + + # This allows to change which tag GitHub will create. + # Usually you'll use this together with `target_commitish`, or if you want to + # publish a binary from a monorepo into a public repository somewhere, without + # the tag prefix. + # + # This feature is only available in GoReleaser Pro. + # Default: '{{ .PrefixedCurrentTag }}'. + # Templates: allowed. + tag: "{{ .CurrentTag }}" + + # If set, will create a release discussion in the category specified. + # + # Warning: do not use categories in the 'Announcement' format. + # Check https://github.com/goreleaser/goreleaser/issues/2304 for more info. + # + # Default: ''. + discussion_category_name: General + + # If set to auto, will mark the release as not ready for production + # in case there is an indicator for this in the tag e.g. v1.0.0-rc1 + # If set to true, will mark the release as not ready for production. + # Default: false. + prerelease: auto + + # If set to false, will NOT mark the release as "latest". + # This prevents it from being shown at the top of the release list, + # and from being returned when calling https://api.github.com/repos/OWNER/REPO/releases/latest. + # + # Available only for GitHub. + # + # Default: true. + make_latest: true + + # What to do with the release notes in case there the release already exists. + # + # Valid options are: + # - `keep-existing`: keep the existing notes + # - `append`: append the current release notes to the existing notes + # - `prepend`: prepend the current release notes to the existing notes + # - `replace`: replace existing notes + # + # Default: `keep-existing`. + mode: append + + # Header for the release body. + # + # Templates: allowed. + # header: | + # ## Some title ({{ .Date }}) + + # Welcome to this new release! + + # Header for the release body. + # + # This feature is only available in GoReleaser Pro. + # header: + # # Loads from an URL. + # from_url: + # # Templates: allowed. + # url: https://foo.bar/header.md + # headers: + # x-api-token: "${MYCOMPANY_TOKEN}" + + # # Loads from a local file. + # # Overrides `from_url`. + # from_file: + # # Templates: allowed. + # path: ./header.md + + # Footer for the release body. + # + # Templates: allowed. + # footer: | + # ## Thanks + + # Those were the changes on {{ .Tag }}! + + # Footer for the release body. + # + # This feature is only available in GoReleaser Pro. + # footer: + # # Loads from an URL. + # from_url: + # # Templates: allowed. + # url: https://foo.bar/footer.md + # footers: + # x-api-token: "${MYCOMPANY_TOKEN}" + + # # Loads from a local file. + # # Overrides `from_url`. + # from_file: + # # Templates: allowed. + # path: ./footer.md + + # # You can change the name of the release. + # # + # # Default: '{{.Tag}}' ('{{.PrefixedTag}}' on Pro). + # # Templates: allowed. + # name_template: "{{.ProjectName}}-v{{.Version}} {{.Env.USER}}" + + # You can disable this pipe in order to not create the release on any SCM. + # Keep in mind that this might also break things that depend on the release + # URL, for instance, homebrew taps. + # + # Templates: allowed. + disable: true + + # Set this to true if you want to disable just the artifact upload to the SCM. + # If this is true, GoReleaser will still create the release with the + # changelog, but won't upload anything to it. + # + # Templates: allowed. + skip_upload: true + + # You can add extra pre-existing files to the release. + # The filename on the release will be the last part of the path (base). + # If another file with the same name exists, the last one found will be used. + # + # Templates: allowed. + # extra_files: + # - glob: ./path/to/file.txt + # - glob: ./glob/**/to/**/file/**/* + # - glob: ./glob/foo/to/bar/file/foobar/override_from_previous + # - glob: ./single_file.txt + # name_template: file.txt # note that this only works if glob matches 1 file only + + # Additional templated extra files to add to the release. + # Those files will have their contents pass through the template engine, + # and its results will be added to the release. + # + # This feature is only available in GoReleaser Pro. + # Templates: allowed. + # templated_extra_files: + # - src: LICENSE.tpl + # dst: LICENSE.txt + + # # Upload metadata.json and artifacts.json to the release as well. + # include_meta: true \ No newline at end of file From 62ceb3feedbf12135a3aab6d342ec626f96eb743 Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 7 Oct 2024 18:14:34 +0200 Subject: [PATCH 050/252] Refactor .goreleaser.yaml and go.mod files --- .goreleaser.yaml | 6 ++++-- go.mod | 2 +- go.sum | 15 ++++++++++----- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 4dc552dd..212551cb 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -1,5 +1,7 @@ # This is an example .goreleaser.yml file with some sensible defaults. # Make sure to check the documentation at https://goreleaser.com +version: 2 + before: hooks: # You may remove this if you don't use go modules. @@ -112,7 +114,7 @@ release: # This feature is only available in GoReleaser Pro. # Default: '{{ .PrefixedCurrentTag }}'. # Templates: allowed. - tag: "{{ .CurrentTag }}" + # tag: "{{ .CurrentTag }}" # If set, will create a release discussion in the category specified. # @@ -120,7 +122,7 @@ release: # Check https://github.com/goreleaser/goreleaser/issues/2304 for more info. # # Default: ''. - discussion_category_name: General + # discussion_category_name: General # If set to auto, will mark the release as not ready for production # in case there is an indicator for this in the tag e.g. v1.0.0-rc1 diff --git a/go.mod b/go.mod index 7c185c0a..bda99f5b 100644 --- a/go.mod +++ b/go.mod @@ -50,7 +50,7 @@ require ( github.com/pkg/sftp v1.13.6 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.9.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.19.0 golang.org/x/crypto v0.21.0 // indirect golang.org/x/sys v0.20.0 // indirect diff --git a/go.sum b/go.sum index 61bac438..33dccbc0 100644 --- a/go.sum +++ b/go.sum @@ -3,8 +3,11 @@ github.com/barasher/go-exiftool v1.10.0/go.mod h1:F9s/a3uHSM8YniVfwF+sbQUtP8Gmh9 github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= @@ -58,8 +61,9 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/sftp v1.13.5/go.mod h1:wHDZ0IZX6JcBYRK1TH9bcVq8G7TLpVHYIGJRFnmPfxg= github.com/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/psanford/memfs v0.0.0-20230130182539-4dbf7e3e865e h1:51xcRlSMBU5rhM9KahnJGfEsBPVPz3182TgFRowA8yY= github.com/psanford/memfs v0.0.0-20230130182539-4dbf7e3e865e/go.mod h1:tcaRap0jS3eifrEEllL6ZMd9dg8IlDpi2S1oARrQ+NI= github.com/rivo/tview v0.0.0-20240818110301-fd649dbf1223 h1:N+DggyldbUDqFlk0b8JeRjB9zGpmQ8wiKpq+VBbzRso= @@ -96,9 +100,9 @@ github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= @@ -118,8 +122,7 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= @@ -176,6 +179,8 @@ golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From abb751a91189fac7751ab046fe9111485d73f161 Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 7 Oct 2024 18:21:20 +0200 Subject: [PATCH 051/252] Refactor options.go to remove UseJSONMetadata flag `` --- adapters/googlePhotos/options.go | 3 --- commands/upload/fromGooglePhotos.go | 1 - 2 files changed, 4 deletions(-) diff --git a/adapters/googlePhotos/options.go b/adapters/googlePhotos/options.go index a8311645..a5508153 100644 --- a/adapters/googlePhotos/options.go +++ b/adapters/googlePhotos/options.go @@ -10,9 +10,6 @@ import ( // ImportFlags represents the command-line flags for the Google Photos takeout import command. type ImportFlags struct { - // UseJSONMetadata indicates whether to use JSON metadata. A virtual XMP sidecar is created to convey the GPS location and the date of capture - UseJSONMetadata bool - // CreateAlbums determines whether to create albums in Immich that match the albums in the Google Photos takeout. CreateAlbums bool diff --git a/commands/upload/fromGooglePhotos.go b/commands/upload/fromGooglePhotos.go index 2712bd1d..3532ee50 100644 --- a/commands/upload/fromGooglePhotos.go +++ b/commands/upload/fromGooglePhotos.go @@ -24,7 +24,6 @@ func NewFromGooglePhotosCommand(ctx context.Context, app *application.Applicatio cmd.SetContext(ctx) // AddGoogleTakeoutFlags adds the command-line flags for the Google Photos takeout import command - cmd.Flags().BoolVarP(&options.UseJSONMetadata, "use-json-metadata", "j", true, "Use JSON metadata for date and GPS information") cmd.Flags().BoolVar(&options.CreateAlbums, "sync-albums", true, "Automatically create albums in Immich that match the albums in your Google Photos takeout") cmd.Flags().StringVar(&options.ImportFromAlbum, "import-from-album-name", "", "Only import photos from the specified Google Photos album") cmd.Flags().BoolVar(&options.KeepUntitled, "include-untitled-albums", false, "Include photos from albums without a title in the import process") From 5f9577a8cada2046003be95b850baf08582abe49 Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 7 Oct 2024 18:22:22 +0200 Subject: [PATCH 052/252] Refactor upload command flag name for importing from a specific Google Photos album --- commands/upload/fromGooglePhotos.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands/upload/fromGooglePhotos.go b/commands/upload/fromGooglePhotos.go index 3532ee50..0e5670fe 100644 --- a/commands/upload/fromGooglePhotos.go +++ b/commands/upload/fromGooglePhotos.go @@ -25,7 +25,7 @@ func NewFromGooglePhotosCommand(ctx context.Context, app *application.Applicatio // AddGoogleTakeoutFlags adds the command-line flags for the Google Photos takeout import command cmd.Flags().BoolVar(&options.CreateAlbums, "sync-albums", true, "Automatically create albums in Immich that match the albums in your Google Photos takeout") - cmd.Flags().StringVar(&options.ImportFromAlbum, "import-from-album-name", "", "Only import photos from the specified Google Photos album") + cmd.Flags().StringVar(&options.ImportFromAlbum, "from-album-name", "", "Only import photos from the specified Google Photos album") cmd.Flags().BoolVar(&options.KeepUntitled, "include-untitled-albums", false, "Include photos from albums without a title in the import process") cmd.Flags().BoolVarP(&options.KeepTrashed, "include-trashed", "t", false, "Import photos that are marked as trashed in Google Photos") cmd.Flags().BoolVarP(&options.KeepPartner, "include-partner", "p", true, "Import photos from your partner's Google Photos account") From 3f1544e3fa4c43db7edca261ba732f45e25302e9 Mon Sep 17 00:00:00 2001 From: simulot Date: Mon, 7 Oct 2024 19:39:09 +0200 Subject: [PATCH 053/252] Add documentation for Immich-go environment variables --- docs/environment.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 docs/environment.md diff --git a/docs/environment.md b/docs/environment.md new file mode 100644 index 00000000..52d4f5a6 --- /dev/null +++ b/docs/environment.md @@ -0,0 +1,9 @@ +# Immich-go environment variables + +The following environment variables can be set to configure the behavior of Immich-go: + + +| Environment Variable | Description | +| -------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `IMMICHGO_SERVER` | Immich server URL with the format `http://:`. Example: `https://mynas:2283` | +| `IMMICHGO_APIKEY` | Immich API key. Check the [documentation](https://immich.app/docs/features/command-line-interface#obtain-the-api-key) to get one. | From 4c7ee08fa5f60c05cf51a9d60718f57bc800d2c7 Mon Sep 17 00:00:00 2001 From: simulot Date: Sat, 12 Oct 2024 13:59:47 +0200 Subject: [PATCH 054/252] Refactor readFolder.go to improve live photo linking logic --- adapters/folder/DATA/not-motion/IMG_1234.jpg | Bin 0 -> 91506 bytes adapters/folder/DATA/not-motion/IMG_1234.mp4 | Bin 0 -> 1280605 bytes adapters/folder/e2e_readFolder_test.go | 27 ++++ adapters/folder/readFolder.go | 157 +++++++++++++------ adapters/folder/readFolder_test.go | 40 +---- adapters/localfile.go | 5 +- internal/cliFlags/dateFromNames.go | 2 +- 7 files changed, 142 insertions(+), 89 deletions(-) create mode 100644 adapters/folder/DATA/not-motion/IMG_1234.jpg create mode 100644 adapters/folder/DATA/not-motion/IMG_1234.mp4 diff --git a/adapters/folder/DATA/not-motion/IMG_1234.jpg b/adapters/folder/DATA/not-motion/IMG_1234.jpg new file mode 100644 index 0000000000000000000000000000000000000000..535baceac4a0680784eec8fbe96c96e1946c724c GIT binary patch literal 91506 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