private void FetchEmbeddedInfo(Video video, Model.MediaInfo.MediaInfo data, MetadataRefreshOptions options) { var isFullRefresh = options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh; if (!video.LockedFields.Contains(MetadataFields.OfficialRating)) { if (!string.IsNullOrWhiteSpace(data.OfficialRating) || isFullRefresh) { video.OfficialRating = data.OfficialRating; } } if (!video.LockedFields.Contains(MetadataFields.Cast)) { if (video.People.Count == 0 || isFullRefresh) { video.People.Clear(); foreach (var person in data.People) { video.AddPerson(new PersonInfo { Name = person.Name, Type = person.Type, Role = person.Role }); } } } if (!video.LockedFields.Contains(MetadataFields.Genres)) { if (video.Genres.Count == 0 || isFullRefresh) { video.Genres.Clear(); foreach (var genre in data.Genres) { video.AddGenre(genre); } } } if (!video.LockedFields.Contains(MetadataFields.Studios)) { if (video.Studios.Count == 0 || isFullRefresh) { video.Studios.Clear(); foreach (var studio in data.Studios) { video.AddStudio(studio); } } } if (data.ProductionYear.HasValue) { if (!video.ProductionYear.HasValue || isFullRefresh) { video.ProductionYear = data.ProductionYear; } } if (data.PremiereDate.HasValue) { if (!video.PremiereDate.HasValue || isFullRefresh) { video.PremiereDate = data.PremiereDate; } } if (data.IndexNumber.HasValue) { if (!video.IndexNumber.HasValue || isFullRefresh) { video.IndexNumber = data.IndexNumber; } } if (data.ParentIndexNumber.HasValue) { if (!video.ParentIndexNumber.HasValue || isFullRefresh) { video.ParentIndexNumber = data.ParentIndexNumber; } } // If we don't have a ProductionYear try and get it from PremiereDate if (video.PremiereDate.HasValue && !video.ProductionYear.HasValue) { video.ProductionYear = video.PremiereDate.Value.ToLocalTime().Year; } if (!video.LockedFields.Contains(MetadataFields.Overview)) { if (string.IsNullOrWhiteSpace(video.Overview) || isFullRefresh) { video.Overview = data.Overview; } } }