diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-08-03 20:59:23 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-08-03 20:59:23 -0400 |
| commit | 06ec5ebcb99869fdbf8eec08f1dfa46742c053b4 (patch) | |
| tree | 5ceb9fa88a327bcb98f69a74b8eb85e0b5433fb1 /MediaBrowser.Providers | |
| parent | f05ec44742fd04c077c867d877a655e328a31d16 (diff) | |
persist locked fields in xml
Diffstat (limited to 'MediaBrowser.Providers')
4 files changed, 54 insertions, 41 deletions
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs index 8a91525079..8b59291a30 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs @@ -107,17 +107,20 @@ namespace MediaBrowser.Providers.MediaInfo audio.Name = title; } - var composer = GetDictionaryValue(tags, "composer"); - - if (!string.IsNullOrWhiteSpace(composer)) + if (!audio.LockedFields.Contains(MetadataFields.Cast)) { - foreach (var person in Split(composer)) - { - var name = person.Trim(); + var composer = GetDictionaryValue(tags, "composer"); - if (!string.IsNullOrEmpty(name)) + if (!string.IsNullOrWhiteSpace(composer)) + { + foreach (var person in Split(composer)) { - audio.AddPerson(new PersonInfo { Name = name, Type = PersonType.Composer }); + var name = person.Trim(); + + if (!string.IsNullOrEmpty(name)) + { + audio.AddPerson(new PersonInfo { Name = name, Type = PersonType.Composer }); + } } } } @@ -148,12 +151,18 @@ namespace MediaBrowser.Providers.MediaInfo audio.ProductionYear = audio.PremiereDate.Value.ToLocalTime().Year; } - FetchGenres(audio, tags); + if (!audio.LockedFields.Contains(MetadataFields.Genres)) + { + FetchGenres(audio, tags); + } - // There's several values in tags may or may not be present - FetchStudios(audio, tags, "organization"); - FetchStudios(audio, tags, "ensemble"); - FetchStudios(audio, tags, "publisher"); + if (!audio.LockedFields.Contains(MetadataFields.Studios)) + { + // There's several values in tags may or may not be present + FetchStudios(audio, tags, "organization"); + FetchStudios(audio, tags, "ensemble"); + FetchStudios(audio, tags, "publisher"); + } } /// <summary> diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs index ee5df7dca3..5c74c18de7 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs @@ -300,14 +300,17 @@ namespace MediaBrowser.Providers.MediaInfo return; } - var genres = GetDictionaryValue(data.format.tags, "genre"); - - if (!string.IsNullOrEmpty(genres)) + if (!video.LockedFields.Contains(MetadataFields.Genres)) { - video.Genres = genres.Split(new[] { ';', '/' }, StringSplitOptions.RemoveEmptyEntries) - .Where(i => !string.IsNullOrWhiteSpace(i)) - .Select(i => i.Trim()) - .ToList(); + var genres = GetDictionaryValue(data.format.tags, "genre"); + + if (!string.IsNullOrEmpty(genres)) + { + video.Genres = genres.Split(new[] { ';', '/' }, StringSplitOptions.RemoveEmptyEntries) + .Where(i => !string.IsNullOrWhiteSpace(i)) + .Select(i => i.Trim()) + .ToList(); + } } var overview = GetDictionaryValue(data.format.tags, "WM/SubTitleDescription"); diff --git a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs index 278c51fc01..fee3aa4fda 100644 --- a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs +++ b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs @@ -77,7 +77,8 @@ namespace MediaBrowser.Providers.Savers "CriticRatingSummary", "GamesDbId", "BirthDate", - "DeathDate" + "DeathDate", + "LockedFields" }); var position = xml.ToString().LastIndexOf("</", StringComparison.OrdinalIgnoreCase); @@ -166,6 +167,11 @@ namespace MediaBrowser.Providers.Savers builder.Append("<LockData>" + item.DontFetchMeta.ToString().ToLower() + "</LockData>"); + if (item.LockedFields.Count > 0) + { + builder.Append("<LockedFields>" + string.Join("|", item.LockedFields.Select(i => i.ToString()).ToArray()) + "</LockedFields>"); + } + if (!string.IsNullOrEmpty(item.DisplayMediaType)) { builder.Append("<Type>" + SecurityElement.Escape(item.DisplayMediaType) + "</Type>"); @@ -462,7 +468,7 @@ namespace MediaBrowser.Providers.Savers { builder.Append("<ScanType>" + SecurityElement.Escape(stream.ScanType) + "</ScanType>"); } - + if (stream.Channels.HasValue) { builder.Append("<Channels>" + stream.Channels.Value.ToString(UsCulture) + "</Channels>"); @@ -507,7 +513,7 @@ namespace MediaBrowser.Providers.Savers } } } - + builder.Append("</" + stream.Type + ">"); } diff --git a/MediaBrowser.Providers/TV/FanArtTVProvider.cs b/MediaBrowser.Providers/TV/FanArtTVProvider.cs index 84ac59924c..e5f455a5fd 100644 --- a/MediaBrowser.Providers/TV/FanArtTVProvider.cs +++ b/MediaBrowser.Providers/TV/FanArtTVProvider.cs @@ -179,28 +179,23 @@ namespace MediaBrowser.Providers.TV { cancellationToken.ThrowIfCancellationRequested(); - BaseProviderInfo data; - - if (!item.ProviderData.TryGetValue(Id, out data)) - { - data = new BaseProviderInfo(); - item.ProviderData[Id] = data; - } - var seriesId = item.GetProviderId(MetadataProviders.Tvdb); - var seriesDataPath = GetSeriesDataPath(ConfigurationManager.ApplicationPaths, seriesId); - var xmlPath = Path.Combine(seriesDataPath, "fanart.xml"); - - // Only download the xml if it doesn't already exist. The prescan task will take care of getting updates - if (!File.Exists(xmlPath)) + if (!string.IsNullOrEmpty(seriesId)) { - await DownloadSeriesXml(seriesDataPath, seriesId, cancellationToken).ConfigureAwait(false); - } + var seriesDataPath = GetSeriesDataPath(ConfigurationManager.ApplicationPaths, seriesId); + var xmlPath = Path.Combine(seriesDataPath, "fanart.xml"); - if (File.Exists(xmlPath)) - { - await FetchFromXml(item, xmlPath, cancellationToken).ConfigureAwait(false); + // Only download the xml if it doesn't already exist. The prescan task will take care of getting updates + if (!File.Exists(xmlPath)) + { + await DownloadSeriesXml(seriesDataPath, seriesId, cancellationToken).ConfigureAwait(false); + } + + if (File.Exists(xmlPath)) + { + await FetchFromXml(item, xmlPath, cancellationToken).ConfigureAwait(false); + } } SetLastRefreshed(item, DateTime.UtcNow); |
