aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-10-18 14:23:41 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-10-18 14:23:41 -0400
commit2f17d160bc2c90d0fd54b42098fb7a60bc3c8264 (patch)
treece6881143c5fcf97c73869bb5ff8041594556436
parent5ad04bbb7754eddaf07921ee0ec699a2a934c242 (diff)
limit number of people in dlna responses
-rw-r--r--MediaBrowser.Api/LiveTv/LiveTvService.cs13
-rw-r--r--MediaBrowser.Dlna/Didl/DidlBuilder.cs22
-rw-r--r--MediaBrowser.Model/LiveTv/LiveTvOptions.cs1
-rw-r--r--MediaBrowser.Model/LiveTv/ProgramQuery.cs1
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs6
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs7
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs1
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs30
8 files changed, 71 insertions, 10 deletions
diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs
index 4217cd6ab..90767b135 100644
--- a/MediaBrowser.Api/LiveTv/LiveTvService.cs
+++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs
@@ -19,6 +19,7 @@ using System.Threading.Tasks;
using CommonIO;
using MediaBrowser.Api.Playback.Progressive;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Server.Implementations.LiveTv.EmbyTV;
namespace MediaBrowser.Api.LiveTv
@@ -390,6 +391,7 @@ namespace MediaBrowser.Api.LiveTv
public bool? EnableUserData { get; set; }
public string SeriesTimerId { get; set; }
+ public string LibrarySeriesId { get; set; }
/// <summary>
/// Fields to return within the items, in addition to basic information
@@ -990,6 +992,17 @@ namespace MediaBrowser.Api.LiveTv
query.SeriesTimerId = request.SeriesTimerId;
query.Genres = (request.Genres ?? String.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
+ if (!string.IsNullOrWhiteSpace(request.LibrarySeriesId))
+ {
+ query.IsSeries = true;
+
+ var series = _libraryManager.GetItemById(request.LibrarySeriesId) as Series;
+ if (series != null)
+ {
+ query.Name = series.Name;
+ }
+ }
+
var result = await _liveTvManager.GetPrograms(query, GetDtoOptions(request), CancellationToken.None).ConfigureAwait(false);
return ToOptimizedResult(result);
diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs
index 1330c54c2..a5091bf01 100644
--- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs
+++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs
@@ -696,16 +696,36 @@ namespace MediaBrowser.Dlna.Didl
private void AddPeople(BaseItem item, XmlElement element)
{
- var types = new[] { PersonType.Director, PersonType.Writer, PersonType.Producer, PersonType.Composer, "Creator" };
+ var types = new[]
+ {
+ PersonType.Director,
+ PersonType.Writer,
+ PersonType.Producer,
+ PersonType.Composer,
+ "Creator"
+ };
var people = _libraryManager.GetPeople(item);
+ var index = 0;
+
+ // Seeing some LG models locking up due content with large lists of people
+ // The actual issue might just be due to processing a more metadata than it can handle
+ var limit = 10;
+
foreach (var actor in people)
{
var type = types.FirstOrDefault(i => string.Equals(i, actor.Type, StringComparison.OrdinalIgnoreCase) || string.Equals(i, actor.Role, StringComparison.OrdinalIgnoreCase))
?? PersonType.Actor;
AddValue(element, "upnp", type.ToLower(), actor.Name, NS_UPNP);
+
+ index++;
+
+ if (index >= limit)
+ {
+ break;
+ }
}
}
diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs
index ee7dd8b98..e19bddeee 100644
--- a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs
+++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs
@@ -16,6 +16,7 @@ namespace MediaBrowser.Model.LiveTv
public string RecordingEncodingFormat { get; set; }
public bool EnableRecordingSubfolders { get; set; }
public bool EnableOriginalAudioWithEncodedRecordings { get; set; }
+ public bool EnableOriginalVideoWithEncodedRecordings { get; set; }
public List<TunerHostInfo> TunerHosts { get; set; }
public List<ListingsProviderInfo> ListingProviders { get; set; }
diff --git a/MediaBrowser.Model/LiveTv/ProgramQuery.cs b/MediaBrowser.Model/LiveTv/ProgramQuery.cs
index ad57d1473..1fd995760 100644
--- a/MediaBrowser.Model/LiveTv/ProgramQuery.cs
+++ b/MediaBrowser.Model/LiveTv/ProgramQuery.cs
@@ -42,6 +42,7 @@ namespace MediaBrowser.Model.LiveTv
/// <value>The user identifier.</value>
public string UserId { get; set; }
public string SeriesTimerId { get; set; }
+ public string Name { get; set; }
/// <summary>
/// The earliest date for which a program starts to return
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index a45d7ae5f..64abcc044 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -2840,7 +2840,11 @@ namespace MediaBrowser.Server.Implementations.Library
{
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
- return Directory.Exists(path);
+ // We can't validate protocol-based paths, so just allow them
+ if (path.IndexOf("://", StringComparison.OrdinalIgnoreCase) == -1)
+ {
+ return Directory.Exists(path);
+ }
}
// Without native support for unc, we cannot validate this when running under mono
diff --git a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
index 3e9d186e3..cdf8e7597 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
@@ -52,7 +52,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
{
var format = _liveTvOptions.RecordingEncodingFormat;
- if (string.Equals(format, "mkv", StringComparison.OrdinalIgnoreCase))
+ if (string.Equals(format, "mkv", StringComparison.OrdinalIgnoreCase) || _liveTvOptions.EnableOriginalVideoWithEncodedRecordings)
{
return "mkv";
}
@@ -204,6 +204,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
private bool EncodeVideo(MediaSourceInfo mediaSource)
{
+ if (_liveTvOptions.EnableOriginalAudioWithEncodedRecordings)
+ {
+ return false;
+ }
+
var mediaStreams = mediaSource.MediaStreams ?? new List<MediaStream>();
return !mediaStreams.Any(i => i.Type == MediaStreamType.Video && string.Equals(i.Codec, "h264", StringComparison.OrdinalIgnoreCase) && !i.IsInterlaced);
}
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index 3577ba49b..7c72363b0 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -877,6 +877,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
SortOrder = query.SortOrder ?? SortOrder.Ascending,
EnableTotalRecordCount = query.EnableTotalRecordCount,
TopParentIds = new[] { topFolder.Id.ToString("N") },
+ Name = query.Name,
DtoOptions = options
};
diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs
index 38eb9bdd1..2bbd44952 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs
@@ -111,15 +111,31 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
channel.Number = "0";
}
- channel.ImageUrl = FindProperty("tvg-logo", extInf, null);
- channel.Number = FindProperty("channel-id", extInf, channel.Number);
- channel.Number = FindProperty("tvg-id", extInf, channel.Number);
- channel.Name = FindProperty("tvg-id", extInf, channel.Name);
- channel.Name = FindProperty("tvg-name", extInf, channel.Name);
+ channel.ImageUrl = FindProperty("tvg-logo", extInf);
+
+ var name = FindProperty("tvg-name", extInf);
+ if (string.IsNullOrWhiteSpace(name))
+ {
+ name = FindProperty("tvg-id", extInf);
+ }
+
+ channel.Name = name;
+
+ var numberString = FindProperty("tvg-id", extInf);
+ if (string.IsNullOrWhiteSpace(numberString))
+ {
+ numberString = FindProperty("channel-id", extInf);
+ }
+
+ if (!string.IsNullOrWhiteSpace(numberString))
+ {
+ channel.Number = numberString;
+ }
+
return channel;
}
- private string FindProperty(string property, string properties, string defaultResult = "")
+ private string FindProperty(string property, string properties)
{
var reg = new Regex(@"([a-z0-9\-_]+)=\""([^""]+)\""", RegexOptions.IgnoreCase);
var matches = reg.Matches(properties);
@@ -130,7 +146,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts
return match.Groups[2].Value;
}
}
- return defaultResult;
+ return null;
}
}