diff --git a/MusicPlayer/MusicPlayer/APIHandler.cs b/MusicPlayer/MusicPlayer/APIHandler.cs index aa18b34..9451df7 100644 --- a/MusicPlayer/MusicPlayer/APIHandler.cs +++ b/MusicPlayer/MusicPlayer/APIHandler.cs @@ -20,6 +20,16 @@ namespace MusicPlayer defaultCover = Image.FromStream(nw.downloadArtwork("default-cover.png")); } + public JObject GetAllBySearch(string search, string album, string artist, string genre) + { + // Q artist genre album + JObject o = nw.SendString($"search?q={search}&album={album}&genre={genre}&artist={artist}"); + Console.WriteLine(o.PropertyValues().ToString()); + if (o["result"].ToString() == "OK") { return o; } + return null; + + } + public string GetSongURLByID(string id) { JObject o = nw.SendString("getsongbyid?id=" + id); @@ -54,6 +64,61 @@ namespace MusicPlayer return GetSongsByArgs("search=" + search); } + public List Genrify(JObject o) + { + List genreslist = new List(); + if (o["result"].ToString() == "OK") + { + for (int i = 0; i < o["genres"].Count(); i++) + { + genreslist.Add(new Genre(o["genres"][i][0].ToString())); + } + } + return genreslist; + } + + public List Artistify(JObject o) + { + List artistlist = new List(); + if (o["result"].ToString() == "OK") + { + for (int i = 0; i < o["artists"].Count(); i++) + { + artistlist.Add(new Artist(o["artists"][i][0].ToString())); + } + } + return artistlist; + } + + public List Songify(JObject o) + { + List allsongslist = new List(); + if (o["result"].ToString() == "OK") + { + dynamic songs = o["songs"]; + for (int i = 0; i < songs.Count; i++) + { + allsongslist.Add(new Song(songs[i][0].ToString(), songs[i][3].ToString(), songs[i][5].ToString(), songs[i][4].ToString(), songs[i][1].ToString(), (int)songs[i][9], this)); + } + } + return allsongslist; + } + + public List Albumify(JObject o) + { + List albumlist = new List(); + + if (o["result"].ToString() == "OK") + { + for (int i = 0; i < o["albums"].Count(); i++) + { + albumlist.Add(new Album(o["albums"][i][0].ToString())); + } + } + + return albumlist; + } + public List GetAllSongs() { List allsongslist = new List(); @@ -90,7 +155,7 @@ namespace MusicPlayer { List artistlist = new List(); - JObject o = nw.SendString("getartists?id=hallo"); + JObject o = nw.SendString("getartists?"); if (o["result"].ToString() == "OK") { for (int i = 0; i < o["artists"].Count(); i++) { diff --git a/MusicPlayer/MusicPlayer/AdvancedSearch.cs b/MusicPlayer/MusicPlayer/AdvancedSearch.cs index bb9b3d0..babdd72 100644 --- a/MusicPlayer/MusicPlayer/AdvancedSearch.cs +++ b/MusicPlayer/MusicPlayer/AdvancedSearch.cs @@ -23,7 +23,7 @@ namespace MusicPlayer private void SearchButton_Click(object sender, EventArgs e) { - if(SearchTermTextBox.Text.Length > 3) + if(SearchTermTextBox.Text.Length > 1) { SearchTermTextBox.ForeColor = Color.Black; main.AdvancedSearchFilter(SearchTermTextBox.Text, AlbumTextBox.Text, ArtistTextBox.Text, GenreTextBox.Text); diff --git a/MusicPlayer/MusicPlayer/Main.cs b/MusicPlayer/MusicPlayer/Main.cs index d383a36..14a2438 100644 --- a/MusicPlayer/MusicPlayer/Main.cs +++ b/MusicPlayer/MusicPlayer/Main.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using Newtonsoft.Json.Linq; namespace MusicPlayer { @@ -138,7 +139,58 @@ namespace MusicPlayer public void AdvancedSearchFilter(string search, string album, string artist, string genre) { - throw new NotImplementedException(); + JObject o = api.GetAllBySearch(search, album, artist, genre); + if (o != null) + { + //q + form.AlbumListView.Items.Clear(); + form.ArtistListBox.Items.Clear(); + form.GenreListBox.Items.Clear(); + form.PlaylistBox.Items.Clear(); + table.Clear(); + api.Songify(o).ForEach(s => table.Add(s)); + + //albums + api.Albumify(o).ForEach(a => form.AlbumListView.Items.Add(a.albumnaam)); + + //artists + api.Artistify(o).ForEach(a => form.ArtistListBox.Items.Add(a.naam)); + + //genres + api.Genrify(o).ForEach(g => form.GenreListBox.Items.Add(g.name)); + BackgroundWorker bw = new BackgroundWorker(); + bw.DoWork += new DoWorkEventHandler( + delegate (object x, DoWorkEventArgs args) + { + BackgroundWorker b = x as BackgroundWorker; + ImageList imagelist = new ImageList(); + List templist = new List(); + Action action = () => + { + foreach (ListViewItem item in form.AlbumListView.Items) + { + templist.Add(item.Text); + } + }; + form.Invoke(action); + + foreach (string item in templist) + { + imagelist.Images.Add(item, api.getAlbumCover(item)); + } + + action = () => { + form.AlbumListView.LargeImageList = imagelist; + foreach (ListViewItem item in form.AlbumListView.Items) + { + item.ImageKey = item.Text; + } + }; + form.Invoke(action); + }); + bw.RunWorkerAsync(); + } + } public void FilterCurrentPlaying()