Philipp Häfelfinger
b326b0da84
added piwigo image id to upload to support file updates added noUpload flag to do all but skip file upload changed metadata filepath to full file path moved category detection during local file metadata generation
74 lines
2.2 KiB
Go
74 lines
2.2 KiB
Go
package app
|
|
|
|
import (
|
|
"flag"
|
|
"git.haefelfinger.net/piwigo/PiwigoDirectoryUploader/internal/pkg/localFileStructure"
|
|
"github.com/sirupsen/logrus"
|
|
"os"
|
|
)
|
|
|
|
var (
|
|
imagesRootPath = flag.String("imagesRootPath", "", "This is the images root path that should be mirrored to piwigo.")
|
|
sqliteDb = flag.String("sqliteDb", "", "The connection string to the sql lite database file.")
|
|
noUpload = flag.Bool("noUpload", false, "If set to true, the metadata gets prepared but the upload is not called and the application is exited with code 90")
|
|
piwigoUrl = flag.String("piwigoUrl", "", "The root url without tailing slash to your piwigo installation.")
|
|
piwigoUser = flag.String("piwigoUser", "", "The username to use during sync.")
|
|
piwigoPassword = flag.String("piwigoPassword", "", "This is password to the given username.")
|
|
piwigoUploadChunkSizeInKB = flag.Int("piwigoUploadChunkSizeInKB", 512, "The chunksize used to upload an image to piwigo.")
|
|
)
|
|
|
|
func Run() {
|
|
context, err := createAppContext()
|
|
if err != nil {
|
|
logErrorAndExit(err, 1)
|
|
}
|
|
|
|
err = context.piwigo.Login()
|
|
if err != nil {
|
|
logErrorAndExit(err, 2)
|
|
}
|
|
|
|
filesystemNodes, err := localFileStructure.ScanLocalFileStructure(context.localRootPath)
|
|
if err != nil {
|
|
logErrorAndExit(err, 3)
|
|
}
|
|
|
|
categories, err := getAllCategoriesFromServer(context)
|
|
if err != nil {
|
|
logErrorAndExit(err, 4)
|
|
}
|
|
|
|
err = synchronizeCategories(context.piwigo, filesystemNodes, categories)
|
|
if err != nil {
|
|
logErrorAndExit(err, 5)
|
|
}
|
|
|
|
err = synchronizeLocalImageMetadata(context.dataStore, filesystemNodes, categories, localFileStructure.CalculateFileCheckSums)
|
|
if err != nil {
|
|
logErrorAndExit(err, 6)
|
|
}
|
|
|
|
err = synchronizePiwigoMetadata(context.piwigo, context.dataStore)
|
|
if err != nil {
|
|
logErrorAndExit(err, 7)
|
|
}
|
|
|
|
if *noUpload {
|
|
logrus.Warnln("Skipping upload of images as flag noUpload is set to true!")
|
|
_ = context.piwigo.Logout()
|
|
os.Exit(90)
|
|
}
|
|
|
|
err = uploadImages(context.piwigo, context.dataStore)
|
|
if err != nil {
|
|
logErrorAndExit(err, 8)
|
|
}
|
|
|
|
_ = context.piwigo.Logout()
|
|
}
|
|
|
|
func logErrorAndExit(err error, exitCode int) {
|
|
logrus.Errorln(err)
|
|
os.Exit(exitCode)
|
|
}
|