mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-05-23 17:52:29 -04:00
chore: fix spelling
* a * acceleration * addition * altogether * api clients * artist * associated * bandwidth * cannot * capabilities * case-insensitive * case-sensitive * configuration * delimiter * dependent * diacritics * directors * enable * explicitly * filters * finish * have * hierarchy * implicit * include * information * into * its * keepalive * localization * macos * manual * matching * metadata * nonexistent * options * overridden * parsed * parser * playback * preferring * processes * processing * provider * ratings * retrieval * running * segments * separate * should * station * subdirectories * superseded * supported * system * than * the * throws * transpose * valid * was link: forum or chat rooms Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
This commit is contained in:
parent
b318f33599
commit
044cf9fb85
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
## configure the following for a manuall install of a specific version from the repo
|
||||
## configure the following for a manual install of a specific version from the repo
|
||||
|
||||
# wget https://repo.jellyfin.org/releases/server/ubuntu/versions/jellyfin-ffmpeg/6.0.1-1/jellyfin-ffmpeg6_6.0.1-1-jammy_amd64.deb -O ffmpeg.deb
|
||||
|
||||
|
2
.github/ISSUE_TEMPLATE/issue report.yml
vendored
2
.github/ISSUE_TEMPLATE/issue report.yml
vendored
@ -14,7 +14,7 @@ body:
|
||||
label: "This issue respects the following points:"
|
||||
description: All conditions are **required**. Failure to comply with any of these conditions may cause your issue to be closed without comment.
|
||||
options:
|
||||
- label: This is a **bug**, not a question or a configuration issue; Please visit our forum or chat rooms first to troubleshoot with volunteers, before creating a report. The links can be found [here](https://jellyfin.org/contact/).
|
||||
- label: This is a **bug**, not a question or a configuration issue; Please visit our [forum or chat rooms](https://jellyfin.org/contact/) first to troubleshoot with volunteers, before creating a report.
|
||||
required: true
|
||||
- label: This issue is **not** already reported on [GitHub](https://github.com/jellyfin/jellyfin/issues?q=is%3Aopen+is%3Aissue) _(I've searched it)_.
|
||||
required: true
|
||||
|
@ -561,7 +561,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
var enumerationOptions = GetEnumerationOptions(recursive);
|
||||
|
||||
// On linux and osx the search pattern is case sensitive
|
||||
// On linux and macOS the search pattern is case-sensitive
|
||||
// If we're OK with case-sensitivity, and we're only filtering for one extension, then use the native method
|
||||
if ((enableCaseSensitiveExtensions || _isEnvironmentCaseInsensitive) && extensions is not null && extensions.Count == 1)
|
||||
{
|
||||
@ -618,7 +618,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
var enumerationOptions = GetEnumerationOptions(recursive);
|
||||
|
||||
// On linux and osx the search pattern is case sensitive
|
||||
// On linux and macOS the search pattern is case-sensitive
|
||||
// If we're OK with case-sensitivity, and we're only filtering for one extension, then use the native method
|
||||
if ((enableCaseSensitiveExtensions || _isEnvironmentCaseInsensitive) && extensions is not null && extensions.Length == 1)
|
||||
{
|
||||
|
@ -39,7 +39,7 @@ namespace Emby.Server.Implementations.Library
|
||||
public class MediaSourceManager : IMediaSourceManager, IDisposable
|
||||
{
|
||||
// Do not use a pipe here because Roku http requests to the server will fail, without any explicit error message.
|
||||
private const char LiveStreamIdDelimeter = '_';
|
||||
private const char LiveStreamIdDelimiter = '_';
|
||||
|
||||
private readonly IServerApplicationHost _appHost;
|
||||
private readonly IItemRepository _itemRepo;
|
||||
@ -313,7 +313,7 @@ namespace Emby.Server.Implementations.Library
|
||||
|
||||
private static void SetKeyProperties(IMediaSourceProvider provider, MediaSourceInfo mediaSource)
|
||||
{
|
||||
var prefix = provider.GetType().FullName.GetMD5().ToString("N", CultureInfo.InvariantCulture) + LiveStreamIdDelimeter;
|
||||
var prefix = provider.GetType().FullName.GetMD5().ToString("N", CultureInfo.InvariantCulture) + LiveStreamIdDelimiter;
|
||||
|
||||
if (!string.IsNullOrEmpty(mediaSource.OpenToken) && !mediaSource.OpenToken.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
@ -866,11 +866,11 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
ArgumentException.ThrowIfNullOrEmpty(key);
|
||||
|
||||
var keys = key.Split(LiveStreamIdDelimeter, 2);
|
||||
var keys = key.Split(LiveStreamIdDelimiter, 2);
|
||||
|
||||
var provider = _providers.FirstOrDefault(i => string.Equals(i.GetType().FullName.GetMD5().ToString("N", CultureInfo.InvariantCulture), keys[0], StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
var splitIndex = key.IndexOf(LiveStreamIdDelimeter, StringComparison.Ordinal);
|
||||
var splitIndex = key.IndexOf(LiveStreamIdDelimiter, StringComparison.Ordinal);
|
||||
var keyId = key.Substring(splitIndex + 1);
|
||||
|
||||
return (provider, keyId);
|
||||
|
@ -231,13 +231,13 @@ namespace Emby.Server.Implementations.Localization
|
||||
ratings.Add(new ParentalRating("21", 21));
|
||||
}
|
||||
|
||||
// A lot of countries don't excplicitly have a seperate rating for adult content
|
||||
// A lot of countries don't explicitly have a separate rating for adult content
|
||||
if (ratings.All(x => x.Value != 1000))
|
||||
{
|
||||
ratings.Add(new ParentalRating("XXX", 1000));
|
||||
}
|
||||
|
||||
// A lot of countries don't excplicitly have a seperate rating for banned content
|
||||
// A lot of countries don't explicitly have a separate rating for banned content
|
||||
if (ratings.All(x => x.Value != 1001))
|
||||
{
|
||||
ratings.Add(new ParentalRating("Banned", 1001));
|
||||
|
@ -119,7 +119,7 @@ namespace Emby.Server.Implementations.Plugins
|
||||
// Now load the assemblies..
|
||||
foreach (var plugin in _plugins)
|
||||
{
|
||||
UpdatePluginSuperceedStatus(plugin);
|
||||
UpdatePluginSupersededStatus(plugin);
|
||||
|
||||
if (plugin.IsEnabledAndSupported == false)
|
||||
{
|
||||
@ -214,7 +214,7 @@ namespace Emby.Server.Implementations.Plugins
|
||||
continue;
|
||||
}
|
||||
|
||||
UpdatePluginSuperceedStatus(plugin);
|
||||
UpdatePluginSupersededStatus(plugin);
|
||||
if (!plugin.IsEnabledAndSupported)
|
||||
{
|
||||
continue;
|
||||
@ -624,9 +624,9 @@ namespace Emby.Server.Implementations.Plugins
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdatePluginSuperceedStatus(LocalPlugin plugin)
|
||||
private void UpdatePluginSupersededStatus(LocalPlugin plugin)
|
||||
{
|
||||
if (plugin.Manifest.Status != PluginStatus.Superceded)
|
||||
if (plugin.Manifest.Status != PluginStatus.Superseded)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -876,7 +876,7 @@ namespace Emby.Server.Implementations.Plugins
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Changes the status of the other versions of the plugin to "Superceded".
|
||||
/// Changes the status of the other versions of the plugin to "Superseded".
|
||||
/// </summary>
|
||||
/// <param name="plugin">The <see cref="LocalPlugin"/> that's master.</param>
|
||||
private void ProcessAlternative(LocalPlugin plugin)
|
||||
@ -896,11 +896,11 @@ namespace Emby.Server.Implementations.Plugins
|
||||
return;
|
||||
}
|
||||
|
||||
if (plugin.Manifest.Status == PluginStatus.Active && !ChangePluginState(previousVersion, PluginStatus.Superceded))
|
||||
if (plugin.Manifest.Status == PluginStatus.Active && !ChangePluginState(previousVersion, PluginStatus.Superseded))
|
||||
{
|
||||
_logger.LogError("Unable to enable version {Version} of {Name}", previousVersion.Version, previousVersion.Name);
|
||||
}
|
||||
else if (plugin.Manifest.Status == PluginStatus.Superceded && !ChangePluginState(previousVersion, PluginStatus.Active))
|
||||
else if (plugin.Manifest.Status == PluginStatus.Superseded && !ChangePluginState(previousVersion, PluginStatus.Active))
|
||||
{
|
||||
_logger.LogError("Unable to supercede version {Version} of {Name}", previousVersion.Version, previousVersion.Name);
|
||||
}
|
||||
|
@ -543,7 +543,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
{
|
||||
DisposeTriggers();
|
||||
|
||||
var wassRunning = State == TaskState.Running;
|
||||
var wasRunning = State == TaskState.Running;
|
||||
var startTime = CurrentExecutionStartTime;
|
||||
|
||||
var token = CurrentCancellationTokenSource;
|
||||
@ -596,7 +596,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
}
|
||||
}
|
||||
|
||||
if (wassRunning)
|
||||
if (wasRunning)
|
||||
{
|
||||
OnTaskCompleted(startTime, DateTime.UtcNow, TaskCompletionStatus.Aborted, null);
|
||||
}
|
||||
|
@ -88,7 +88,7 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
// InstallPackage has it's own inner cancellation token, so only throw this if it's ours
|
||||
// InstallPackage has its own inner cancellation token, so only throw this if it's ours
|
||||
if (cancellationToken.IsCancellationRequested)
|
||||
{
|
||||
throw;
|
||||
|
@ -1303,7 +1303,7 @@ namespace Emby.Server.Implementations.Session
|
||||
|
||||
if (item is null)
|
||||
{
|
||||
_logger.LogError("A non-existent item Id {0} was passed into TranslateItemForPlayback", id);
|
||||
_logger.LogError("A nonexistent item Id {0} was passed into TranslateItemForPlayback", id);
|
||||
return Array.Empty<BaseItem>();
|
||||
}
|
||||
|
||||
@ -1356,7 +1356,7 @@ namespace Emby.Server.Implementations.Session
|
||||
|
||||
if (item is null)
|
||||
{
|
||||
_logger.LogError("A non-existent item Id {0} was passed into TranslateItemForInstantMix", id);
|
||||
_logger.LogError("A nonexistent item Id {0} was passed into TranslateItemForInstantMix", id);
|
||||
return new List<BaseItem>();
|
||||
}
|
||||
|
||||
|
@ -187,7 +187,7 @@ namespace Emby.Server.Implementations.Updates
|
||||
await _pluginManager.PopulateManifest(package, version.VersionNumber, plugin.Path, plugin.Manifest.Status).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
// Remove versions with a target ABI greater then the current application version.
|
||||
// Remove versions with a target ABI greater than the current application version.
|
||||
if (Version.TryParse(version.TargetAbi, out var targetAbi) && _applicationHost.ApplicationVersion < targetAbi)
|
||||
{
|
||||
package.Versions.RemoveAt(i);
|
||||
|
@ -1778,7 +1778,7 @@ public class DynamicHlsController : BaseJellyfinApiController
|
||||
}
|
||||
else if (state.AudioStream?.CodecTag is not null && state.AudioStream.CodecTag.Equals("ac-4", StringComparison.Ordinal))
|
||||
{
|
||||
// ac-4 audio tends to hava a super weird sample rate that will fail most encoders
|
||||
// ac-4 audio tends to have a super weird sample rate that will fail most encoders
|
||||
// force resample it to 48KHz
|
||||
args += " -ar 48000";
|
||||
}
|
||||
|
@ -634,10 +634,10 @@ public class UserLibraryController : BaseJellyfinApiController
|
||||
{
|
||||
if (item is Person)
|
||||
{
|
||||
var hasMetdata = !string.IsNullOrWhiteSpace(item.Overview) && item.HasImage(ImageType.Primary);
|
||||
var performFullRefresh = !hasMetdata && (DateTime.UtcNow - item.DateLastRefreshed).TotalDays >= 3;
|
||||
var hasMetadata = !string.IsNullOrWhiteSpace(item.Overview) && item.HasImage(ImageType.Primary);
|
||||
var performFullRefresh = !hasMetadata && (DateTime.UtcNow - item.DateLastRefreshed).TotalDays >= 3;
|
||||
|
||||
if (!hasMetdata)
|
||||
if (!hasMetadata)
|
||||
{
|
||||
var options = new MetadataRefreshOptions(new DirectoryService(_fileSystem))
|
||||
{
|
||||
|
@ -61,7 +61,7 @@ public class OpenLiveStreamDto
|
||||
public bool? EnableDirectPlay { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether to enale direct stream.
|
||||
/// Gets or sets a value indicating whether to enable direct stream.
|
||||
/// </summary>
|
||||
public bool? EnableDirectStream { get; set; }
|
||||
|
||||
|
@ -4,7 +4,7 @@ using MediaBrowser.Model.Dlna;
|
||||
namespace Jellyfin.Api.Models.MediaInfoDtos;
|
||||
|
||||
/// <summary>
|
||||
/// Plabyback info dto.
|
||||
/// Playback info dto.
|
||||
/// </summary>
|
||||
public class PlaybackInfoDto
|
||||
{
|
||||
|
@ -43,7 +43,7 @@ namespace Jellyfin.Data.Entities.Libraries
|
||||
/// Gets or sets the next item in the collection.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// TODO check if this properly updated Dependant and has the proper principal relationship.
|
||||
/// TODO check if this properly updated Dependent and has the proper principal relationship.
|
||||
/// </remarks>
|
||||
public virtual CollectionItem? Next { get; set; }
|
||||
|
||||
@ -51,7 +51,7 @@ namespace Jellyfin.Data.Entities.Libraries
|
||||
/// Gets or sets the previous item in the collection.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// TODO check if this properly updated Dependant and has the proper principal relationship.
|
||||
/// TODO check if this properly updated Dependent and has the proper principal relationship.
|
||||
/// </remarks>
|
||||
public virtual CollectionItem? Previous { get; set; }
|
||||
|
||||
|
@ -4,7 +4,7 @@ using System.Collections.Generic;
|
||||
namespace Jellyfin.Data.Entities.Libraries
|
||||
{
|
||||
/// <summary>
|
||||
/// An entity representing a a series.
|
||||
/// An entity representing a series.
|
||||
/// </summary>
|
||||
public class Series : LibraryItem
|
||||
{
|
||||
|
@ -66,7 +66,7 @@ public class TrickplayInfo
|
||||
public int Interval { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets peak bandwith usage in bits per second.
|
||||
/// Gets or sets peak bandwidth usage in bits per second.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Required.
|
||||
|
@ -2065,7 +2065,7 @@ public sealed class BaseItemRepository
|
||||
if (filter.IncludeInheritedTags.Length > 0)
|
||||
{
|
||||
// Episodes do not store inherit tags from their parents in the database, and the tag may be still required by the client.
|
||||
// In addtion to the tags for the episodes themselves, we need to manually query its parent (the season)'s tags as well.
|
||||
// In addition to the tags for the episodes themselves, we need to manually query its parent (the season)'s tags as well.
|
||||
if (includeTypes.Length == 1 && includeTypes.FirstOrDefault() is BaseItemKind.Episode)
|
||||
{
|
||||
baseQuery = baseQuery
|
||||
|
@ -268,7 +268,7 @@ public class JellyfinDbContext(DbContextOptions<JellyfinDbContext> options, ILog
|
||||
modelBuilder.SetDefaultDateTimeKind(DateTimeKind.Utc);
|
||||
base.OnModelCreating(modelBuilder);
|
||||
|
||||
// Configuration for each entity is in it's own class inside 'ModelConfiguration'.
|
||||
// Configuration for each entity is in its own class inside 'ModelConfiguration'.
|
||||
modelBuilder.ApplyConfigurationsFromAssembly(typeof(JellyfinDbContext).Assembly);
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ using Microsoft.Extensions.Logging;
|
||||
namespace Jellyfin.Server.Implementations.MediaSegments;
|
||||
|
||||
/// <summary>
|
||||
/// Manages media segments retrival and storage.
|
||||
/// Manages media segments retrieval and storage.
|
||||
/// </summary>
|
||||
public class MediaSegmentManager : IMediaSegmentManager
|
||||
{
|
||||
|
@ -46,7 +46,7 @@ public class TrickplayManager : ITrickplayManager
|
||||
/// </summary>
|
||||
/// <param name="logger">The logger.</param>
|
||||
/// <param name="mediaEncoder">The media encoder.</param>
|
||||
/// <param name="fileSystem">The file systen.</param>
|
||||
/// <param name="fileSystem">The file system.</param>
|
||||
/// <param name="encodingHelper">The encoding helper.</param>
|
||||
/// <param name="libraryManager">The library manager.</param>
|
||||
/// <param name="config">The server configuration manager.</param>
|
||||
|
@ -46,7 +46,7 @@ namespace Jellyfin.Server.Migrations.Routines
|
||||
public Guid Id => Guid.Parse("{EF103419-8451-40D8-9F34-D1A8E93A1679}");
|
||||
|
||||
/// <inheritdoc/>
|
||||
public string Name => "CreateLoggingConfigHeirarchy";
|
||||
public string Name => "CreateLoggingConfigHierarchy";
|
||||
|
||||
/// <inheritdoc/>
|
||||
public bool PerformOnNewInstall => false;
|
||||
|
@ -61,7 +61,7 @@ namespace MediaBrowser.Common.Configuration
|
||||
object GetConfiguration(string key);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the array of coniguration stores.
|
||||
/// Gets the array of configuration stores.
|
||||
/// </summary>
|
||||
/// <returns>Array of ConfigurationStore.</returns>
|
||||
ConfigurationStore[] GetConfigurationStores();
|
||||
|
@ -58,7 +58,7 @@ public interface IDeviceManager
|
||||
QueryResult<Device> GetDevices(DeviceQuery query);
|
||||
|
||||
/// <summary>
|
||||
/// Gets device infromation based on the provided query.
|
||||
/// Gets device information based on the provided query.
|
||||
/// </summary>
|
||||
/// <param name="query">The device query.</param>
|
||||
/// <returns>A <see cref="Task{QueryResult}"/> representing the retrieval of the device information.</returns>
|
||||
@ -109,7 +109,7 @@ public interface IDeviceManager
|
||||
DeviceOptionsDto? GetDeviceOptions(string deviceId);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the dto for client capabilites.
|
||||
/// Gets the dto for client capabilities.
|
||||
/// </summary>
|
||||
/// <param name="capabilities">The client capabilities.</param>
|
||||
/// <returns><see cref="ClientCapabilitiesDto"/> of the device.</returns>
|
||||
|
@ -1799,7 +1799,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
/// Adds a genre to the item.
|
||||
/// </summary>
|
||||
/// <param name="name">The name.</param>
|
||||
/// <exception cref="ArgumentNullException">Throwns if name is null.</exception>
|
||||
/// <exception cref="ArgumentNullException">Throws if name is null.</exception>
|
||||
public void AddGenre(string name)
|
||||
{
|
||||
ArgumentException.ThrowIfNullOrEmpty(name);
|
||||
|
@ -53,7 +53,7 @@ namespace MediaBrowser.Controller.Library
|
||||
IReadOnlyList<MediaAttachment> GetMediaAttachments(MediaAttachmentQuery query);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the playack media sources.
|
||||
/// Gets the playback media sources.
|
||||
/// </summary>
|
||||
/// <param name="item">Item to use.</param>
|
||||
/// <param name="user">User to use for operation.</param>
|
||||
|
@ -60,7 +60,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
private readonly Version _minFixedKernel60i915Hang = new Version(6, 0, 18);
|
||||
private readonly Version _minKernelVersionAmdVkFmtModifier = new Version(5, 15);
|
||||
|
||||
private readonly Version _minFFmpegImplictHwaccel = new Version(6, 0);
|
||||
private readonly Version _minFFmpegImplicitHwaccel = new Version(6, 0);
|
||||
private readonly Version _minFFmpegHwaUnsafeOutput = new Version(6, 0);
|
||||
private readonly Version _minFFmpegOclCuTonemapMode = new Version(5, 1, 3);
|
||||
private readonly Version _minFFmpegSvtAv1Params = new Version(5, 1);
|
||||
@ -631,7 +631,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(container))
|
||||
{
|
||||
// this may not work, but if the client is that broken we can not do anything better
|
||||
// this may not work, but if the client is that broken we cannot do anything better
|
||||
return "aac";
|
||||
}
|
||||
|
||||
@ -3649,8 +3649,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
var subH = state.SubtitleStream?.Height;
|
||||
|
||||
var rotation = state.VideoStream?.Rotation ?? 0;
|
||||
var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doCuTranspose = !string.IsNullOrEmpty(tranposeDir) && _mediaEncoder.SupportsFilter("transpose_cuda");
|
||||
var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doCuTranspose = !string.IsNullOrEmpty(transposeDir) && _mediaEncoder.SupportsFilter("transpose_cuda");
|
||||
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || (isNvDecoder && doCuTranspose));
|
||||
var swpInW = swapWAndH ? inH : inW;
|
||||
var swpInH = swapWAndH ? inW : inH;
|
||||
@ -3696,7 +3696,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
// hw transpose
|
||||
if (doCuTranspose)
|
||||
{
|
||||
mainFilters.Add($"transpose_cuda=dir={tranposeDir}");
|
||||
mainFilters.Add($"transpose_cuda=dir={transposeDir}");
|
||||
}
|
||||
|
||||
var isRext = IsVideoStreamHevcRext(state);
|
||||
@ -3856,8 +3856,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
var subH = state.SubtitleStream?.Height;
|
||||
|
||||
var rotation = state.VideoStream?.Rotation ?? 0;
|
||||
var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doOclTranspose = !string.IsNullOrEmpty(tranposeDir)
|
||||
var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doOclTranspose = !string.IsNullOrEmpty(transposeDir)
|
||||
&& _mediaEncoder.SupportsFilterWithOption(FilterOptionType.TransposeOpenclReversal);
|
||||
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || (isD3d11vaDecoder && doOclTranspose));
|
||||
var swpInW = swapWAndH ? inH : inW;
|
||||
@ -3901,12 +3901,12 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
// map from d3d11va to opencl via d3d11-opencl interop.
|
||||
mainFilters.Add("hwmap=derive_device=opencl:mode=read");
|
||||
|
||||
// hw deint <= TODO: finsh the 'yadif_opencl' filter
|
||||
// hw deint <= TODO: finish the 'yadif_opencl' filter
|
||||
|
||||
// hw transpose
|
||||
if (doOclTranspose)
|
||||
{
|
||||
mainFilters.Add($"transpose_opencl=dir={tranposeDir}");
|
||||
mainFilters.Add($"transpose_opencl=dir={transposeDir}");
|
||||
}
|
||||
|
||||
var outFormat = doOclTonemap ? string.Empty : "nv12";
|
||||
@ -4097,8 +4097,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
var subH = state.SubtitleStream?.Height;
|
||||
|
||||
var rotation = state.VideoStream?.Rotation ?? 0;
|
||||
var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doVppTranspose = !string.IsNullOrEmpty(tranposeDir);
|
||||
var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doVppTranspose = !string.IsNullOrEmpty(transposeDir);
|
||||
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || ((isD3d11vaDecoder || isQsvDecoder) && doVppTranspose));
|
||||
var swpInW = swapWAndH ? inH : inW;
|
||||
var swpInH = swapWAndH ? inW : inH;
|
||||
@ -4191,7 +4191,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
|
||||
if (!string.IsNullOrEmpty(hwScaleFilter) && doVppTranspose)
|
||||
{
|
||||
hwScaleFilter += $":transpose={tranposeDir}";
|
||||
hwScaleFilter += $":transpose={transposeDir}";
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(hwScaleFilter) && isMjpegEncoder)
|
||||
@ -4384,8 +4384,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
var subH = state.SubtitleStream?.Height;
|
||||
|
||||
var rotation = state.VideoStream?.Rotation ?? 0;
|
||||
var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doVppTranspose = !string.IsNullOrEmpty(tranposeDir);
|
||||
var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doVppTranspose = !string.IsNullOrEmpty(transposeDir);
|
||||
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || ((isVaapiDecoder || isQsvDecoder) && doVppTranspose));
|
||||
var swpInW = swapWAndH ? inH : inW;
|
||||
var swpInH = swapWAndH ? inW : inH;
|
||||
@ -4445,7 +4445,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
// hw transpose(vaapi vpp)
|
||||
if (isVaapiDecoder && doVppTranspose)
|
||||
{
|
||||
mainFilters.Add($"transpose_vaapi=dir={tranposeDir}");
|
||||
mainFilters.Add($"transpose_vaapi=dir={transposeDir}");
|
||||
}
|
||||
|
||||
var outFormat = doTonemap ? (((isQsvDecoder && doVppTranspose) || isRext) ? "p010" : string.Empty) : "nv12";
|
||||
@ -4455,7 +4455,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
|
||||
if (!string.IsNullOrEmpty(hwScaleFilter) && isQsvDecoder && doVppTranspose)
|
||||
{
|
||||
hwScaleFilter += $":transpose={tranposeDir}";
|
||||
hwScaleFilter += $":transpose={transposeDir}";
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(hwScaleFilter) && isMjpegEncoder)
|
||||
@ -4715,8 +4715,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
var subH = state.SubtitleStream?.Height;
|
||||
|
||||
var rotation = state.VideoStream?.Rotation ?? 0;
|
||||
var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doVaVppTranspose = !string.IsNullOrEmpty(tranposeDir);
|
||||
var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doVaVppTranspose = !string.IsNullOrEmpty(transposeDir);
|
||||
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || (isVaapiDecoder && doVaVppTranspose));
|
||||
var swpInW = swapWAndH ? inH : inW;
|
||||
var swpInH = swapWAndH ? inW : inH;
|
||||
@ -4771,7 +4771,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
// hw transpose
|
||||
if (doVaVppTranspose)
|
||||
{
|
||||
mainFilters.Add($"transpose_vaapi=dir={tranposeDir}");
|
||||
mainFilters.Add($"transpose_vaapi=dir={transposeDir}");
|
||||
}
|
||||
|
||||
var outFormat = doTonemap ? (isRext ? "p010" : string.Empty) : "nv12";
|
||||
@ -4948,8 +4948,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
|| string.Equals(state.SubtitleStream.Codec, "ssa", StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
var rotation = state.VideoStream?.Rotation ?? 0;
|
||||
var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doVkTranspose = isVaapiDecoder && !string.IsNullOrEmpty(tranposeDir);
|
||||
var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doVkTranspose = isVaapiDecoder && !string.IsNullOrEmpty(transposeDir);
|
||||
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || (isVaapiDecoder && doVkTranspose));
|
||||
var swpInW = swapWAndH ? inH : inW;
|
||||
var swpInH = swapWAndH ? inW : inH;
|
||||
@ -5042,13 +5042,13 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
// vk transpose
|
||||
if (doVkTranspose)
|
||||
{
|
||||
if (string.Equals(tranposeDir, "reversal", StringComparison.OrdinalIgnoreCase))
|
||||
if (string.Equals(transposeDir, "reversal", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
mainFilters.Add("flip_vulkan");
|
||||
}
|
||||
else
|
||||
{
|
||||
mainFilters.Add($"transpose_vulkan=dir={tranposeDir}");
|
||||
mainFilters.Add($"transpose_vulkan=dir={transposeDir}");
|
||||
}
|
||||
}
|
||||
|
||||
@ -5416,8 +5416,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
var usingHwSurface = isVtDecoder && (_mediaEncoder.EncoderVersion >= _minFFmpegWorkingVtHwSurface);
|
||||
|
||||
var rotation = state.VideoStream?.Rotation ?? 0;
|
||||
var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doVtTranspose = !string.IsNullOrEmpty(tranposeDir) && _mediaEncoder.SupportsFilter("transpose_vt");
|
||||
var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doVtTranspose = !string.IsNullOrEmpty(transposeDir) && _mediaEncoder.SupportsFilter("transpose_vt");
|
||||
var swapWAndH = Math.Abs(rotation) == 90 && doVtTranspose;
|
||||
var swpInW = swapWAndH ? inH : inW;
|
||||
var swpInH = swapWAndH ? inW : inH;
|
||||
@ -5461,7 +5461,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
// hw transpose
|
||||
if (doVtTranspose)
|
||||
{
|
||||
mainFilters.Add($"transpose_vt=dir={tranposeDir}");
|
||||
mainFilters.Add($"transpose_vt=dir={transposeDir}");
|
||||
}
|
||||
|
||||
if (doVtTonemap)
|
||||
@ -5624,8 +5624,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
var subH = state.SubtitleStream?.Height;
|
||||
|
||||
var rotation = state.VideoStream?.Rotation ?? 0;
|
||||
var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doRkVppTranspose = !string.IsNullOrEmpty(tranposeDir);
|
||||
var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
||||
var doRkVppTranspose = !string.IsNullOrEmpty(transposeDir);
|
||||
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || (isRkmppDecoder && doRkVppTranspose));
|
||||
var swpInW = swapWAndH ? inH : inW;
|
||||
var swpInH = swapWAndH ? inW : inH;
|
||||
@ -5696,7 +5696,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
|
||||
if (!string.IsNullOrEmpty(hwScaleFilter) && doRkVppTranspose)
|
||||
{
|
||||
hwScaleFilter += $":transpose={tranposeDir}";
|
||||
hwScaleFilter += $":transpose={transposeDir}";
|
||||
}
|
||||
|
||||
// try enabling AFBC to save DDR bandwidth
|
||||
@ -6170,7 +6170,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
var ffmpegVersion = _mediaEncoder.EncoderVersion;
|
||||
|
||||
// Set the av1 codec explicitly to trigger hw accelerator, otherwise libdav1d will be used.
|
||||
var isAv1 = ffmpegVersion < _minFFmpegImplictHwaccel
|
||||
var isAv1 = ffmpegVersion < _minFFmpegImplicitHwaccel
|
||||
&& string.Equals(videoCodec, "av1", StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
// Allow profile mismatch if decoding H.264 baseline with d3d11va and vaapi hwaccels.
|
||||
|
@ -46,20 +46,20 @@ public interface IMediaSegmentManager
|
||||
Task DeleteSegmentAsync(Guid segmentId);
|
||||
|
||||
/// <summary>
|
||||
/// Obtains all segments accociated with the itemId.
|
||||
/// Obtains all segments associated with the itemId.
|
||||
/// </summary>
|
||||
/// <param name="itemId">The id of the <see cref="BaseItem"/>.</param>
|
||||
/// <param name="typeFilter">filteres all media segments of the given type to be included. If null all types are included.</param>
|
||||
/// <param name="filterByProvider">When set filteres the segments to only return those that which providers are currently enabled on their library.</param>
|
||||
/// <param name="typeFilter">filters all media segments of the given type to be included. If null all types are included.</param>
|
||||
/// <param name="filterByProvider">When set filters the segments to only return those that which providers are currently enabled on their library.</param>
|
||||
/// <returns>An enumerator of <see cref="MediaSegmentDto"/>'s.</returns>
|
||||
Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(Guid itemId, IEnumerable<MediaSegmentType>? typeFilter, bool filterByProvider = true);
|
||||
|
||||
/// <summary>
|
||||
/// Obtains all segments accociated with the itemId.
|
||||
/// Obtains all segments associated with the itemId.
|
||||
/// </summary>
|
||||
/// <param name="item">The <see cref="BaseItem"/>.</param>
|
||||
/// <param name="typeFilter">filteres all media segments of the given type to be included. If null all types are included.</param>
|
||||
/// <param name="filterByProvider">When set filteres the segments to only return those that which providers are currently enabled on their library.</param>
|
||||
/// <param name="typeFilter">filters all media segments of the given type to be included. If null all types are included.</param>
|
||||
/// <param name="filterByProvider">When set filters the segments to only return those that which providers are currently enabled on their library.</param>
|
||||
/// <returns>An enumerator of <see cref="MediaSegmentDto"/>'s.</returns>
|
||||
Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(BaseItem item, IEnumerable<MediaSegmentType>? typeFilter, bool filterByProvider = true);
|
||||
|
@ -24,9 +24,9 @@ namespace MediaBrowser.Controller.Net
|
||||
DateTime LastActivityDate { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the date of last Keeplive received.
|
||||
/// Gets or sets the date of last Keepalive received.
|
||||
/// </summary>
|
||||
/// <value>The date of last Keeplive received.</value>
|
||||
/// <value>The date of last Keepalive received.</value>
|
||||
DateTime LastKeepAliveDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
@ -5,7 +5,7 @@ using MediaBrowser.Controller.Library;
|
||||
namespace MediaBrowser.Controller.Sorting
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a BaseItem comparer that requires a User to perform it's comparison.
|
||||
/// Represents a BaseItem comparer that requires a User to perform its comparison.
|
||||
/// </summary>
|
||||
public interface IUserBaseItemComparer : IBaseItemComparer
|
||||
{
|
||||
|
@ -51,7 +51,7 @@ public class StreamState : EncodingJobInfo, IDisposable
|
||||
public VideoRequestDto? VideoRequest => Request as VideoRequestDto;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the direct stream provicer.
|
||||
/// Gets or sets the direct stream provider.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Deprecated.
|
||||
|
@ -320,7 +320,7 @@ namespace MediaBrowser.LocalMetadata.Images
|
||||
{
|
||||
AddImage(files, images, name + "-fanart", ImageType.Backdrop, imagePrefix);
|
||||
|
||||
// Support without the prefix if it's in it's own folder
|
||||
// Support without the prefix if it's in its own folder
|
||||
if (!isInMixedFolder)
|
||||
{
|
||||
AddImage(files, images, name + "-fanart", ImageType.Backdrop);
|
||||
|
@ -15,7 +15,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="BoxSetXmlParser"/> class.
|
||||
/// </summary>
|
||||
/// <param name="logger">Instance of the <see cref="ILogger{BoxSetXmlParset}"/> interface.</param>
|
||||
/// <param name="logger">Instance of the <see cref="ILogger{BoxSetXmlParser}"/> interface.</param>
|
||||
/// <param name="providerManager">Instance of the <see cref="IProviderManager"/> interface.</param>
|
||||
public BoxSetXmlParser(ILogger<BoxSetXmlParser> logger, IProviderManager providerManager)
|
||||
: base(logger, providerManager)
|
||||
|
@ -84,7 +84,7 @@ public class BdInfoDirectoryInfo : IDirectoryInfo
|
||||
/// Gets the files matching a pattern.
|
||||
/// </summary>
|
||||
/// <param name="searchPattern">The search pattern.</param>
|
||||
/// <returns>All files of the directory matchign the search pattern.</returns>
|
||||
/// <returns>All files of the directory matching the search pattern.</returns>
|
||||
public IFileInfo[] GetFiles(string searchPattern)
|
||||
{
|
||||
return _fileSystem.GetFiles(_impl.FullName, new[] { searchPattern }, false, false)
|
||||
@ -97,7 +97,7 @@ public class BdInfoDirectoryInfo : IDirectoryInfo
|
||||
/// </summary>
|
||||
/// <param name="searchPattern">The search pattern.</param>
|
||||
/// <param name="searchOption">The search optin.</param>
|
||||
/// <returns>All files of the directory matchign the search pattern and options.</returns>
|
||||
/// <returns>All files of the directory matching the search pattern and options.</returns>
|
||||
public IFileInfo[] GetFiles(string searchPattern, SearchOption searchOption)
|
||||
{
|
||||
return _fileSystem.GetFiles(
|
||||
|
@ -1101,14 +1101,14 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||
|
||||
private void StopProcesses()
|
||||
{
|
||||
List<ProcessWrapper> proceses;
|
||||
List<ProcessWrapper> processes;
|
||||
lock (_runningProcessesLock)
|
||||
{
|
||||
proceses = _runningProcesses.ToList();
|
||||
processes = _runningProcesses.ToList();
|
||||
_runningProcesses.Clear();
|
||||
}
|
||||
|
||||
foreach (var process in proceses)
|
||||
foreach (var process in processes)
|
||||
{
|
||||
if (!process.HasExited)
|
||||
{
|
||||
|
@ -24,7 +24,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
||||
|
||||
if (result.Streams is not null)
|
||||
{
|
||||
// Convert all dictionaries to case insensitive
|
||||
// Convert all dictionaries to case-insensitive
|
||||
foreach (var stream in result.Streams)
|
||||
{
|
||||
if (stream.Tags is not null)
|
||||
@ -70,7 +70,7 @@ namespace MediaBrowser.MediaEncoding.Probing
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Converts a dictionary to case insensitive.
|
||||
/// Converts a dictionary to case-insensitive.
|
||||
/// </summary>
|
||||
/// <param name="dict">The dict.</param>
|
||||
/// <returns>Dictionary{System.StringSystem.String}.</returns>
|
||||
|
@ -83,9 +83,9 @@ public class ServerConfiguration : BaseApplicationConfiguration
|
||||
public bool QuickConnectAvailable { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether [enable case sensitive item ids].
|
||||
/// Gets or sets a value indicating whether [enable case-sensitive item ids].
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if [enable case sensitive item ids]; otherwise, <c>false</c>.</value>
|
||||
/// <value><c>true</c> if [enable case-sensitive item ids]; otherwise, <c>false</c>.</value>
|
||||
public bool EnableCaseSensitiveItemIds { get; set; } = true;
|
||||
|
||||
public bool DisableLiveTvChannelUserDataName { get; set; } = true;
|
||||
@ -249,7 +249,7 @@ public class ServerConfiguration : BaseApplicationConfiguration
|
||||
public bool AllowClientLogUpload { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the dummy chapter duration in seconds, use 0 (zero) or less to disable generation alltogether.
|
||||
/// Gets or sets the dummy chapter duration in seconds, use 0 (zero) or less to disable generation altogether.
|
||||
/// </summary>
|
||||
/// <value>The dummy chapters duration.</value>
|
||||
public int DummyChapterDuration { get; set; }
|
||||
|
@ -25,8 +25,8 @@ namespace MediaBrowser.Model.Dlna
|
||||
/// <param name="videoFramerate">The framerate.</param>
|
||||
/// <param name="packetLength">The packet length.</param>
|
||||
/// <param name="timestamp">The <see cref="TransportStreamTimestamp"/>.</param>
|
||||
/// <param name="isAnamorphic">A value indicating whether tthe video is anamorphic.</param>
|
||||
/// <param name="isInterlaced">A value indicating whether tthe video is interlaced.</param>
|
||||
/// <param name="isAnamorphic">A value indicating whether the video is anamorphic.</param>
|
||||
/// <param name="isInterlaced">A value indicating whether the video is interlaced.</param>
|
||||
/// <param name="refFrames">The reference frames.</param>
|
||||
/// <param name="numVideoStreams">The number of video streams.</param>
|
||||
/// <param name="numAudioStreams">The number of audio streams.</param>
|
||||
|
@ -59,7 +59,7 @@ public class DirectPlayProfile
|
||||
/// <returns>True if supported.</returns>
|
||||
public bool SupportsAudioCodec(string? codec)
|
||||
{
|
||||
// Video profiles can have audio codec restrictions too, therefore incude Video as valid type.
|
||||
// Video profiles can have audio codec restrictions too, therefore include Video as valid type.
|
||||
return (Type == DlnaProfileType.Audio || Type == DlnaProfileType.Video) && ContainerHelper.ContainsContainer(AudioCodec, codec);
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ namespace MediaBrowser.Model.Entities;
|
||||
public enum HardwareAccelerationType
|
||||
{
|
||||
/// <summary>
|
||||
/// Software accelleration.
|
||||
/// Software acceleration.
|
||||
/// </summary>
|
||||
none = 0,
|
||||
|
||||
|
@ -27,7 +27,7 @@ namespace MediaBrowser.Model.Entities
|
||||
Tvdb = 4,
|
||||
|
||||
/// <summary>
|
||||
/// The tvcom providerd.
|
||||
/// The tvcom provider.
|
||||
/// </summary>
|
||||
Tvcom = 5,
|
||||
|
||||
|
@ -11,7 +11,7 @@ namespace MediaBrowser.Model.Entities;
|
||||
public static class ProviderIdsExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Case insensitive dictionary of <see cref="MetadataProvider"/> string representation.
|
||||
/// Case-insensitive dictionary of <see cref="MetadataProvider"/> string representation.
|
||||
/// </summary>
|
||||
private static readonly Dictionary<string, string> _metadataProviderEnumDictionary =
|
||||
Enum.GetValues<MetadataProvider>()
|
||||
@ -107,7 +107,7 @@ public static class ProviderIdsExtensions
|
||||
/// <param name="instance">The instance.</param>
|
||||
/// <param name="name">The name, this should not contain a '=' character.</param>
|
||||
/// <param name="value">The value.</param>
|
||||
/// <remarks>Due to how deserialization from the database works the name can not contain '='.</remarks>
|
||||
/// <remarks>Due to how deserialization from the database works the name cannot contain '='.</remarks>
|
||||
/// <returns><c>true</c> if the provider id got set successfully; otherwise, <c>false</c>.</returns>
|
||||
public static bool TrySetProviderId(this IHasProviderIds instance, string? name, string? value)
|
||||
{
|
||||
@ -153,7 +153,7 @@ public static class ProviderIdsExtensions
|
||||
/// <param name="instance">The instance.</param>
|
||||
/// <param name="name">The name, this should not contain a '=' character.</param>
|
||||
/// <param name="value">The value.</param>
|
||||
/// <remarks>Due to how deserialization from the database works the name can not contain '='.</remarks>
|
||||
/// <remarks>Due to how deserialization from the database works the name cannot contain '='.</remarks>
|
||||
public static void SetProviderId(this IHasProviderIds instance, string name, string value)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(instance);
|
||||
|
@ -52,7 +52,7 @@ namespace MediaBrowser.Model.Globalization
|
||||
/// <summary>
|
||||
/// Gets the localization options.
|
||||
/// </summary>
|
||||
/// <returns><see cref="IEnumerable{LocalizatonOption}" />.</returns>
|
||||
/// <returns><see cref="IEnumerable{LocalizationOption}" />.</returns>
|
||||
IEnumerable<LocalizationOption> GetLocalizationOptions();
|
||||
|
||||
/// <summary>
|
||||
|
@ -145,7 +145,7 @@ namespace MediaBrowser.Model.IO
|
||||
/// Gets the directories.
|
||||
/// </summary>
|
||||
/// <param name="path">The path.</param>
|
||||
/// <param name="recursive">If set to <c>true</c> also searches in subdirectiories.</param>
|
||||
/// <param name="recursive">If set to <c>true</c> also searches in subdirectories.</param>
|
||||
/// <returns>All found directories.</returns>
|
||||
IEnumerable<FileSystemMetadata> GetDirectories(string path, bool recursive = false);
|
||||
|
||||
@ -153,7 +153,7 @@ namespace MediaBrowser.Model.IO
|
||||
/// Gets the files.
|
||||
/// </summary>
|
||||
/// <param name="path">The path in which to search.</param>
|
||||
/// <param name="recursive">If set to <c>true</c> also searches in subdirectiories.</param>
|
||||
/// <param name="recursive">If set to <c>true</c> also searches in subdirectories.</param>
|
||||
/// <returns>All found files.</returns>
|
||||
IEnumerable<FileSystemMetadata> GetFiles(string path, bool recursive = false);
|
||||
|
||||
|
@ -34,7 +34,12 @@ namespace MediaBrowser.Model.Plugins
|
||||
Malfunctioned = -3,
|
||||
|
||||
/// <summary>
|
||||
/// This plugin has been superceded by another version.
|
||||
/// This plugin has been superseded by another version.
|
||||
/// </summary>
|
||||
Superseded = -4,
|
||||
|
||||
/// <summary>
|
||||
/// [DEPRECATED] See Superseded.
|
||||
/// </summary>
|
||||
Superceded = -4,
|
||||
|
||||
|
@ -5,7 +5,7 @@ using MediaBrowser.Model.Entities;
|
||||
namespace MediaBrowser.Model.Session;
|
||||
|
||||
/// <summary>
|
||||
/// Class holding information on a runnning transcode.
|
||||
/// Class holding information on a running transcode.
|
||||
/// </summary>
|
||||
public class TranscodingInfo
|
||||
{
|
||||
|
@ -47,7 +47,7 @@ namespace MediaBrowser.Model.System
|
||||
/// Gets or sets a value indicating whether the startup wizard is completed.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Nullable for OpenAPI specification only to retain backwards compatibility in apiclients.
|
||||
/// Nullable for OpenAPI specification only to retain backwards compatibility in api clients.
|
||||
/// </remarks>
|
||||
/// <value>The startup completion status.</value>]
|
||||
public bool? StartupWizardCompleted { get; set; }
|
||||
|
@ -73,7 +73,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||
protected IProviderManager ProviderManager { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether URLs after a closing XML tag are supporrted.
|
||||
/// Gets a value indicating whether URLs after a closing XML tag are supported.
|
||||
/// </summary>
|
||||
protected virtual bool SupportsUrlAfterClosingXmlTag => false;
|
||||
|
||||
@ -672,7 +672,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||
}
|
||||
|
||||
var fileSystemMetadata = _directoryService.GetFile(val);
|
||||
// non existing file returns null
|
||||
// nonexistent file returns null
|
||||
if (fileSystemMetadata is null || !fileSystemMetadata.Exists)
|
||||
{
|
||||
Logger.LogWarning("Artwork file {Path} specified in nfo file for {ItemName} does not exist.", uri, itemResult.Item.Name);
|
||||
|
@ -13,7 +13,7 @@ using Microsoft.Extensions.Logging;
|
||||
namespace MediaBrowser.XbmcMetadata.Savers
|
||||
{
|
||||
/// <summary>
|
||||
/// Nfo saver for artsist.
|
||||
/// Nfo saver for artist.
|
||||
/// </summary>
|
||||
public class ArtistNfoSaver : BaseNfoSaver
|
||||
{
|
||||
|
@ -138,7 +138,7 @@ namespace Jellyfin.LiveTv.Listings
|
||||
var programsInfo = new List<ProgramInfo>();
|
||||
foreach (ProgramDto schedule in dailySchedules.SelectMany(d => d.Programs))
|
||||
{
|
||||
// _logger.LogDebug("Proccesing Schedule for statio ID " + stationID +
|
||||
// _logger.LogDebug("Processing Schedule for station ID " + stationID +
|
||||
// " which corresponds to channel " + channelNumber + " and program id " +
|
||||
// schedule.ProgramId + " which says it has images? " +
|
||||
// programDict[schedule.ProgramId].hasImageArtwork);
|
||||
|
@ -23,7 +23,7 @@ namespace Jellyfin.LiveTv.Listings.SchedulesDirectDtos
|
||||
/// Gets or sets the provider callsign.
|
||||
/// </summary>
|
||||
[JsonPropertyName("providerCallsign")]
|
||||
public string? ProvderCallsign { get; set; }
|
||||
public string? ProviderCallsign { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the logical channel number.
|
||||
|
@ -64,7 +64,7 @@ namespace Jellyfin.LiveTv.Listings.SchedulesDirectDtos
|
||||
public IReadOnlyList<MetadataProgramsDto> Metadata { get; set; } = Array.Empty<MetadataProgramsDto>();
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the list of content raitings.
|
||||
/// Gets or sets the list of content ratings.
|
||||
/// </summary>
|
||||
[JsonPropertyName("contentRating")]
|
||||
public IReadOnlyList<ContentRatingDto> ContentRating { get; set; } = Array.Empty<ContentRatingDto>();
|
||||
|
@ -973,7 +973,7 @@ public class NetworkManager : INetworkManager, IDisposable
|
||||
bindPreference = string.Empty;
|
||||
int? port = null;
|
||||
|
||||
// Only consider subnets including the source IP, prefering specific overrides
|
||||
// Only consider subnets including the source IP, preferring specific overrides
|
||||
List<PublishedServerUriOverride> validPublishedServerUrls;
|
||||
if (!isInExternalSubnet)
|
||||
{
|
||||
|
@ -92,7 +92,7 @@ namespace Jellyfin.Extensions.Tests.Json.Converters
|
||||
Value = [GeneralCommandType.MoveUp, GeneralCommandType.MoveDown]
|
||||
};
|
||||
|
||||
var value = JsonSerializer.Deserialize<GenericBodyArrayModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp,TotallyNotAVallidCommand,MoveDown"" }", _jsonOptions);
|
||||
var value = JsonSerializer.Deserialize<GenericBodyArrayModel<GeneralCommandType>>(@"{ ""Value"": ""MoveUp,TotallyNotAValidCommand,MoveDown"" }", _jsonOptions);
|
||||
Assert.Equal(desiredValue.Value, value?.Value);
|
||||
}
|
||||
|
||||
|
@ -6,8 +6,8 @@ namespace Jellyfin.Extensions.Tests
|
||||
public class StringExtensionsTests
|
||||
{
|
||||
[Theory]
|
||||
[InlineData("", "")] // Identity edge-case (no diactritics)
|
||||
[InlineData("Indiana Jones", "Indiana Jones")] // Identity (no diactritics)
|
||||
[InlineData("", "")] // Identity edge-case (no diacritics)
|
||||
[InlineData("Indiana Jones", "Indiana Jones")] // Identity (no diacritics)
|
||||
[InlineData("a\ud800b", "ab")] // Invalid UTF-16 char stripping
|
||||
[InlineData("åäö", "aao")] // Issue #7484
|
||||
[InlineData("Jön", "Jon")] // Issue #7484
|
||||
@ -25,8 +25,8 @@ namespace Jellyfin.Extensions.Tests
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("", false)] // Identity edge-case (no diactritics)
|
||||
[InlineData("Indiana Jones", false)] // Identity (no diactritics)
|
||||
[InlineData("", false)] // Identity edge-case (no diacritics)
|
||||
[InlineData("Indiana Jones", false)] // Identity (no diacritics)
|
||||
[InlineData("a\ud800b", true)] // Invalid UTF-16 char stripping
|
||||
[InlineData("åäö", true)] // Issue #7484
|
||||
[InlineData("Jön", true)] // Issue #7484
|
||||
|
@ -232,7 +232,7 @@ namespace Jellyfin.LiveTv.Tests.SchedulesDirect
|
||||
Assert.Equal(2, channelDto!.Map.Count);
|
||||
Assert.Equal("24326", channelDto.Map[0].StationId);
|
||||
Assert.Equal("001", channelDto.Map[0].Channel);
|
||||
Assert.Equal("BBC ONE South", channelDto.Map[0].ProvderCallsign);
|
||||
Assert.Equal("BBC ONE South", channelDto.Map[0].ProviderCallsign);
|
||||
Assert.Equal("1", channelDto.Map[0].LogicalChannelNumber);
|
||||
Assert.Equal("providerCallsign", channelDto.Map[0].MatchType);
|
||||
}
|
||||
|
@ -15,17 +15,17 @@ public class TvParserHelpersTest
|
||||
[InlineData("Unreleased", SeriesStatus.Unreleased)]
|
||||
public void SeriesStatusParserTest_Valid(string statusString, SeriesStatus? status)
|
||||
{
|
||||
var successful = TvParserHelpers.TryParseSeriesStatus(statusString, out var parsered);
|
||||
var successful = TvParserHelpers.TryParseSeriesStatus(statusString, out var parsed);
|
||||
Assert.True(successful);
|
||||
Assert.Equal(status, parsered);
|
||||
Assert.Equal(status, parsed);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("XXX")]
|
||||
public void SeriesStatusParserTest_InValid(string statusString)
|
||||
{
|
||||
var successful = TvParserHelpers.TryParseSeriesStatus(statusString, out var parsered);
|
||||
var successful = TvParserHelpers.TryParseSeriesStatus(statusString, out var parsed);
|
||||
Assert.False(successful);
|
||||
Assert.Null(parsered);
|
||||
Assert.Null(parsed);
|
||||
}
|
||||
}
|
||||
|
@ -238,7 +238,7 @@ namespace Jellyfin.Networking.Tests
|
||||
// User on external network, internal binding only - so assumption is a proxy forward, return external override.
|
||||
[InlineData("jellyfin.org", "192.168.1.0/24", "eth16", false, "external=http://helloworld.com", "http://helloworld.com")]
|
||||
|
||||
// User on external network, no binding - so result is the 1st external which is overriden.
|
||||
// User on external network, no binding - so result is the 1st external which is overridden.
|
||||
[InlineData("jellyfin.org", "192.168.1.0/24", "", false, "external=http://helloworld.com", "http://helloworld.com")]
|
||||
|
||||
// User assumed to be internal, no binding - so result is the 1st matching interface.
|
||||
|
@ -31,7 +31,7 @@ namespace Jellyfin.Providers.Tests.Omdb
|
||||
[Theory]
|
||||
[InlineData("\"N/A\"")]
|
||||
[InlineData("null")]
|
||||
public void Deserialization_To_Nullable_Int_Shoud_Be_Null(string input)
|
||||
public void Deserialization_To_Nullable_Int_Should_Be_Null(string input)
|
||||
{
|
||||
var result = JsonSerializer.Deserialize<int?>(input, _options);
|
||||
Assert.Null(result);
|
||||
@ -49,7 +49,7 @@ namespace Jellyfin.Providers.Tests.Omdb
|
||||
[Theory]
|
||||
[InlineData("\"N/A\"")]
|
||||
[InlineData("null")]
|
||||
public void Deserialization_To_Nullable_String_Shoud_Be_Null(string input)
|
||||
public void Deserialization_To_Nullable_String_Should_Be_Null(string input)
|
||||
{
|
||||
var result = JsonSerializer.Deserialize<string?>(input, _options);
|
||||
Assert.Null(result);
|
||||
|
@ -540,7 +540,7 @@
|
||||
{
|
||||
"guid": "022a3003-993f-45f1-8565-87d12af2e12a",
|
||||
"name": "InfuseSync",
|
||||
"description": "This plugin will track all media changes while any Infuse clients are offline to decrease sync times when logging back in to your server.",
|
||||
"description": "This plugin will track all media changes while any Infuse clients are offline to decrease sync times when logging back into your server.",
|
||||
"overview": "Blazing fast indexing for Infuse",
|
||||
"owner": "Firecore LLC",
|
||||
"category": "General",
|
||||
|
@ -14,7 +14,7 @@ namespace Jellyfin.Server.Integration.Tests.Controllers
|
||||
public sealed class DashboardControllerTests : IClassFixture<JellyfinApplicationFactory>
|
||||
{
|
||||
private readonly JellyfinApplicationFactory _factory;
|
||||
private readonly JsonSerializerOptions _jsonOpions = JsonDefaults.Options;
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.Options;
|
||||
private static string? _accessToken;
|
||||
|
||||
public DashboardControllerTests(JellyfinApplicationFactory factory)
|
||||
@ -65,7 +65,7 @@ namespace Jellyfin.Server.Integration.Tests.Controllers
|
||||
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
|
||||
_ = await response.Content.ReadFromJsonAsync<ConfigurationPageInfo[]>(_jsonOpions);
|
||||
_ = await response.Content.ReadFromJsonAsync<ConfigurationPageInfo[]>(_jsonOptions);
|
||||
// TODO: check content
|
||||
}
|
||||
|
||||
@ -81,7 +81,7 @@ namespace Jellyfin.Server.Integration.Tests.Controllers
|
||||
Assert.Equal(MediaTypeNames.Application.Json, response.Content.Headers.ContentType?.MediaType);
|
||||
Assert.Equal(Encoding.UTF8.BodyName, response.Content.Headers.ContentType?.CharSet);
|
||||
|
||||
var data = await response.Content.ReadFromJsonAsync<ConfigurationPageInfo[]>(_jsonOpions);
|
||||
var data = await response.Content.ReadFromJsonAsync<ConfigurationPageInfo[]>(_jsonOptions);
|
||||
Assert.NotNull(data);
|
||||
Assert.Empty(data);
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ public sealed class ItemsControllerTests : IClassFixture<JellyfinApplicationFact
|
||||
[Theory]
|
||||
[InlineData("Users/{0}/Items")]
|
||||
[InlineData("Users/{0}/Items/Resume")]
|
||||
public async Task GetUserItems_NonExistentUserId_NotFound(string format)
|
||||
public async Task GetUserItems_NonexistentUserId_NotFound(string format)
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
|
||||
|
@ -29,7 +29,7 @@ public sealed class LibraryControllerTests : IClassFixture<JellyfinApplicationFa
|
||||
[InlineData("Shows/{0}/Similar")]
|
||||
[InlineData("Movies/{0}/Similar")]
|
||||
[InlineData("Trailers/{0}/Similar")]
|
||||
public async Task Get_NonExistentItemId_NotFound(string format)
|
||||
public async Task Get_NonexistentItemId_NotFound(string format)
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
|
||||
@ -41,7 +41,7 @@ public sealed class LibraryControllerTests : IClassFixture<JellyfinApplicationFa
|
||||
[Theory]
|
||||
[InlineData("Items/{0}")]
|
||||
[InlineData("Items?ids={0}")]
|
||||
public async Task Delete_NonExistentItemId_Unauthorised(string format)
|
||||
public async Task Delete_NonexistentItemId_Unauthorised(string format)
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
|
||||
@ -52,7 +52,7 @@ public sealed class LibraryControllerTests : IClassFixture<JellyfinApplicationFa
|
||||
[Theory]
|
||||
[InlineData("Items/{0}")]
|
||||
[InlineData("Items?ids={0}")]
|
||||
public async Task Delete_NonExistentItemId_NotFound(string format)
|
||||
public async Task Delete_NonexistentItemId_NotFound(string format)
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
|
||||
|
@ -16,7 +16,7 @@ public class PlaystateControllerTests : IClassFixture<JellyfinApplicationFactory
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task DeleteMarkUnplayedItem_NonExistentUserId_NotFound()
|
||||
public async Task DeleteMarkUnplayedItem_NonexistentUserId_NotFound()
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
|
||||
@ -26,7 +26,7 @@ public class PlaystateControllerTests : IClassFixture<JellyfinApplicationFactory
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task PostMarkPlayedItem_NonExistentUserId_NotFound()
|
||||
public async Task PostMarkPlayedItem_NonexistentUserId_NotFound()
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
|
||||
@ -36,7 +36,7 @@ public class PlaystateControllerTests : IClassFixture<JellyfinApplicationFactory
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task DeleteMarkUnplayedItem_NonExistentItemId_NotFound()
|
||||
public async Task DeleteMarkUnplayedItem_NonexistentItemId_NotFound()
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
|
||||
@ -48,7 +48,7 @@ public class PlaystateControllerTests : IClassFixture<JellyfinApplicationFactory
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task PostMarkPlayedItem_NonExistentItemId_NotFound()
|
||||
public async Task PostMarkPlayedItem_NonexistentItemId_NotFound()
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
|
||||
|
@ -20,7 +20,7 @@ namespace Jellyfin.Server.Integration.Tests.Controllers
|
||||
private const string TestUsername = "testUser01";
|
||||
|
||||
private readonly JellyfinApplicationFactory _factory;
|
||||
private readonly JsonSerializerOptions _jsonOpions = JsonDefaults.Options;
|
||||
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.Options;
|
||||
private static string? _accessToken;
|
||||
private static Guid _testUserId = Guid.Empty;
|
||||
|
||||
@ -30,10 +30,10 @@ namespace Jellyfin.Server.Integration.Tests.Controllers
|
||||
}
|
||||
|
||||
private Task<HttpResponseMessage> CreateUserByName(HttpClient httpClient, CreateUserByName request)
|
||||
=> httpClient.PostAsJsonAsync("Users/New", request, _jsonOpions);
|
||||
=> httpClient.PostAsJsonAsync("Users/New", request, _jsonOptions);
|
||||
|
||||
private Task<HttpResponseMessage> UpdateUserPassword(HttpClient httpClient, Guid userId, UpdateUserPassword request)
|
||||
=> httpClient.PostAsJsonAsync("Users/" + userId.ToString("N", CultureInfo.InvariantCulture) + "/Password", request, _jsonOpions);
|
||||
=> httpClient.PostAsJsonAsync("Users/" + userId.ToString("N", CultureInfo.InvariantCulture) + "/Password", request, _jsonOptions);
|
||||
|
||||
[Fact]
|
||||
[Priority(-1)]
|
||||
@ -43,7 +43,7 @@ namespace Jellyfin.Server.Integration.Tests.Controllers
|
||||
|
||||
using var response = await client.GetAsync("Users/Public");
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
var users = await response.Content.ReadFromJsonAsync<UserDto[]>(_jsonOpions);
|
||||
var users = await response.Content.ReadFromJsonAsync<UserDto[]>(_jsonOptions);
|
||||
// User are hidden by default
|
||||
Assert.NotNull(users);
|
||||
Assert.Empty(users);
|
||||
@ -58,7 +58,7 @@ namespace Jellyfin.Server.Integration.Tests.Controllers
|
||||
|
||||
using var response = await client.GetAsync("Users");
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
var users = await response.Content.ReadFromJsonAsync<UserDto[]>(_jsonOpions);
|
||||
var users = await response.Content.ReadFromJsonAsync<UserDto[]>(_jsonOptions);
|
||||
Assert.NotNull(users);
|
||||
Assert.Single(users);
|
||||
Assert.False(users![0].HasConfiguredPassword);
|
||||
@ -90,7 +90,7 @@ namespace Jellyfin.Server.Integration.Tests.Controllers
|
||||
|
||||
using var response = await CreateUserByName(client, createRequest);
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
var user = await response.Content.ReadFromJsonAsync<UserDto>(_jsonOpions);
|
||||
var user = await response.Content.ReadFromJsonAsync<UserDto>(_jsonOptions);
|
||||
Assert.Equal(TestUsername, user!.Name);
|
||||
Assert.False(user.HasPassword);
|
||||
Assert.False(user.HasConfiguredPassword);
|
||||
@ -151,7 +151,7 @@ namespace Jellyfin.Server.Integration.Tests.Controllers
|
||||
Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);
|
||||
|
||||
var users = await JsonSerializer.DeserializeAsync<UserDto[]>(
|
||||
await client.GetStreamAsync("Users"), _jsonOpions);
|
||||
await client.GetStreamAsync("Users"), _jsonOptions);
|
||||
var user = users!.First(x => x.Id.Equals(_testUserId));
|
||||
Assert.True(user.HasPassword);
|
||||
Assert.True(user.HasConfiguredPassword);
|
||||
@ -174,7 +174,7 @@ namespace Jellyfin.Server.Integration.Tests.Controllers
|
||||
Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);
|
||||
|
||||
var users = await JsonSerializer.DeserializeAsync<UserDto[]>(
|
||||
await client.GetStreamAsync("Users"), _jsonOpions);
|
||||
await client.GetStreamAsync("Users"), _jsonOptions);
|
||||
var user = users!.First(x => x.Id.Equals(_testUserId));
|
||||
Assert.False(user.HasPassword);
|
||||
Assert.False(user.HasConfiguredPassword);
|
||||
|
@ -23,7 +23,7 @@ public sealed class UserLibraryControllerTests : IClassFixture<JellyfinApplicati
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetRootFolder_NonExistenUserId_NotFound()
|
||||
public async Task GetRootFolder_NonexistentUserId_NotFound()
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
|
||||
@ -47,7 +47,7 @@ public sealed class UserLibraryControllerTests : IClassFixture<JellyfinApplicati
|
||||
[InlineData("Users/{0}/Items/{1}/LocalTrailers")]
|
||||
[InlineData("Users/{0}/Items/{1}/SpecialFeatures")]
|
||||
[InlineData("Users/{0}/Items/{1}/Lyrics")]
|
||||
public async Task GetItem_NonExistenUserId_NotFound(string format)
|
||||
public async Task GetItem_NonexistentUserId_NotFound(string format)
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
|
||||
@ -64,7 +64,7 @@ public sealed class UserLibraryControllerTests : IClassFixture<JellyfinApplicati
|
||||
[InlineData("Users/{0}/Items/{1}/LocalTrailers")]
|
||||
[InlineData("Users/{0}/Items/{1}/SpecialFeatures")]
|
||||
[InlineData("Users/{0}/Items/{1}/Lyrics")]
|
||||
public async Task GetItem_NonExistentItemId_NotFound(string format)
|
||||
public async Task GetItem_NonexistentItemId_NotFound(string format)
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
|
||||
|
@ -16,7 +16,7 @@ public sealed class VideosControllerTests : IClassFixture<JellyfinApplicationFac
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task DeleteAlternateSources_NonExistentItemId_NotFound()
|
||||
public async Task DeleteAlternateSources_NonexistentItemId_NotFound()
|
||||
{
|
||||
var client = _factory.CreateClient();
|
||||
client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client));
|
||||
|
@ -85,7 +85,7 @@ namespace Jellyfin.XbmcMetadata.Tests.Parsers
|
||||
Assert.Contains("Bryan Fuller", writers.Select(x => x.Name));
|
||||
Assert.Contains("Michael Green", writers.Select(x => x.Name));
|
||||
|
||||
// Direcotrs
|
||||
// Directors
|
||||
var directors = result.People.Where(x => x.Type == PersonKind.Director).ToArray();
|
||||
Assert.Single(directors);
|
||||
Assert.Contains("David Slade", directors.Select(x => x.Name));
|
||||
|
Loading…
x
Reference in New Issue
Block a user