@@ -3,7 +3,9 @@ package files
33import (
44 "context"
55 "immich-go/assets"
6+ "immich-go/helpers/fshelper"
67 "immich-go/immich/metadata"
8+ "immich-go/logger"
79 "io/fs"
810 "path"
911 "path/filepath"
@@ -14,12 +16,14 @@ import (
1416type LocalAssetBrowser struct {
1517 fsys fs.FS
1618 albums map [string ]string
19+ log logger.Logger
1720}
1821
19- func NewLocalFiles (ctx context.Context , fsys fs.FS ) (* LocalAssetBrowser , error ) {
22+ func NewLocalFiles (ctx context.Context , fsys fs.FS , log logger. Logger ) (* LocalAssetBrowser , error ) {
2023 return & LocalAssetBrowser {
2124 fsys : fsys ,
2225 albums : map [string ]string {},
26+ log : log ,
2327 }, nil
2428}
2529
@@ -54,6 +58,11 @@ func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *assets.LocalAsset
5458 return nil
5559 }
5660
61+ ext := path .Ext (name )
62+ if _ , err := fshelper .MimeFromExt (strings .ToLower (ext )); err != nil {
63+ return nil
64+ }
65+ la .log .Debug ("file '%s'" , name )
5766 f := assets.LocalAssetFile {
5867 FSys : la .fsys ,
5968 FileName : name ,
@@ -76,12 +85,8 @@ func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *assets.LocalAsset
7685 f .DateTaken = time .Now ()
7786 }
7887 }
79- _ , err = fs .Stat (la .fsys , name + ".xmp" )
80- if err == nil {
81- f .SideCar = & metadata.SideCar {
82- FileName : name + ".xmp" ,
83- OnFSsys : true ,
84- }
88+ if ! la .checkSidecar (& f , name + ".xmp" ) {
89+ la .checkSidecar (& f , strings .TrimSuffix (name , ext )+ ".xmp" )
8590 }
8691 }
8792 fileChan <- & f
@@ -104,6 +109,19 @@ func (la *LocalAssetBrowser) Browse(ctx context.Context) chan *assets.LocalAsset
104109 return fileChan
105110}
106111
112+ func (la * LocalAssetBrowser ) checkSidecar (f * assets.LocalAssetFile , name string ) bool {
113+ _ , err := fs .Stat (la .fsys , name + ".xmp" )
114+ if err == nil {
115+ la .log .Debug (" found sidecar: '%s'" , name )
116+ f .SideCar = & metadata.SideCar {
117+ FileName : name + ".xmp" ,
118+ OnFSsys : true ,
119+ }
120+ return true
121+ }
122+ return false
123+ }
124+
107125func (la * LocalAssetBrowser ) addAlbum (dir string ) {
108126 base := path .Base (dir )
109127 la .albums [dir ] = base
0 commit comments