Fixed some bugs and added Random Classic

This commit is contained in:
2024-07-28 15:58:12 +02:00
parent 59f1e2c75c
commit 51a74a9ed1
12 changed files with 152 additions and 16 deletions

View File

@@ -54,13 +54,15 @@ func GetRandomSong() string {
}
func GetRandomSongLowChance() string {
gameList := db.FindAllGames()
if games == nil || len(games) == 0 {
games = db.FindAllGames()
}
var listOfGames []models.GameData
var averagePlayed = getAveragePlayed(gameList)
var averagePlayed = getAveragePlayed(games)
for _, data := range gameList {
for _, data := range games {
var timesToAdd = averagePlayed - data.TimesPlayed
if timesToAdd <= 0 {
listOfGames = append(listOfGames, data)
@@ -77,6 +79,40 @@ func GetRandomSongLowChance() string {
}
func GetRandomSongClassic() string {
if games == nil || len(games) == 0 {
games = db.FindAllGames()
}
var listOfAllSongs []models.SongData
for _, game := range games {
listOfAllSongs = append(listOfAllSongs, db.FindSongsFromGame(game.Id)...)
}
songFound := false
var song models.SongData
for !songFound {
song = listOfAllSongs[rand.Intn(len(listOfAllSongs))]
gameData := db.GetGameById(song.GameId)
//Check if file exists and open
openFile, err := os.Open(song.Path)
if err != nil || gameData.Path+"/"+song.FileName != song.Path {
//File not found
db.RemoveBrokenSong(song)
log.Println("Song not found, song '" + song.SongName + "' deleted from game '" + gameData.GameName + "' FileName: " + song.FileName)
} else {
songFound = true
}
err = openFile.Close()
if err != nil {
log.Println(err)
}
}
lastFetched = song
return song.Path
}
func GetSongInfo() models.SongInfo {
if songQue == nil {
return models.SongInfo{}
@@ -195,17 +231,17 @@ func getSongFromList(games []models.GameData) models.SongData {
//Check if file exists and open
openFile, err := os.Open(song.Path)
if err != nil {
if err != nil || game.Path+"/"+song.FileName != song.Path {
//File not found
db.RemoveBrokenSong(song)
log.Println("Song not found, song '" + song.SongName + "' deleted from game '" + game.GameName + "' songPath: " + song.Path)
log.Println("Song not found, song '" + song.SongName + "' deleted from game '" + game.GameName + "' FileName: " + song.FileName)
} else {
songFound = true
}
err = openFile.Close()
if err != nil {
log.Fatal(err)
log.Println(err)
}
}
return song

View File

@@ -12,6 +12,7 @@ import (
"strings"
)
// SyncGames TODO: Make sync concurrent
func SyncGames() {
host := os.Getenv("DB_HOST")
var dir string
@@ -124,8 +125,9 @@ func checkSongs(gameDir string, gameId int) {
}
path := gameDir + entry.Name()
fileName := entry.Name()
songName, _ := strings.CutSuffix(fileName, ".mp3")
if isSong(entry) {
db.AddSong(models.SongData{GameId: gameId, SongName: fileName, Path: path})
db.AddSong(models.SongData{GameId: gameId, SongName: songName, Path: path, FileName: fileName})
} else if isCoverImage(entry) {
//TODO: Later add cover art image here in db
}