|
|
@ -6,6 +6,7 @@ using System.Threading;
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
using Emby.Dlna.Didl;
|
|
|
|
using Emby.Dlna.Didl;
|
|
|
|
using MediaBrowser.Common.Configuration;
|
|
|
|
using MediaBrowser.Common.Configuration;
|
|
|
|
|
|
|
|
using MediaBrowser.Common.Extensions;
|
|
|
|
using MediaBrowser.Controller.Dlna;
|
|
|
|
using MediaBrowser.Controller.Dlna;
|
|
|
|
using MediaBrowser.Controller.Drawing;
|
|
|
|
using MediaBrowser.Controller.Drawing;
|
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
@ -17,7 +18,6 @@ using MediaBrowser.Model.Dto;
|
|
|
|
using MediaBrowser.Model.Entities;
|
|
|
|
using MediaBrowser.Model.Entities;
|
|
|
|
using MediaBrowser.Model.Events;
|
|
|
|
using MediaBrowser.Model.Events;
|
|
|
|
using MediaBrowser.Model.Globalization;
|
|
|
|
using MediaBrowser.Model.Globalization;
|
|
|
|
using MediaBrowser.Model.Services;
|
|
|
|
|
|
|
|
using MediaBrowser.Model.Session;
|
|
|
|
using MediaBrowser.Model.Session;
|
|
|
|
using Microsoft.AspNetCore.WebUtilities;
|
|
|
|
using Microsoft.AspNetCore.WebUtilities;
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
@ -849,13 +849,13 @@ namespace Emby.Dlna.PlayTo
|
|
|
|
if (index == -1) return request;
|
|
|
|
if (index == -1) return request;
|
|
|
|
|
|
|
|
|
|
|
|
var query = url.Substring(index + 1);
|
|
|
|
var query = url.Substring(index + 1);
|
|
|
|
Dictionary<string, StringValues> values = QueryHelpers.ParseQuery(query);
|
|
|
|
Dictionary<string, string> values = QueryHelpers.ParseQuery(query).ToDictionary(kv => kv.Key, kv => kv.Value.ToString());
|
|
|
|
|
|
|
|
|
|
|
|
request.DeviceProfileId = values["DeviceProfileId"].ToString();
|
|
|
|
request.DeviceProfileId = values.GetValueOrDefault("DeviceProfileId");
|
|
|
|
request.DeviceId = values["DeviceId"].ToString();
|
|
|
|
request.DeviceId = values.GetValueOrDefault("DeviceId");
|
|
|
|
request.MediaSourceId = values["MediaSourceId"].ToString();
|
|
|
|
request.MediaSourceId = values.GetValueOrDefault("MediaSourceId");
|
|
|
|
request.LiveStreamId = values["LiveStreamId"].ToString();
|
|
|
|
request.LiveStreamId = values.GetValueOrDefault("LiveStreamId");
|
|
|
|
request.IsDirectStream = string.Equals("true", values["Static"].ToString(), StringComparison.OrdinalIgnoreCase);
|
|
|
|
request.IsDirectStream = string.Equals("true", values.GetValueOrDefault("Static"), StringComparison.OrdinalIgnoreCase);
|
|
|
|
|
|
|
|
|
|
|
|
request.AudioStreamIndex = GetIntValue(values, "AudioStreamIndex");
|
|
|
|
request.AudioStreamIndex = GetIntValue(values, "AudioStreamIndex");
|
|
|
|
request.SubtitleStreamIndex = GetIntValue(values, "SubtitleStreamIndex");
|
|
|
|
request.SubtitleStreamIndex = GetIntValue(values, "SubtitleStreamIndex");
|
|
|
@ -869,9 +869,9 @@ namespace Emby.Dlna.PlayTo
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static int? GetIntValue(IReadOnlyDictionary<string, StringValues> values, string name)
|
|
|
|
private static int? GetIntValue(IReadOnlyDictionary<string, string> values, string name)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var value = values[name].ToString();
|
|
|
|
var value = values.GetValueOrDefault(name);
|
|
|
|
|
|
|
|
|
|
|
|
if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
|
|
|
|
if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -881,9 +881,9 @@ namespace Emby.Dlna.PlayTo
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static long GetLongValue(IReadOnlyDictionary<string, StringValues> values, string name)
|
|
|
|
private static long GetLongValue(IReadOnlyDictionary<string, string> values, string name)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var value = values[name].ToString();
|
|
|
|
var value = values.GetValueOrDefault(name);
|
|
|
|
|
|
|
|
|
|
|
|
if (long.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
|
|
|
|
if (long.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
|
|
|
|
{
|
|
|
|
{
|
|
|
|