diff --git a/server.go b/server.go
index 46bc472..27da230 100644
--- a/server.go
+++ b/server.go
@@ -4,7 +4,9 @@ import (
"fmt"
"log"
"time"
+ "errors"
"strings"
+ "strconv"
"net/http"
"encoding/json"
"github.com/undertideco/bandcamp"
@@ -49,6 +51,50 @@ func searchArtistBandcamp(artist string) BandcampAlbum {
}
}
+func getAllTracksPlaylist(id string, offset int) (SpotifyPlaylist, error) {
+ ret := SpotifyPlaylist{}
+ req, e := http.NewRequest("GET",
+ "https://api.spotify.com/v1/playlists/"+id+"/tracks?offset="+strconv.FormatInt(int64(offset), 10),
+ nil)
+ if e != nil {
+ fmt.Printf("%+v", e)
+ }
+ req.Header.Add("Accept", "application/json")
+ req.Header.Add("Content-Type", "application/json")
+ req.Header.Add("Authorization", SpotifyAPI)
+ res, err := MyClient.Do(req)
+
+ if err != nil {
+ return ret, err
+ }
+
+ if res.StatusCode > 300 {
+ fmt.Printf("code %d\n", res.StatusCode)
+ return ret, errors.New("Erreur token ou playlist inexistante.")
+ }
+
+ playlist := &SpotifyPlaylist{}
+ defer res.Body.Close()
+ err = json.NewDecoder(res.Body).Decode(&playlist)
+ if err != nil {
+ return ret, err
+ fmt.Printf("error:", err)
+ }
+
+ ret = *playlist
+ fmt.Printf("\n%d cc %d\n", ret.Total, offset)
+ if ret.Total > offset {
+ r, e := getAllTracksPlaylist(id, offset + 100)
+ if e != nil {
+ return ret, e
+ }
+
+ ret.Items = append(ret.Items, r.Items...)
+ }
+
+ return ret, nil
+}
+
/*
id de la playlist
*/
@@ -58,6 +104,7 @@ func getListPlaylist(id string) {
"https://api.spotify.com/v1/playlists/"+id+"/tracks",
nil)
*/
+ /*
req, _ := http.NewRequest("GET",
"http://localhost:8001",
nil)
@@ -83,7 +130,14 @@ func getListPlaylist(id string) {
fmt.Printf("error:", err)
return
}
+ */
+ playlist, err := getAllTracksPlaylist(id, 0)
+ if err != nil {
+ fmt.Printf("Erreru!!\n")
+ fmt.Printf("%+v", err)
+ return
+ }
tmp := BandcampAlbum{}
MyResp.Todo = len(playlist.Items)
MyResp.Done = 0