summaryrefslogtreecommitdiff
path: root/files/operations.go
diff options
context:
space:
mode:
authorjakka <jakkadoujin@gmail.com>2025-06-04 17:07:16 +0300
committerjakka <jakkadoujin@gmail.com>2025-06-04 17:07:16 +0300
commit5a39e523da7f4fe2c9c1e6c369a366162be122fa (patch)
tree033df21a928cf883549bd2fab71a0fa02dbfb3c8 /files/operations.go
parent9b50859cd0aa3832500fe4ea22e3b4e967d6032a (diff)
started rewriting
Diffstat (limited to 'files/operations.go')
-rw-r--r--files/operations.go182
1 files changed, 0 insertions, 182 deletions
diff --git a/files/operations.go b/files/operations.go
deleted file mode 100644
index 6f44900..0000000
--- a/files/operations.go
+++ /dev/null
@@ -1,182 +0,0 @@
-package files
-
-import (
- "context"
- "crypto/sha256"
- "fmt"
- "io"
- "io/fs"
- "log"
- "os"
- "os/exec"
- "path/filepath"
- "regexp"
- "strings"
- "time"
-
- "github.com/briandowns/spinner"
- "github.com/rosedblabs/rosedb/v2"
-)
-
-func (file *FileInfo) reencodeFile(ctx context.Context) error {
- select {
- case <-ctx.Done():
- return nil
- default:
- args := ctx.Value("flac").([]string)
- if args != nil {
- args = append(args, file.AbsPath)
- cmd := exec.Command("flac", args...)
- if err := cmd.Run(); err != nil {
- if !strings.Contains(err.Error(), "interrupt") {
- log.Println(err.Error())
- return err
- }
- }
- } else {
- cmd := exec.Command("flac", "-8f", "-j4", file.AbsPath)
- if err := cmd.Run(); err != nil {
- if !strings.Contains(err.Error(), "interrupt") {
- log.Println(err.Error())
- return err
- }
- }
- }
-
- file.Encoder = ctx.Value("encoder").(string)
- file.Process = false
- return nil
- }
-}
-
-func getEncoderVer(path string) (string, error) {
- out, err := exec.Command("metaflac", "--show-vendor-tag", path).Output()
- if err != nil {
- return "", err
- }
-
- r := regexp.MustCompile("libFLAC \\d\\.\\d\\.\\d")
- encoder := r.FindString(string(out))
- switch encoder {
- case "":
- return "", nil
- default:
- return strings.Split(encoder, " ")[1], nil
- }
-}
-
-func getInfoFromFile(path string) (*FileInfo, error) {
- var filedata FileInfo
-
- filedata.Process = true
-
- abspath, err := filepath.Abs(path)
- if err != nil {
- return nil, err
- }
-
- filedata.AbsPath = abspath
-
- encoder, err := getEncoderVer(path)
- if err != nil {
- return nil, err
- }
-
- filedata.Encoder = encoder
-
- return &filedata, nil
-}
-
-func getSha256(path string) ([]byte, error) {
- file, err := os.Open(path)
- if err != nil {
- return nil, err
- }
- defer file.Close()
-
- hash := sha256.New()
- if _, err := io.Copy(hash, file); err != nil {
- return nil, err
- }
- return hash.Sum(nil), nil
-}
-
-func updateSpinner(spin *spinner.Spinner, counter int64) {
- line := fmt.Sprintf(" Indexing flacs...\t %v", counter)
- spin.Suffix = line
-}
-
-func IndexFlacs(ctx context.Context) error {
- counter := ctx.Value("counter").(*int64)
- database := ctx.Value("database").(*rosedb.DB)
-
- batch := database.NewBatch(rosedb.DefaultBatchOptions)
-
- spin := spinner.New(spinner.CharSets[9], 100*time.Millisecond)
-
- updateSpinner(spin, *counter)
-
- spin.Start()
-
- /* wg := new(errgroup.Group)
- wg.SetLimit(100) */
-
- if err := filepath.WalkDir(ctx.Value("path").(string), func(path string, info fs.DirEntry, err error) error {
- select {
- case <-ctx.Done():
- spin.FinalMSG = "Stopping...\n"
- spin.Stop()
- return filepath.SkipAll
- default:
- if !info.IsDir() {
- if filepath.Ext(path) == ".flac" {
- /* wg.Go(func() error {
- select {
- case <-ctx.Done():
- return nil
- default:
- data, err := getInfoFromFile(path)
- if err != nil {
- return err
- }
-
- hashsum, err := getSha256(path)
- if err != nil {
- return err
- }
- updateSpinner(spin, *counter)
- return data.IndexFile(ctx, hashsum, batch)
- }
- }) */
-
- data, err := getInfoFromFile(path)
- if err != nil {
- return err
- }
-
- hashsum, err := getSha256(path)
- if err != nil {
- return err
- }
- updateSpinner(spin, *counter)
- return data.IndexFile(ctx, hashsum, batch)
- }
-
- }
- return nil
- }
-
- }); err != nil {
- return err
- }
-
- /* wg.Wait() */
-
- if err := batch.Commit(); err != nil {
- return err
- }
- spin.FinalMSG = fmt.Sprintf("Done indexing flacs: \t%v to process\n", *counter)
- spin.Stop()
-
- return nil
-}