public MusicArtist Update(MusicArtist updatedArtist)
        {
            var entity = db.Artists.Attach(updatedArtist);

            entity.State = EntityState.Modified;
            return(updatedArtist);
        }
        private async Task RefreshArtist(MusicArtist item, MetadataRefreshOptions options, CancellationToken cancellationToken)
        {
            var albums = _libraryManager
                         .GetItemList(new InternalItemsQuery
            {
                IncludeItemTypes = new[] { nameof(MusicAlbum) },
                ArtistIds        = new[] { item.Id },
                DtoOptions       = new DtoOptions(false)
                {
                    EnableImages = false
                }
            })
                         .OfType <MusicAlbum>();

            var musicArtists = albums
                               .Select(i => i.MusicArtist)
                               .Where(i => i != null);

            var musicArtistRefreshTasks = musicArtists.Select(i => i.ValidateChildren(new SimpleProgress <double>(), cancellationToken, options, true));

            await Task.WhenAll(musicArtistRefreshTasks).ConfigureAwait(false);

            try
            {
                await item.RefreshMetadata(options, cancellationToken).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Error refreshing library");
            }
        }
        public void Should_Delete_Music()
        {
            //ARRANGE
            var albums = AlbumStub.Albums;
            var artist = ArtistStub.Artist;
            var music  = MusicStub.Music;

            using (var context = _sqlLifeFake.GetDbContext())
            {
                AlbumService  albumService  = new AlbumService(context);
                ArtistService artistService = new ArtistService(context);
                MusicService  musicService  = new MusicService(context);

                //ACT
                var insertArtist = artistService.InsertArtistAsync(artist);
                albums[0].ArtistId = insertArtist.Result.Id;

                var albumInsert = albumService.InsertAlbumAsync(albums[0]);
                music.AlbumId = albumInsert.Result.Id;

                music.MusicArtists = new List <MusicArtist>();
                MusicArtist musicArtist = new MusicArtist
                {
                    ArtistId = insertArtist.Result.Id
                };

                music.MusicArtists.Add(musicArtist);

                var deleteMusic = musicService.InsertMusicAsync(music);
                var result      = musicService.DeleteMusicAsync(deleteMusic.Result.Id);

                //ASSERT
                result.Result.Should().BeFalse();
            }
        }
Exemple #4
0
        private async Task RefreshArtist(RefreshItem request, MusicArtist item)
        {
            var cancellationToken = CancellationToken.None;

            var albums = _libraryManager.RootFolder
                         .RecursiveChildren
                         .OfType <MusicAlbum>()
                         .Where(i => i.HasArtist(item.Name))
                         .ToList();

            var musicArtists = albums
                               .Select(i => i.Parent)
                               .OfType <MusicArtist>()
                               .ToList();

            var options = GetRefreshOptions(request);

            var musicArtistRefreshTasks = musicArtists.Select(i => i.ValidateChildren(new Progress <double>(), cancellationToken, options, true));

            await Task.WhenAll(musicArtistRefreshTasks).ConfigureAwait(false);

            try
            {
                await item.RefreshMetadata(options, CancellationToken.None).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                Logger.ErrorException("Error refreshing library", ex);
            }
        }
Exemple #5
0
        private async Task RefreshArtist(MusicArtist item, MetadataRefreshOptions options)
        {
            var cancellationToken = CancellationToken.None;

            var albums = _libraryManagerFactory()
                         .GetItemList(new InternalItemsQuery
            {
                IncludeItemTypes = new[] { typeof(MusicAlbum).Name },
                ArtistIds        = new[] { item.Id.ToString("N") }
            })
                         .OfType <MusicAlbum>()
                         .ToList();

            var musicArtists = albums
                               .Select(i => i.MusicArtist)
                               .Where(i => i != null)
                               .ToList();

            var musicArtistRefreshTasks = musicArtists.Select(i => i.ValidateChildren(new Progress <double>(), cancellationToken, options, true));

            await Task.WhenAll(musicArtistRefreshTasks).ConfigureAwait(false);

            try
            {
                await item.RefreshMetadata(options, CancellationToken.None).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                _logger.ErrorException("Error refreshing library", ex);
            }
        }
Exemple #6
0
        private void Load()
        {
            XBMC.SetIp(Settings.Default.Ip);
            XBMC.SetConnectionTimeout(Settings.Default.ConnectionTimeout);
            XBMC.SetCredentials(Settings.Default.UserName, Settings.Default.Password);
            XBMC.NowPlaying.FistTime = true;
            XBMC.Status.Refresh();


            //Chargement des artistes
            string[] _art = XBMC.Database.GetArtists();
            ObservableCollection <MusicArtist> _artistes = new ObservableCollection <MusicArtist>();

            if (_art != null)
            {
                foreach (string item in _art)
                {
                    MusicArtist art = new MusicArtist();
                    art.Artist = item;
                    _artistes.Add(art);
                }
            }
            lstArtistes.ItemsSource = _artistes;
            Console.WriteLine(lstPlaylist.Items.Count.ToString());
        }
Exemple #7
0
 public static void ProcessArtistData(MusicArtist source, Artist target)
 {
     target.PremiereDate        = source.PremiereDate;
     target.ProductionYear      = source.ProductionYear;
     target.Tags                = source.Tags.ToList();
     target.Overview            = source.Overview;
     target.ProductionLocations = source.ProductionLocations.ToList();
 }
Exemple #8
0
        /// <summary>
        /// From music file extract album,artist, band.
        /// </summary>
        public void Process()
        {
            FileInfo[]  musicFiles   = null;
            TagLib.File tagMusicFile = null;
            //string album = "";
            List <string> artists = new List <string>();

            //  DirectoryProcess dProcess = new DirectoryProcess();
            List <DirectoryInfo> dirList = new DirectoryProcess().GetDirectories();

            MusicArtist artist = new MusicArtist();

            this.listOfMusicFileTagTempData = new List <TemplateMusicFileTag>();

            IterateDirectory(dirList);

            ////Iterate parent directory and all its sub directories.
            //foreach (DirectoryInfo dir in dirList)
            //{
            //    //Get music files from the this directory.
            //    musicFiles = dir.GetFiles(GlobalUserConfig.FileType);

            //    //Iterate music files.
            //    foreach (FileInfo musicFile in musicFiles)
            //    {
            //        try
            //        {
            //            //Create tag music file from music file.
            //            tagMusicFile = TagLib.File.Create(musicFile.FullName);

            //            artists = artist.GetArtist(tagMusicFile);


            //            foreach (string val in artists)
            //            {
            //                if (!this.artistsTagValue.Contains(val))
            //                {
            //                    if(!IsAlreadyExistsInDB(val.Trim()))
            //                    {
            //                    this.artistsTagValue.Add(val.Trim());

            //                    this.listOfMusicFileTagTempData.Add(
            //                        new TemplateMusicFileTag() { ArtistTagVale = val.Trim(), IsAlbum = false, IsArtist = false, IsBand = false });
            //                    }
            //                }
            //            }

            //        }
            //        catch (Exception errMsg)
            //        {
            //            throw errMsg;
            //        }
            //    }

            //}
        }
        public MusicArtist Delete(int id)
        {
            MusicArtist album = GetById(id);

            if (album != null)
            {
                db.Artists.Remove(album);
            }
            return(album);
        }
Exemple #10
0
        public void MusicArtistInstantiation()
        {
            var options = new MusicArtistOptions();

            SetMusicArtistOptions(options);
            var music_artist = new MusicArtist("-1", "-1", options);

            AssertMusicArtist(music_artist, options);
            AssertMusicArtist(music_artist, music_artist.GetOptions());
        }
Exemple #11
0
        public IEnumerable <Audio> GetInstantMixFromArtist(MusicArtist artist, User user)
        {
            var genres = user.RootFolder
                         .GetRecursiveChildren(user, i => i is Audio)
                         .Cast <Audio>()
                         .Where(i => i.HasAnyArtist(artist.Name))
                         .SelectMany(i => i.Genres)
                         .Concat(artist.Genres)
                         .Distinct(StringComparer.OrdinalIgnoreCase);

            return(GetInstantMixFromGenres(genres, user));
        }
Exemple #12
0
        public async Task <Music> InsertMusicAsync(Music music)
        {
            Music response = new Music();

            try
            {
                music.DatePublic = DateTimeOffset.Now;

                List <Artist> artists = await _dbContext.Artists.ToListAsync();

                List <Artist> artistMusic =
                    (from artist in artists
                     join artistM in music.MusicArtists
                     on artist.Id equals artistM.ArtistId
                     select new Artist {
                    Id = artist.Id,
                    NameArtist = artist.NameArtist,
                    Country = artist.Country,
                    Gender = artist.Gender
                }).ToList();

                if (artistMusic.Count != 0)
                {
                    music.MusicArtists = new List <MusicArtist>();
                    foreach (Artist art in artistMusic)
                    {
                        MusicArtist musicArtist = new MusicArtist();
                        musicArtist.Artist = art;
                        musicArtist.Music  = music;
                        music.MusicArtists.Add(musicArtist);
                    }

                    await _dbContext.Musics.AddAsync(music);

                    var save = await _dbContext.SaveChangesAsync();

                    if (save != 1)
                    {
                        response = music;
                    }
                }
                else
                {
                    response = null;
                }
            }
            catch
            {
                response = null;
            }

            return(response);
        }
Exemple #13
0
        //The nuget doesn't seem to have GetProviderId for artists
        public static string GetMusicBrainzArtistId(MusicArtist artist)
        {
            if (artist.ProviderIds == null)
            {
                return(null);
            }

            if (artist.ProviderIds.TryGetValue("MusicBrainzArtist", out string mbArtistId))
            {
                return(mbArtistId);
            }
            return(null);
        }
Exemple #14
0
        public async Task <GetTracksResponse> GetTracks(LastfmUser user, MusicArtist artist, CancellationToken cancellationToken)
        {
            var request = new GetTracksRequest
            {
                User   = user.Username,
                Artist = artist.Name,
                ApiKey = Strings.Keys.LastfmApiKey,
                Method = Strings.Methods.GetTracks,
                Limit  = 1000
            };

            return(await Get <GetTracksRequest, GetTracksResponse>(request, cancellationToken));
        }
Exemple #15
0
        public IEnumerable <Audio> GetInstantMixFromArtist(MusicArtist artist, User user)
        {
            var genres = user.RootFolder
                         .GetRecursiveChildren(user, new InternalItemsQuery(user)
            {
                IncludeItemTypes = new[] { typeof(Audio).Name }
            })
                         .Cast <Audio>()
                         .Where(i => i.HasAnyArtist(artist.Name))
                         .SelectMany(i => i.Genres)
                         .Concat(artist.Genres)
                         .Distinct(StringComparer.OrdinalIgnoreCase);

            return(GetInstantMixFromGenres(genres, user));
        }
Exemple #16
0
        //The nuget doesn't seem to have GetProviderId for artists
        public static string GetMusicBrainzArtistId(MusicArtist artist)
        {
            if (artist.ProviderIds == null)
            {
                Plugin.Logger.Debug("No provider id: {0}", artist.Name);
                return(null);
            }

            if (artist.ProviderIds.TryGetValue(MetadataProviders.MusicBrainzArtist.ToString(), out var mbArtistId))
            {
                return(mbArtistId);
            }
            Plugin.Logger.Debug("No GetMusicBrainzArtistId MBID: {0}", artist.Name);

            return(null);
        }
Exemple #17
0
        //The nuget doesn't seem to have GetProviderId for artists
        public static string GetMusicBrainzArtistId(MusicArtist artist)
        {
            string mbArtistId;

            if (artist.ProviderIds == null)
            {
                Plugin.Logger.Debug("No provider id: {0}", artist.Name);
                return(null);
            }

            if (artist.ProviderIds.TryGetValue("MusicBrainzArtist", out mbArtistId))
            {
                return(mbArtistId);
            }

            Plugin.Logger.Debug("No MBID: {0}", artist.Name);

            return(null);
        }
        public void Should_Get_All_Music()
        {
            //ARRANGE
            var albums       = AlbumStub.Albums;
            var artist       = ArtistStub.Artist;
            var musics       = MusicStub.Musics;
            var newInfoMusic = MusicStub.UpdateMusic;

            using (var context = _sqlLifeFake.GetDbContext())
            {
                AlbumService  albumService  = new AlbumService(context);
                ArtistService artistService = new ArtistService(context);
                MusicService  musicService  = new MusicService(context);



                var insertArtist = artistService.InsertArtistAsync(artist);
                albums[0].ArtistId = insertArtist.Result.Id;

                var albumInsert = albumService.InsertAlbumAsync(albums[0]);
                musics[0].AlbumId = albumInsert.Result.Id;
                musics[1].AlbumId = albumInsert.Result.Id;

                MusicArtist musicArtist = new MusicArtist
                {
                    ArtistId = insertArtist.Result.Id
                };

                musics[0].MusicArtists = new List <MusicArtist>();
                musics[1].MusicArtists = new List <MusicArtist>();
                musics[0].MusicArtists.Add(musicArtist);
                musics[1].MusicArtists.Add(musicArtist);

                //ACT
                var first  = musicService.InsertMusicAsync(musics[0]);
                var second = musicService.InsertMusicAsync(musics[1]);
                var result = musicService.GetMusicsAsync();

                // ASSERT
                result.Result.Should().HaveCount(2);
            }
        }
Exemple #19
0
        public static void Main(string[] args)
        {
            MusicArtist prince = new MusicArtist("Prince");

            prince.AddToPlaylist("Purple Rain");
            prince.AddToPlaylist("Little Red Corvette");
            prince.AddToPlaylist("Kiss");
            prince.AddToPlaylist("When Doves Cry");

            Mediaplayer player = new Mediaplayer();

            player.PlayMedia(prince);

            Audiobooks howto = new Audiobooks("How to Win Friends and Influence People", "Dale Carnegie");

            player.PlayMedia(howto);

            MovieSoundtracks starWars = new MovieSoundtracks("Star Wars");

            starWars.SelectTrack("Opening Credits Theme");
            player.PlayMedia(starWars);
        }
Exemple #20
0
        private void btnLoadPlaylist_Click(object sender, RoutedEventArgs e)
        {
            string[] _art = XBMC.Database.GetArtists();


            //ObservableCollection<MusicSong> plsong = new ObservableCollection<MusicSong>();

            ObservableCollection <MusicArtist> _artistes = new ObservableCollection <MusicArtist>();

            foreach (string item in _art)
            {
                //MusicSong song = new MusicSong(); ;
                //song = XBMC.Database.GetSongByFileName(item);
                //plsong.Add(song);
                MusicArtist art = new MusicArtist();
                art.Artist = item;

                _artistes.Add(art);
            }

            lstPlaylist.ItemsSource = _artistes;
            Console.WriteLine(lstPlaylist.Items.Count.ToString());
        }
Exemple #21
0
        /// <summary>
        /// Sets the item counts.
        /// </summary>
        /// <param name="artist">The artist.</param>
        /// <param name="userId">The user id.</param>
        /// <param name="allItems">All items.</param>
        private void SetItemCounts(MusicArtist artist, Guid?userId, IEnumerable <IHasArtist> allItems)
        {
            var name = artist.Name;

            var items = allItems
                        .Where(i => i.HasArtist(name))
                        .ToList();

            var counts = new ItemByNameCounts
            {
                TotalCount = items.Count,

                SongCount = items.OfType <Audio>().Count(),

                AlbumCount = items.OfType <MusicAlbum>().Count(),

                MusicVideoCount = items.OfType <MusicVideo>().Count()
            };

            if (userId.HasValue)
            {
                artist.SetItemByNameCounts(userId.Value, counts);
            }
        }
Exemple #22
0
 public List <BaseItem> GetInstantMixFromArtist(MusicArtist item, User user, DtoOptions dtoOptions)
 {
     return(GetInstantMixFromGenres(item.Genres, user, dtoOptions));
 }
Exemple #23
0
 static void AssertMusicArtist(MusicArtist musicArtist, MusicArtistOptions options)
 {
     AssertPerson(musicArtist, options);
 }
Exemple #24
0
 public MusicArtistResource(MusicArtist musicArtist)
 {
     this.musicArtist = musicArtist;
 }
Exemple #25
0
        /// <summary>
        /// Gets the data.
        /// </summary>
        /// <param name="artist">The artist.</param>
        /// <returns>Guid.</returns>
        private Guid GetComparisonData(MusicArtist artist)
        {
            var songs = artist.RecursiveChildren.OfType <Audio>().ToList();

            return(GetComparisonData(songs));
        }
Exemple #26
0
        private async Task <List <LastfmArtistTrack> > GetArtistTracks(LastfmUser lastfmUser, MusicArtist artist, IProgress <double> progress, CancellationToken cancellationToken, double maxProgress, double progressOffset)
        {
            var  tracks = new List <LastfmArtistTrack>();
            var  page   = 1; //Page 0 = 1
            bool moreTracks;

            do
            {
                cancellationToken.ThrowIfCancellationRequested();

                var response = await _apiClient.GetArtistTracks(lastfmUser, artist, cancellationToken, page ++).ConfigureAwait(false);

                if (response == null || !response.HasTracks())
                {
                    break;
                }

                tracks.AddRange(response.ArtistTracks.Tracks);

                moreTracks = !response.ArtistTracks.Metadata.IsLastPage();
            } while (moreTracks);

            return(tracks);
        }
 public MusicArtist Add(MusicArtist newArtist)
 {
     db.Add(newArtist);
     return(newArtist);
 }
Exemple #28
0
 public IEnumerable <Audio> GetInstantMixFromArtist(MusicArtist item, User user, DtoOptions dtoOptions)
 {
     return(GetInstantMixFromGenres(item.Genres, user, dtoOptions));
 }