public IActionResult Grab(string id) { AllMusicTemplate template = new AllMusicTemplate().Find(id.Replace(".mp3", "")); Neo4JProxy proxy = new Neo4JProxy(); var result = proxy.Query(template, GraphDriver.Session()); foreach (var record in result) { MusicFileViewModel model = new MusicFileViewModel() { Title = record["title"] as string, Artist = record["artist"] as string, Album = record["album"] as string, Genre = record["genre"] as string, Directory = record["directory"] as string, Filename = record["filename"] as string, Hash = record["hash"] as string, Mime = record["mime"] as string }; string filepath = model.Filename; byte[] filedata = System.IO.File.ReadAllBytes(filepath); string filename = "song" + Path.GetExtension(model.Filename); return(File(filedata, "audio/mpeg3", filename)); } return(NotFound()); }
public IActionResult Library(string a = "") { AllMusicTemplate template = new AllMusicTemplate().StartsWith(a); Neo4JProxy proxy = new Neo4JProxy(); var result = proxy.Query(template, GraphDriver.Session()); var library = new List <MusicFileViewModel>(); foreach (var record in result) { MusicFileViewModel model = new MusicFileViewModel() { Title = record["title"] as string, Artist = record["artist"] as string, Album = record["album"] as string, Genre = record["genre"] as string, Directory = record["directory"] as string, Filename = record["filename"] as string, Hash = record["hash"] as string }; library.Add(model); } return(View(library)); }
public void RemoveMusicFileFromPlaylist(MusicFileViewModel musicFile, MusicPlaylistViewModel playlist) { if (playlist.musicFileList.ToList().Exists(m => m == musicFile)) { playlist.Remove(musicFile); App.SendMessageToBackground(MessageType.RemoveFromPlaylist, playlist.Name + "\t" + musicFile.Id); } }
public async void SetCurrentItem(MusicFileViewModel currentItem) { if (currentItem != null && App.musicPlayerData.CurrentPlaylist == currentPlaylist) { App.musicPlayerData.SetCurrentMusicFile(currentItem); await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { musicListview.SelectedItem = currentItem; musicListview.ScrollIntoView(currentItem, ScrollIntoViewAlignment.Leading); }); } }
/// <summary> /// Method for adding given music file to given playlist /// and notyfing background player about made changes /// </summary> /// <param name="musicFile">Music file to add to playlist</param> /// <param name="playlist">Playlist for music file to be added</param> public async void AddMusicFileToPlaylist(MusicFileViewModel musicFile, MusicPlaylistViewModel playlist) { if (!playlist.musicFileList.ToList().Exists(m => m == musicFile)) { playlist.Add(musicFile); App.SendMessageToBackground(MessageType.AddToPlaylist, playlist.Name + "\t" + musicFile.Id); } else { await new MessageDialog("Wybrany utwór już znajduje się w liście odtwarzania!", "Błąd").ShowAsync(); } }
private async void RemoveFromPlaylistBtn_Tapped(object sender, TappedRoutedEventArgs e) { MusicFileViewModel musicToDelete = ((Grid)((AppBarButton) sender).Parent).DataContext as MusicFileViewModel; if (musicToDelete != null) { if (await App.AskForConfirmation("Czy na pewno chcesz " + "usunąć wybrany utwór z listy odtwarzania?")) { App.musicPlayerData.RemoveMusicFileFromPlaylist( musicToDelete, currentPlaylist); Refresh(); } } }
public IActionResult AlbumArt(string hash) { AllMusicTemplate template = new AllMusicTemplate().Find(hash); Neo4JProxy proxy = new Neo4JProxy(); var result = proxy.Query(template, GraphDriver.Session()); foreach (var record in result) { MusicFileViewModel model = new MusicFileViewModel() { Title = record["title"] as string, Artist = record["artist"] as string, Album = record["album"] as string, Genre = record["genre"] as string, Hash = record["hash"] as string, Mime = record["mime"] as string, AlbumArt = record["albumart"] as string }; return(Json(model)); } return(NotFound()); }
private async void MessageReceivedFromBackground(object sender, MediaPlayerDataReceivedEventArgs arguments) { object message; try { if (arguments.Data.TryGetValue(MessageType.Message.ToString(), out message)) { //It is a command, handle it Command command; if (Enum.TryParse(message.ToString(), out command)) { switch (command) { case Command.Pause: break; case Command.Play: break; } } else { Debug.WriteLine("An error occured while processing send command"); } } else if (arguments.Data.TryGetValue(MessageType.MediaPlaybackItem.ToString(), out message)) { await Task.Delay(400); MusicFileViewModel musicFile = musicPlayerData.CurrentPlaylist .musicFileList.Where(m => m.Id == message.ToString()).Single(); if (musicPlayerData.CurrentPlaylist == musicPlayerData.MainPlaylist) { MainPage.Instance.SetCurrentItem(musicFile); } else { MusicPlaylistView.Instance.SetCurrentItem(musicFile); } } else if (arguments.Data.TryGetValue(MessageType.Playlist.ToString(), out message)) { //There is a playlist to add, handle it MusicPlaylistViewModel playlist = null; string dataSeparator = "\t"; string filesSeparator = "\n"; string[] playlistData = message.ToString().Split(filesSeparator.ToCharArray().Single()); //Validate that first element in data is name of playlist if (playlistData[0].Split(dataSeparator.ToCharArray().Single()).Length != 1) { throw new Exception("Incorrect data frame"); } else { if (musicPlayerData.MusicPlaylists.Where(m => m .Name == playlistData[0]).Count() == 0) { playlist = new MusicPlaylistViewModel(playlistData[0]); //Remove first element which contains playlist name List <string> playlistList = playlistData.ToList(); playlistList.RemoveAt(0); foreach (var musicData in playlistList) { if (musicData != "") { playlist.Add(musicPlayerData.MainPlaylist.musicFileList .Where(m => m.Id == musicData).Single()); } } //Playlist is ready, add it to list musicPlayerData.AddPlaylist(playlist); } else { throw new Exception("Playlist already exists"); } } } else if (arguments.Data.TryGetValue(MessageType.CurrentPlaylist.ToString(), out message)) { if (musicPlayerData.MainPlaylist.Name == message.ToString()) { musicPlayerData.SetCurrentPlaylist(musicPlayerData.MainPlaylist); } else if (musicPlayerData.MusicPlaylists.Where(m => m.Name == message.ToString()).Count() == 1) { musicPlayerData.SetCurrentPlaylist(musicPlayerData.MusicPlaylists.Where(m => m.Name == message.ToString()).Single()); } } else if (arguments.Data.TryGetValue(MessageType.MainPlaylist.ToString(), out message)) { //Main playlist have changed, update it MusicPlaylistViewModel mainPlaylist = null; string dataSeparator = "\t"; string filesSeparator = "\n"; string[] playlistData = message.ToString().Split(filesSeparator.ToCharArray().Single()); //Validate that first element in data is name of playlist if (playlistData[0].Split(dataSeparator.ToCharArray().Single()).Length != 1) { throw new Exception("Incorrect data frame"); } else { mainPlaylist = new MusicPlaylistViewModel(playlistData[0]); //Remove first element which contains playlist name List <string> playlistList = playlistData.ToList(); playlistList.RemoveAt(0); foreach (var musicData in playlistList) { if (musicData != "") { string[] musicDetails = musicData.Split(dataSeparator.ToCharArray().Single()); if (musicDetails.Length != 4) { //Data is incomplete or corrupted, abort throw new Exception("Data is either corrupted or incomplete"); } else { MusicFileViewModel musicFile = new MusicFileViewModel(); musicFile.Id = musicDetails[0]; musicFile.Title = musicDetails[1]; musicFile.Artist = musicDetails[2]; musicFile.Duration = TimeSpan.Parse(musicDetails[3]); mainPlaylist.musicFileList.Add(musicFile); } } } //Playlist is ready, set is as current musicPlayerData.SetMainPlaylist(mainPlaylist); } } } catch (Exception ex) { Debug.WriteLine(ex); } }
/// <summary> /// Method which sets currently played music file to given music file /// and notifies background player /// </summary> /// <param name="musicFile">Music file to set as current</param> public void SetCurrentMusicFile(MusicFileViewModel musicFile) { CurrentMusicFile = musicFile; App.SendMessageToBackground(MessageType.MediaPlaybackItem, CurrentMusicFile.Id); }
private void btnGo_Click(object sender, EventArgs e) { DistilTitle distilTitle = new DistilTitle(); TitleExtract titleExtract = new TitleExtract(); GlobalUserConfig config = new GlobalUserConfig(); GlobalUserConfig.ParentFolderPath = txtPath.Text.Trim(); DirectoryProcess dProcess = new DirectoryProcess(); List <DirectoryInfo> dirList = dProcess.GetDirectories(); FileInfo[] musicFiles = null; TagLib.File tagMusicFile = null; Simile.Algorithm.AlgorithmFactory algFactory = new Algorithm.AlgorithmFactory(); //string newTitle = ""; // string artistOrBandName = ""; // Simile.SimileEnums.GroupCategory grpCategory = SimileEnums.GroupCategory.Unknown; Simile.DBProcess.MusicBand musicBand = new Simile.DBProcess.MusicBand(); Simile.DBProcess.MusicArtist musicArtist = new Simile.DBProcess.MusicArtist(); List <MusicFileViewModel> listMusicFileViewModel = new List <MusicFileViewModel>(); MusicFileViewModel musicFileViewModel = null; List <clsErrorRpt> errorRpts = new List <clsErrorRpt>(); clsErrorRpt errR = null; foreach (DirectoryInfo dir in dirList) { musicFiles = dir.GetFiles(GlobalUserConfig.FileType); foreach (FileInfo finfo in musicFiles) { try { FileInfo musicFile = finfo; // errR = new clsErrorRpt(); errR.FileName = musicFile.Name; errR.Path = musicFile.FullName; // tagMusicFile = TagLib.File.Create(musicFile.FullName); //if tag is null then avoid the file and get next file. if (tagMusicFile.Tag == null) { continue; } musicFileViewModel = new MusicFileViewModel(); musicFileViewModel.Title = tagMusicFile.Tag.Title.Trim(); // newTitle.Trim(); musicFileViewModel.FileName = musicFile.Name.Trim(); musicFileViewModel.Path = musicFile.DirectoryName.Trim(); var artistName = ""; var bandName = ""; //---------------------------- if (tagMusicFile.Tag.AlbumArtists != null && tagMusicFile.Tag.AlbumArtists.Count() > 0) { string tmpAlbArtists = ""; var test = tagMusicFile.Tag.AlbumArtists; foreach (var val in test) { tmpAlbArtists += val.Trim(); } if (!string.IsNullOrEmpty(tmpAlbArtists)) { using (var modelContext = new MusicPlayEntities3()) { Simile.MusicArtist tmpArtist = modelContext.MusicArtists.Where(r => r.ArtistName.ToUpper() == tmpAlbArtists.ToUpper()).FirstOrDefault(); if (tmpArtist != null) { musicFileViewModel.Artist = tmpArtist.ArtistName.Trim(); musicFileViewModel.ArtistId = tmpArtist.Id; } } using (var modelContext = new MusicPlayEntities3()) { Simile.MusicBand tmpBand = modelContext.MusicBands.Where(r => r.BandName.ToUpper() == tmpAlbArtists.ToUpper()).FirstOrDefault(); if (tmpBand != null) { musicFileViewModel.Band = tmpBand.BandName.Trim(); musicFileViewModel.BandId = tmpBand.Id; } } } } //----------------------------- ////////////////// if (musicFileViewModel.BandId == 0) { var tmpBandName = musicFile.Directory.Name.Trim(); using (var modelContext = new MusicPlayEntities3()) { Simile.MusicBand tmpBand = modelContext.MusicBands.Where(r => r.BandName.ToUpper() == tmpBandName.ToUpper()).FirstOrDefault(); if (tmpBand != null) { musicFileViewModel.Band = tmpBand.BandName.Trim(); musicFileViewModel.BandId = tmpBand.Id; } } } if (musicFileViewModel.ArtistId == 0) { var tmpArtistName = musicFile.Directory.Name.Trim(); using (var modelContext = new MusicPlayEntities3()) { Simile.MusicArtist tmpArtist = modelContext.MusicArtists.Where(r => r.ArtistName.ToUpper() == tmpArtistName.ToUpper()).FirstOrDefault(); if (tmpArtist != null) { musicFileViewModel.Artist = tmpArtist.ArtistName.Trim(); musicFileViewModel.ArtistId = tmpArtist.Id; } } } //////////////////// if (!string.IsNullOrEmpty(tagMusicFile.Tag.Comment)) { var splitComments = tagMusicFile.Tag.Comment.Split(';'); foreach (var val in splitComments) { var childSplit = val.ToString().Split('='); if (childSplit.Length == 2) { if (childSplit[0].Trim() == "Artist") { artistName = childSplit[1].Trim(); } if (childSplit[0].Trim() == "Band") { bandName = childSplit[1].Trim(); } } } } if (musicFileViewModel.BandId == 0 && !string.IsNullOrEmpty(bandName)) { using (var modelContext = new MusicPlayEntities3()) { Simile.MusicBand tmpBand = modelContext.MusicBands.Where(r => r.BandName.ToUpper() == bandName.ToUpper()).FirstOrDefault(); musicFileViewModel.Band = tmpBand.BandName.Trim(); musicFileViewModel.BandId = tmpBand.Id; } } if (musicFileViewModel.ArtistId == 0 && !string.IsNullOrEmpty(artistName)) { using (var modelContext = new MusicPlayEntities3()) { Simile.MusicArtist tmpArtist = modelContext.MusicArtists.Where(r => r.ArtistName.ToUpper() == artistName.ToUpper()).FirstOrDefault(); musicFileViewModel.Artist = tmpArtist.ArtistName.Trim(); musicFileViewModel.ArtistId = tmpArtist.Id; } } listMusicFileViewModel.Add(musicFileViewModel); } catch (Exception errMsg) { errR.Error = errMsg.Message; errorRpts.Add(errR); MessageBox.Show(errMsg.Message); } } // end of for loop } //end of dir for loop dgvMusicFiles.DataSource = listMusicFileViewModel; }
private void ShowAddToPlaylistGrid(MusicFileViewModel musicFileChoosen) { selectedMusicFileToAddToPlaylist = musicFileChoosen; playlistsToAddTo.ItemsSource = App.musicPlayerData.MusicPlaylists; addToPlaylistGrid.Visibility = Visibility.Visible; }