diff --git a/bin/build-errors.log b/bin/build-errors.log index 2080045..388a793 100644 --- a/bin/build-errors.log +++ b/bin/build-errors.log @@ -1 +1 @@ -exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1 \ No newline at end of file +exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1 \ No newline at end of file diff --git a/output.json b/output.json new file mode 100644 index 0000000..99fb6b3 --- /dev/null +++ b/output.json @@ -0,0 +1 @@ +{"items":[{"track":{"name":"January 28th","album":{"artists":[{"name":"J. Cole"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273c6e0948bbb0681ff29cdbae8","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02c6e0948bbb0681ff29cdbae8","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851c6e0948bbb0681ff29cdbae8","width":64}],"name":"2014 Forest Hills Drive"}}},{"track":{"name":"03’ Adolescence","album":{"artists":[{"name":"J. Cole"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273c6e0948bbb0681ff29cdbae8","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02c6e0948bbb0681ff29cdbae8","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851c6e0948bbb0681ff29cdbae8","width":64}],"name":"2014 Forest Hills Drive"}}},{"track":{"name":"Nobody's Perfect","album":{"artists":[{"name":"J. Cole"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b27399da48a530f6ca2ef86da3cc","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e0299da48a530f6ca2ef86da3cc","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d0000485199da48a530f6ca2ef86da3cc","width":64}],"name":"Cole World: The Sideline Story"}}},{"track":{"name":"Lost in the Fire","album":{"artists":[{"name":"Gesaffelstein"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b2735be1cdff67258e3d1e588e71","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e025be1cdff67258e3d1e588e71","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d000048515be1cdff67258e3d1e588e71","width":64}],"name":"Hyperion"}}},{"track":{"name":"P*$$Y Fairy (OTW)","album":{"artists":[{"name":"Jhené Aiko"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273a71bcd27b13633a3916f219e","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02a71bcd27b13633a3916f219e","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851a71bcd27b13633a3916f219e","width":64}],"name":"P*$$Y Fairy (OTW)"}}},{"track":{"name":"B.S. (feat. H.E.R.)","album":{"artists":[{"name":"Jhené Aiko"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273b87ac71d440973d20f4c8473","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02b87ac71d440973d20f4c8473","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851b87ac71d440973d20f4c8473","width":64}],"name":"Chilombo"}}},{"track":{"name":"While We're Young","album":{"artists":[{"name":"Jhené Aiko"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b2737ccc8005498d9f75b03333c2","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e027ccc8005498d9f75b03333c2","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d000048517ccc8005498d9f75b03333c2","width":64}],"name":"Trip"}}},{"track":{"name":"Bed Peace","album":{"artists":[{"name":"Jhené Aiko"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273a0fa057b8ad3f3c4969f0c97","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02a0fa057b8ad3f3c4969f0c97","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851a0fa057b8ad3f3c4969f0c97","width":64}],"name":"Sail Out"}}},{"track":{"name":"Una Vez","album":{"artists":[{"name":"Bad Bunny"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273548f7ec52da7313de0c5e4a0","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02548f7ec52da7313de0c5e4a0","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851548f7ec52da7313de0c5e4a0","width":64}],"name":"YHLQMDLG"}}},{"track":{"name":"HACIENDO QUE ME AMAS","album":{"artists":[{"name":"Bad Bunny"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273005ee342f4eef2cc6e8436ab","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02005ee342f4eef2cc6e8436ab","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851005ee342f4eef2cc6e8436ab","width":64}],"name":"EL ÚLTIMO TOUR DEL MUNDO"}}},{"track":{"name":"Stay Ready (What A Life)","album":{"artists":[{"name":"Jhené Aiko"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273a0fa057b8ad3f3c4969f0c97","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02a0fa057b8ad3f3c4969f0c97","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851a0fa057b8ad3f3c4969f0c97","width":64}],"name":"Sail Out"}}},{"track":{"name":"AL CALLAO'","album":{"artists":[{"name":"Rauw Alejandro"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273f79b1ab5cd74db6a2d7c1fda","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02f79b1ab5cd74db6a2d7c1fda","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851f79b1ab5cd74db6a2d7c1fda","width":64}],"name":"PLAYA SATURNO"}}},{"track":{"name":"Tu No Vive Asi (feat. Mambo Kingz \u0026 DJ Luian)","album":{"artists":[{"name":"Arcángel"},{"name":"Bad Bunny"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b2739bf23abed0a1e730a90d3490","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e029bf23abed0a1e730a90d3490","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d000048519bf23abed0a1e730a90d3490","width":64}],"name":"Tu No Vive Asi (feat. Mambo Kingz \u0026 DJ Luian)"}}},{"track":{"name":"Solita","album":{"artists":[{"name":"Ozuna"},{"name":"Mambo Kingz"},{"name":"DJ Luian"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273bc739e4f39cb4d5c253fcb64","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02bc739e4f39cb4d5c253fcb64","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851bc739e4f39cb4d5c253fcb64","width":64}],"name":"Solita"}}},{"track":{"name":"MOJABI GHOST","album":{"artists":[{"name":"Tainy"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273f885fb64a381318a1c9c14e4","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02f885fb64a381318a1c9c14e4","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851f885fb64a381318a1c9c14e4","width":64}],"name":"DATA"}}},{"track":{"name":"Kemba Walker","album":{"artists":[{"name":"Eladio Carrion"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273ff62e603fe8ea1813b4ff5a8","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02ff62e603fe8ea1813b4ff5a8","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851ff62e603fe8ea1813b4ff5a8","width":64}],"name":"Sauce Boyz"}}},{"track":{"name":"BATICANO","album":{"artists":[{"name":"Bad Bunny"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b2737b1fc51ff3257b5286a1ecec","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e027b1fc51ff3257b5286a1ecec","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d000048517b1fc51ff3257b5286a1ecec","width":64}],"name":"nadie sabe lo que va a pasar mañana"}}},{"track":{"name":"VUELVE CANDY B","album":{"artists":[{"name":"Bad Bunny"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b2737b1fc51ff3257b5286a1ecec","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e027b1fc51ff3257b5286a1ecec","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d000048517b1fc51ff3257b5286a1ecec","width":64}],"name":"nadie sabe lo que va a pasar mañana"}}},{"track":{"name":"MERCEDES CAROTA","album":{"artists":[{"name":"Bad Bunny"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b2737b1fc51ff3257b5286a1ecec","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e027b1fc51ff3257b5286a1ecec","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d000048517b1fc51ff3257b5286a1ecec","width":64}],"name":"nadie sabe lo que va a pasar mañana"}}},{"track":{"name":"BABY NUEVA","album":{"artists":[{"name":"Bad Bunny"}],"images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b2737b1fc51ff3257b5286a1ecec","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e027b1fc51ff3257b5286a1ecec","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d000048517b1fc51ff3257b5286a1ecec","width":64}],"name":"nadie sabe lo que va a pasar mañana"}}}]} \ No newline at end of file diff --git a/scripts/buildGPTRequest.go b/scripts/buildGPTRequest.go new file mode 100644 index 0000000..418c96f --- /dev/null +++ b/scripts/buildGPTRequest.go @@ -0,0 +1,72 @@ +package scripts + +import ( + "encoding/json" + "log" + + "github.com/JaiiR320/SpotifAI/model" +) + +type Body struct { + Model string `json:"model"` + Messages []Message `json:"messages"` +} + +type Message struct { + Role string `json:"role"` + Content string `json:"content"` +} + +type Completion struct { + Choices []Choice `json:"choices"` +} + +type Choice struct { + Message Message `json:"message"` +} + +var OpenAIKey = "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" + +func GenerateTracks(tracks []model.Item, tags []string) { + if len(tracks) == 0 || len(tags) == 0 { + log.Println("No tracks or tags to filter") + return + } + + baseURL := "https://api.openai.com/v1/chat/completions" + + data, err := json.Marshal(&tracks) + if err != nil { + log.Panic(err) + } + str := string(data) + + str = "Filter these songs :" + str + " by these tags: " + for _, tag := range tags { + str += tag + ", " + } + + str += ". Respond with a JSON object with the filtered songs. You can omit all information besides the song title and artist fields from the original object. Please only respond with the JSON object text and nothing else." + + body := Body{ + Model: "gpt-3.5-turbo", + Messages: []Message{{ + Role: "user", + Content: str, + }}, + } + + var response Completion + + err = Post(baseURL). + WithBody(body). + WithHeader("Content-Type", "application/json"). + WithHeader("Authorization", "Bearer "+OpenAIKey). + WithObject(&response).Do() + + if err != nil { + log.Panic(err) + } + + println(response.Choices[0].Message.Content) +} diff --git a/scripts/filterSongs.go b/scripts/filterSongs.go index 2fdd2d7..f8131a8 100644 --- a/scripts/filterSongs.go +++ b/scripts/filterSongs.go @@ -1,16 +1,17 @@ package scripts import ( - "math/rand" - "github.com/JaiiR320/SpotifAI/model" ) func FilterSongs(songs []model.Item, tags []string) []model.Item { - selectedItems := make([]model.Item, 0) - for i := 0; i < 15; i++ { - randomIndex := rand.Intn(len(model.LikedSongs.Items)) - selectedItems = append(selectedItems, model.LikedSongs.Items[randomIndex]) - } - return selectedItems + + GenerateTracks(model.LikedSongs.Items, model.Tags) + + // selectedItems := make([]model.Item, 0) + // for i := 0; i < 15; i++ { + // randomIndex := rand.Intn(len(model.LikedSongs.Items)) + // selectedItems = append(selectedItems, model.LikedSongs.Items[randomIndex]) + // } + return model.LikedSongs.Items } diff --git a/scripts/parsePlaylist.go b/scripts/parsePlaylist.go index c0fa9f0..110c7e8 100644 --- a/scripts/parsePlaylist.go +++ b/scripts/parsePlaylist.go @@ -20,4 +20,23 @@ func ParsePlaylist(path string) { byteValue, _ := io.ReadAll(file) json.Unmarshal(byteValue, &model.LikedSongs) + + outputFile, err := os.Create("output.json") + if err != nil { + log.Panic(err) + } + defer outputFile.Close() + + encodedData, err := json.Marshal(model.LikedSongs) + if err != nil { + log.Panic(err) + } + + _, err = outputFile.Write(encodedData) + if err != nil { + log.Panic(err) + } + + log.Println("Playlist parsed and output to output.json.") + } diff --git a/scripts/request.go b/scripts/request.go index 0dd66a6..ccba7b5 100644 --- a/scripts/request.go +++ b/scripts/request.go @@ -13,6 +13,7 @@ type Request struct { URL string Header map[string]string Query map[string]string + Body interface{} Object *interface{} } @@ -25,10 +26,24 @@ func (r *Request) Do() error { query.Set(key, value) } + var req *http.Request + // build request - req, err := http.NewRequest(r.Method, r.URL, strings.NewReader(query.Encode())) - if err != nil { - return err + if r.Body != nil { + jsonData, err := json.Marshal(r.Body) + if err != nil { + return err + } + req, err = http.NewRequest(r.Method, r.URL, strings.NewReader(string(jsonData))) + if err != nil { + return err + } + } else { + var err error + req, err = http.NewRequest(r.Method, r.URL, strings.NewReader(query.Encode())) + if err != nil { + return err + } } // set headers to request @@ -90,6 +105,11 @@ func (req *Request) WithObject(object interface{}) *Request { return req } +func (req *Request) WithBody(body interface{}) *Request { + req.Body = body + return req +} + // type JSON map[string]string // // header := JSON{ diff --git a/songs.json b/songs.json new file mode 100644 index 0000000..e69de29