write logs

This commit is contained in:
Chigozirim Igweamaka 2024-05-15 05:04:02 +01:00
parent 894094ed96
commit ffe26e5c87

View file

@ -1,6 +1,7 @@
package spotify package spotify
import ( import (
"context"
"errors" "errors"
"fmt" "fmt"
"io" "io"
@ -16,6 +17,7 @@ import (
"github.com/fatih/color" "github.com/fatih/color"
"github.com/kkdai/youtube/v2" "github.com/kkdai/youtube/v2"
"github.com/mdobak/go-xerrors"
) )
const DELETE_SONG_FILE = false const DELETE_SONG_FILE = false
@ -77,10 +79,13 @@ func dlTrack(tracks []Track, path string) (int, error) {
var wg sync.WaitGroup var wg sync.WaitGroup
var downloadedTracks []string var downloadedTracks []string
var totalTracks int var totalTracks int
logger := utils.GetLogger()
results := make(chan int, len(tracks)) results := make(chan int, len(tracks))
numCPUs := runtime.NumCPU() numCPUs := runtime.NumCPU()
semaphore := make(chan struct{}, numCPUs) semaphore := make(chan struct{}, numCPUs)
ctx := context.Background()
db, err := utils.NewDbClient() db, err := utils.NewDbClient()
if err != nil { if err != nil {
return 0, err return 0, err
@ -107,20 +112,19 @@ func dlTrack(tracks []Track, path string) (int, error) {
// check if song exists // check if song exists
keyExists, err := SongKeyExists(utils.GenerateSongKey(trackCopy.Title, trackCopy.Artist)) keyExists, err := SongKeyExists(utils.GenerateSongKey(trackCopy.Title, trackCopy.Artist))
if err != nil { if err != nil {
logMessage := fmt.Sprintln("error checking song existence: ", err) err := xerrors.New(err)
slog.Error(logMessage) logger.ErrorContext(ctx, "error checking song existence", slog.Any("error", err))
} }
if keyExists { if keyExists {
logMessage := fmt.Sprintf("'%s' by '%s' already downloaded\n", trackCopy.Title, trackCopy.Artist) logMessage := fmt.Sprintf("'%s' by '%s' already exits.", trackCopy.Title, trackCopy.Artist)
slog.Info(logMessage) logger.Info(logMessage)
return return
} }
ytID, err := getYTID(trackCopy) ytID, err := getYTID(trackCopy)
if ytID == "" || err != nil { if ytID == "" || err != nil {
logMessage := fmt.Sprintf("error: '%s' by '%s' could not be downloaded: %s\n", trackCopy.Title, trackCopy.Artist, err) logMessage := fmt.Sprintf("'%s' by '%s' could not be downloaded", trackCopy.Title, trackCopy.Artist)
slog.Error(logMessage) logger.ErrorContext(ctx, logMessage, slog.Any("error", xerrors.New(err)))
yellow.Printf(logMessage)
return return
} }
@ -130,26 +134,19 @@ func dlTrack(tracks []Track, path string) (int, error) {
err = downloadYTaudio(ytID, path, filePath) err = downloadYTaudio(ytID, path, filePath)
if err != nil { if err != nil {
logMessage := fmt.Sprintf("Error (2): '%s' by '%s' could not be downloaded: %s\n", trackCopy.Title, trackCopy.Artist, err) logMessage := fmt.Sprintf("'%s' by '%s' could not be downloaded", trackCopy.Title, trackCopy.Artist)
yellow.Printf(logMessage) logger.ErrorContext(ctx, logMessage, slog.Any("error", xerrors.New(err)))
slog.Error(logMessage)
return return
} }
err = processAndSaveSong(filePath, trackCopy.Title, trackCopy.Artist, ytID) err = processAndSaveSong(filePath, trackCopy.Title, trackCopy.Artist, ytID)
if err != nil { if err != nil {
yellow.Println("Error processing audio: ", err) logMessage := fmt.Sprintf("Failed to process song ('%s' by '%s')", trackCopy.Title, trackCopy.Artist)
logMessage := fmt.Sprintf("Failed to process song ('%s' by '%s'): %s\n", trackCopy.Title, trackCopy.Artist, err) logger.ErrorContext(ctx, logMessage, slog.Any("error", xerrors.New(err)))
slog.Error(logMessage)
return return
} }
if DELETE_SONG_FILE != true { if DELETE_SONG_FILE {
size, _ := GetFileSize(filePath)
if size < 1 {
DeleteFile(filePath)
}
} else {
DeleteFile(filepath.Join(path, fileName+".m4a")) DeleteFile(filepath.Join(path, fileName+".m4a"))
DeleteFile(filepath.Join(path, fileName+".wav")) DeleteFile(filepath.Join(path, fileName+".wav"))
} }