Exemple #1
0
        private void ExportReleaseArtists(XmlWriter writer, Release release)
        {
            writer.WriteStartElement(Keys.Artists);

            ReleaseArtist[] artists;
            try
            {
                artists = release.Artists.ToArray();
                release.Artists.Select(a => a.Artist.Name).ToArray(); // get names to verify
            }
            catch
            {
                artists = new ReleaseArtist[]
                {
                    new ReleaseArtist()
                    {
                        Artist = new Artist()
                        {
                            Name = release.JoinedAlbumArtists
                        }
                    }
                };
            }
            foreach (ReleaseArtist releaseArtist in artists)
            {
                this.ExportReleaseArtist(writer, releaseArtist);
            }

            writer.WriteEndElement();
        }
Exemple #2
0
        private void ExportReleaseArtist(XmlWriter writer, ReleaseArtist releaseArtist)
        {
            writer.WriteStartElement(Keys.Artist);

            writer.WriteAttributeString(Keys.Name, releaseArtist.Artist.Name);
            if (!string.IsNullOrEmpty(releaseArtist.JoinString))
            {
                writer.WriteAttributeString(Keys.JoinString, releaseArtist.JoinString);
            }

            writer.WriteEndElement();
        }
        private void Merge()
        {
            foreach (MatchItem matchItem in matchItems)
            {
                matchItem.Item.Position = matchItem.Track;

                ReleaseArtist[] releaseArtists;
                if (matchItem == null || matchItem.Source == null || matchItem.Source.Artists == null)
                {
                    releaseArtists = new ReleaseArtist[0];
                }
                else
                {
                    releaseArtists = matchItem.Source.Artists;
                }

                bool matchNames = Enumerable.SequenceEqual(
                    matchItem.Item.Artists.Select(a => a.Artist.Name),
                    releaseArtists.Select(a => a.Aggregate.NameVariationFixed));
                bool matchJoins = Enumerable.SequenceEqual(
                    matchItem.Item.Artists.Select(a => a.JoinString),
                    releaseArtists.Select(a => a.Join));

                if (!matchNames || !matchJoins)
                {
                    matchItem.Item.Artists.Clear();
                    foreach (ReleaseArtist releaseArtist in releaseArtists)
                    {
                        matchItem.Item.Artists.Add(new Engine.Entities.TrackArtist()
                        {
                            Artist     = this.collectionManager.GetOrCreateArtist(releaseArtist.Aggregate.NameVariationFixed),
                            JoinString = releaseArtist.Join
                        });
                    }
                    matchItem.Item.JoinedArtists = releaseArtists.JoinFixed();
                }

                matchItem.Item.Title = matchItem.Title;
            }
        }
 public ReleaseArtistAggregate(ReleaseArtist releaseArtist)
 {
     this.releaseArtist = releaseArtist;
 }
 public ReleaseArtistAggregate(ReleaseArtist releaseArtist)
 {
     this.releaseArtist = releaseArtist;
 }