mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-07-05 13:53:20 +01:00
support theme songs in the web client
This commit is contained in:
@@ -210,6 +210,9 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||
return SetVolume(tmp);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets volume on a scale of 0-100
|
||||
/// </summary>
|
||||
public async Task<bool> SetVolume(int value)
|
||||
{
|
||||
var command = RendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetVolume");
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using MediaBrowser.Common.Net;
|
||||
using System.Globalization;
|
||||
using MediaBrowser.Common.Net;
|
||||
using MediaBrowser.Controller;
|
||||
using MediaBrowser.Controller.Dlna;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
@@ -206,7 +207,8 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||
IsPaused = _device.IsPaused,
|
||||
MediaSourceId = playlistItem.MediaSourceId,
|
||||
AudioStreamIndex = playlistItem.AudioStreamIndex,
|
||||
SubtitleStreamIndex = playlistItem.SubtitleStreamIndex
|
||||
SubtitleStreamIndex = playlistItem.SubtitleStreamIndex,
|
||||
VolumeLevel = _device.Volume
|
||||
|
||||
}).ConfigureAwait(false);
|
||||
}
|
||||
@@ -614,6 +616,8 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||
}
|
||||
}
|
||||
|
||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||
|
||||
public Task SendGeneralCommand(GeneralCommand command, CancellationToken cancellationToken)
|
||||
{
|
||||
GeneralCommandType commandType;
|
||||
@@ -632,6 +636,24 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||
return _device.VolumeUp(true);
|
||||
case GeneralCommandType.ToggleMute:
|
||||
return _device.ToggleMute();
|
||||
case GeneralCommandType.SetVolume:
|
||||
{
|
||||
string volumeArg;
|
||||
|
||||
if (command.Arguments.TryGetValue("Volume", out volumeArg))
|
||||
{
|
||||
int volume;
|
||||
|
||||
if (int.TryParse(volumeArg, NumberStyles.Any, _usCulture, out volume))
|
||||
{
|
||||
return _device.SetVolume(volume);
|
||||
}
|
||||
|
||||
throw new ArgumentException("Unsupported volume value supplied.");
|
||||
}
|
||||
|
||||
throw new ArgumentException("Volume argument cannot be null");
|
||||
}
|
||||
default:
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
|
||||
@@ -265,7 +265,8 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||
GeneralCommandType.VolumeUp.ToString(),
|
||||
GeneralCommandType.Mute.ToString(),
|
||||
GeneralCommandType.Unmute.ToString(),
|
||||
GeneralCommandType.ToggleMute.ToString()
|
||||
GeneralCommandType.ToggleMute.ToString(),
|
||||
GeneralCommandType.SetVolume.ToString()
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -57,8 +57,17 @@ namespace MediaBrowser.Dlna.Server
|
||||
{
|
||||
builder.Append("<UDN>" + SecurityElement.Escape(_serverUdn) + "</UDN>");
|
||||
builder.Append("<dlna:X_DLNACAP>" + SecurityElement.Escape(_profile.XDlnaCap ?? string.Empty) + "</dlna:X_DLNACAP>");
|
||||
builder.Append("<dlna:X_DLNADOC>M-DMS-1.50</dlna:X_DLNADOC>");
|
||||
builder.Append("<dlna:X_DLNADOC>" + SecurityElement.Escape(_profile.XDlnaDoc ?? string.Empty) + "</dlna:X_DLNADOC>");
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(_profile.XDlnaDoc))
|
||||
{
|
||||
builder.Append("<dlna:X_DLNADOC xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">" +
|
||||
SecurityElement.Escape(_profile.XDlnaDoc) + "</dlna:X_DLNADOC>");
|
||||
}
|
||||
else
|
||||
{
|
||||
builder.Append("<dlna:X_DLNADOC xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">DMS-1.50</dlna:X_DLNADOC>");
|
||||
}
|
||||
|
||||
builder.Append("<friendlyName>" + SecurityElement.Escape(_profile.FriendlyName ?? string.Empty) + "</friendlyName>");
|
||||
builder.Append("<deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>");
|
||||
builder.Append("<manufacturer>" + SecurityElement.Escape(_profile.Manufacturer ?? string.Empty) + "</manufacturer>");
|
||||
@@ -99,7 +108,7 @@ namespace MediaBrowser.Dlna.Server
|
||||
|
||||
foreach (var service in GetServices())
|
||||
{
|
||||
builder.Append("<icon>");
|
||||
builder.Append("<service>");
|
||||
|
||||
builder.Append("<serviceType>" + SecurityElement.Escape(service.ServiceType ?? string.Empty) + "</serviceType>");
|
||||
builder.Append("<serviceId>" + SecurityElement.Escape(service.ServiceId ?? string.Empty) + "</serviceId>");
|
||||
@@ -107,7 +116,7 @@ namespace MediaBrowser.Dlna.Server
|
||||
builder.Append("<controlURL>" + SecurityElement.Escape(service.ControlUrl ?? string.Empty) + "</controlURL>");
|
||||
builder.Append("<eventSubURL>" + SecurityElement.Escape(service.EventSubUrl ?? string.Empty) + "</eventSubURL>");
|
||||
|
||||
builder.Append("</icon>");
|
||||
builder.Append("</service>");
|
||||
}
|
||||
|
||||
builder.Append("</serviceList>");
|
||||
|
||||
@@ -147,7 +147,7 @@ namespace MediaBrowser.Dlna.Server
|
||||
|
||||
foreach (var d in Devices)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(req) && req != d.Type)
|
||||
if (!string.IsNullOrEmpty(req) && !string.Equals(req, d.Type, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -263,13 +263,19 @@ namespace MediaBrowser.Dlna.Server
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var t in new[] { "upnp:rootdevice", "urn:schemas-upnp-org:device:MediaServer:1", "urn:schemas-upnp-org:service:ContentDirectory:1", "uuid:" + uuid })
|
||||
foreach (var t in new[]
|
||||
{
|
||||
"upnp:rootdevice",
|
||||
"urn:schemas-upnp-org:device:MediaServer:1",
|
||||
"urn:schemas-upnp-org:service:ContentDirectory:1",
|
||||
"uuid:" + uuid
|
||||
})
|
||||
{
|
||||
list.Add(new UpnpDevice(uuid, t, descriptor, address));
|
||||
}
|
||||
|
||||
NotifyAll();
|
||||
_logger.Debug("Registered mount {0}", uuid);
|
||||
_logger.Debug("Registered mount {0} at {1}", uuid, descriptor);
|
||||
}
|
||||
|
||||
private void UnregisterNotification(Guid uuid)
|
||||
|
||||
Reference in New Issue
Block a user