limit number of people in dlna responses

pull/702/head
Luke Pulverenti 8 years ago
parent 5ad04bbb77
commit 2f17d160bc

@ -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);

@ -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;
}
}
}

@ -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; }

@ -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

@ -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

@ -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);
}

@ -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
};

@ -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;
}
}

Loading…
Cancel
Save