|
@@ -1,6 +1,5 @@
|
|
using MediaBrowser.Controller.Dlna;
|
|
using MediaBrowser.Controller.Dlna;
|
|
using MediaBrowser.Controller.Drawing;
|
|
using MediaBrowser.Controller.Drawing;
|
|
-using MediaBrowser.Controller.Dto;
|
|
|
|
using MediaBrowser.Controller.Entities;
|
|
using MediaBrowser.Controller.Entities;
|
|
using MediaBrowser.Controller.Entities.Audio;
|
|
using MediaBrowser.Controller.Entities.Audio;
|
|
using MediaBrowser.Controller.Library;
|
|
using MediaBrowser.Controller.Library;
|
|
@@ -13,13 +12,13 @@ using MediaBrowser.Model.Dto;
|
|
using MediaBrowser.Model.Entities;
|
|
using MediaBrowser.Model.Entities;
|
|
using MediaBrowser.Model.Logging;
|
|
using MediaBrowser.Model.Logging;
|
|
using MediaBrowser.Model.Session;
|
|
using MediaBrowser.Model.Session;
|
|
|
|
+using MediaBrowser.Model.System;
|
|
using System;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Threading.Tasks;
|
|
-using MediaBrowser.Model.System;
|
|
|
|
|
|
|
|
namespace MediaBrowser.Dlna.PlayTo
|
|
namespace MediaBrowser.Dlna.PlayTo
|
|
{
|
|
{
|
|
@@ -33,7 +32,6 @@ namespace MediaBrowser.Dlna.PlayTo
|
|
private readonly ILogger _logger;
|
|
private readonly ILogger _logger;
|
|
private readonly IDlnaManager _dlnaManager;
|
|
private readonly IDlnaManager _dlnaManager;
|
|
private readonly IUserManager _userManager;
|
|
private readonly IUserManager _userManager;
|
|
- private readonly IDtoService _dtoService;
|
|
|
|
private readonly IImageProcessor _imageProcessor;
|
|
private readonly IImageProcessor _imageProcessor;
|
|
|
|
|
|
private readonly SsdpHandler _ssdpHandler;
|
|
private readonly SsdpHandler _ssdpHandler;
|
|
@@ -54,7 +52,7 @@ namespace MediaBrowser.Dlna.PlayTo
|
|
|
|
|
|
private Timer _updateTimer;
|
|
private Timer _updateTimer;
|
|
|
|
|
|
- public PlayToController(SessionInfo session, ISessionManager sessionManager, IItemRepository itemRepository, ILibraryManager libraryManager, ILogger logger, IDlnaManager dlnaManager, IUserManager userManager, IDtoService dtoService, IImageProcessor imageProcessor, SsdpHandler ssdpHandler, string serverAddress)
|
|
|
|
|
|
+ public PlayToController(SessionInfo session, ISessionManager sessionManager, IItemRepository itemRepository, ILibraryManager libraryManager, ILogger logger, IDlnaManager dlnaManager, IUserManager userManager, IImageProcessor imageProcessor, SsdpHandler ssdpHandler, string serverAddress)
|
|
{
|
|
{
|
|
_session = session;
|
|
_session = session;
|
|
_itemRepository = itemRepository;
|
|
_itemRepository = itemRepository;
|
|
@@ -62,7 +60,6 @@ namespace MediaBrowser.Dlna.PlayTo
|
|
_libraryManager = libraryManager;
|
|
_libraryManager = libraryManager;
|
|
_dlnaManager = dlnaManager;
|
|
_dlnaManager = dlnaManager;
|
|
_userManager = userManager;
|
|
_userManager = userManager;
|
|
- _dtoService = dtoService;
|
|
|
|
_imageProcessor = imageProcessor;
|
|
_imageProcessor = imageProcessor;
|
|
_ssdpHandler = ssdpHandler;
|
|
_ssdpHandler = ssdpHandler;
|
|
_serverAddress = serverAddress;
|
|
_serverAddress = serverAddress;
|
|
@@ -228,6 +225,8 @@ namespace MediaBrowser.Dlna.PlayTo
|
|
{
|
|
{
|
|
_logger.Debug("{0} - Received PlayRequest: {1}", this._session.DeviceName, command.PlayCommand);
|
|
_logger.Debug("{0} - Received PlayRequest: {1}", this._session.DeviceName, command.PlayCommand);
|
|
|
|
|
|
|
|
+ var user = string.IsNullOrEmpty(command.ControllingUserId) ? null : _userManager.GetUserById(new Guid(command.ControllingUserId));
|
|
|
|
+
|
|
var items = new List<BaseItem>();
|
|
var items = new List<BaseItem>();
|
|
foreach (string id in command.ItemIds)
|
|
foreach (string id in command.ItemIds)
|
|
{
|
|
{
|
|
@@ -243,12 +242,12 @@ namespace MediaBrowser.Dlna.PlayTo
|
|
{
|
|
{
|
|
if (isFirst && command.StartPositionTicks.HasValue)
|
|
if (isFirst && command.StartPositionTicks.HasValue)
|
|
{
|
|
{
|
|
- playlist.Add(CreatePlaylistItem(item, command.StartPositionTicks.Value, serverAddress));
|
|
|
|
|
|
+ playlist.Add(CreatePlaylistItem(item, user, command.StartPositionTicks.Value, serverAddress));
|
|
isFirst = false;
|
|
isFirst = false;
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- playlist.Add(CreatePlaylistItem(item, 0, serverAddress));
|
|
|
|
|
|
+ playlist.Add(CreatePlaylistItem(item, user, 0, serverAddress));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -267,10 +266,6 @@ namespace MediaBrowser.Dlna.PlayTo
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(command.ControllingUserId))
|
|
if (!string.IsNullOrWhiteSpace(command.ControllingUserId))
|
|
{
|
|
{
|
|
- var userId = new Guid(command.ControllingUserId);
|
|
|
|
-
|
|
|
|
- var user = _userManager.GetUserById(userId);
|
|
|
|
-
|
|
|
|
await _sessionManager.LogSessionActivity(_session.Client, _session.ApplicationVersion, _session.DeviceId,
|
|
await _sessionManager.LogSessionActivity(_session.Client, _session.ApplicationVersion, _session.DeviceId,
|
|
_session.DeviceName, _session.RemoteEndPoint, user).ConfigureAwait(false);
|
|
_session.DeviceName, _session.RemoteEndPoint, user).ConfigureAwait(false);
|
|
}
|
|
}
|
|
@@ -388,15 +383,16 @@ namespace MediaBrowser.Dlna.PlayTo
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private PlaylistItem CreatePlaylistItem(BaseItem item, long startPostionTicks, string serverAddress)
|
|
|
|
|
|
+ private PlaylistItem CreatePlaylistItem(BaseItem item, User user, long startPostionTicks, string serverAddress)
|
|
{
|
|
{
|
|
var deviceInfo = _device.Properties;
|
|
var deviceInfo = _device.Properties;
|
|
|
|
|
|
var profile = _dlnaManager.GetProfile(deviceInfo.ToDeviceIdentification()) ??
|
|
var profile = _dlnaManager.GetProfile(deviceInfo.ToDeviceIdentification()) ??
|
|
_dlnaManager.GetDefaultProfile();
|
|
_dlnaManager.GetDefaultProfile();
|
|
|
|
|
|
- var mediaSources = item is Audio || item is Video
|
|
|
|
- ? _dtoService.GetMediaSources(item)
|
|
|
|
|
|
+ var hasMediaSources = item as IHasMediaSources;
|
|
|
|
+ var mediaSources = hasMediaSources != null
|
|
|
|
+ ? (user == null ? hasMediaSources.GetMediaSources(true) : hasMediaSources.GetMediaSources(true, user)).ToList()
|
|
: new List<MediaSourceInfo>();
|
|
: new List<MediaSourceInfo>();
|
|
|
|
|
|
var playlistItem = GetPlaylistItem(item, mediaSources, profile, _session.DeviceId);
|
|
var playlistItem = GetPlaylistItem(item, mediaSources, profile, _session.DeviceId);
|
|
@@ -404,9 +400,7 @@ namespace MediaBrowser.Dlna.PlayTo
|
|
|
|
|
|
playlistItem.StreamUrl = playlistItem.StreamInfo.ToUrl(serverAddress);
|
|
playlistItem.StreamUrl = playlistItem.StreamInfo.ToUrl(serverAddress);
|
|
|
|
|
|
- var itemXml =
|
|
|
|
- new DidlBuilder(profile, _imageProcessor, serverAddress, _dtoService).GetItemDidl(item, _session.DeviceId,
|
|
|
|
- new Filter());
|
|
|
|
|
|
+ var itemXml = new DidlBuilder(profile, user, _imageProcessor, serverAddress).GetItemDidl(item, _session.DeviceId, new Filter());
|
|
|
|
|
|
playlistItem.Didl = itemXml;
|
|
playlistItem.Didl = itemXml;
|
|
|
|
|