2023-09-04 08:54:00 -05:00
|
|
|
package app
|
|
|
|
|
|
|
|
|
|
import (
|
2023-09-05 22:09:55 -05:00
|
|
|
"fmt"
|
|
|
|
|
"os"
|
|
|
|
|
|
2023-09-04 08:54:00 -05:00
|
|
|
"codeberg.org/danjones000/strip-beats/files"
|
2023-11-11 18:51:38 -06:00
|
|
|
"codeberg.org/danjones000/strip-beats/io/boolean"
|
2023-09-04 08:54:00 -05:00
|
|
|
"codeberg.org/danjones000/strip-beats/media"
|
2023-09-06 18:46:09 -05:00
|
|
|
"codeberg.org/danjones000/strip-beats/utils"
|
2023-09-05 22:09:55 -05:00
|
|
|
"github.com/rkoesters/xdg/trash"
|
2023-09-04 08:54:00 -05:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var file *media.Probe
|
2023-09-05 22:09:55 -05:00
|
|
|
var tmpfile *media.Probe
|
2023-09-04 08:54:00 -05:00
|
|
|
|
|
|
|
|
func PickNewFile() media.Probe {
|
|
|
|
|
path := files.PickRandomFile()
|
2023-09-04 09:36:00 -05:00
|
|
|
return SetFile(path)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func SetFile(path string) media.Probe {
|
2023-11-12 22:10:31 -06:00
|
|
|
resetTags()
|
2023-09-04 08:54:00 -05:00
|
|
|
f := media.ProbeFile(path)
|
|
|
|
|
file = &f
|
2023-10-29 11:14:44 -05:00
|
|
|
copyTagsFromFile()
|
2023-09-04 08:54:00 -05:00
|
|
|
return f
|
|
|
|
|
}
|
|
|
|
|
|
2023-09-05 22:09:55 -05:00
|
|
|
func SetTmpFile(path string) media.Probe {
|
|
|
|
|
f := media.ProbeFile(path)
|
|
|
|
|
tmpfile = &f
|
|
|
|
|
return f
|
|
|
|
|
}
|
|
|
|
|
|
2023-09-04 15:36:32 -05:00
|
|
|
func PickFileWithConf() media.Probe {
|
|
|
|
|
var path string
|
|
|
|
|
var msg string
|
|
|
|
|
good := false
|
|
|
|
|
for !good {
|
|
|
|
|
path = files.PickRandomFile()
|
2023-09-06 18:46:09 -05:00
|
|
|
msg = fmt.Sprintf("We've selected %s\nIs that ok?", utils.GetShortPath(path))
|
2023-09-04 15:36:32 -05:00
|
|
|
good = boolean.Choose(msg)
|
2023-09-06 16:56:55 -05:00
|
|
|
if !good {
|
|
|
|
|
good = boolean.Choose("Would you like to quit?")
|
|
|
|
|
if good {
|
|
|
|
|
return media.Probe{}
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-09-04 15:36:32 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return SetFile(path)
|
|
|
|
|
}
|
|
|
|
|
|
2023-09-04 08:54:00 -05:00
|
|
|
func GetFile() media.Probe {
|
|
|
|
|
if file == nil {
|
|
|
|
|
return PickNewFile()
|
|
|
|
|
}
|
|
|
|
|
return *file
|
|
|
|
|
}
|
|
|
|
|
|
2023-09-05 22:09:55 -05:00
|
|
|
func GetTmpFile() media.Probe {
|
|
|
|
|
if tmpfile == nil {
|
|
|
|
|
return GetFile()
|
|
|
|
|
}
|
|
|
|
|
return *tmpfile
|
|
|
|
|
}
|
|
|
|
|
|
2023-09-06 16:56:55 -05:00
|
|
|
func PickAgain() {
|
2023-09-05 22:09:55 -05:00
|
|
|
if tmpfile != nil {
|
|
|
|
|
os.Remove(tmpfile.Format.Path)
|
|
|
|
|
}
|
2023-09-04 08:54:00 -05:00
|
|
|
file = nil
|
2023-09-05 22:09:55 -05:00
|
|
|
tmpfile = nil
|
2023-11-12 22:10:31 -06:00
|
|
|
resetTags()
|
2023-09-05 22:09:55 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Finish() {
|
|
|
|
|
if file != nil {
|
|
|
|
|
err := trash.Trash(file.Format.Path)
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-09-06 16:56:55 -05:00
|
|
|
PickAgain()
|
2023-09-05 22:09:55 -05:00
|
|
|
}
|