diff --git a/Emby.Photos/Emby.Photos.csproj b/Emby.Photos/Emby.Photos.csproj index efc15519ff..8ff5701993 100644 --- a/Emby.Photos/Emby.Photos.csproj +++ b/Emby.Photos/Emby.Photos.csproj @@ -39,11 +39,12 @@ - - ..\ThirdParty\taglib\taglib-sharp.dll + + ..\ThirdParty\taglib\TagLib.Portable.dll + diff --git a/Emby.Photos/PhotoProvider.cs b/Emby.Photos/PhotoProvider.cs index aa9b36f172..c088ac8644 100644 --- a/Emby.Photos/PhotoProvider.cs +++ b/Emby.Photos/PhotoProvider.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -6,6 +7,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Logging; using TagLib; using TagLib.IFD; @@ -17,10 +19,12 @@ namespace Emby.Photos public class PhotoProvider : ICustomMetadataProvider, IHasItemChangeMonitor, IForcedProvider { private readonly ILogger _logger; + private readonly IFileSystem _fileSystem; - public PhotoProvider(ILogger logger) + public PhotoProvider(ILogger logger, IFileSystem fileSystem) { _logger = logger; + _fileSystem = fileSystem; } public Task FetchAsync(Photo item, MetadataRefreshOptions options, CancellationToken cancellationToken) @@ -31,7 +35,7 @@ namespace Emby.Photos try { - using (var file = TagLib.File.Create(item.Path)) + using (var file = TagLib.File.Create(new StreamFileAbstraction(Path.GetFileName(item.Path), _fileSystem.OpenRead(item.Path)))) { var image = file as TagLib.Image.File; diff --git a/Emby.Photos/StreamFileAbstraction.cs b/Emby.Photos/StreamFileAbstraction.cs new file mode 100644 index 0000000000..e1ea19bbe3 --- /dev/null +++ b/Emby.Photos/StreamFileAbstraction.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MediaBrowser.Model.IO; +using File = TagLib.File; + +namespace Emby.Photos +{ + public class StreamFileAbstraction : File.IFileAbstraction + { + public StreamFileAbstraction(string name, Stream readStream) + { + // TODO: Fix deadlock when setting an actual writable Stream + WriteStream = readStream; + ReadStream = readStream; + Name = name; + } + + public string Name { get; private set; } + + public Stream ReadStream { get; private set; } + + public Stream WriteStream { get; private set; } + + public void CloseStream(Stream stream) + { + stream.Dispose(); + } + } +} diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs index b67e7ffe3f..dd6d8a999f 100644 --- a/MediaBrowser.Controller/Entities/Trailer.cs +++ b/MediaBrowser.Controller/Entities/Trailer.cs @@ -10,7 +10,7 @@ namespace MediaBrowser.Controller.Entities /// /// Class Trailer /// - public class Trailer : Video, IHasBudget, IHasMetascore, IHasLookupInfo + public class Trailer : Video, IHasLookupInfo { public Trailer() { @@ -21,8 +21,6 @@ namespace MediaBrowser.Controller.Entities public List TrailerTypes { get; set; } - public float? Metascore { get; set; } - public List RemoteTrailers { get; set; } [IgnoreDataMember] @@ -31,18 +29,6 @@ namespace MediaBrowser.Controller.Entities get { return TrailerTypes.Contains(TrailerType.LocalTrailer); } } - /// - /// Gets or sets the budget. - /// - /// The budget. - public double? Budget { get; set; } - - /// - /// Gets or sets the revenue. - /// - /// The revenue. - public double? Revenue { get; set; } - public override UnratedItem GetBlockUnratedType() { return UnratedItem.Trailer;