diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-10-12 15:43:28 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-10-12 15:43:28 -0400 |
| commit | 25ef9777cafee83c46ff53ede2caa04e3295e98a (patch) | |
| tree | 5f1e6045d0b4d4d5b7d8dcaadf035b326f36e672 /MediaBrowser.XbmcMetadata | |
| parent | 0677d4ec990aee9a3bf7bda39dda01eb6fa66281 (diff) | |
| parent | 5be6cf05e34459a046aceaa16c891f3034859476 (diff) | |
Merge pull request #2224 from MediaBrowser/beta
Beta
Diffstat (limited to 'MediaBrowser.XbmcMetadata')
| -rw-r--r-- | MediaBrowser.XbmcMetadata/EntryPoint.cs | 10 | ||||
| -rw-r--r-- | MediaBrowser.XbmcMetadata/Images/XbmcImageSaver.cs | 272 | ||||
| -rw-r--r-- | MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj | 1 | ||||
| -rw-r--r-- | MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs | 26 | ||||
| -rw-r--r-- | MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs | 23 |
5 files changed, 22 insertions, 310 deletions
diff --git a/MediaBrowser.XbmcMetadata/EntryPoint.cs b/MediaBrowser.XbmcMetadata/EntryPoint.cs index 0844f1f74..bf3d3c303 100644 --- a/MediaBrowser.XbmcMetadata/EntryPoint.cs +++ b/MediaBrowser.XbmcMetadata/EntryPoint.cs @@ -91,6 +91,16 @@ namespace MediaBrowser.XbmcMetadata return; } + if (!item.SupportsLocalMetadata) + { + return; + } + + if (!item.IsSaveLocalMetadataEnabled()) + { + return; + } + try { await _providerManager.SaveMetadata(item, updateReason, new[] { BaseNfoSaver.SaverName }).ConfigureAwait(false); diff --git a/MediaBrowser.XbmcMetadata/Images/XbmcImageSaver.cs b/MediaBrowser.XbmcMetadata/Images/XbmcImageSaver.cs deleted file mode 100644 index 01eeb5f3b..000000000 --- a/MediaBrowser.XbmcMetadata/Images/XbmcImageSaver.cs +++ /dev/null @@ -1,272 +0,0 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Drawing; -using MediaBrowser.Model.Entities; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; - -namespace MediaBrowser.XbmcMetadata.Images -{ - public class XbmcImageSaver : IImageFileSaver - { - private readonly CultureInfo _usCulture = new CultureInfo("en-US"); - - public IEnumerable<string> GetSavePaths(IHasImages item, ImageType type, ImageFormat format, int index) - { - var season = item as Season; - - if (!SupportsItem(item, type, season)) - { - return new string[] { }; - } - - var extension = "." + format.ToString().ToLower(); - - // Backdrop paths - if (type == ImageType.Backdrop) - { - if (index == 0) - { - if (item.IsInMixedFolder) - { - return new[] { GetSavePathForItemInMixedFolder(item, type, "fanart", extension) }; - } - - if (season != null && season.IndexNumber.HasValue) - { - var seriesFolder = season.SeriesPath; - - var seasonMarker = season.IndexNumber.Value == 0 - ? "-specials" - : season.IndexNumber.Value.ToString("00", _usCulture); - - var imageFilename = "season" + seasonMarker + "-fanart" + extension; - - return new[] { Path.Combine(seriesFolder, imageFilename) }; - } - - return new[] - { - Path.Combine(item.ContainingFolderPath, "fanart" + extension) - }; - } - - if (item.IsInMixedFolder) - { - return new[] { GetSavePathForItemInMixedFolder(item, type, "fanart" + index.ToString(_usCulture), extension) }; - } - - var extraFanartFilename = GetBackdropSaveFilename(item.GetImages(ImageType.Backdrop), "fanart", "fanart", index); - - return new[] - { - Path.Combine(item.ContainingFolderPath, "extrafanart", extraFanartFilename + extension), - Path.Combine(item.ContainingFolderPath, "extrathumbs", "thumb" + index.ToString(_usCulture) + extension) - }; - } - - if (type == ImageType.Primary) - { - if (season != null && season.IndexNumber.HasValue) - { - var seriesFolder = season.SeriesPath; - - var seasonMarker = season.IndexNumber.Value == 0 - ? "-specials" - : season.IndexNumber.Value.ToString("00", _usCulture); - - var imageFilename = "season" + seasonMarker + "-poster" + extension; - - return new[] { Path.Combine(seriesFolder, imageFilename) }; - } - - if (item is Episode) - { - var seasonFolder = Path.GetDirectoryName(item.Path); - - var imageFilename = Path.GetFileNameWithoutExtension(item.Path) + "-thumb" + extension; - - return new[] { Path.Combine(seasonFolder, imageFilename) }; - } - - if (item.IsInMixedFolder || item is MusicVideo) - { - return new[] { GetSavePathForItemInMixedFolder(item, type, string.Empty, extension) }; - } - - if (item is MusicAlbum || item is MusicArtist) - { - return new[] { Path.Combine(item.ContainingFolderPath, "folder" + extension) }; - } - - return new[] { Path.Combine(item.ContainingFolderPath, "poster" + extension) }; - } - - if (type == ImageType.Banner) - { - if (season != null && season.IndexNumber.HasValue) - { - var seriesFolder = season.SeriesPath; - - var seasonMarker = season.IndexNumber.Value == 0 - ? "-specials" - : season.IndexNumber.Value.ToString("00", _usCulture); - - var imageFilename = "season" + seasonMarker + "-banner" + extension; - - return new[] { Path.Combine(seriesFolder, imageFilename) }; - } - } - - if (type == ImageType.Thumb) - { - if (season != null && season.IndexNumber.HasValue) - { - var seriesFolder = season.SeriesPath; - - var seasonMarker = season.IndexNumber.Value == 0 - ? "-specials" - : season.IndexNumber.Value.ToString("00", _usCulture); - - var imageFilename = "season" + seasonMarker + "-landscape" + extension; - - return new[] { Path.Combine(seriesFolder, imageFilename) }; - } - - if (item.IsInMixedFolder) - { - return new[] { GetSavePathForItemInMixedFolder(item, type, "landscape", extension) }; - } - - return new[] { Path.Combine(item.ContainingFolderPath, "landscape" + extension) }; - } - - return GetStandardSavePaths(item, type, index, extension); - } - - private IEnumerable<string> GetStandardSavePaths(IHasImages item, ImageType type, int imageIndex, string extension) - { - string filename; - - switch (type) - { - case ImageType.Art: - filename = "clearart"; - break; - case ImageType.BoxRear: - filename = "back"; - break; - case ImageType.Disc: - filename = item is MusicAlbum ? "cdart" : "disc"; - break; - case ImageType.Screenshot: - filename = GetBackdropSaveFilename(item.GetImages(type), "screenshot", "screenshot", imageIndex); - break; - default: - filename = type.ToString().ToLower(); - break; - } - - string path = null; - - if (item.IsInMixedFolder) - { - path = GetSavePathForItemInMixedFolder(item, type, filename, extension); - } - - if (string.IsNullOrEmpty(path)) - { - path = Path.Combine(item.ContainingFolderPath, filename + extension); - } - - if (string.IsNullOrEmpty(path)) - { - return new string[] { }; - } - - return new[] { path }; - } - - - private string GetSavePathForItemInMixedFolder(IHasImages item, ImageType type, string imageFilename, string extension) - { - if (type == ImageType.Primary) - { - imageFilename = "poster"; - } - var folder = Path.GetDirectoryName(item.Path); - - return Path.Combine(folder, Path.GetFileNameWithoutExtension(item.Path) + "-" + imageFilename + extension); - } - - private bool SupportsItem(IHasImages item, ImageType type, Season season) - { - if (item.IsOwnedItem || item is Audio || item is User) - { - return false; - } - - if (type != ImageType.Primary && item is Episode) - { - return false; - } - - if (!item.SupportsLocalMetadata) - { - return false; - } - - var locationType = item.LocationType; - if (locationType == LocationType.Remote || locationType == LocationType.Virtual) - { - var allowSaving = false; - - // If season is virtual under a physical series, save locally if using compatible convention - if (season != null) - { - var series = season.Series; - - if (series != null && series.SupportsLocalMetadata) - { - allowSaving = true; - } - } - - if (!allowSaving) - { - return false; - } - } - - return true; - } - - private string GetBackdropSaveFilename(IEnumerable<ItemImageInfo> images, string zeroIndexFilename, string numberedIndexPrefix, int? index) - { - if (index.HasValue && index.Value == 0) - { - return zeroIndexFilename; - } - - var filenames = images.Select(i => Path.GetFileNameWithoutExtension(i.Path)).ToList(); - - var current = 1; - while (filenames.Contains(numberedIndexPrefix + current.ToString(_usCulture), StringComparer.OrdinalIgnoreCase)) - { - current++; - } - - return numberedIndexPrefix + current.ToString(_usCulture); - } - - public string Name - { - get { return "Emby/Plex/Xbmc Images"; } - } - } -} diff --git a/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj b/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj index d95d8f12d..f3147a065 100644 --- a/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj +++ b/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj @@ -52,7 +52,6 @@ </Compile> <Compile Include="Configuration\NfoOptions.cs" /> <Compile Include="EntryPoint.cs" /> - <Compile Include="Images\XbmcImageSaver.cs" /> <Compile Include="Parsers\BaseNfoParser.cs" /> <Compile Include="Parsers\EpisodeNfoParser.cs" /> <Compile Include="Parsers\MovieNfoParser.cs" /> diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 1f222e75c..8c45b8001 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -492,13 +492,9 @@ namespace MediaBrowser.XbmcMetadata.Parsers { var val = reader.ReadElementContentAsString(); - var hasTagline = item as IHasTaglines; - if (hasTagline != null) + if (!string.IsNullOrWhiteSpace(val)) { - if (!string.IsNullOrWhiteSpace(val)) - { - hasTagline.AddTagline(val); - } + item.Tagline = val; } break; } @@ -507,20 +503,12 @@ namespace MediaBrowser.XbmcMetadata.Parsers { var val = reader.ReadElementContentAsString(); - var hasProductionLocations = item as IHasProductionLocations; - if (hasProductionLocations != null) + if (!string.IsNullOrWhiteSpace(val)) { - if (!string.IsNullOrWhiteSpace(val)) - { - var parts = val.Split('/') - .Select(i => i.Trim()) - .Where(i => !string.IsNullOrWhiteSpace(i)); - - foreach (var p in parts) - { - hasProductionLocations.AddProductionLocation(p); - } - } + item.ProductionLocations = val.Split('/') + .Select(i => i.Trim()) + .Where(i => !string.IsNullOrWhiteSpace(i)) + .ToList(); } break; } diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs index 290ea588e..0b071fceb 100644 --- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs @@ -718,22 +718,14 @@ namespace MediaBrowser.XbmcMetadata.Savers writer.WriteElementString("runtime", Convert.ToInt32(timespan.TotalMinutes).ToString(UsCulture)); } - var hasTaglines = item as IHasTaglines; - if (hasTaglines != null) + if (!string.IsNullOrWhiteSpace(item.Tagline)) { - foreach (var tagline in hasTaglines.Taglines) - { - writer.WriteElementString("tagline", tagline); - } + writer.WriteElementString("tagline", item.Tagline); } - var hasProductionLocations = item as IHasProductionLocations; - if (hasProductionLocations != null) + foreach (var country in item.ProductionLocations) { - foreach (var country in hasProductionLocations.ProductionLocations) - { - writer.WriteElementString("country", country); - } + writer.WriteElementString("country", country); } foreach (var genre in item.Genres) @@ -1040,12 +1032,7 @@ namespace MediaBrowser.XbmcMetadata.Savers private static string GetPathToSave(string path, ILibraryManager libraryManager, IServerConfigurationManager config) { - foreach (var map in config.Configuration.PathSubstitutions) - { - path = libraryManager.SubstitutePath(path, map.From, map.To); - } - - return path; + return libraryManager.GetPathAfterNetworkSubstitution(path); } private static bool IsPersonType(PersonInfo person, string type) |
