/// <summary> /// Gets the studios from the tags collection /// </summary> /// <param name="audio">The audio.</param> /// <param name="tags">The tags.</param> /// <param name="tagName">Name of the tag.</param> private void FetchStudios(Audio audio, Dictionary <string, string> tags, string tagName) { var val = FFProbeHelpers.GetDictionaryValue(tags, tagName); if (!string.IsNullOrEmpty(val)) { // Sometimes the artist name is listed here, account for that var studios = Split(val, true).Where(i => !audio.HasArtist(i)); foreach (var studio in studios) { audio.AddStudio(studio); } } }
/// <summary> /// Fetches data from the tags dictionary /// </summary> /// <param name="audio">The audio.</param> /// <param name="data">The data.</param> private async Task FetchDataFromTags(Audio audio, Model.MediaInfo.MediaInfo data) { // Only set Name if title was found in the dictionary if (!string.IsNullOrEmpty(data.Name)) { audio.Name = data.Name; } if (!audio.LockedFields.Contains(MetadataFields.Cast)) { var people = new List <PersonInfo>(); foreach (var person in data.People) { PeopleHelper.AddPerson(people, new PersonInfo { Name = person.Name, Type = person.Type, Role = person.Role }); } await _libraryManager.UpdatePeople(audio, people).ConfigureAwait(false); } audio.Album = data.Album; audio.Artists = data.Artists; audio.AlbumArtists = data.AlbumArtists; audio.IndexNumber = data.IndexNumber; audio.ParentIndexNumber = data.ParentIndexNumber; audio.ProductionYear = data.ProductionYear; audio.PremiereDate = data.PremiereDate; // If we don't have a ProductionYear try and get it from PremiereDate if (audio.PremiereDate.HasValue && !audio.ProductionYear.HasValue) { audio.ProductionYear = audio.PremiereDate.Value.ToLocalTime().Year; } if (!audio.LockedFields.Contains(MetadataFields.Genres)) { audio.Genres.Clear(); foreach (var genre in data.Genres) { audio.AddGenre(genre); } } if (!audio.LockedFields.Contains(MetadataFields.Studios)) { audio.Studios.Clear(); foreach (var studio in data.Studios) { audio.AddStudio(studio); } } audio.SetProviderId(MetadataProviders.MusicBrainzAlbumArtist, data.GetProviderId(MetadataProviders.MusicBrainzAlbumArtist)); audio.SetProviderId(MetadataProviders.MusicBrainzArtist, data.GetProviderId(MetadataProviders.MusicBrainzArtist)); audio.SetProviderId(MetadataProviders.MusicBrainzAlbum, data.GetProviderId(MetadataProviders.MusicBrainzAlbum)); audio.SetProviderId(MetadataProviders.MusicBrainzReleaseGroup, data.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup)); audio.SetProviderId(MetadataProviders.MusicBrainzTrack, data.GetProviderId(MetadataProviders.MusicBrainzTrack)); }