mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-22 18:14:42 +01:00
Merge branch 'master' into Comment1
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
#pragma warning disable CS1591
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Jellyfin.Data.Entities;
|
||||
using Jellyfin.Data.Events;
|
||||
using Jellyfin.Data.Queries;
|
||||
using MediaBrowser.Model.Querying;
|
||||
|
||||
namespace MediaBrowser.Model.Activity
|
||||
@@ -15,11 +15,6 @@ namespace MediaBrowser.Model.Activity
|
||||
|
||||
Task CreateAsync(ActivityLog entry);
|
||||
|
||||
QueryResult<ActivityLogEntry> GetPagedResult(int? startIndex, int? limit);
|
||||
|
||||
QueryResult<ActivityLogEntry> GetPagedResult(
|
||||
Func<IQueryable<ActivityLog>, IQueryable<ActivityLog>> func,
|
||||
int? startIndex,
|
||||
int? limit);
|
||||
Task<QueryResult<ActivityLogEntry>> GetPagedResultAsync(ActivityLogQuery query);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,8 +25,6 @@ namespace MediaBrowser.Model.Configuration
|
||||
|
||||
public bool EnableInternetProviders { get; set; }
|
||||
|
||||
public bool ImportMissingEpisodes { get; set; }
|
||||
|
||||
public bool EnableAutomaticSeriesGrouping { get; set; }
|
||||
|
||||
public bool EnableEmbeddedTitles { get; set; }
|
||||
|
||||
@@ -83,8 +83,6 @@ namespace MediaBrowser.Model.Configuration
|
||||
/// </summary>
|
||||
public bool QuickConnectAvailable { get; set; }
|
||||
|
||||
public bool AutoRunWebApp { get; set; }
|
||||
|
||||
public bool EnableRemoteAccess { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@@ -306,7 +304,6 @@ namespace MediaBrowser.Model.Configuration
|
||||
DisableLiveTvChannelUserDataName = true;
|
||||
EnableNewOmdbSupport = true;
|
||||
|
||||
AutoRunWebApp = true;
|
||||
EnableRemoteAccess = true;
|
||||
QuickConnectAvailable = false;
|
||||
|
||||
|
||||
@@ -38,7 +38,8 @@ namespace MediaBrowser.Model.Dlna
|
||||
";DLNA.ORG_FLAGS={0}",
|
||||
DlnaMaps.FlagsToString(flagValue));
|
||||
|
||||
ResponseProfile mediaProfile = _profile.GetImageMediaProfile(container,
|
||||
ResponseProfile mediaProfile = _profile.GetImageMediaProfile(
|
||||
container,
|
||||
width,
|
||||
height);
|
||||
|
||||
@@ -160,7 +161,8 @@ namespace MediaBrowser.Model.Dlna
|
||||
string dlnaflags = string.Format(CultureInfo.InvariantCulture, ";DLNA.ORG_FLAGS={0}",
|
||||
DlnaMaps.FlagsToString(flagValue));
|
||||
|
||||
ResponseProfile mediaProfile = _profile.GetVideoMediaProfile(container,
|
||||
ResponseProfile mediaProfile = _profile.GetVideoMediaProfile(
|
||||
container,
|
||||
audioCodec,
|
||||
videoCodec,
|
||||
width,
|
||||
@@ -221,7 +223,8 @@ namespace MediaBrowser.Model.Dlna
|
||||
private static string GetImageOrgPnValue(string container, int? width, int? height)
|
||||
{
|
||||
MediaFormatProfile? format = new MediaFormatProfileResolver()
|
||||
.ResolveImageFormat(container,
|
||||
.ResolveImageFormat(
|
||||
container,
|
||||
width,
|
||||
height);
|
||||
|
||||
@@ -231,7 +234,8 @@ namespace MediaBrowser.Model.Dlna
|
||||
private static string GetAudioOrgPnValue(string container, int? audioBitrate, int? audioSampleRate, int? audioChannels)
|
||||
{
|
||||
MediaFormatProfile? format = new MediaFormatProfileResolver()
|
||||
.ResolveAudioFormat(container,
|
||||
.ResolveAudioFormat(
|
||||
container,
|
||||
audioBitrate,
|
||||
audioSampleRate,
|
||||
audioChannels);
|
||||
|
||||
@@ -15,6 +15,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
new ResolutionConfiguration(720, 950000),
|
||||
new ResolutionConfiguration(1280, 2500000),
|
||||
new ResolutionConfiguration(1920, 4000000),
|
||||
new ResolutionConfiguration(2560, 8000000),
|
||||
new ResolutionConfiguration(3840, 35000000)
|
||||
};
|
||||
|
||||
|
||||
@@ -455,9 +455,11 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
if (directPlayProfile == null)
|
||||
{
|
||||
_logger.LogInformation("Profile: {0}, No direct play profiles found for Path: {1}",
|
||||
_logger.LogInformation(
|
||||
"Profile: {0}, No audio direct play profiles found for {1} with codec {2}",
|
||||
options.Profile.Name ?? "Unknown Profile",
|
||||
item.Path ?? "Unknown path");
|
||||
item.Path ?? "Unknown path",
|
||||
audioStream.Codec ?? "Unknown codec");
|
||||
|
||||
return (Enumerable.Empty<PlayMethod>(), GetTranscodeReasonsFromDirectPlayProfile(item, null, audioStream, options.Profile.DirectPlayProfiles));
|
||||
}
|
||||
@@ -498,7 +500,6 @@ namespace MediaBrowser.Model.Dlna
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (playMethods.Count > 0)
|
||||
{
|
||||
transcodeReasons.Clear();
|
||||
@@ -679,7 +680,8 @@ namespace MediaBrowser.Model.Dlna
|
||||
bool isEligibleForDirectPlay = options.EnableDirectPlay && (options.ForceDirectPlay || directPlayEligibilityResult.Item1);
|
||||
bool isEligibleForDirectStream = options.EnableDirectStream && (options.ForceDirectStream || directStreamEligibilityResult.Item1);
|
||||
|
||||
_logger.LogInformation("Profile: {0}, Path: {1}, isEligibleForDirectPlay: {2}, isEligibleForDirectStream: {3}",
|
||||
_logger.LogInformation(
|
||||
"Profile: {0}, Path: {1}, isEligibleForDirectPlay: {2}, isEligibleForDirectStream: {3}",
|
||||
options.Profile.Name ?? "Unknown Profile",
|
||||
item.Path ?? "Unknown path",
|
||||
isEligibleForDirectPlay,
|
||||
@@ -973,9 +975,11 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
if (directPlay == null)
|
||||
{
|
||||
_logger.LogInformation("Profile: {0}, No direct play profiles found for Path: {1}",
|
||||
_logger.LogInformation(
|
||||
"Profile: {0}, No video direct play profiles found for {1} with codec {2}",
|
||||
profile.Name ?? "Unknown Profile",
|
||||
mediaSource.Path ?? "Unknown path");
|
||||
mediaSource.Path ?? "Unknown path",
|
||||
videoStream.Codec ?? "Unknown codec");
|
||||
|
||||
return (null, GetTranscodeReasonsFromDirectPlayProfile(mediaSource, videoStream, audioStream, profile.DirectPlayProfiles));
|
||||
}
|
||||
@@ -1136,7 +1140,8 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
private void LogConditionFailure(DeviceProfile profile, string type, ProfileCondition condition, MediaSourceInfo mediaSource)
|
||||
{
|
||||
_logger.LogInformation("Profile: {0}, DirectPlay=false. Reason={1}.{2} Condition: {3}. ConditionValue: {4}. IsRequired: {5}. Path: {6}",
|
||||
_logger.LogInformation(
|
||||
"Profile: {0}, DirectPlay=false. Reason={1}.{2} Condition: {3}. ConditionValue: {4}. IsRequired: {5}. Path: {6}",
|
||||
type,
|
||||
profile.Name ?? "Unknown Profile",
|
||||
condition.Property,
|
||||
@@ -1341,7 +1346,8 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
if (itemBitrate > requestedMaxBitrate)
|
||||
{
|
||||
_logger.LogInformation("Bitrate exceeds {PlayBackMethod} limit: media bitrate: {MediaBitrate}, max bitrate: {MaxBitrate}",
|
||||
_logger.LogInformation(
|
||||
"Bitrate exceeds {PlayBackMethod} limit: media bitrate: {MediaBitrate}, max bitrate: {MaxBitrate}",
|
||||
playMethod, itemBitrate, requestedMaxBitrate);
|
||||
return false;
|
||||
}
|
||||
@@ -1431,6 +1437,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.AudioChannels:
|
||||
{
|
||||
if (string.IsNullOrEmpty(qualifier))
|
||||
@@ -1466,6 +1473,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.IsAvc:
|
||||
{
|
||||
if (!enableNonQualifiedConditions)
|
||||
@@ -1487,6 +1495,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.IsAnamorphic:
|
||||
{
|
||||
if (!enableNonQualifiedConditions)
|
||||
@@ -1508,6 +1517,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.IsInterlaced:
|
||||
{
|
||||
if (string.IsNullOrEmpty(qualifier))
|
||||
@@ -1539,6 +1549,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.AudioProfile:
|
||||
case ProfileConditionValue.Has64BitOffsets:
|
||||
case ProfileConditionValue.PacketLength:
|
||||
@@ -1550,6 +1561,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
// Not supported yet
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.RefFrames:
|
||||
{
|
||||
if (string.IsNullOrEmpty(qualifier))
|
||||
@@ -1585,6 +1597,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.VideoBitDepth:
|
||||
{
|
||||
if (string.IsNullOrEmpty(qualifier))
|
||||
@@ -1620,6 +1633,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.VideoProfile:
|
||||
{
|
||||
if (string.IsNullOrEmpty(qualifier))
|
||||
@@ -1643,6 +1657,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.Height:
|
||||
{
|
||||
if (!enableNonQualifiedConditions)
|
||||
@@ -1668,6 +1683,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.VideoBitrate:
|
||||
{
|
||||
if (!enableNonQualifiedConditions)
|
||||
@@ -1693,6 +1709,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.VideoFramerate:
|
||||
{
|
||||
if (!enableNonQualifiedConditions)
|
||||
@@ -1718,6 +1735,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.VideoLevel:
|
||||
{
|
||||
if (string.IsNullOrEmpty(qualifier))
|
||||
@@ -1743,6 +1761,7 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case ProfileConditionValue.Width:
|
||||
{
|
||||
if (!enableNonQualifiedConditions)
|
||||
|
||||
@@ -276,7 +276,6 @@ namespace MediaBrowser.Model.Dlna
|
||||
|
||||
list.Add(new NameValuePair("SubtitleMethod", item.SubtitleStreamIndex.HasValue && item.SubtitleDeliveryMethod != SubtitleDeliveryMethod.External ? item.SubtitleDeliveryMethod.ToString() : string.Empty));
|
||||
|
||||
|
||||
if (!item.IsDirectStream)
|
||||
{
|
||||
if (item.RequireNonAnamorphic)
|
||||
|
||||
@@ -429,6 +429,7 @@ namespace MediaBrowser.Model.Dto
|
||||
/// </summary>
|
||||
/// <value>The album id.</value>
|
||||
public Guid AlbumId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the album image tag.
|
||||
/// </summary>
|
||||
@@ -599,11 +600,13 @@ namespace MediaBrowser.Model.Dto
|
||||
/// </summary>
|
||||
/// <value>The trailer count.</value>
|
||||
public int? TrailerCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the movie count.
|
||||
/// </summary>
|
||||
/// <value>The movie count.</value>
|
||||
public int? MovieCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the series count.
|
||||
/// </summary>
|
||||
@@ -611,16 +614,19 @@ namespace MediaBrowser.Model.Dto
|
||||
public int? SeriesCount { get; set; }
|
||||
|
||||
public int? ProgramCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the episode count.
|
||||
/// </summary>
|
||||
/// <value>The episode count.</value>
|
||||
public int? EpisodeCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the song count.
|
||||
/// </summary>
|
||||
/// <value>The song count.</value>
|
||||
public int? SongCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the album count.
|
||||
/// </summary>
|
||||
@@ -628,6 +634,7 @@ namespace MediaBrowser.Model.Dto
|
||||
public int? AlbumCount { get; set; }
|
||||
|
||||
public int? ArtistCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the music video count.
|
||||
/// </summary>
|
||||
@@ -768,6 +775,7 @@ namespace MediaBrowser.Model.Dto
|
||||
/// </summary>
|
||||
/// <value>The timer identifier.</value>
|
||||
public string TimerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the current program.
|
||||
/// </summary>
|
||||
|
||||
@@ -451,11 +451,13 @@ namespace MediaBrowser.Model.Entities
|
||||
/// </summary>
|
||||
/// <value>The method.</value>
|
||||
public SubtitleDeliveryMethod? DeliveryMethod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the delivery URL.
|
||||
/// </summary>
|
||||
/// <value>The delivery URL.</value>
|
||||
public string DeliveryUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether this instance is external URL.
|
||||
/// </summary>
|
||||
|
||||
@@ -11,18 +11,22 @@ namespace MediaBrowser.Model.Entities
|
||||
/// The imdb.
|
||||
/// </summary>
|
||||
Imdb = 2,
|
||||
|
||||
/// <summary>
|
||||
/// The TMDB.
|
||||
/// </summary>
|
||||
Tmdb = 3,
|
||||
|
||||
/// <summary>
|
||||
/// The TVDB.
|
||||
/// </summary>
|
||||
Tvdb = 4,
|
||||
|
||||
/// <summary>
|
||||
/// The tvcom.
|
||||
/// </summary>
|
||||
Tvcom = 5,
|
||||
|
||||
/// <summary>
|
||||
/// Tmdb Collection Id.
|
||||
/// </summary>
|
||||
|
||||
46
MediaBrowser.Model/Extensions/EnumerableExtensions.cs
Normal file
46
MediaBrowser.Model/Extensions/EnumerableExtensions.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using MediaBrowser.Model.Providers;
|
||||
|
||||
namespace MediaBrowser.Model.Extensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Extension methods for <see cref="IEnumerable{T}"/>.
|
||||
/// </summary>
|
||||
public static class EnumerableExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Orders <see cref="RemoteImageInfo"/> by requested language in descending order, prioritizing "en" over other non-matches.
|
||||
/// </summary>
|
||||
/// <param name="remoteImageInfos">The remote image infos.</param>
|
||||
/// <param name="requestedLanguage">The requested language for the images.</param>
|
||||
/// <returns>The ordered remote image infos.</returns>
|
||||
public static IEnumerable<RemoteImageInfo> OrderByLanguageDescending(this IEnumerable<RemoteImageInfo> remoteImageInfos, string requestedLanguage)
|
||||
{
|
||||
var isRequestedLanguageEn = string.Equals(requestedLanguage, "en", StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
return remoteImageInfos.OrderByDescending(i =>
|
||||
{
|
||||
if (string.Equals(requestedLanguage, i.Language, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
|
||||
if (!isRequestedLanguageEn && string.Equals("en", i.Language, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(i.Language))
|
||||
{
|
||||
return isRequestedLanguageEn ? 3 : 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
})
|
||||
.ThenByDescending(i => i.CommunityRating ?? 0)
|
||||
.ThenByDescending(i => i.VoteCount ?? 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -84,6 +84,7 @@ namespace MediaBrowser.Model.LiveTv
|
||||
/// </summary>
|
||||
/// <value><c>null</c> if [is kids] contains no value, <c>true</c> if [is kids]; otherwise, <c>false</c>.</value>
|
||||
public bool? IsKids { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether this instance is sports.
|
||||
/// </summary>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All"/>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.7" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.9" />
|
||||
<PackageReference Include="System.Globalization" Version="4.3.0" />
|
||||
<PackageReference Include="System.Text.Json" Version="5.0.0-preview.8.20407.11" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#pragma warning disable CS1591
|
||||
|
||||
using System;
|
||||
using MediaBrowser.Model.Session;
|
||||
|
||||
namespace MediaBrowser.Model.Net
|
||||
{
|
||||
@@ -15,7 +16,7 @@ namespace MediaBrowser.Model.Net
|
||||
/// Gets or sets the type of the message.
|
||||
/// </summary>
|
||||
/// <value>The type of the message.</value>
|
||||
public string MessageType { get; set; }
|
||||
public SessionMessageType MessageType { get; set; }
|
||||
|
||||
public Guid MessageId { get; set; }
|
||||
|
||||
|
||||
@@ -68,5 +68,4 @@ namespace MediaBrowser.Model.Providers
|
||||
/// <value>The type of the rating.</value>
|
||||
public RatingType RatingType { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -50,6 +50,5 @@ namespace MediaBrowser.Model.Providers
|
||||
public RemoteSearchResult AlbumArtist { get; set; }
|
||||
|
||||
public RemoteSearchResult[] Artists { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,6 +168,7 @@ namespace MediaBrowser.Model.Querying
|
||||
Studios,
|
||||
|
||||
BasicSyncInfo,
|
||||
|
||||
/// <summary>
|
||||
/// The synchronize information.
|
||||
/// </summary>
|
||||
|
||||
@@ -37,16 +37,19 @@ namespace MediaBrowser.Model.Querying
|
||||
/// </summary>
|
||||
/// <value>The fields.</value>
|
||||
public ItemFields[] Fields { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether [enable images].
|
||||
/// </summary>
|
||||
/// <value><c>null</c> if [enable images] contains no value, <c>true</c> if [enable images]; otherwise, <c>false</c>.</value>
|
||||
public bool? EnableImages { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the image type limit.
|
||||
/// </summary>
|
||||
/// <value>The image type limit.</value>
|
||||
public int? ImageTypeLimit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the enable image types.
|
||||
/// </summary>
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace MediaBrowser.Model.Session
|
||||
{
|
||||
public string[] PlayableMediaTypes { get; set; }
|
||||
|
||||
public string[] SupportedCommands { get; set; }
|
||||
public GeneralCommandType[] SupportedCommands { get; set; }
|
||||
|
||||
public bool SupportsMediaControl { get; set; }
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace MediaBrowser.Model.Session
|
||||
public ClientCapabilities()
|
||||
{
|
||||
PlayableMediaTypes = Array.Empty<string>();
|
||||
SupportedCommands = Array.Empty<string>();
|
||||
SupportedCommands = Array.Empty<GeneralCommandType>();
|
||||
SupportsPersistentIdentifier = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace MediaBrowser.Model.Session
|
||||
{
|
||||
public class GeneralCommand
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public GeneralCommandType Name { get; set; }
|
||||
|
||||
public Guid ControllingUserId { get; set; }
|
||||
|
||||
|
||||
@@ -43,6 +43,11 @@ namespace MediaBrowser.Model.Session
|
||||
Guide = 32,
|
||||
ToggleStats = 33,
|
||||
PlayMediaSource = 34,
|
||||
PlayTrailers = 35
|
||||
PlayTrailers = 35,
|
||||
SetShuffleQueue = 36,
|
||||
PlayState = 37,
|
||||
PlayNext = 38,
|
||||
ToggleOsdMenu = 39,
|
||||
Play = 40
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,16 +88,19 @@ namespace MediaBrowser.Model.Session
|
||||
/// </summary>
|
||||
/// <value>The play method.</value>
|
||||
public PlayMethod PlayMethod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the live stream identifier.
|
||||
/// </summary>
|
||||
/// <value>The live stream identifier.</value>
|
||||
public string LiveStreamId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the play session identifier.
|
||||
/// </summary>
|
||||
/// <value>The play session identifier.</value>
|
||||
public string PlaySessionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the repeat mode.
|
||||
/// </summary>
|
||||
|
||||
50
MediaBrowser.Model/Session/SessionMessageType.cs
Normal file
50
MediaBrowser.Model/Session/SessionMessageType.cs
Normal file
@@ -0,0 +1,50 @@
|
||||
#pragma warning disable CS1591
|
||||
|
||||
namespace MediaBrowser.Model.Session
|
||||
{
|
||||
/// <summary>
|
||||
/// The different kinds of messages that are used in the WebSocket api.
|
||||
/// </summary>
|
||||
public enum SessionMessageType
|
||||
{
|
||||
// Server -> Client
|
||||
ForceKeepAlive,
|
||||
GeneralCommand,
|
||||
UserDataChanged,
|
||||
Sessions,
|
||||
Play,
|
||||
SyncPlayCommand,
|
||||
SyncPlayGroupUpdate,
|
||||
PlayState,
|
||||
RestartRequired,
|
||||
ServerShuttingDown,
|
||||
ServerRestarting,
|
||||
LibraryChanged,
|
||||
UserDeleted,
|
||||
UserUpdated,
|
||||
SeriesTimerCreated,
|
||||
TimerCreated,
|
||||
SeriesTimerCancelled,
|
||||
TimerCancelled,
|
||||
RefreshProgress,
|
||||
ScheduledTaskEnded,
|
||||
PackageInstallationCancelled,
|
||||
PackageInstallationFailed,
|
||||
PackageInstallationCompleted,
|
||||
PackageInstalling,
|
||||
PackageUninstalled,
|
||||
ActivityLogEntry,
|
||||
ScheduledTasksInfo,
|
||||
|
||||
// Client -> Server
|
||||
ActivityLogEntryStart,
|
||||
ActivityLogEntryStop,
|
||||
SessionsStart,
|
||||
SessionsStop,
|
||||
ScheduledTasksInfoStart,
|
||||
ScheduledTasksInfoStop,
|
||||
|
||||
// Shared
|
||||
KeepAlive,
|
||||
}
|
||||
}
|
||||
@@ -8,10 +8,12 @@ namespace MediaBrowser.Model.Sync
|
||||
/// The latest.
|
||||
/// </summary>
|
||||
Latest = 0,
|
||||
|
||||
/// <summary>
|
||||
/// The next up.
|
||||
/// </summary>
|
||||
NextUp = 1,
|
||||
|
||||
/// <summary>
|
||||
/// The resume.
|
||||
/// </summary>
|
||||
|
||||
@@ -43,7 +43,10 @@ namespace MediaBrowser.Model.System
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether the startup wizard is completed.
|
||||
/// </summary>
|
||||
/// <value>The startup completion status.</value>
|
||||
public bool StartupWizardCompleted { get; set; }
|
||||
/// <remarks>
|
||||
/// Nullable for OpenAPI specification only to retain backwards compatibility in apiclients.
|
||||
/// </remarks>
|
||||
/// <value>The startup completion status.</value>]
|
||||
public bool? StartupWizardCompleted { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,13 +14,16 @@ namespace MediaBrowser.Model.System
|
||||
{
|
||||
/// <summary>No path to FFmpeg found.</summary>
|
||||
NotFound,
|
||||
|
||||
/// <summary>Path supplied via command line using switch --ffmpeg.</summary>
|
||||
SetByArgument,
|
||||
|
||||
/// <summary>User has supplied path via Transcoding UI page.</summary>
|
||||
Custom,
|
||||
|
||||
/// <summary>FFmpeg tool found on system $PATH.</summary>
|
||||
System
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class SystemInfo.
|
||||
|
||||
@@ -9,6 +9,7 @@ namespace MediaBrowser.Model.Tasks
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if this instance is hidden; otherwise, <c>false</c>.</value>
|
||||
bool IsHidden { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this instance is enabled.
|
||||
/// </summary>
|
||||
|
||||
@@ -52,6 +52,16 @@ namespace MediaBrowser.Model.Updates
|
||||
/// <value>The versions.</value>
|
||||
public IReadOnlyList<VersionInfo> versions { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the repository name.
|
||||
/// </summary>
|
||||
public string repositoryName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the repository url.
|
||||
/// </summary>
|
||||
public string repositoryUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="PackageInfo"/> class.
|
||||
/// </summary>
|
||||
|
||||
@@ -92,6 +92,8 @@ namespace MediaBrowser.Model.Users
|
||||
|
||||
public int LoginAttemptsBeforeLockout { get; set; }
|
||||
|
||||
public int MaxActiveSessions { get; set; }
|
||||
|
||||
public bool EnablePublicSharing { get; set; }
|
||||
|
||||
public Guid[] BlockedMediaFolders { get; set; }
|
||||
@@ -144,6 +146,8 @@ namespace MediaBrowser.Model.Users
|
||||
|
||||
LoginAttemptsBeforeLockout = -1;
|
||||
|
||||
MaxActiveSessions = 0;
|
||||
|
||||
EnableAllChannels = true;
|
||||
EnabledChannels = Array.Empty<Guid>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user