added advanced search
This commit is contained in:
@@ -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<Genre> Genrify(JObject o)
|
||||
{
|
||||
List<Genre> genreslist = new List<Genre>();
|
||||
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<Artist> Artistify(JObject o)
|
||||
{
|
||||
List<Artist> artistlist = new List<Artist>();
|
||||
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<Song> Songify(JObject o)
|
||||
{
|
||||
List<Song> allsongslist = new List<Song>();
|
||||
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<Album> Albumify(JObject o)
|
||||
{
|
||||
List<Album> albumlist = new List<Album>();
|
||||
|
||||
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<Song> GetAllSongs()
|
||||
{
|
||||
List<Song> allsongslist = new List<Song>();
|
||||
@@ -90,7 +155,7 @@ namespace MusicPlayer
|
||||
{
|
||||
List<Artist> artistlist = new List<Artist>();
|
||||
|
||||
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++) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<string> templist = new List<string>();
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user