aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Drawing/ImageManager.cs21
-rw-r--r--MediaBrowser.Controller/Dto/DtoBuilder.cs8
-rw-r--r--MediaBrowser.Controller/Entities/Video.cs12
-rw-r--r--MediaBrowser.Controller/Library/IDisplayPreferencesManager.cs28
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj1
-rw-r--r--MediaBrowser.Controller/MediaInfo/FFMpegManager.cs27
-rw-r--r--MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs2
-rw-r--r--MediaBrowser.Controller/Persistence/IItemRepository.cs24
8 files changed, 52 insertions, 71 deletions
diff --git a/MediaBrowser.Controller/Drawing/ImageManager.cs b/MediaBrowser.Controller/Drawing/ImageManager.cs
index 14994ac5c..d6bc983c0 100644
--- a/MediaBrowser.Controller/Drawing/ImageManager.cs
+++ b/MediaBrowser.Controller/Drawing/ImageManager.cs
@@ -2,6 +2,7 @@
using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
+using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Entities;
@@ -65,10 +66,7 @@ namespace MediaBrowser.Controller.Drawing
/// </summary>
private readonly ILogger _logger;
- /// <summary>
- /// The _kernel
- /// </summary>
- private readonly Kernel _kernel;
+ private readonly IItemRepository _itemRepo;
/// <summary>
/// The _locks
@@ -78,13 +76,13 @@ namespace MediaBrowser.Controller.Drawing
/// <summary>
/// Initializes a new instance of the <see cref="ImageManager" /> class.
/// </summary>
- /// <param name="kernel">The kernel.</param>
/// <param name="logger">The logger.</param>
/// <param name="appPaths">The app paths.</param>
- public ImageManager(Kernel kernel, ILogger logger, IServerApplicationPaths appPaths)
+ /// <param name="itemRepo">The item repo.</param>
+ public ImageManager(ILogger logger, IServerApplicationPaths appPaths, IItemRepository itemRepo)
{
_logger = logger;
- _kernel = kernel;
+ _itemRepo = itemRepo;
ImageSizeCache = new FileSystemRepository(Path.Combine(appPaths.ImageCachePath, "image-sizes"));
ResizedImageCache = new FileSystemRepository(Path.Combine(appPaths.ImageCachePath, "resized-images"));
@@ -437,14 +435,7 @@ namespace MediaBrowser.Controller.Drawing
if (imageType == ImageType.Chapter)
{
- var video = (Video)item;
-
- if (video.Chapters == null)
- {
- throw new InvalidOperationException(string.Format("Item {0} does not have any Chapters.", item.Name));
- }
-
- return video.Chapters[imageIndex].ImagePath;
+ return _itemRepo.GetChapter(item.Id, imageIndex).ImagePath;
}
return item.GetImage(imageType);
diff --git a/MediaBrowser.Controller/Dto/DtoBuilder.cs b/MediaBrowser.Controller/Dto/DtoBuilder.cs
index 1e0e5286f..11cf5b152 100644
--- a/MediaBrowser.Controller/Dto/DtoBuilder.cs
+++ b/MediaBrowser.Controller/Dto/DtoBuilder.cs
@@ -31,12 +31,14 @@ namespace MediaBrowser.Controller.Dto
private readonly ILogger _logger;
private readonly ILibraryManager _libraryManager;
private readonly IUserDataRepository _userDataRepository;
+ private readonly IItemRepository _itemRepo;
- public DtoBuilder(ILogger logger, ILibraryManager libraryManager, IUserDataRepository userDataRepository)
+ public DtoBuilder(ILogger logger, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo)
{
_logger = logger;
_libraryManager = libraryManager;
_userDataRepository = userDataRepository;
+ _itemRepo = itemRepo;
}
/// <summary>
@@ -443,9 +445,9 @@ namespace MediaBrowser.Controller.Dto
dto.PartCount = video.AdditionalPartIds.Count + 1;
- if (fields.Contains(ItemFields.Chapters) && video.Chapters != null)
+ if (fields.Contains(ItemFields.Chapters))
{
- dto.Chapters = video.Chapters.Select(c => GetChapterInfoDto(c, item)).ToList();
+ dto.Chapters = _itemRepo.GetChapters(video.Id).Select(c => GetChapterInfoDto(c, item)).ToList();
}
}
diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs
index ee717a191..ec7b71209 100644
--- a/MediaBrowser.Controller/Entities/Video.cs
+++ b/MediaBrowser.Controller/Entities/Video.cs
@@ -1,8 +1,7 @@
-using System.Collections;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Resolvers;
+using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Model.Entities;
using System;
+using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -24,7 +23,6 @@ namespace MediaBrowser.Controller.Entities
public Video()
{
MediaStreams = new List<MediaStream>();
- Chapters = new List<ChapterInfo>();
PlayableStreamFileNames = new List<string>();
AdditionalPartIds = new List<Guid>();
}
@@ -54,12 +52,6 @@ namespace MediaBrowser.Controller.Entities
public List<MediaStream> MediaStreams { get; set; }
/// <summary>
- /// Gets or sets the chapters.
- /// </summary>
- /// <value>The chapters.</value>
- public List<ChapterInfo> Chapters { get; set; }
-
- /// <summary>
/// If the video is a folder-rip, this will hold the file list for the largest playlist
/// </summary>
public List<string> PlayableStreamFileNames { get; set; }
diff --git a/MediaBrowser.Controller/Library/IDisplayPreferencesManager.cs b/MediaBrowser.Controller/Library/IDisplayPreferencesManager.cs
deleted file mode 100644
index f1d782b1d..000000000
--- a/MediaBrowser.Controller/Library/IDisplayPreferencesManager.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using MediaBrowser.Model.Entities;
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Controller.Library
-{
- /// <summary>
- /// Interface IDisplayPreferencesManager
- /// </summary>
- public interface IDisplayPreferencesManager
- {
- /// <summary>
- /// Gets the display preferences.
- /// </summary>
- /// <param name="displayPreferencesId">The display preferences id.</param>
- /// <returns>DisplayPreferences.</returns>
- Task<DisplayPreferences> GetDisplayPreferences(Guid displayPreferencesId);
-
- /// <summary>
- /// Saves display preferences for an item
- /// </summary>
- /// <param name="displayPreferences">The display preferences.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task SaveDisplayPreferences(DisplayPreferences displayPreferences, CancellationToken cancellationToken);
- }
-}
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 8765998f3..f49221ce8 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -102,7 +102,6 @@
<Compile Include="Entities\Movies\BoxSet.cs" />
<Compile Include="Entities\Movies\Movie.cs" />
<Compile Include="Entities\Person.cs" />
- <Compile Include="Library\IDisplayPreferencesManager.cs" />
<Compile Include="Library\ILibrarySearchEngine.cs" />
<Compile Include="Library\ItemChangeEventArgs.cs" />
<Compile Include="Library\PlaybackProgressEventArgs.cs" />
diff --git a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
index 4b992fd81..81ab15548 100644
--- a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
+++ b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
@@ -1,7 +1,9 @@
-using MediaBrowser.Common.IO;
+using System.Collections.Generic;
+using MediaBrowser.Common.IO;
using MediaBrowser.Common.MediaInfo;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using System;
@@ -34,6 +36,7 @@ namespace MediaBrowser.Controller.MediaInfo
private readonly IServerApplicationPaths _appPaths;
private readonly IMediaEncoder _encoder;
private readonly ILogger _logger;
+ private readonly IItemRepository _itemRepo;
/// <summary>
/// Initializes a new instance of the <see cref="FFMpegManager" /> class.
@@ -42,13 +45,15 @@ namespace MediaBrowser.Controller.MediaInfo
/// <param name="encoder">The encoder.</param>
/// <param name="libraryManager">The library manager.</param>
/// <param name="logger">The logger.</param>
+ /// <param name="itemRepo">The item repo.</param>
/// <exception cref="System.ArgumentNullException">zipClient</exception>
- public FFMpegManager(IServerApplicationPaths appPaths, IMediaEncoder encoder, ILibraryManager libraryManager, ILogger logger)
+ public FFMpegManager(IServerApplicationPaths appPaths, IMediaEncoder encoder, ILibraryManager libraryManager, ILogger logger, IItemRepository itemRepo)
{
_appPaths = appPaths;
_encoder = encoder;
_libraryManager = libraryManager;
_logger = logger;
+ _itemRepo = itemRepo;
VideoImageCache = new FileSystemRepository(VideoImagesDataPath);
SubtitleCache = new FileSystemRepository(SubtitleCachePath);
@@ -99,18 +104,14 @@ namespace MediaBrowser.Controller.MediaInfo
/// Extracts the chapter images.
/// </summary>
/// <param name="video">The video.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
+ /// <param name="chapters">The chapters.</param>
/// <param name="extractImages">if set to <c>true</c> [extract images].</param>
- /// <param name="saveItem">if set to <c>true</c> [save item].</param>
+ /// <param name="saveChapters">if set to <c>true</c> [save chapters].</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
- public async Task<bool> PopulateChapterImages(Video video, CancellationToken cancellationToken, bool extractImages, bool saveItem)
+ public async Task<bool> PopulateChapterImages(Video video, List<ChapterInfo> chapters, bool extractImages, bool saveChapters, CancellationToken cancellationToken)
{
- if (video.Chapters == null)
- {
- throw new ArgumentNullException();
- }
-
// Can't extract images if there are no video streams
if (video.MediaStreams == null || video.MediaStreams.All(m => m.Type != MediaStreamType.Video))
{
@@ -122,7 +123,7 @@ namespace MediaBrowser.Controller.MediaInfo
var runtimeTicks = video.RunTimeTicks ?? 0;
- foreach (var chapter in video.Chapters)
+ foreach (var chapter in chapters)
{
if (chapter.StartPositionTicks >= runtimeTicks)
{
@@ -186,9 +187,9 @@ namespace MediaBrowser.Controller.MediaInfo
}
}
- if (saveItem && changesMade)
+ if (saveChapters && changesMade)
{
- await _libraryManager.UpdateItem(video, CancellationToken.None).ConfigureAwait(false);
+ await _itemRepo.SaveChapters(video.Id, chapters, cancellationToken).ConfigureAwait(false);
}
return success;
diff --git a/MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs b/MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs
index 9774bb68e..4d7345f48 100644
--- a/MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs
+++ b/MediaBrowser.Controller/Persistence/IDisplayPreferencesRepository.cs
@@ -24,6 +24,6 @@ namespace MediaBrowser.Controller.Persistence
/// </summary>
/// <param name="displayPreferencesId">The display preferences id.</param>
/// <returns>Task{DisplayPreferences}.</returns>
- Task<DisplayPreferences> GetDisplayPreferences(Guid displayPreferencesId);
+ DisplayPreferences GetDisplayPreferences(Guid displayPreferencesId);
}
}
diff --git a/MediaBrowser.Controller/Persistence/IItemRepository.cs b/MediaBrowser.Controller/Persistence/IItemRepository.cs
index d854d0e20..534e64a3f 100644
--- a/MediaBrowser.Controller/Persistence/IItemRepository.cs
+++ b/MediaBrowser.Controller/Persistence/IItemRepository.cs
@@ -51,6 +51,30 @@ namespace MediaBrowser.Controller.Persistence
/// <param name="type">The type.</param>
/// <returns>BaseItem.</returns>
BaseItem RetrieveItem(Guid id, Type type);
+
+ /// <summary>
+ /// Gets chapters for an item
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ IEnumerable<ChapterInfo> GetChapters(Guid id);
+
+ /// <summary>
+ /// Gets a single chapter for an item
+ /// </summary>
+ /// <param name="id"></param>
+ /// <param name="index"></param>
+ /// <returns></returns>
+ ChapterInfo GetChapter(Guid id, int index);
+
+ /// <summary>
+ /// Saves the chapters.
+ /// </summary>
+ /// <param name="id">The id.</param>
+ /// <param name="chapters">The chapters.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>Task.</returns>
+ Task SaveChapters(Guid id, IEnumerable<ChapterInfo> chapters, CancellationToken cancellationToken);
}
/// <summary>