diff options
| author | Luke <luke.pulverenti@gmail.com> | 2014-12-14 00:38:07 -0500 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2014-12-14 00:38:07 -0500 |
| commit | 524293ea79ab61228f8326561be70bcca4d0ea8f (patch) | |
| tree | ccfe163c8edafc8dd14b0b63d48712a6d504de9d /MediaBrowser.LocalMetadata | |
| parent | 00da34b90a2f2fcee4d6aa584e25fccebb375b6d (diff) | |
| parent | 9df9723fa8554df0fd51d777d3f781b0136de926 (diff) | |
Merge pull request #954 from MediaBrowser/dev
3.0.5462.0
Diffstat (limited to 'MediaBrowser.LocalMetadata')
7 files changed, 134 insertions, 104 deletions
diff --git a/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs b/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs index 248ed2661..044d29a1b 100644 --- a/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs +++ b/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs @@ -126,33 +126,29 @@ namespace MediaBrowser.LocalMetadata.Images private void PopulateImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, bool supportParentSeriesFiles, IDirectoryService directoryService) { - var imagePrefix = string.Empty; + var imagePrefix = item.FileNameWithoutExtension + "-"; + var isInMixedFolder = item.IsInMixedFolder; - var baseItem = item as BaseItem; - if (baseItem != null && baseItem.IsInMixedFolder) - { - imagePrefix = _fileSystem.GetFileNameWithoutExtension(item.Path) + "-"; - } - - PopulatePrimaryImages(item, images, files, imagePrefix); - PopulateBackdrops(item, images, files, imagePrefix, directoryService); - PopulateScreenshots(images, files, imagePrefix); + PopulatePrimaryImages(item, images, files, imagePrefix, isInMixedFolder); - AddImage(files, images, imagePrefix + "logo", ImageType.Logo); - AddImage(files, images, imagePrefix + "clearart", ImageType.Art); - AddImage(files, images, imagePrefix + "disc", ImageType.Disc); - AddImage(files, images, imagePrefix + "cdart", ImageType.Disc); - AddImage(files, images, imagePrefix + "box", ImageType.Box); - AddImage(files, images, imagePrefix + "back", ImageType.BoxRear); - AddImage(files, images, imagePrefix + "boxrear", ImageType.BoxRear); - AddImage(files, images, imagePrefix + "menu", ImageType.Menu); + AddImage(files, images, "logo", imagePrefix, isInMixedFolder, ImageType.Logo); + AddImage(files, images, "clearart", imagePrefix, isInMixedFolder, ImageType.Art); + AddImage(files, images, "disc", imagePrefix, isInMixedFolder, ImageType.Disc); + AddImage(files, images, "cdart", imagePrefix, isInMixedFolder, ImageType.Disc); + AddImage(files, images, "box", imagePrefix, isInMixedFolder, ImageType.Box); + AddImage(files, images, "back", imagePrefix, isInMixedFolder, ImageType.BoxRear); + AddImage(files, images, "boxrear", imagePrefix, isInMixedFolder, ImageType.BoxRear); + AddImage(files, images, "menu", imagePrefix, isInMixedFolder, ImageType.Menu); // Banner - AddImage(files, images, imagePrefix + "banner", ImageType.Banner); + AddImage(files, images, "banner", imagePrefix, isInMixedFolder, ImageType.Banner); // Thumb - AddImage(files, images, imagePrefix + "thumb", ImageType.Thumb); - AddImage(files, images, imagePrefix + "landscape", ImageType.Thumb); + AddImage(files, images, "thumb", imagePrefix, isInMixedFolder, ImageType.Thumb); + AddImage(files, images, "landscape", imagePrefix, isInMixedFolder, ImageType.Thumb); + + PopulateBackdrops(item, images, files, imagePrefix, isInMixedFolder, directoryService); + PopulateScreenshots(images, files, imagePrefix, isInMixedFolder); if (supportParentSeriesFiles) { @@ -165,54 +161,72 @@ namespace MediaBrowser.LocalMetadata.Images } } - private void PopulatePrimaryImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix) + private void PopulatePrimaryImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, bool isInMixedFolder) { - AddImage(files, images, imagePrefix + "folder", ImageType.Primary); - AddImage(files, images, imagePrefix + "cover", ImageType.Primary); - AddImage(files, images, imagePrefix + "poster", ImageType.Primary); - AddImage(files, images, imagePrefix + "default", ImageType.Primary); + var names = new List<string> + { + "folder", + "cover", + "poster", + "default" + }; - // Support plex/xbmc convention + // Support plex/kodi convention if (item is Series) { - AddImage(files, images, imagePrefix + "show", ImageType.Primary); + names.Add("show"); } - // Support plex/xbmc convention + // Support plex/kodi convention if (item is Video && !(item is Episode)) { - AddImage(files, images, imagePrefix + "movie", ImageType.Primary); + names.Add("movie"); } - if (!string.IsNullOrEmpty(item.Path)) + foreach (var name in names) { - var name = _fileSystem.GetFileNameWithoutExtension(item.Path); + AddImage(files, images, imagePrefix + name, ImageType.Primary); + } - if (!string.IsNullOrEmpty(name)) + var fileNameWithoutExtension = item.FileNameWithoutExtension; + + if (!string.IsNullOrEmpty(fileNameWithoutExtension)) + { + AddImage(files, images, fileNameWithoutExtension, ImageType.Primary); + } + + if (!isInMixedFolder) + { + foreach (var name in names) { AddImage(files, images, name, ImageType.Primary); - AddImage(files, images, name + "-poster", ImageType.Primary); } } } - private void PopulateBackdrops(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, IDirectoryService directoryService) + private void PopulateBackdrops(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, bool isInMixedFolder, IDirectoryService directoryService) { - PopulateBackdrops(images, files, imagePrefix, "backdrop", "backdrop", ImageType.Backdrop); + PopulateBackdrops(images, files, imagePrefix, "backdrop", "backdrop", isInMixedFolder, ImageType.Backdrop); if (!string.IsNullOrEmpty(item.Path)) { - var name = _fileSystem.GetFileNameWithoutExtension(item.Path); + var name = item.FileNameWithoutExtension; if (!string.IsNullOrEmpty(name)) { AddImage(files, images, imagePrefix + name + "-fanart", ImageType.Backdrop); + + // Support without the prefix if it's in it's own folder + if (!isInMixedFolder) + { + AddImage(files, images, name + "-fanart", ImageType.Backdrop); + } } } - PopulateBackdrops(images, files, imagePrefix, "fanart", "fanart-", ImageType.Backdrop); - PopulateBackdrops(images, files, imagePrefix, "background", "background-", ImageType.Backdrop); - PopulateBackdrops(images, files, imagePrefix, "art", "art-", ImageType.Backdrop); + PopulateBackdrops(images, files, imagePrefix, "fanart", "fanart-", isInMixedFolder, ImageType.Backdrop); + PopulateBackdrops(images, files, imagePrefix, "background", "background-", isInMixedFolder, ImageType.Backdrop); + PopulateBackdrops(images, files, imagePrefix, "art", "art-", isInMixedFolder, ImageType.Backdrop); var extraFanartFolder = files .FirstOrDefault(i => string.Equals(i.Name, "extrafanart", StringComparison.OrdinalIgnoreCase)); @@ -245,12 +259,12 @@ namespace MediaBrowser.LocalMetadata.Images })); } - private void PopulateScreenshots(List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix) + private void PopulateScreenshots(List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, bool isInMixedFolder) { - PopulateBackdrops(images, files, imagePrefix, "screenshot", "screenshot", ImageType.Screenshot); + PopulateBackdrops(images, files, imagePrefix, "screenshot", "screenshot", isInMixedFolder, ImageType.Screenshot); } - private void PopulateBackdrops(List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, string firstFileName, string subsequentFileNamePrefix, ImageType type) + private void PopulateBackdrops(List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, string firstFileName, string subsequentFileNamePrefix, bool isInMixedFolder, ImageType type) { AddImage(files, images, imagePrefix + firstFileName, type); @@ -270,6 +284,29 @@ namespace MediaBrowser.LocalMetadata.Images } } } + + // Support without the prefix + if (!isInMixedFolder) + { + AddImage(files, images, firstFileName, type); + + unfound = 0; + for (var i = 1; i <= 20; i++) + { + // Screenshot Image + var found = AddImage(files, images, subsequentFileNamePrefix + i, type); + + if (!found) + { + unfound++; + + if (unfound >= 3) + { + break; + } + } + } + } } private readonly CultureInfo _usCulture = new CultureInfo("en-US"); @@ -310,6 +347,21 @@ namespace MediaBrowser.LocalMetadata.Images } } + private bool AddImage(List<FileSystemInfo> files, List<LocalImageInfo> images, string name, string imagePrefix, bool isInMixedFolder, ImageType type) + { + var added = AddImage(files, images, imagePrefix + name, type); + + if (!isInMixedFolder) + { + if (AddImage(files, images, name, type)) + { + added = true; + } + } + + return added; + } + private bool AddImage(IEnumerable<FileSystemInfo> files, List<LocalImageInfo> images, string name, ImageType type) { var image = GetImage(files, name) as FileInfo; diff --git a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj index 1daf0e4ac..cb9c23494 100644 --- a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj +++ b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj @@ -72,7 +72,6 @@ <Compile Include="Providers\PlaylistXmlProvider.cs" /> <Compile Include="Providers\SeasonXmlProvider.cs" /> <Compile Include="Providers\SeriesXmlProvider.cs" /> - <Compile Include="Providers\TrailerXmlProvider.cs" /> <Compile Include="Providers\VideoXmlProvider.cs" /> <Compile Include="Savers\BoxSetXmlSaver.cs" /> <Compile Include="Savers\ChannelXmlSaver.cs" /> diff --git a/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs index c7f974200..a12724ff7 100644 --- a/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs @@ -2,7 +2,9 @@ using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Logging; +using System; using System.Collections.Generic; +using System.Linq; using System.Xml; namespace MediaBrowser.LocalMetadata.Parsers @@ -20,7 +22,15 @@ namespace MediaBrowser.LocalMetadata.Parsers { case "OwnerUserId": { - item.OwnerUserId = reader.ReadElementContentAsString(); + var userId = reader.ReadElementContentAsString(); + if (!item.Shares.Any(i => string.Equals(userId, i.UserId, StringComparison.OrdinalIgnoreCase))) + { + item.Shares.Add(new Share + { + UserId = userId, + CanEdit = true + }); + } break; } diff --git a/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs index 83ef6e424..0a25ce9b6 100644 --- a/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs @@ -1,10 +1,10 @@ -using System.IO; -using System.Threading; -using MediaBrowser.Common.IO; +using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; using MediaBrowser.LocalMetadata.Parsers; using MediaBrowser.Model.Logging; +using System.IO; +using System.Threading; namespace MediaBrowser.LocalMetadata.Providers { @@ -25,22 +25,10 @@ namespace MediaBrowser.LocalMetadata.Providers protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) { - var fileInfo = FileSystem.GetFileSystemInfo(info.Path); - - var directoryInfo = fileInfo as DirectoryInfo; - - if (directoryInfo == null) - { - directoryInfo = new DirectoryInfo(Path.GetDirectoryName(info.Path)); - } - - var directoryPath = directoryInfo.FullName; - - var specificFile = Path.Combine(directoryPath, FileSystem.GetFileNameWithoutExtension(info.Path) + ".xml"); - + var specificFile = Path.ChangeExtension(info.Path, ".xml"); var file = new FileInfo(specificFile); - return info.IsInMixedFolder || file.Exists ? file : new FileInfo(Path.Combine(directoryPath, "game.xml")); + return info.IsInMixedFolder || file.Exists ? file : new FileInfo(Path.Combine(Path.GetDirectoryName(info.Path), "game.xml")); } } } diff --git a/MediaBrowser.LocalMetadata/Providers/TrailerXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/TrailerXmlProvider.cs deleted file mode 100644 index 7f96f7d96..000000000 --- a/MediaBrowser.LocalMetadata/Providers/TrailerXmlProvider.cs +++ /dev/null @@ -1,37 +0,0 @@ -using MediaBrowser.Common.IO; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Providers; -using MediaBrowser.LocalMetadata.Parsers; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; -using System.Collections.Generic; -using System.IO; -using System.Threading; - -namespace MediaBrowser.LocalMetadata.Providers -{ - public class TrailerXmlProvider : BaseXmlProvider<Trailer> - { - private readonly ILogger _logger; - - public TrailerXmlProvider(IFileSystem fileSystem, ILogger logger) - : base(fileSystem) - { - _logger = logger; - } - - protected override void Fetch(LocalMetadataResult<Trailer> result, string path, CancellationToken cancellationToken) - { - var chapters = new List<ChapterInfo>(); - - new MovieXmlParser(_logger).Fetch(result.Item, chapters, path, cancellationToken); - - result.Chapters = chapters; - } - - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) - { - return MovieXmlProvider.GetXmlFileInfo(info, FileSystem); - } - } -} diff --git a/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs index 16c437381..76ef4d4bf 100644 --- a/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs +++ b/MediaBrowser.LocalMetadata/Savers/PlaylistXmlSaver.cs @@ -57,11 +57,6 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("<Item>"); - if (!string.IsNullOrEmpty(playlist.OwnerUserId)) - { - builder.Append("<OwnerUserId>" + SecurityElement.Escape(playlist.OwnerUserId) + "</OwnerUserId>"); - } - if (!string.IsNullOrEmpty(playlist.PlaylistMediaType)) { builder.Append("<PlaylistMediaType>" + SecurityElement.Escape(playlist.PlaylistMediaType) + "</PlaylistMediaType>"); diff --git a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs index 93876f474..3e11c994b 100644 --- a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs +++ b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs @@ -645,6 +645,29 @@ namespace MediaBrowser.LocalMetadata.Savers { AddLinkedChildren(playlist, builder, "PlaylistItems", "PlaylistItem"); } + + var hasShares = item as IHasShares; + if (hasShares != null) + { + + } + } + + public static void AddShares(IHasShares item, StringBuilder builder) + { + builder.Append("<Shares>"); + + foreach (var share in item.Shares) + { + builder.Append("<Share>"); + + builder.Append("<UserId>" + SecurityElement.Escape(share.UserId) + "</UserId>"); + builder.Append("<CanEdit>" + SecurityElement.Escape(share.CanEdit.ToString().ToLower()) + "</CanEdit>"); + + builder.Append("</Share>"); + } + + builder.Append("</Shares>"); } public static void AddChapters(Video item, StringBuilder builder, IItemRepository repository) |
