|
|
|
@ -131,7 +131,7 @@ func main() { |
|
|
|
continue |
|
|
|
} |
|
|
|
|
|
|
|
err := newAlbum(username, albumName) |
|
|
|
err := newAlbum(update.Message, albumName) |
|
|
|
if err != nil { |
|
|
|
log.Printf("[%s] cannot create album '%s': %s", username, albumName, err) |
|
|
|
replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgServerError")) |
|
|
|
@ -139,6 +139,18 @@ func main() { |
|
|
|
} |
|
|
|
|
|
|
|
replyWithMessage(bot, update.Message, viper.GetString("MsgAlbumCreated")) |
|
|
|
} else if strings.HasPrefix(text, "/info") { |
|
|
|
if albumAlreadyOpen() { |
|
|
|
albumName, err := getInfo() |
|
|
|
if err != nil { |
|
|
|
log.Printf("[%s] cannot close current album: %s", username, err) |
|
|
|
replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgServerError")) |
|
|
|
continue |
|
|
|
} |
|
|
|
replyWithMessage(bot, update.Message, fmt.Sprintf(viper.GetString("MsgInfo"), albumName)) |
|
|
|
} else { |
|
|
|
replyWithMessage(bot, update.Message, viper.GetString("MsgInfoNoAlbum")) |
|
|
|
} |
|
|
|
} else if strings.HasPrefix(text, "/cloreAlbum") { |
|
|
|
if !albumAlreadyOpen() { |
|
|
|
replyToCommandWithMessage(bot, update.Message, viper.GetString("MsgNoAlbum")) |
|
|
|
@ -403,7 +415,13 @@ func closeAlbum() error { |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
err = os.Rename(target_dir + "/data/.current/", target_dir + "/data/" + metadata["folder"]) |
|
|
|
date, err := time.Parse("2006-01-02T15:04:05-0700", metadata["date"]) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
folderName := date.Format("2006-01-02") + "-" + sanitizeAlbumName(metadata["title"]) |
|
|
|
err = os.Rename(target_dir + "/data/.current/", target_dir + "/data/" + folderName) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
@ -411,20 +429,38 @@ func closeAlbum() error { |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func getInfo() (string, error) { |
|
|
|
target_dir := viper.GetString("TargetDir") |
|
|
|
yamlData, err := ioutil.ReadFile(target_dir + "/data/.current/meta.yaml") |
|
|
|
if err != nil { |
|
|
|
return "", err |
|
|
|
} |
|
|
|
|
|
|
|
var metadata map[string]string = make(map[string]string) |
|
|
|
err = yaml.UnmarshalStrict(yamlData, &metadata) |
|
|
|
if err != nil { |
|
|
|
return "", err |
|
|
|
} |
|
|
|
|
|
|
|
return metadata["title"], nil |
|
|
|
} |
|
|
|
|
|
|
|
func albumAlreadyOpen() bool { |
|
|
|
target_dir := viper.GetString("TargetDir") |
|
|
|
_, err := os.Stat(target_dir + "/data/.current") |
|
|
|
return err == nil |
|
|
|
} |
|
|
|
|
|
|
|
func newAlbum(username string, albumName string) error { |
|
|
|
func newAlbum(message *tgbotapi.Message, albumName string) error { |
|
|
|
target_dir := viper.GetString("TargetDir") |
|
|
|
os.MkdirAll(target_dir + "/data/.current", os.ModePerm) |
|
|
|
|
|
|
|
metadata := map[string]string{ |
|
|
|
"title": albumName, |
|
|
|
"username": message.From.UserName, |
|
|
|
"firstname": message.From.FirstName, |
|
|
|
"lastname": message.From.LastName, |
|
|
|
"date": time.Now().Format("2006-01-02T15:04:05-0700"), |
|
|
|
"folder": fmt.Sprintf("%s-%s", time.Now().Format("2006-01-02"), sanitizeAlbumName(albumName)), |
|
|
|
} |
|
|
|
|
|
|
|
yamlData, err := yaml.Marshal(metadata) |
|
|
|
@ -437,11 +473,6 @@ func newAlbum(username string, albumName string) error { |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
err = ioutil.WriteFile(target_dir + "/data/.current/chat.yaml", []byte{}, 0644) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
@ -468,7 +499,7 @@ func addMessageToAlbum(message *tgbotapi.Message) error { |
|
|
|
} |
|
|
|
|
|
|
|
func appendToFile(filename string, data []byte) error { |
|
|
|
f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0600) |
|
|
|
f, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
|