diff --git a/models/file.go b/models/file.go index 9897e3f3..86ea4b23 100644 --- a/models/file.go +++ b/models/file.go @@ -85,8 +85,8 @@ func GetFilesByIDs(ids []uint, uid uint) ([]File, error) { return files, result.Error } -// GetFilesWithPage 分页获取所有经纬度未更新文件 -func GetFilesWithPage(page uint, pageSize uint) ([]File, error) { +// GetEmptyLocationFilesByPage 分页获取所有经纬度未更新文件 +func GetEmptyLocationFilesByPage(page uint, pageSize uint) ([]File, error) { var files []File var result *gorm.DB var offset = int(page) * int(pageSize) - int(pageSize) diff --git a/pkg/crontab/address.go b/pkg/crontab/address.go index 14f28998..dea5a84b 100644 --- a/pkg/crontab/address.go +++ b/pkg/crontab/address.go @@ -55,7 +55,7 @@ func syncPhotoLatLongToAddress() { page := 1 pageSize := 10 for true{ - files , _ := model.GetFilesWithPage(uint(page), uint(pageSize)) + files , _ := model.GetEmptyLocationFilesByPage(uint(page), uint(pageSize)) if len(files) <= 0 { break } diff --git a/pkg/filesystem/image.go b/pkg/filesystem/image.go index 2e133c7c..7c5cbf11 100644 --- a/pkg/filesystem/image.go +++ b/pkg/filesystem/image.go @@ -94,24 +94,31 @@ func (fs *FileSystem) GenerateThumbnail(ctx context.Context, file *model.File) { currentPosition, err := source.Seek(0, 1) source.Seek(0,0) x, err := exif.Decode(source) + source.Seek(currentPosition, 0) if err != nil { util.Log().Warning("照片解析EXIF失败:%s", err) - } - source.Seek(currentPosition, 0) - ExifCamModel, _ := x.Get(exif.Model) // normally, don't ignore errors! - file.ExifModel,_ = ExifCamModel.StringVal() - ExifDateTime, _ := x.DateTime() - file.ExifDateTime = ExifDateTime - lat, long, _ := x.LatLong() - if lat > 0 && long > 0 { - file.ExifLatLong = fmt.Sprintf("%f,%f", lat, long) - } - util.Log().Debug("照片的经纬度:%f,%f", lat,long) - if file.Model.ID > 0 { - file.UpdatePicExifModel(file.ExifModel) - file.UpdatePicExifDateTime(file.ExifDateTime) + }else{ + ExifCamModel, _ := x.Get(exif.Model) + file.ExifModel,_ = ExifCamModel.StringVal() + + ExifDateTime, _ := x.DateTime() + if !ExifDateTime.IsZero() { + file.ExifDateTime = ExifDateTime + } + + lat, long, _ := x.LatLong() if lat > 0 && long > 0 { - file.UpdatePicExifLatLong(file.ExifLatLong) + file.ExifLatLong = fmt.Sprintf("%f,%f", lat, long) + } + util.Log().Debug("照片的经纬度:%f,%f", lat,long) + if file.Model.ID > 0 { + file.UpdatePicExifModel(file.ExifModel) + if !ExifDateTime.IsZero() { + file.UpdatePicExifDateTime(file.ExifDateTime) + } + if lat > 0 && long > 0 { + file.UpdatePicExifLatLong(file.ExifLatLong) + } } } diff --git a/pkg/filesystem/manage.go b/pkg/filesystem/manage.go index 7c1dae07..3ee5362e 100644 --- a/pkg/filesystem/manage.go +++ b/pkg/filesystem/manage.go @@ -369,7 +369,10 @@ func (fs *FileSystem) listObjects(ctx context.Context, parent string, files []mo processedPath = parent } } - + ExifDateTimeText := "" + if !file.ExifDateTime.IsZero(){ + ExifDateTimeText = file.ExifDateTime.Format("2006-01-02 15:04:05") + } newFile := Object{ ID: hashid.HashID(file.ID, hashid.FileID), Name: file.Name, @@ -379,7 +382,7 @@ func (fs *FileSystem) listObjects(ctx context.Context, parent string, files []mo Type: "file", Date: file.CreatedAt.Format("2006-01-02 15:04:05"), ExifModel: file.ExifModel, - ExifDateTime: file.ExifDateTime.Format("2006-01-02 15:04:05"), + ExifDateTime: ExifDateTimeText, ExifLatLong: file.ExifLatLong, ExifAddress: file.ExifAddress, }