Merge remote-tracking branch 'upstream/master' into security-path-traversal-fixes

# Conflicts:
#	Jellyfin.Api/Controllers/HlsSegmentController.cs
#	Jellyfin.Api/Controllers/PluginsController.cs
This commit is contained in:
Shadowghost
2026-07-21 07:14:47 +02:00
79 changed files with 1930 additions and 518 deletions
@@ -81,13 +81,6 @@ namespace MediaBrowser.Controller.Dto
/// </summary>
public bool AddCurrentProgram { get; set; }
/// <summary>
/// Gets or sets a value indicating whether an episode's portrait poster (its season's primary
/// image, falling back to the series') should replace the episode's own (16:9) primary image.
/// Used by views that render episodes as poster cards, e.g. "Latest".
/// </summary>
public bool PreferEpisodeParentPoster { get; set; }
/// <summary>
/// Gets a value indicating whether the specified field is populated.
/// </summary>
-5
View File
@@ -13,11 +13,6 @@ namespace MediaBrowser.Controller.Entities
[Common.RequiresSourceSerialisation]
public class Book : BaseItem, IHasLookupInfo<BookInfo>, IHasSeries
{
public Book()
{
this.RunTimeTicks = TimeSpan.TicksPerSecond;
}
[JsonIgnore]
public override MediaType MediaType => MediaType.Book;
@@ -1,12 +1,13 @@
#nullable disable
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
namespace MediaBrowser.Controller.Entities
{
/// <summary>
/// Interface for items that have special features.
/// </summary>
public interface IHasSpecialFeatures
{
/// <summary>
@@ -1,11 +1,15 @@
#pragma warning disable CS1591
using System;
namespace MediaBrowser.Controller.Entities
{
/// <summary>
/// Interface for items that have a start date.
/// </summary>
public interface IHasStartDate
{
/// <summary>
/// Gets or sets the start date.
/// </summary>
DateTime StartDate { get; set; }
}
}
@@ -1,19 +1,28 @@
#pragma warning disable CS1591
using System.Collections.Generic;
namespace MediaBrowser.Controller.Entities
{
/// <summary>
/// Marker interface.
/// Marker interface for items that represent a name, like a genre or a studio.
/// </summary>
public interface IItemByName
{
/// <summary>
/// Gets the items tagged with this name.
/// </summary>
/// <param name="query">The query.</param>
/// <returns>The tagged items.</returns>
IReadOnlyList<BaseItem> GetTaggedItems(InternalItemsQuery query);
}
/// <summary>
/// Interface for by-name items that can also be accessed as a regular library item.
/// </summary>
public interface IHasDualAccess : IItemByName
{
/// <summary>
/// Gets a value indicating whether the item is accessed by name.
/// </summary>
bool IsAccessedByName { get; }
}
}
@@ -1,7 +1,8 @@
#pragma warning disable CS1591
namespace MediaBrowser.Controller.Entities
{
/// <summary>
/// Interface for items that can be placeholders.
/// </summary>
public interface ISupportsPlaceHolders
{
/// <summary>
@@ -5,6 +5,7 @@
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
using Jellyfin.Database.Implementations.Entities;
using Jellyfin.Extensions;
using MediaBrowser.Controller.Providers;
using Microsoft.Extensions.Logging;
@@ -75,6 +76,16 @@ namespace MediaBrowser.Controller.Entities
return false;
}
/// <inheritdoc />
/// <remarks>
/// People don't carry the tags of the media they appear in, so the allowed tags check
/// is skipped for them; otherwise no person would be visible to users with allowed tags configured.
/// </remarks>
public override bool IsVisible(User user, bool skipAllowedTagsCheck = false)
{
return base.IsVisible(user, true);
}
public override bool IsSaveLocalMetadataEnabled()
{
return true;
+14 -2
View File
@@ -1,11 +1,23 @@
#pragma warning disable CS1591
namespace MediaBrowser.Controller.Entities
{
/// <summary>
/// The source of an item.
/// </summary>
public enum SourceType
{
/// <summary>
/// The item comes from a library.
/// </summary>
Library = 0,
/// <summary>
/// The item comes from a channel.
/// </summary>
Channel = 1,
/// <summary>
/// The item comes from live TV.
/// </summary>
LiveTV = 2
}
}
@@ -4054,7 +4054,7 @@ namespace MediaBrowser.Controller.MediaEncoding
mainFilters.Add(swDeintFilter);
}
var outFormat = doCuTonemap ? "yuv420p10le" : "yuv420p";
var outFormat = doCuTonemap ? "p010le" : "yuv420p";
var swScaleFilter = GetSwScaleFilter(state, options, vidEncoder, swpInW, swpInH, threeDFormat, reqW, reqH, reqMaxW, reqMaxH);
// sw scale
mainFilters.Add(swScaleFilter);