aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api')
-rw-r--r--MediaBrowser.Api/Attachments/AttachmentService.cs63
-rw-r--r--MediaBrowser.Api/Library/LibraryService.cs5
-rw-r--r--MediaBrowser.Api/Playback/BaseStreamingService.cs15
-rw-r--r--MediaBrowser.Api/Playback/Hls/BaseHlsService.cs34
-rw-r--r--MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs8
-rw-r--r--MediaBrowser.Api/Playback/Hls/VideoHlsService.cs66
-rw-r--r--MediaBrowser.Api/Playback/MediaInfoService.cs10
-rw-r--r--MediaBrowser.Api/Playback/Progressive/AudioService.cs8
-rw-r--r--MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs8
-rw-r--r--MediaBrowser.Api/Playback/Progressive/VideoService.cs8
-rw-r--r--MediaBrowser.Api/Playback/UniversalAudioService.cs19
11 files changed, 156 insertions, 88 deletions
diff --git a/MediaBrowser.Api/Attachments/AttachmentService.cs b/MediaBrowser.Api/Attachments/AttachmentService.cs
new file mode 100644
index 000000000..1632ca1b0
--- /dev/null
+++ b/MediaBrowser.Api/Attachments/AttachmentService.cs
@@ -0,0 +1,63 @@
+using System;
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.MediaEncoding;
+using MediaBrowser.Controller.Net;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Services;
+using Microsoft.Extensions.Logging;
+
+namespace MediaBrowser.Api.Attachments
+{
+ [Route("/Videos/{Id}/{MediaSourceId}/Attachments/{Index}", "GET", Summary = "Gets specified attachment.")]
+ public class GetAttachment
+ {
+ [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
+ public Guid Id { get; set; }
+
+ [ApiMember(Name = "MediaSourceId", Description = "MediaSourceId", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
+ public string MediaSourceId { get; set; }
+
+ [ApiMember(Name = "Index", Description = "The attachment stream index", IsRequired = true, DataType = "int", ParameterType = "path", Verb = "GET")]
+ public int Index { get; set; }
+ }
+
+ public class AttachmentService : BaseApiService
+ {
+ private readonly ILibraryManager _libraryManager;
+ private readonly IAttachmentExtractor _attachmentExtractor;
+
+ public AttachmentService(
+ ILogger<AttachmentService> logger,
+ IServerConfigurationManager serverConfigurationManager,
+ IHttpResultFactory httpResultFactory,
+ ILibraryManager libraryManager,
+ IAttachmentExtractor attachmentExtractor)
+ : base(logger, serverConfigurationManager, httpResultFactory)
+ {
+ _libraryManager = libraryManager;
+ _attachmentExtractor = attachmentExtractor;
+ }
+
+ public async Task<object> Get(GetAttachment request)
+ {
+ var (attachment, attachmentStream) = await GetAttachment(request).ConfigureAwait(false);
+ var mime = string.IsNullOrWhiteSpace(attachment.MimeType) ? "application/octet-stream" : attachment.MimeType;
+
+ return ResultFactory.GetResult(Request, attachmentStream, mime);
+ }
+
+ private Task<(MediaAttachment, Stream)> GetAttachment(GetAttachment request)
+ {
+ var item = _libraryManager.GetItemById(request.Id);
+
+ return _attachmentExtractor.GetAttachment(item,
+ request.MediaSourceId,
+ request.Index,
+ CancellationToken.None);
+ }
+ }
+}
diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs
index 0cc5e112f..b1ea3e262 100644
--- a/MediaBrowser.Api/Library/LibraryService.cs
+++ b/MediaBrowser.Api/Library/LibraryService.cs
@@ -1006,8 +1006,8 @@ namespace MediaBrowser.Api.Library
public void Delete(DeleteItems request)
{
var ids = string.IsNullOrWhiteSpace(request.Ids)
- ? Array.Empty<string>()
- : request.Ids.Split(',');
+ ? Array.Empty<string>()
+ : request.Ids.Split(',');
foreach (var i in ids)
{
@@ -1028,7 +1028,6 @@ namespace MediaBrowser.Api.Library
_libraryManager.DeleteItem(item, new DeleteOptions
{
DeleteFileLocation = true
-
}, true);
}
}
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index 1e9cd3313..5881e22a7 100644
--- a/MediaBrowser.Api/Playback/BaseStreamingService.cs
+++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs
@@ -63,8 +63,6 @@ namespace MediaBrowser.Api.Playback
protected IDeviceManager DeviceManager { get; private set; }
- protected ISubtitleEncoder SubtitleEncoder { get; private set; }
-
protected IMediaSourceManager MediaSourceManager { get; private set; }
protected IJsonSerializer JsonSerializer { get; private set; }
@@ -92,11 +90,11 @@ namespace MediaBrowser.Api.Playback
IMediaEncoder mediaEncoder,
IFileSystem fileSystem,
IDlnaManager dlnaManager,
- ISubtitleEncoder subtitleEncoder,
IDeviceManager deviceManager,
IMediaSourceManager mediaSourceManager,
IJsonSerializer jsonSerializer,
- IAuthorizationContext authorizationContext)
+ IAuthorizationContext authorizationContext,
+ EncodingHelper encodingHelper)
: base(logger, serverConfigurationManager, httpResultFactory)
{
UserManager = userManager;
@@ -105,13 +103,12 @@ namespace MediaBrowser.Api.Playback
MediaEncoder = mediaEncoder;
FileSystem = fileSystem;
DlnaManager = dlnaManager;
- SubtitleEncoder = subtitleEncoder;
DeviceManager = deviceManager;
MediaSourceManager = mediaSourceManager;
JsonSerializer = jsonSerializer;
AuthorizationContext = authorizationContext;
- EncodingHelper = new EncodingHelper(MediaEncoder, FileSystem, SubtitleEncoder);
+ EncodingHelper = encodingHelper;
}
/// <summary>
@@ -148,8 +145,6 @@ namespace MediaBrowser.Api.Playback
return Path.Combine(folder, filename + ext);
}
- protected readonly CultureInfo UsCulture = new CultureInfo("en-US");
-
protected virtual string GetDefaultEncoderPreset()
{
return "superfast";
@@ -764,13 +759,13 @@ namespace MediaBrowser.Api.Playback
if (mediaSource == null)
{
- var mediaSources = (await MediaSourceManager.GetPlayackMediaSources(LibraryManager.GetItemById(request.Id), null, false, false, cancellationToken).ConfigureAwait(false)).ToList();
+ var mediaSources = await MediaSourceManager.GetPlayackMediaSources(LibraryManager.GetItemById(request.Id), null, false, false, cancellationToken).ConfigureAwait(false);
mediaSource = string.IsNullOrEmpty(request.MediaSourceId)
? mediaSources[0]
: mediaSources.Find(i => string.Equals(i.Id, request.MediaSourceId));
- if (mediaSource == null && request.MediaSourceId.Equals(request.Id))
+ if (mediaSource == null && Guid.Parse(request.MediaSourceId) == request.Id)
{
mediaSource = mediaSources[0];
}
diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs
index 8fdc6fa49..5d0dc98dd 100644
--- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs
@@ -34,26 +34,26 @@ namespace MediaBrowser.Api.Playback.Hls
IMediaEncoder mediaEncoder,
IFileSystem fileSystem,
IDlnaManager dlnaManager,
- ISubtitleEncoder subtitleEncoder,
IDeviceManager deviceManager,
IMediaSourceManager mediaSourceManager,
IJsonSerializer jsonSerializer,
- IAuthorizationContext authorizationContext)
- : base(
- logger,
- serverConfigurationManager,
- httpResultFactory,
- userManager,
- libraryManager,
- isoManager,
- mediaEncoder,
- fileSystem,
- dlnaManager,
- subtitleEncoder,
- deviceManager,
- mediaSourceManager,
- jsonSerializer,
- authorizationContext)
+ IAuthorizationContext authorizationContext,
+ EncodingHelper encodingHelper)
+ : base(
+ logger,
+ serverConfigurationManager,
+ httpResultFactory,
+ userManager,
+ libraryManager,
+ isoManager,
+ mediaEncoder,
+ fileSystem,
+ dlnaManager,
+ deviceManager,
+ mediaSourceManager,
+ jsonSerializer,
+ authorizationContext,
+ encodingHelper)
{
}
diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
index 56758db96..0178f53af 100644
--- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
@@ -104,12 +104,12 @@ namespace MediaBrowser.Api.Playback.Hls
IMediaEncoder mediaEncoder,
IFileSystem fileSystem,
IDlnaManager dlnaManager,
- ISubtitleEncoder subtitleEncoder,
IDeviceManager deviceManager,
IMediaSourceManager mediaSourceManager,
IJsonSerializer jsonSerializer,
IAuthorizationContext authorizationContext,
- INetworkManager networkManager)
+ INetworkManager networkManager,
+ EncodingHelper encodingHelper)
: base(
logger,
serverConfigurationManager,
@@ -120,11 +120,11 @@ namespace MediaBrowser.Api.Playback.Hls
mediaEncoder,
fileSystem,
dlnaManager,
- subtitleEncoder,
deviceManager,
mediaSourceManager,
jsonSerializer,
- authorizationContext)
+ authorizationContext,
+ encodingHelper)
{
NetworkManager = networkManager;
}
diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
index 6d12a1ccd..d1c53c1c1 100644
--- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
@@ -27,6 +27,39 @@ namespace MediaBrowser.Api.Playback.Hls
[Authenticated]
public class VideoHlsService : BaseHlsService
{
+ public VideoHlsService(
+ ILogger<VideoHlsService> logger,
+ IServerConfigurationManager serverConfigurationManager,
+ IHttpResultFactory httpResultFactory,
+ IUserManager userManager,
+ ILibraryManager libraryManager,
+ IIsoManager isoManager,
+ IMediaEncoder mediaEncoder,
+ IFileSystem fileSystem,
+ IDlnaManager dlnaManager,
+ IDeviceManager deviceManager,
+ IMediaSourceManager mediaSourceManager,
+ IJsonSerializer jsonSerializer,
+ IAuthorizationContext authorizationContext,
+ EncodingHelper encodingHelper)
+ : base(
+ logger,
+ serverConfigurationManager,
+ httpResultFactory,
+ userManager,
+ libraryManager,
+ isoManager,
+ mediaEncoder,
+ fileSystem,
+ dlnaManager,
+ deviceManager,
+ mediaSourceManager,
+ jsonSerializer,
+ authorizationContext,
+ encodingHelper)
+ {
+ }
+
public Task<object> Get(GetLiveHlsStream request)
{
return ProcessRequestAsync(request, true);
@@ -136,38 +169,5 @@ namespace MediaBrowser.Api.Playback.Hls
return args;
}
-
- public VideoHlsService(
- ILogger<VideoHlsService> logger,
- IServerConfigurationManager serverConfigurationManager,
- IHttpResultFactory httpResultFactory,
- IUserManager userManager,
- ILibraryManager libraryManager,
- IIsoManager isoManager,
- IMediaEncoder mediaEncoder,
- IFileSystem fileSystem,
- IDlnaManager dlnaManager,
- ISubtitleEncoder subtitleEncoder,
- IDeviceManager deviceManager,
- IMediaSourceManager mediaSourceManager,
- IJsonSerializer jsonSerializer,
- IAuthorizationContext authorizationContext)
- : base(
- logger,
- serverConfigurationManager,
- httpResultFactory,
- userManager,
- libraryManager,
- isoManager,
- mediaEncoder,
- fileSystem,
- dlnaManager,
- subtitleEncoder,
- deviceManager,
- mediaSourceManager,
- jsonSerializer,
- authorizationContext)
- {
- }
}
}
diff --git a/MediaBrowser.Api/Playback/MediaInfoService.cs b/MediaBrowser.Api/Playback/MediaInfoService.cs
index c3032416b..7375e1509 100644
--- a/MediaBrowser.Api/Playback/MediaInfoService.cs
+++ b/MediaBrowser.Api/Playback/MediaInfoService.cs
@@ -522,6 +522,16 @@ namespace MediaBrowser.Api.Playback
SetDeviceSpecificSubtitleInfo(streamInfo, mediaSource, auth.Token);
}
}
+
+ foreach (var attachment in mediaSource.MediaAttachments)
+ {
+ attachment.DeliveryUrl = string.Format(
+ CultureInfo.InvariantCulture,
+ "/Videos/{0}/{1}/Attachments/{2}",
+ item.Id,
+ mediaSource.Id,
+ attachment.Index);
+ }
}
private long? GetMaxBitrate(long? clientMaxBitrate, User user)
diff --git a/MediaBrowser.Api/Playback/Progressive/AudioService.cs b/MediaBrowser.Api/Playback/Progressive/AudioService.cs
index 11527007b..8d1e3a3f2 100644
--- a/MediaBrowser.Api/Playback/Progressive/AudioService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/AudioService.cs
@@ -43,11 +43,11 @@ namespace MediaBrowser.Api.Playback.Progressive
IMediaEncoder mediaEncoder,
IFileSystem fileSystem,
IDlnaManager dlnaManager,
- ISubtitleEncoder subtitleEncoder,
IDeviceManager deviceManager,
IMediaSourceManager mediaSourceManager,
IJsonSerializer jsonSerializer,
- IAuthorizationContext authorizationContext)
+ IAuthorizationContext authorizationContext,
+ EncodingHelper encodingHelper)
: base(
logger,
serverConfigurationManager,
@@ -59,11 +59,11 @@ namespace MediaBrowser.Api.Playback.Progressive
mediaEncoder,
fileSystem,
dlnaManager,
- subtitleEncoder,
deviceManager,
mediaSourceManager,
jsonSerializer,
- authorizationContext)
+ authorizationContext,
+ encodingHelper)
{
}
diff --git a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
index 4ada90d09..ed30dbba6 100644
--- a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
@@ -38,11 +38,11 @@ namespace MediaBrowser.Api.Playback.Progressive
IMediaEncoder mediaEncoder,
IFileSystem fileSystem,
IDlnaManager dlnaManager,
- ISubtitleEncoder subtitleEncoder,
IDeviceManager deviceManager,
IMediaSourceManager mediaSourceManager,
IJsonSerializer jsonSerializer,
- IAuthorizationContext authorizationContext)
+ IAuthorizationContext authorizationContext,
+ EncodingHelper encodingHelper)
: base(
logger,
serverConfigurationManager,
@@ -53,11 +53,11 @@ namespace MediaBrowser.Api.Playback.Progressive
mediaEncoder,
fileSystem,
dlnaManager,
- subtitleEncoder,
deviceManager,
mediaSourceManager,
jsonSerializer,
- authorizationContext)
+ authorizationContext,
+ encodingHelper)
{
HttpClient = httpClient;
}
diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs
index 56ec86cd4..4de81655c 100644
--- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs
@@ -80,11 +80,11 @@ namespace MediaBrowser.Api.Playback.Progressive
IMediaEncoder mediaEncoder,
IFileSystem fileSystem,
IDlnaManager dlnaManager,
- ISubtitleEncoder subtitleEncoder,
IDeviceManager deviceManager,
IMediaSourceManager mediaSourceManager,
IJsonSerializer jsonSerializer,
- IAuthorizationContext authorizationContext)
+ IAuthorizationContext authorizationContext,
+ EncodingHelper encodingHelper)
: base(
logger,
serverConfigurationManager,
@@ -96,11 +96,11 @@ namespace MediaBrowser.Api.Playback.Progressive
mediaEncoder,
fileSystem,
dlnaManager,
- subtitleEncoder,
deviceManager,
mediaSourceManager,
jsonSerializer,
- authorizationContext)
+ authorizationContext,
+ encodingHelper)
{
}
diff --git a/MediaBrowser.Api/Playback/UniversalAudioService.cs b/MediaBrowser.Api/Playback/UniversalAudioService.cs
index b1450e2cc..9cba9df13 100644
--- a/MediaBrowser.Api/Playback/UniversalAudioService.cs
+++ b/MediaBrowser.Api/Playback/UniversalAudioService.cs
@@ -9,7 +9,6 @@ using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Devices;
using MediaBrowser.Controller.Dlna;
-using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Controller.Net;
@@ -75,6 +74,9 @@ namespace MediaBrowser.Api.Playback
[Authenticated]
public class UniversalAudioService : BaseApiService
{
+ private readonly ILoggerFactory _loggerFactory;
+ private readonly EncodingHelper _encodingHelper;
+
public UniversalAudioService(
ILogger<UniversalAudioService> logger,
IServerConfigurationManager serverConfigurationManager,
@@ -87,11 +89,11 @@ namespace MediaBrowser.Api.Playback
IFileSystem fileSystem,
IDlnaManager dlnaManager,
IDeviceManager deviceManager,
- ISubtitleEncoder subtitleEncoder,
IMediaSourceManager mediaSourceManager,
IJsonSerializer jsonSerializer,
IAuthorizationContext authorizationContext,
- INetworkManager networkManager)
+ INetworkManager networkManager,
+ EncodingHelper encodingHelper)
: base(logger, serverConfigurationManager, httpResultFactory)
{
HttpClient = httpClient;
@@ -102,11 +104,11 @@ namespace MediaBrowser.Api.Playback
FileSystem = fileSystem;
DlnaManager = dlnaManager;
DeviceManager = deviceManager;
- SubtitleEncoder = subtitleEncoder;
MediaSourceManager = mediaSourceManager;
JsonSerializer = jsonSerializer;
AuthorizationContext = authorizationContext;
NetworkManager = networkManager;
+ _encodingHelper = encodingHelper;
}
protected IHttpClient HttpClient { get; private set; }
@@ -117,7 +119,6 @@ namespace MediaBrowser.Api.Playback
protected IFileSystem FileSystem { get; private set; }
protected IDlnaManager DlnaManager { get; private set; }
protected IDeviceManager DeviceManager { get; private set; }
- protected ISubtitleEncoder SubtitleEncoder { get; private set; }
protected IMediaSourceManager MediaSourceManager { get; private set; }
protected IJsonSerializer JsonSerializer { get; private set; }
protected IAuthorizationContext AuthorizationContext { get; private set; }
@@ -287,12 +288,12 @@ namespace MediaBrowser.Api.Playback
MediaEncoder,
FileSystem,
DlnaManager,
- SubtitleEncoder,
DeviceManager,
MediaSourceManager,
JsonSerializer,
AuthorizationContext,
- NetworkManager)
+ NetworkManager,
+ _encodingHelper)
{
Request = Request
};
@@ -337,11 +338,11 @@ namespace MediaBrowser.Api.Playback
MediaEncoder,
FileSystem,
DlnaManager,
- SubtitleEncoder,
DeviceManager,
MediaSourceManager,
JsonSerializer,
- AuthorizationContext)
+ AuthorizationContext,
+ _encodingHelper)
{
Request = Request
};