public async Task <IEnumerable <MusicAlbum> > GetByName(string searchQuery = null)
 {
     try
     {
         return(await albumData.GetAlbumsByNameAsync(searchQuery));
     }
     catch (Exception e)
     {
         logger.LogCritical(e, "Cannot retrieve albums");
         throw;
     }
 }
示例#2
0
        public async Task <ActionResult> ImportTracks(string[] files)
        {
            Console.WriteLine("importing tracks...");
            string supportedExtensions = "*.wav,*.aac,*.wma,*.wmv,*.mp3";
            string musicLibraryPath    = configuration.GetSection("FoldersMapping")["MusicLibrary"];

            IEnumerable <string> filePaths = Directory.EnumerateFiles(musicLibraryPath, "*.*", SearchOption.AllDirectories)
                                             .Where(s => supportedExtensions.Contains(Path.GetExtension(s).ToLower()));

            var nonExistingTracks = filePaths.Except(await trackData.GetAllFilePath());

            var musicTracks = MusicWorkerService.Instance.GetTracksFromFiles(nonExistingTracks);

            if (musicTracks != null)
            {
                await Add(musicTracks.ToArray());

                // Create albums
                var albumsName      = (await albumData.GetAlbumsByNameAsync(string.Empty)).Select(x => x.Title);
                var addedAlbumsName = new List <string>();
                var tracks          = musicTracks.Where(x => !albumsName.Contains(x.Album)).GroupBy(x => x.Album);

                foreach (IGrouping <string, MusicTrack> mtg in tracks)
                {
                    albumData.Add(new MusicAlbum {
                        Title = mtg.Key, Artists = mtg.ElementAt(0).Artist, SortableTitle = mtg.Key
                    });
                }

                // Create artists
                var artistsName = (await artistData.GetArtistsByNameAsync(string.Empty)).Select(x => x.Name);
                tracks = musicTracks.Where(x => !artistsName.Contains(x.Artist)).GroupBy(x => x.Artist);

                foreach (IGrouping <string, MusicTrack> mtg in tracks)
                {
                    artistData.Add(new MusicArtist {
                        Name = mtg.Key, SortName = mtg.Key
                    });
                }
            }
            return(Ok());
        }