mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-04-24 05:57:20 -04:00
limit number of people in dlna responses
This commit is contained in:
parent
5ad04bbb77
commit
2f17d160bc
8 changed files with 71 additions and 10 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue