Remove legacy startup configuration files and web assets

- Deleted startup.json, startup.json.linux, and startup.json.windows files to streamline configuration management.
- Removed web.config file as part of the cleanup process.
- Deleted jellyfin.svg and its compressed versions from the API documentation.
- Removed custom CSS files for ReDoc and Swagger documentation, including their compressed versions.
This commit is contained in:
2026-07-09 15:44:10 +00:00
parent 6f4f3d0eb9
commit 9ccf94f10f
101 changed files with 6 additions and 65165 deletions
@@ -21,6 +21,7 @@ using MediaBrowser.Model.IO;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Serilog;
using Serilog.Events;
using Serilog.Extensions.Logging;
using ILogger = Microsoft.Extensions.Logging.ILogger;
@@ -480,6 +481,10 @@ public static class StartupHelpers
catch (Exception ex)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.MinimumLevel.Override("System", LogEventLevel.Warning)
.MinimumLevel.Override("Microsoft.EntityFrameworkCore.Database.Command", LogEventLevel.Error)
.WriteTo.Console(
outputTemplate: "[{Timestamp:HH:mm:ss}] [{Level:u3}] [{ThreadId}] {SourceContext}: {Message:lj}{NewLine}{Exception}",
formatProvider: CultureInfo.InvariantCulture)
@@ -5,7 +5,7 @@
"Override": {
"Microsoft": "Warning",
"System": "Warning",
"Microsoft.EntityFrameworkCore.Database.Command": "Warning"
"Microsoft.EntityFrameworkCore.Database.Command": "Error"
}
},
"WriteTo": [
File diff suppressed because it is too large Load Diff
-31
View File
@@ -1,31 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Emby.Photos</name>
</assembly>
<members>
<member name="T:Emby.Photos.PhotoProvider">
<summary>
Metadata provider for photos.
</summary>
<param name="logger">The logger.</param>
<param name="imageProcessor">The image processor.</param>
</member>
<member name="M:Emby.Photos.PhotoProvider.#ctor(Microsoft.Extensions.Logging.ILogger{Emby.Photos.PhotoProvider},MediaBrowser.Controller.Drawing.IImageProcessor)">
<summary>
Metadata provider for photos.
</summary>
<param name="logger">The logger.</param>
<param name="imageProcessor">The image processor.</param>
</member>
<member name="P:Emby.Photos.PhotoProvider.Name">
<inheritdoc />
</member>
<member name="M:Emby.Photos.PhotoProvider.HasChanged(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="M:Emby.Photos.PhotoProvider.FetchAsync(MediaBrowser.Controller.Entities.Photo,MediaBrowser.Controller.Providers.MetadataRefreshOptions,System.Threading.CancellationToken)">
<inheritdoc />
</member>
</members>
</doc>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,484 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Jellyfin.Database.Providers.Postgres</name>
</assembly>
<members>
<member name="T:Jellyfin.Database.Providers.Postgres.BulkOperationExtensions">
<summary>
Extension methods for optimized bulk operations on PostgreSQL.
These methods help reduce dead tuple generation during media library scans by batching
operations and using more efficient transaction patterns.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationExtensions.GetRecommendedBatchSize(System.Int32)">
<summary>
Gets the recommended batch size for bulk operations based on the data size.
PostgreSQL works best with smaller batches to reduce dead tuples during scans.
</summary>
<param name="entityCount">The total number of entities to process.</param>
<returns>The recommended batch size.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationExtensions.SaveChangesInBatchesAsync(Microsoft.EntityFrameworkCore.DbContext,System.Int32,System.Threading.CancellationToken)">
<summary>
Saves changes in batches to reduce dead tuple generation during bulk operations.
This is especially useful during media library scans where many items are created/updated/deleted.
</summary>
<param name="context">The database context.</param>
<param name="batchSize">The batch size for SaveChanges calls. If 0 or negative, uses automatic sizing.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>Total number of changes saved.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationExtensions.BulkDeleteAsync(Microsoft.EntityFrameworkCore.DbContext,System.String,System.String,System.String,System.Threading.CancellationToken)">
<summary>
Deletes entities in batches using raw SQL for better performance.
This reduces dead tuple generation compared to loading and deleting entities individually.
</summary>
<param name="context">The database context.</param>
<param name="schema">The PostgreSQL schema name.</param>
<param name="tableName">The table name.</param>
<param name="whereClause">Optional WHERE clause (without WHERE keyword). If null, all rows are deleted.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>The number of rows deleted.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationExtensions.BulkTruncateAsync(Microsoft.EntityFrameworkCore.DbContext,System.String,System.String,System.Boolean,System.Threading.CancellationToken)">
<summary>
Truncates a table completely, which is much faster than DELETE for large tables.
Note: This cannot be used if there are foreign key references.
</summary>
<param name="context">The database context.</param>
<param name="schema">The PostgreSQL schema name.</param>
<param name="tableName">The table name.</param>
<param name="cascadeDelete">If true, will CASCADE delete related rows. Use with caution.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>A task representing the asynchronous operation.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationExtensions.BulkAddAsync``1(Microsoft.EntityFrameworkCore.DbContext,System.Collections.Generic.IEnumerable{``0},System.Int32,System.Boolean,System.Threading.CancellationToken)">
<summary>
Adds a large collection of entities to the context in batches to avoid memory issues.
</summary>
<typeparam name="T">The entity type.</typeparam>
<param name="context">The database context.</param>
<param name="entities">The entities to add.</param>
<param name="batchSize">The batch size for adding entities.</param>
<param name="saveAfterEachBatch">Whether to save changes after each batch.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>Total number of entities saved.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationExtensions.BulkUpdateAsync``1(Microsoft.EntityFrameworkCore.DbContext,System.Collections.Generic.IEnumerable{``0},System.Int32,System.Threading.CancellationToken)">
<summary>
Updates entities in batches to reduce dead tuple generation.
</summary>
<typeparam name="T">The entity type.</typeparam>
<param name="context">The database context.</param>
<param name="entities">The entities to update.</param>
<param name="batchSize">The batch size for updates.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>Total number of entities updated.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationExtensions.BulkRemoveAsync``1(Microsoft.EntityFrameworkCore.DbContext,System.Collections.Generic.IEnumerable{``0},System.Int32,System.Threading.CancellationToken)">
<summary>
Removes entities in batches to reduce dead tuple generation.
</summary>
<typeparam name="T">The entity type.</typeparam>
<param name="context">The database context.</param>
<param name="entities">The entities to remove.</param>
<param name="batchSize">The batch size for removals.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>Total number of entities removed.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationExtensions.VacuumTableAsync(Microsoft.EntityFrameworkCore.DbContext,System.String,System.String,System.Threading.CancellationToken)">
<summary>
Executes VACUUM ANALYZE on a specific table to reclaim dead tuples and update statistics.
This is useful to call after bulk deletion operations.
</summary>
<param name="context">The database context.</param>
<param name="schema">The PostgreSQL schema name.</param>
<param name="tableName">The table name.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>A task representing the asynchronous operation.</returns>
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.BulkOperationTransaction">
<summary>
Helper class for managing transactions during bulk operations to reduce dead tuple generation.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationTransaction.#ctor(Jellyfin.Database.Implementations.JellyfinDbContext)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Database.Providers.Postgres.BulkOperationTransaction"/> class.
</summary>
<param name="context">The database context.</param>
</member>
<member name="P:Jellyfin.Database.Providers.Postgres.BulkOperationTransaction.IsCommitted">
<summary>
Gets a value indicating whether the transaction has been committed.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationTransaction.BeginAsync(System.Threading.CancellationToken)">
<summary>
Begins a new transaction with isolation level optimized for bulk operations.
</summary>
<param name="cancellationToken">Cancellation token.</param>
<returns>A task representing the asynchronous operation.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationTransaction.CommitAsync(System.Threading.CancellationToken)">
<summary>
Commits the transaction.
</summary>
<param name="cancellationToken">Cancellation token.</param>
<returns>A task representing the asynchronous operation.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationTransaction.RollbackAsync(System.Threading.CancellationToken)">
<summary>
Rolls back the transaction.
</summary>
<param name="cancellationToken">Cancellation token.</param>
<returns>A task representing the asynchronous operation.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationTransaction.Dispose">
<summary>
Disposes the transaction if not already committed.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkOperationTransaction.DisposeAsync">
<summary>
Disposes the transaction asynchronously if not already committed.
</summary>
<returns>A task representing the asynchronous operation.</returns>
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.BulkTransactionExtensions">
<summary>
Extension methods for managing bulk operation transactions.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkTransactionExtensions.ExecuteBulkOperationAsync(Jellyfin.Database.Implementations.JellyfinDbContext,System.Func{System.Threading.Tasks.Task},System.Threading.CancellationToken)">
<summary>
Executes a bulk operation within a transaction.
</summary>
<param name="context">The database context.</param>
<param name="operation">The bulk operation to execute.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>A task representing the asynchronous operation.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.BulkTransactionExtensions.ExecuteBulkOperationAsync``1(Jellyfin.Database.Implementations.JellyfinDbContext,System.Func{System.Threading.Tasks.Task{``0}},System.Threading.CancellationToken)">
<summary>
Executes a bulk operation within a transaction and returns a result.
</summary>
<typeparam name="T">The type of result returned by the operation.</typeparam>
<param name="context">The database context.</param>
<param name="operation">The bulk operation to execute.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>The result of the operation.</returns>
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.Exceptions.PostgresVersionMismatchException">
<summary>
Exception thrown when there is a version mismatch between PostgreSQL server and client tools (pg_dump/pg_restore).
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Exceptions.PostgresVersionMismatchException.#ctor(System.String,System.String)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Database.Providers.Postgres.Exceptions.PostgresVersionMismatchException"/> class.
</summary>
<param name="serverVersion">The PostgreSQL server version.</param>
<param name="clientVersion">The pg_dump/pg_restore client version.</param>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Exceptions.PostgresVersionMismatchException.#ctor(System.String,System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Database.Providers.Postgres.Exceptions.PostgresVersionMismatchException"/> class.
</summary>
<param name="serverVersion">The PostgreSQL server version.</param>
<param name="clientVersion">The pg_dump/pg_restore client version.</param>
<param name="innerException">The inner exception.</param>
</member>
<member name="P:Jellyfin.Database.Providers.Postgres.Exceptions.PostgresVersionMismatchException.ServerVersion">
<summary>
Gets the PostgreSQL server version.
</summary>
</member>
<member name="P:Jellyfin.Database.Providers.Postgres.Exceptions.PostgresVersionMismatchException.ClientVersion">
<summary>
Gets the pg_dump/pg_restore client version.
</summary>
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.Migrations.InitialCreate">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.InitialCreate.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.InitialCreate.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.InitialCreate.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.Migrations.AddBasePerformanceIndexes">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.AddBasePerformanceIndexes.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.AddBasePerformanceIndexes.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.Migrations.AddSupplementaryIndexes">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.AddSupplementaryIndexes.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.AddSupplementaryIndexes.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.Migrations.AddLibraryOptionsTable">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.AddLibraryOptionsTable.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.AddLibraryOptionsTable.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.Migrations.SplitMediaStreamInfos">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.SplitMediaStreamInfos.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.SplitMediaStreamInfos.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.Migrations.DropBaseItemFlatExtensionColumns">
<summary>
Removes the 17 flat extension columns from library.BaseItems now that all data has been
migrated to the BaseItemTvExtras, BaseItemLiveTvExtras, and BaseItemAudioExtras tables.
Must run AFTER SplitBaseItemExtras (20260503000000).
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.DropBaseItemFlatExtensionColumns.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.DropBaseItemFlatExtensionColumns.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.Migrations.PostgresDesignTimeJellyfinDbFactory">
<summary>
The design time factory for <see cref="T:Jellyfin.Database.Implementations.JellyfinDbContext"/>.
This is only used for the creation of migrations and not during runtime.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.PostgresDesignTimeJellyfinDbFactory.CreateDbContext(System.String[])">
<inheritdoc/>
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.Migrations.SplitBaseItemExtras">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.SplitBaseItemExtras.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.Migrations.SplitBaseItemExtras.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.ModelBuilderExtensions">
<summary>
Model builder extensions for PostgreSQL.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.ModelBuilderExtensions.UseValueConverterForType``1(Microsoft.EntityFrameworkCore.ModelBuilder,Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter)">
<summary>
Specify value converter for the object type.
</summary>
<param name="modelBuilder">The model builder.</param>
<param name="converter">The <see cref="T:Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter`2"/>.</param>
<typeparam name="T">The type to convert.</typeparam>
<returns>The modified <see cref="T:Microsoft.EntityFrameworkCore.ModelBuilder"/>.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.ModelBuilderExtensions.SetDefaultDateTimeKind(Microsoft.EntityFrameworkCore.ModelBuilder,System.DateTimeKind)">
<summary>
Specify the default <see cref="T:System.DateTimeKind"/>.
</summary>
<param name="modelBuilder">The model builder to extend.</param>
<param name="kind">The <see cref="T:System.DateTimeKind"/> to specify.</param>
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.PostgresBackupService">
<summary>
Service for creating and restoring PostgreSQL database backups using pg_dump/pg_restore.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresBackupService.#ctor(Microsoft.Extensions.Logging.ILogger{Jellyfin.Database.Providers.Postgres.PostgresBackupService},MediaBrowser.Common.Configuration.IConfigurationManager)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Database.Providers.Postgres.PostgresBackupService"/> class.
</summary>
<param name="logger">The logger.</param>
<param name="configurationManager">The configuration manager.</param>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresBackupService.CreateBackupAsync(System.String,System.Threading.CancellationToken)">
<summary>
Creates a backup of the PostgreSQL database.
</summary>
<param name="backupDirectory">The directory to save the backup file.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>The path to the created backup file.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresBackupService.RestoreBackupAsync(System.String,System.Threading.CancellationToken)">
<summary>
Restores a PostgreSQL database from a backup file.
</summary>
<param name="backupFilePath">The path to the backup file.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>A task representing the restore operation.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresBackupService.ParseVersionMismatchError(System.String)">
<summary>
Parses PostgreSQL version mismatch error message to extract server and client versions.
</summary>
<param name="errorMessage">The error message from pg_dump.</param>
<returns>A tuple containing server version and client version.</returns>
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider">
<summary>
Configures Jellyfin to use a PostgreSQL database.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.#ctor(MediaBrowser.Common.Configuration.IApplicationPaths,Microsoft.Extensions.Logging.ILogger{Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider},MediaBrowser.Common.Configuration.IConfigurationManager)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider"/> class.
</summary>
<param name="applicationPaths">Service to construct the fallback when the old data path configuration is used.</param>
<param name="logger">A logger.</param>
<param name="configurationManager">The configuration manager (optional, for backup support).</param>
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.Schemas">
<summary>
Schema names mapping to legacy database files.
</summary>
</member>
<member name="F:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.Schemas.ActivityLog">
<summary>
Schema for activity log tables (legacy: activitylog.db).
</summary>
</member>
<member name="F:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.Schemas.Authentication">
<summary>
Schema for authentication tables (legacy: authentication.db).
</summary>
</member>
<member name="F:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.Schemas.DisplayPreferences">
<summary>
Schema for display preferences tables (legacy: displaypreferences.db).
</summary>
</member>
<member name="F:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.Schemas.Library">
<summary>
Schema for library tables (legacy: library.db).
</summary>
</member>
<member name="F:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.Schemas.Users">
<summary>
Schema for user tables (legacy: users.db).
</summary>
</member>
<member name="P:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.Schemas.All">
<summary>
Gets all schema names.
</summary>
</member>
<member name="P:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.DbContextFactory">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.Initialise(Microsoft.EntityFrameworkCore.DbContextOptionsBuilder,Jellyfin.Database.Implementations.DbConfiguration.DatabaseConfigurationOptions)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.EnsureDatabaseExistsAsync(Jellyfin.Database.Implementations.DbConfiguration.DatabaseConfigurationOptions,System.Threading.CancellationToken)">
<summary>
Ensures the PostgreSQL database exists, creating it if necessary.
</summary>
<param name="databaseConfiguration">The database configuration.</param>
<param name="cancellationToken">Cancellation token.</param>
<returns>A task representing the asynchronous operation.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.EnsureSchemasExistAsync(System.String,System.Int32,System.String,System.String,System.String,System.Int32,System.Threading.CancellationToken)">
<summary>
Ensures all required schemas exist in the PostgreSQL database.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.EnsureTablesExistAsync(System.Threading.CancellationToken)">
<summary>
Ensures all required database tables exist by applying pending migrations.
</summary>
<param name="cancellationToken">Cancellation token.</param>
<returns>A task representing the asynchronous operation.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.RunScheduledOptimisation(System.Threading.CancellationToken)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.OnModelCreating(Microsoft.EntityFrameworkCore.ModelBuilder)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.AssignEntitiesToSchemas(Microsoft.EntityFrameworkCore.ModelBuilder)">
<summary>
Assigns entities to PostgreSQL schemas based on their legacy database origin.
</summary>
<param name="modelBuilder">The model builder.</param>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.RegisterViewMappings(Microsoft.EntityFrameworkCore.ModelBuilder)">
<summary>
Registers read-only keyless view projections for PostgreSQL.
Each view lives in the <c>library</c> schema and is mapped with
<c>HasNoKey().ToView()</c> so EF Core never tries to create a table or migration for it.
</summary>
<param name="modelBuilder">The model builder.</param>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.RunShutdownTask(System.Threading.CancellationToken)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.ConfigureConventions(Microsoft.EntityFrameworkCore.ModelConfigurationBuilder)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.MigrationBackupFast(System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.RestoreBackupFast(System.String,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.DeleteBackup(System.String)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.IsLocalHost(System.String)">
<summary>
Determines if the given host is localhost.
</summary>
<param name="host">The host to check.</param>
<returns>True if the host is localhost or 127.0.0.1, false otherwise.</returns>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.PostgresDatabaseProvider.PurgeDatabase(Jellyfin.Database.Implementations.JellyfinDbContext,System.Collections.Generic.IEnumerable{System.String})">
<inheritdoc/>
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.SnakeCaseNamingConvention">
<summary>
EF Core convention that maps all entity property names to snake_case column names.
Applied only by the PostgreSQL provider so SQLite is unaffected.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.SnakeCaseNamingConvention.ProcessPropertyAdded(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext{Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder})">
<inheritdoc />
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.SnakeCaseNamingConvention.ToSnakeCase(System.String)">
<summary>Converts a PascalCase identifier to snake_case.</summary>
<param name="name">The identifier to convert.</param>
<returns>The snake_case representation of the identifier.</returns>
</member>
<member name="T:Jellyfin.Database.Providers.Postgres.ValueConverters.DateTimeKindValueConverter">
<summary>
ValueConverter to specify DateTime kind for PostgreSQL.
</summary>
</member>
<member name="M:Jellyfin.Database.Providers.Postgres.ValueConverters.DateTimeKindValueConverter.#ctor(System.DateTimeKind,Microsoft.EntityFrameworkCore.Storage.ValueConversion.ConverterMappingHints)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Database.Providers.Postgres.ValueConverters.DateTimeKindValueConverter"/> class.
</summary>
<param name="kind">The kind to specify.</param>
<param name="mappingHints">The mapping hints.</param>
</member>
</members>
</doc>
-352
View File
@@ -1,352 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Jellyfin.Drawing.Skia</name>
</assembly>
<members>
<member name="T:Jellyfin.Drawing.Skia.PercentPlayedDrawer">
<summary>
Static helper class used to draw percentage-played indicators on images.
</summary>
</member>
<member name="M:Jellyfin.Drawing.Skia.PercentPlayedDrawer.Process(SkiaSharp.SKCanvas,MediaBrowser.Model.Drawing.ImageDimensions,System.Double)">
<summary>
Draw a percentage played indicator on a canvas.
</summary>
<param name="canvas">The canvas to draw the indicator on.</param>
<param name="imageSize">The size of the image being drawn on.</param>
<param name="percent">The percentage played to display with the indicator.</param>
</member>
<member name="T:Jellyfin.Drawing.Skia.SkiaEncoder">
<summary>
Image encoder that uses <see cref="N:SkiaSharp"/> to manipulate images.
</summary>
</member>
<member name="F:Jellyfin.Drawing.Skia.SkiaEncoder.UpscaleSamplingOptions">
<summary>
The default sampling options, equivalent to old high quality filter settings when upscaling.
</summary>
</member>
<member name="F:Jellyfin.Drawing.Skia.SkiaEncoder.DefaultSamplingOptions">
<summary>
The sampling options, used for downscaling images, equivalent to old high quality filter settings when not upscaling.
</summary>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.#ctor(Microsoft.Extensions.Logging.ILogger{Jellyfin.Drawing.Skia.SkiaEncoder},MediaBrowser.Common.Configuration.IApplicationPaths)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Drawing.Skia.SkiaEncoder"/> class.
</summary>
<param name="logger">The application logger.</param>
<param name="appPaths">The application paths.</param>
</member>
<member name="P:Jellyfin.Drawing.Skia.SkiaEncoder.Name">
<inheritdoc/>
</member>
<member name="P:Jellyfin.Drawing.Skia.SkiaEncoder.SupportsImageCollageCreation">
<inheritdoc/>
</member>
<member name="P:Jellyfin.Drawing.Skia.SkiaEncoder.SupportsImageEncoding">
<inheritdoc/>
</member>
<member name="P:Jellyfin.Drawing.Skia.SkiaEncoder.SupportedInputFormats">
<inheritdoc/>
</member>
<member name="P:Jellyfin.Drawing.Skia.SkiaEncoder.SupportedOutputFormats">
<inheritdoc/>
</member>
<member name="P:Jellyfin.Drawing.Skia.SkiaEncoder.DefaultTypeFace">
<summary>
Gets the default typeface to use.
</summary>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.IsNativeLibAvailable">
<summary>
Check if the native lib is available.
</summary>
<returns>True if the native lib is available, otherwise false.</returns>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.GetImageFormat(MediaBrowser.Model.Drawing.ImageFormat)">
<summary>
Convert a <see cref="T:MediaBrowser.Model.Drawing.ImageFormat"/> to a <see cref="T:SkiaSharp.SKEncodedImageFormat"/>.
</summary>
<param name="selectedFormat">The format to convert.</param>
<returns>The converted format.</returns>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.GetImageSize(System.String)">
<inheritdoc />
<exception cref="T:System.IO.FileNotFoundException">The path is not valid.</exception>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.GetImageBlurHash(System.Int32,System.Int32,System.String)">
<inheritdoc />
<exception cref="T:System.ArgumentNullException">The path is null.</exception>
<exception cref="T:System.IO.FileNotFoundException">The path is not valid.</exception>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.Decode(System.String,System.Boolean,System.Nullable{MediaBrowser.Model.Drawing.ImageOrientation},SkiaSharp.SKEncodedOrigin@)">
<summary>
Decode an image.
</summary>
<param name="path">The filepath of the image to decode.</param>
<param name="forceCleanBitmap">Whether to force clean the bitmap.</param>
<param name="orientation">The orientation of the image.</param>
<param name="origin">The detected origin of the image.</param>
<returns>The resulting bitmap of the image.</returns>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.ResizeImage(SkiaSharp.SKBitmap,SkiaSharp.SKImageInfo,System.Boolean,System.Boolean)">
<summary>
Resizes an image on the CPU, by utilizing a surface and canvas.
The convolutional matrix kernel used in this resize function gives a (light) sharpening effect.
This technique is similar to effect that can be created using for example the [Convolution matrix filter in GIMP](https://docs.gimp.org/2.10/en/gimp-filter-convolution-matrix.html).
</summary>
<param name="source">The source bitmap.</param>
<param name="targetInfo">This specifies the target size and other information required to create the surface.</param>
<param name="isAntialias">This enables anti-aliasing on the SKPaint instance.</param>
<param name="isDither">This enables dithering on the SKPaint instance.</param>
<returns>The resized image.</returns>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.EncodeImage(System.String,System.DateTime,System.String,System.Boolean,System.Nullable{MediaBrowser.Model.Drawing.ImageOrientation},System.Int32,MediaBrowser.Controller.Drawing.ImageProcessingOptions,MediaBrowser.Model.Drawing.ImageFormat)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.CreateImageCollage(MediaBrowser.Controller.Drawing.ImageCollageOptions,System.String)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.CreateSplashscreen(System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyList{System.String})">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.CreateTrickplayTile(MediaBrowser.Controller.Drawing.ImageCollageOptions,System.Int32,System.Int32,System.Nullable{System.Int32})">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaEncoder.GetFontForCharacter(System.String)">
<summary>
Return the typeface that contains the glyph for the given character.
</summary>
<param name="c">The text character.</param>
<returns>The typeface contains the character.</returns>
</member>
<member name="T:Jellyfin.Drawing.Skia.SkiaExtensions">
<summary>
The SkiaSharp extensions.
</summary>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaExtensions.DrawBitmap(SkiaSharp.SKCanvas,SkiaSharp.SKBitmap,SkiaSharp.SKRect,SkiaSharp.SKSamplingOptions,SkiaSharp.SKPaint)">
<summary>
Draws an SKBitmap on the canvas with specified SkSamplingOptions.
</summary>
<param name="canvas">The SKCanvas to draw on.</param>
<param name="bitmap">The SKBitmap to draw.</param>
<param name="dest">The destination SKRect.</param>
<param name="options">The SKSamplingOptions to use for rendering.</param>
<param name="paint">Optional SKPaint to apply additional effects or styles.</param>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaExtensions.DrawBitmap(SkiaSharp.SKCanvas,SkiaSharp.SKBitmap,System.Single,System.Single,SkiaSharp.SKSamplingOptions,SkiaSharp.SKPaint)">
<summary>
Draws an SKBitmap on the canvas at the specified coordinates with the given SkSamplingOptions.
</summary>
<param name="canvas">The SKCanvas to draw on.</param>
<param name="bitmap">The SKBitmap to draw.</param>
<param name="x">The x-coordinate where the bitmap will be drawn.</param>
<param name="y">The y-coordinate where the bitmap will be drawn.</param>
<param name="options">The SKSamplingOptions to use for rendering.</param>
<param name="paint">Optional SKPaint to apply additional effects or styles.</param>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaExtensions.DrawBitmap(SkiaSharp.SKCanvas,SkiaSharp.SKBitmap,SkiaSharp.SKRect,SkiaSharp.SKRect,SkiaSharp.SKSamplingOptions,SkiaSharp.SKPaint)">
<summary>
Draws an SKBitmap on the canvas using a specified source rectangle, destination rectangle,
and optional paint, with the given SkSamplingOptions.
</summary>
<param name="canvas">The SKCanvas to draw on.</param>
<param name="bitmap">The SKBitmap to draw.</param>
<param name="source">
The source SKRect defining the portion of the bitmap to draw.
</param>
<param name="dest">
The destination SKRect defining the area on the canvas where the bitmap will be drawn.
</param>
<param name="options">The SKSamplingOptions to use for rendering.</param>
<param name="paint">Optional SKPaint to apply additional effects or styles.</param>
</member>
<member name="T:Jellyfin.Drawing.Skia.SkiaHelper">
<summary>
Class containing helper methods for working with SkiaSharp.
</summary>
</member>
<member name="M:Jellyfin.Drawing.Skia.SkiaHelper.GetNextValidImage(Jellyfin.Drawing.Skia.SkiaEncoder,System.Collections.Generic.IReadOnlyList{System.String},System.Int32,System.Int32@)">
<summary>
Gets the next valid image as a bitmap.
</summary>
<param name="skiaEncoder">The current skia encoder.</param>
<param name="paths">The list of image paths.</param>
<param name="currentIndex">The current checked index.</param>
<param name="newIndex">The new index.</param>
<returns>A valid bitmap, or null if no bitmap exists after <c>currentIndex</c>.</returns>
</member>
<member name="T:Jellyfin.Drawing.Skia.SplashscreenBuilder">
<summary>
Used to build the splashscreen.
</summary>
</member>
<member name="M:Jellyfin.Drawing.Skia.SplashscreenBuilder.#ctor(Jellyfin.Drawing.Skia.SkiaEncoder,Microsoft.Extensions.Logging.ILogger)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Drawing.Skia.SplashscreenBuilder"/> class.
</summary>
<param name="skiaEncoder">The SkiaEncoder.</param>
<param name="logger">The logger.</param>
</member>
<member name="M:Jellyfin.Drawing.Skia.SplashscreenBuilder.GenerateSplash(System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyList{System.String},System.String)">
<summary>
Generate a splashscreen.
</summary>
<param name="posters">The poster paths.</param>
<param name="backdrops">The landscape paths.</param>
<param name="outputPath">The output path.</param>
</member>
<member name="M:Jellyfin.Drawing.Skia.SplashscreenBuilder.GenerateCollage(System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyList{System.String})">
<summary>
Generates a collage of posters and landscape pictures.
</summary>
<param name="posters">The poster paths.</param>
<param name="backdrops">The landscape paths.</param>
<returns>The created collage as a bitmap.</returns>
</member>
<member name="M:Jellyfin.Drawing.Skia.SplashscreenBuilder.Transform3D(SkiaSharp.SKBitmap)">
<summary>
Transform the collage in 3D space.
</summary>
<param name="input">The bitmap to transform.</param>
<returns>The transformed image.</returns>
</member>
<member name="T:Jellyfin.Drawing.Skia.StripCollageBuilder">
<summary>
Used to build collages of multiple images arranged in vertical strips.
</summary>
</member>
<member name="M:Jellyfin.Drawing.Skia.StripCollageBuilder.#ctor(Jellyfin.Drawing.Skia.SkiaEncoder)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Drawing.Skia.StripCollageBuilder"/> class.
</summary>
<param name="skiaEncoder">The encoder to use for building collages.</param>
</member>
<member name="M:Jellyfin.Drawing.Skia.StripCollageBuilder.IsRtlTextRegex">
<remarks>
Pattern:<br/>
<code>\p{IsArabic}|\p{IsArmenian}|\p{IsHebrew}|\p{IsSyriac}|\p{IsThaana}</code><br/>
Explanation:<br/>
<code>
○ Match a character in the set [\u0530-\u074F\u0780-\u07BF].<br/>
</code>
</remarks>
</member>
<member name="M:Jellyfin.Drawing.Skia.StripCollageBuilder.GetEncodedFormat(System.String)">
<summary>
Check which format an image has been encoded with using its filename extension.
</summary>
<param name="outputPath">The path to the image to get the format for.</param>
<returns>The image format.</returns>
</member>
<member name="M:Jellyfin.Drawing.Skia.StripCollageBuilder.BuildSquareCollage(System.Collections.Generic.IReadOnlyList{System.String},System.String,System.Int32,System.Int32)">
<summary>
Create a square collage.
</summary>
<param name="paths">The paths of the images to use in the collage.</param>
<param name="outputPath">The path at which to place the resulting collage image.</param>
<param name="width">The desired width of the collage.</param>
<param name="height">The desired height of the collage.</param>
</member>
<member name="M:Jellyfin.Drawing.Skia.StripCollageBuilder.BuildThumbCollage(System.Collections.Generic.IReadOnlyList{System.String},System.String,System.Int32,System.Int32,System.String)">
<summary>
Create a thumb collage.
</summary>
<param name="paths">The paths of the images to use in the collage.</param>
<param name="outputPath">The path at which to place the resulting image.</param>
<param name="width">The desired width of the collage.</param>
<param name="height">The desired height of the collage.</param>
<param name="libraryName">The name of the library to draw on the collage.</param>
</member>
<member name="M:Jellyfin.Drawing.Skia.StripCollageBuilder.MeasureAndDrawText(SkiaSharp.SKCanvas,System.Single,System.Single,System.String,SkiaSharp.SKPaint,SkiaSharp.SKFont,SkiaSharp.SKTextAlign)">
<summary>
Draw shaped text with given SKPaint.
</summary>
<param name="canvas">If not null, draw text to this canvas, otherwise only measure the text width.</param>
<param name="x">x position of the canvas to draw text.</param>
<param name="y">y position of the canvas to draw text.</param>
<param name="text">The text to draw.</param>
<param name="textPaint">The SKPaint to style the text.</param>
<param name="textFont">The SKFont to style the text.</param>
<param name="alignment">The alignment of the text. Default aligns to left.</param>
<returns>The width of the text.</returns>
</member>
<member name="M:Jellyfin.Drawing.Skia.StripCollageBuilder.DrawText(SkiaSharp.SKCanvas,System.Single,System.Single,System.String,SkiaSharp.SKPaint,SkiaSharp.SKFont,System.Boolean)">
<summary>
Draw shaped text with given SKPaint, search defined type faces to render as many texts as possible.
</summary>
<param name="canvas">If not null, draw text to this canvas, otherwise only measure the text width.</param>
<param name="x">x position of the canvas to draw text.</param>
<param name="y">y position of the canvas to draw text.</param>
<param name="text">The text to draw.</param>
<param name="textPaint">The SKPaint to style the text.</param>
<param name="textFont">The SKFont to style the text.</param>
<param name="isRtl">If true, render from right to left.</param>
<returns>The width of the text.</returns>
</member>
<member name="T:Jellyfin.Drawing.Skia.UnplayedCountIndicator">
<summary>
Static helper class for drawing unplayed count indicators.
</summary>
</member>
<member name="F:Jellyfin.Drawing.Skia.UnplayedCountIndicator.OffsetFromTopRightCorner">
<summary>
The x-offset used when drawing an unplayed count indicator.
</summary>
</member>
<member name="M:Jellyfin.Drawing.Skia.UnplayedCountIndicator.DrawUnplayedCountIndicator(SkiaSharp.SKCanvas,MediaBrowser.Model.Drawing.ImageDimensions,System.Int32)">
<summary>
Draw an unplayed count indicator in the top right corner of a canvas.
</summary>
<param name="canvas">The canvas to draw the indicator on.</param>
<param name="imageSize">
The dimensions of the image to draw the indicator on. The width is used to determine the x-position of the
indicator.
</param>
<param name="count">The number to draw in the indicator.</param>
</member>
<member name="T:System.Text.RegularExpressions.Generated.IsRtlTextRegex_0">
<summary>Custom <see cref="T:System.Text.RegularExpressions.Regex"/>-derived type for the IsRtlTextRegex method.</summary>
</member>
<member name="F:System.Text.RegularExpressions.Generated.IsRtlTextRegex_0.Instance">
<summary>Cached, thread-safe singleton instance.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.IsRtlTextRegex_0.#ctor">
<summary>Initializes the instance.</summary>
</member>
<member name="T:System.Text.RegularExpressions.Generated.IsRtlTextRegex_0.RunnerFactory">
<summary>Provides a factory for creating <see cref="T:System.Text.RegularExpressions.RegexRunner"/> instances to be used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.IsRtlTextRegex_0.RunnerFactory.CreateInstance">
<summary>Creates an instance of a <see cref="T:System.Text.RegularExpressions.RegexRunner"/> used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
</member>
<member name="T:System.Text.RegularExpressions.Generated.IsRtlTextRegex_0.RunnerFactory.Runner">
<summary>Provides the runner that contains the custom logic implementing the specified regular expression.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.IsRtlTextRegex_0.RunnerFactory.Runner.Scan(System.ReadOnlySpan{System.Char})">
<summary>Scan the <paramref name="inputSpan"/> starting from base.runtextstart for the next match.</summary>
<param name="inputSpan">The text being scanned by the regular expression.</param>
</member>
<member name="M:System.Text.RegularExpressions.Generated.IsRtlTextRegex_0.RunnerFactory.Runner.TryFindNextPossibleStartingPosition(System.ReadOnlySpan{System.Char})">
<summary>Search <paramref name="inputSpan"/> starting from base.runtextpos for the next location a match could possibly start.</summary>
<param name="inputSpan">The text being scanned by the regular expression.</param>
<returns>true if a possible match was found; false if no more matches are possible.</returns>
</member>
<member name="T:System.Text.RegularExpressions.Generated.Utilities">
<summary>Helper methods used by generated <see cref="T:System.Text.RegularExpressions.Regex"/>-derived implementations.</summary>
</member>
<member name="F:System.Text.RegularExpressions.Generated.Utilities.s_defaultTimeout">
<summary>Default timeout value set in <see cref="T:System.AppContext"/>, or <see cref="F:System.Text.RegularExpressions.Regex.InfiniteMatchTimeout"/> if none was set.</summary>
</member>
<member name="F:System.Text.RegularExpressions.Generated.Utilities.s_hasTimeout">
<summary>Whether <see cref="F:System.Text.RegularExpressions.Generated.Utilities.s_defaultTimeout"/> is non-infinite.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.Utilities.IndexOfNonAsciiOrAny_1861681229F79B552251C84FF351AFD5B7682E7A5D071E5C5F2BB68943FFB41B(System.ReadOnlySpan{System.Char})">
<summary>Finds the next index of any character that matches a character in the set [\u0530-\u074F\u0780-\u07BF].</summary>
</member>
</members>
</doc>
-143
View File
@@ -1,143 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Jellyfin.Drawing</name>
</assembly>
<members>
<member name="T:Jellyfin.Drawing.ImageProcessor">
<summary>
Class ImageProcessor.
</summary>
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.#ctor(Microsoft.Extensions.Logging.ILogger{Jellyfin.Drawing.ImageProcessor},MediaBrowser.Controller.IServerApplicationPaths,MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Controller.Drawing.IImageEncoder,MediaBrowser.Controller.Configuration.IServerConfigurationManager)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Drawing.ImageProcessor"/> class.
</summary>
<param name="logger">The logger.</param>
<param name="appPaths">The server application paths.</param>
<param name="fileSystem">The filesystem.</param>
<param name="imageEncoder">The image encoder.</param>
<param name="config">The configuration.</param>
</member>
<member name="P:Jellyfin.Drawing.ImageProcessor.SupportedInputFormats">
<inheritdoc />
</member>
<member name="P:Jellyfin.Drawing.ImageProcessor.SupportsImageCollageCreation">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetSupportedImageOutputFormats">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.ProcessImage(MediaBrowser.Controller.Drawing.ImageProcessingOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetCacheFilePath(System.String,System.Nullable{System.Int32},System.Nullable{System.Int32},System.Nullable{System.Int32},System.Nullable{System.Int32},System.Nullable{System.Int32},System.Nullable{System.Int32},System.Int32,System.DateTime,MediaBrowser.Model.Drawing.ImageFormat,System.Double,System.Nullable{System.Int32},System.Nullable{System.Int32},System.String,System.String)">
<summary>
Gets the cache file path based on a set of parameters.
</summary>
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetImageDimensions(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Entities.ItemImageInfo)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetImageDimensions(System.String)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetImageBlurHash(System.String)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetImageBlurHash(System.String,MediaBrowser.Model.Drawing.ImageDimensions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetImageCacheTag(System.String,System.DateTime)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetImageCacheTag(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Entities.ItemImageInfo)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetImageCacheTag(MediaBrowser.Model.Dto.BaseItemDto,MediaBrowser.Controller.Entities.ItemImageInfo)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetImageCacheTag(MediaBrowser.Model.Dto.BaseItemDto,MediaBrowser.Model.Entities.ChapterInfo)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetImageCacheTag(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Model.Entities.ChapterInfo)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetImageCacheTag(Jellyfin.Database.Implementations.Entities.User)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetCachePath(System.String,System.String,System.String)">
<summary>
Gets the cache path.
</summary>
<param name="path">The path.</param>
<param name="uniqueName">Name of the unique.</param>
<param name="fileExtension">The file extension.</param>
<returns>System.String.</returns>
<exception cref="T:System.ArgumentNullException">
path
or
uniqueName
or
fileExtension.
</exception>
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.GetCachePath(System.ReadOnlySpan{System.Char},System.ReadOnlySpan{System.Char})">
<summary>
Gets the cache path.
</summary>
<param name="path">The path.</param>
<param name="filename">The filename.</param>
<returns>System.String.</returns>
<exception cref="T:System.ArgumentNullException">
path
or
filename.
</exception>
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.CreateImageCollage(MediaBrowser.Controller.Drawing.ImageCollageOptions,System.String)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.ImageProcessor.Dispose">
<inheritdoc />
</member>
<member name="T:Jellyfin.Drawing.NullImageEncoder">
<summary>
A fallback implementation of <see cref="T:MediaBrowser.Controller.Drawing.IImageEncoder" />.
</summary>
</member>
<member name="P:Jellyfin.Drawing.NullImageEncoder.SupportedInputFormats">
<inheritdoc />
</member>
<member name="P:Jellyfin.Drawing.NullImageEncoder.SupportedOutputFormats">
<inheritdoc />
</member>
<member name="P:Jellyfin.Drawing.NullImageEncoder.Name">
<inheritdoc />
</member>
<member name="P:Jellyfin.Drawing.NullImageEncoder.SupportsImageCollageCreation">
<inheritdoc />
</member>
<member name="P:Jellyfin.Drawing.NullImageEncoder.SupportsImageEncoding">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.NullImageEncoder.GetImageSize(System.String)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.NullImageEncoder.EncodeImage(System.String,System.DateTime,System.String,System.Boolean,System.Nullable{MediaBrowser.Model.Drawing.ImageOrientation},System.Int32,MediaBrowser.Controller.Drawing.ImageProcessingOptions,MediaBrowser.Model.Drawing.ImageFormat)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.NullImageEncoder.CreateImageCollage(MediaBrowser.Controller.Drawing.ImageCollageOptions,System.String)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.NullImageEncoder.CreateSplashscreen(System.Collections.Generic.IReadOnlyList{System.String},System.Collections.Generic.IReadOnlyList{System.String})">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.NullImageEncoder.CreateTrickplayTile(MediaBrowser.Controller.Drawing.ImageCollageOptions,System.Int32,System.Int32,System.Nullable{System.Int32})">
<inheritdoc />
</member>
<member name="M:Jellyfin.Drawing.NullImageEncoder.GetImageBlurHash(System.Int32,System.Int32,System.String)">
<inheritdoc />
</member>
</members>
</doc>
-716
View File
@@ -1,716 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Jellyfin.Extensions</name>
</assembly>
<members>
<member name="T:Jellyfin.Extensions.CopyToExtensions">
<summary>
Provides <c>CopyTo</c> extensions methods for <see cref="T:System.Collections.Generic.IReadOnlyList`1" />.
</summary>
</member>
<member name="M:Jellyfin.Extensions.CopyToExtensions.CopyTo``1(System.Collections.Generic.IReadOnlyList{``0},System.Collections.Generic.IList{``0},System.Int32)">
<summary>
Copies all the elements of the current collection to the specified list
starting at the specified destination array index. The index is specified as a 32-bit integer.
</summary>
<param name="source">The current collection that is the source of the elements.</param>
<param name="destination">The list that is the destination of the elements copied from the current collection.</param>
<param name="index">A 32-bit integer that represents the index in <c>destination</c> at which copying begins.</param>
<typeparam name="T">The type of the array.</typeparam>
</member>
<member name="T:Jellyfin.Extensions.DictionaryExtensions">
<summary>
Static extensions for the <see cref="T:System.Collections.Generic.IReadOnlyDictionary`2"/> interface.
</summary>
</member>
<member name="M:Jellyfin.Extensions.DictionaryExtensions.GetFirstNotNullNorWhiteSpaceValue(System.Collections.Generic.IReadOnlyDictionary{System.String,System.String},System.String,System.String,System.String,System.String)">
<summary>
Gets a string from a string dictionary, checking all keys sequentially,
stopping at the first key that returns a result that's neither null nor blank.
</summary>
<param name="dictionary">The dictionary.</param>
<param name="key1">The first checked key.</param>
<param name="key2">The second checked key.</param>
<param name="key3">The third checked key.</param>
<param name="key4">The fourth checked key.</param>
<returns>System.String.</returns>
</member>
<member name="T:Jellyfin.Extensions.EnumerableExtensions">
<summary>
Static extensions for the <see cref="T:System.Collections.Generic.IEnumerable`1"/> interface.
</summary>
</member>
<member name="M:Jellyfin.Extensions.EnumerableExtensions.Contains(System.Collections.Generic.IEnumerable{System.String},System.ReadOnlySpan{System.Char},System.StringComparison)">
<summary>
Determines whether the value is contained in the source collection.
</summary>
<param name="source">An instance of the <see cref="T:System.Collections.Generic.IEnumerable`1"/> interface.</param>
<param name="value">The value to look for in the collection.</param>
<param name="stringComparison">The string comparison.</param>
<returns>A value indicating whether the value is contained in the collection.</returns>
<exception cref="T:System.ArgumentNullException">The source is null.</exception>
</member>
<member name="M:Jellyfin.Extensions.EnumerableExtensions.SingleItemAsEnumerable``1(``0)">
<summary>
Gets an IEnumerable from a single item.
</summary>
<param name="item">The item to return.</param>
<typeparam name="T">The type of item.</typeparam>
<returns>The IEnumerable{T}.</returns>
</member>
<member name="M:Jellyfin.Extensions.EnumerableExtensions.GetUniqueFlags``1(``0)">
<summary>
Gets an IEnumerable consisting of all flags of an enum.
</summary>
<param name="flags">The flags enum.</param>
<typeparam name="T">The type of item.</typeparam>
<returns>The IEnumerable{Enum}.</returns>
</member>
<member name="T:Jellyfin.Extensions.FileHelper">
<summary>
Provides helper functions for <see cref="T:System.IO.File" />.
</summary>
</member>
<member name="M:Jellyfin.Extensions.FileHelper.CreateEmpty(System.String)">
<summary>
Creates, or truncates a file in the specified path.
</summary>
<param name="path">The path and name of the file to create.</param>
</member>
<member name="T:Jellyfin.Extensions.FormattingStreamWriter">
<summary>
A custom StreamWriter which supports setting a IFormatProvider.
</summary>
</member>
<member name="M:Jellyfin.Extensions.FormattingStreamWriter.#ctor(System.IO.Stream,System.IFormatProvider)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Extensions.FormattingStreamWriter"/> class.
</summary>
<param name="stream">The stream to write to.</param>
<param name="formatProvider">The format provider to use.</param>
</member>
<member name="M:Jellyfin.Extensions.FormattingStreamWriter.#ctor(System.String,System.IFormatProvider)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Extensions.FormattingStreamWriter"/> class.
</summary>
<param name="path">The complete file path to write to.</param>
<param name="formatProvider">The format provider to use.</param>
</member>
<member name="P:Jellyfin.Extensions.FormattingStreamWriter.FormatProvider">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.GuidExtensions">
<summary>
Guid specific extensions.
</summary>
</member>
<member name="M:Jellyfin.Extensions.GuidExtensions.IsEmpty(System.Guid)">
<summary>
Determine whether the guid is default.
</summary>
<param name="guid">The guid.</param>
<returns>Whether the guid is the default value.</returns>
</member>
<member name="M:Jellyfin.Extensions.GuidExtensions.IsNullOrEmpty(System.Nullable{System.Guid})">
<summary>
Determine whether the guid is null or default.
</summary>
<param name="guid">The guid.</param>
<returns>Whether the guid is null or the default valueF.</returns>
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonBoolNumberConverter">
<summary>
Converts a number to a boolean.
This is needed for HDHomerun.
</summary>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonBoolNumberConverter.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonBoolNumberConverter.Write(System.Text.Json.Utf8JsonWriter,System.Boolean,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonBoolStringConverter">
<summary>
Converts a string to a boolean.
This is needed for FFprobe.
</summary>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonBoolStringConverter.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonBoolStringConverter.Write(System.Text.Json.Utf8JsonWriter,System.Boolean,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonCommaDelimitedCollectionConverter`1">
<summary>
Convert comma delimited string to collection of type.
</summary>
<typeparam name="T">Type to convert to.</typeparam>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonCommaDelimitedCollectionConverter`1.#ctor">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Extensions.Json.Converters.JsonCommaDelimitedCollectionConverter`1"/> class.
</summary>
</member>
<member name="P:Jellyfin.Extensions.Json.Converters.JsonCommaDelimitedCollectionConverter`1.Delimiter">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonCommaDelimitedCollectionConverterFactory">
<summary>
Json comma delimited collection converter factory.
</summary>
<remarks>
This must be applied as an attribute, adding to the JsonConverter list causes stack overflow.
</remarks>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonCommaDelimitedCollectionConverterFactory.CanConvert(System.Type)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonCommaDelimitedCollectionConverterFactory.CreateConverter(System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonDateTimeConverter">
<summary>
Legacy DateTime converter.
Milliseconds aren't output if zero by default.
</summary>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonDateTimeConverter.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonDateTimeConverter.Write(System.Text.Json.Utf8JsonWriter,System.DateTime,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonDefaultStringEnumConverter`1">
<summary>
Json unknown enum converter.
</summary>
<typeparam name="T">The type of enum.</typeparam>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonDefaultStringEnumConverter`1.#ctor(System.Text.Json.Serialization.JsonConverter{`0})">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Extensions.Json.Converters.JsonDefaultStringEnumConverter`1"/> class.
</summary>
<param name="baseConverter">The base json converter.</param>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonDefaultStringEnumConverter`1.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonDefaultStringEnumConverter`1.Write(System.Text.Json.Utf8JsonWriter,`0,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonDefaultStringEnumConverterFactory">
<summary>
Utilizes the JsonStringEnumConverter and sets a default value if not provided.
</summary>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonDefaultStringEnumConverterFactory.CanConvert(System.Type)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonDefaultStringEnumConverterFactory.CreateConverter(System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonDelimitedCollectionConverter`1">
<summary>
Convert delimited string to array of type.
</summary>
<typeparam name="T">Type to convert to.</typeparam>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonDelimitedCollectionConverter`1.#ctor">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Extensions.Json.Converters.JsonDelimitedCollectionConverter`1"/> class.
</summary>
</member>
<member name="P:Jellyfin.Extensions.Json.Converters.JsonDelimitedCollectionConverter`1.Delimiter">
<summary>
Gets the array delimiter.
</summary>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonDelimitedCollectionConverter`1.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonDelimitedCollectionConverter`1.Write(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.IReadOnlyCollection{`0},System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonFlagEnumConverter`1">
<summary>
Enum flag to json array converter.
</summary>
<typeparam name="T">The type of enum.</typeparam>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonFlagEnumConverter`1.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonFlagEnumConverter`1.Write(System.Text.Json.Utf8JsonWriter,`0,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonFlagEnumConverterFactory">
<summary>
Json flag enum converter factory.
</summary>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonFlagEnumConverterFactory.CanConvert(System.Type)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonFlagEnumConverterFactory.CreateConverter(System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonGuidConverter">
<summary>
Converts a GUID object or value to/from JSON.
</summary>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonGuidConverter.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonGuidConverter.Write(System.Text.Json.Utf8JsonWriter,System.Guid,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonNullableGuidConverter">
<summary>
Converts a GUID object or value to/from JSON.
</summary>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonNullableGuidConverter.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonNullableGuidConverter.Write(System.Text.Json.Utf8JsonWriter,System.Nullable{System.Guid},System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonNullableStructConverter`1">
<summary>
Converts a nullable struct or value to/from JSON.
Required - some clients send an empty string.
</summary>
<typeparam name="TStruct">The struct type.</typeparam>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonNullableStructConverter`1.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonNullableStructConverter`1.Write(System.Text.Json.Utf8JsonWriter,System.Nullable{`0},System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonNullableStructConverterFactory">
<summary>
Json nullable struct converter factory.
</summary>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonNullableStructConverterFactory.CanConvert(System.Type)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonNullableStructConverterFactory.CreateConverter(System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonPipeDelimitedCollectionConverter`1">
<summary>
Convert Pipe delimited string to array of type.
</summary>
<typeparam name="T">Type to convert to.</typeparam>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonPipeDelimitedCollectionConverter`1.#ctor">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Extensions.Json.Converters.JsonPipeDelimitedCollectionConverter`1"/> class.
</summary>
</member>
<member name="P:Jellyfin.Extensions.Json.Converters.JsonPipeDelimitedCollectionConverter`1.Delimiter">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonPipeDelimitedCollectionConverterFactory">
<summary>
Json Pipe delimited collection converter factory.
</summary>
<remarks>
This must be applied as an attribute, adding to the JsonConverter list causes stack overflow.
</remarks>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonPipeDelimitedCollectionConverterFactory.CanConvert(System.Type)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonPipeDelimitedCollectionConverterFactory.CreateConverter(System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonStringConverter">
<summary>
Converter to allow the serializer to read strings.
</summary>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonStringConverter.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonStringConverter.Write(System.Text.Json.Utf8JsonWriter,System.String,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.Converters.JsonVersionConverter">
<summary>
Converts a Version object or value to/from JSON.
</summary>
<remarks>
Required to send <see cref="T:System.Version"/> as a string instead of an object.
</remarks>
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonVersionConverter.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="M:Jellyfin.Extensions.Json.Converters.JsonVersionConverter.Write(System.Text.Json.Utf8JsonWriter,System.Version,System.Text.Json.JsonSerializerOptions)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Extensions.Json.JsonDefaults">
<summary>
Helper class for having compatible JSON throughout the codebase.
</summary>
</member>
<member name="F:Jellyfin.Extensions.Json.JsonDefaults.PascalCaseMediaType">
<summary>
Pascal case json profile media type.
</summary>
</member>
<member name="F:Jellyfin.Extensions.Json.JsonDefaults.CamelCaseMediaType">
<summary>
Camel case json profile media type.
</summary>
</member>
<member name="F:Jellyfin.Extensions.Json.JsonDefaults._jsonSerializerOptions">
<summary>
When changing these options, update
Jellyfin.Server/Extensions/ApiServiceCollectionExtensions.cs
-> AddJellyfinApi
-> AddJsonOptions.
</summary>
</member>
<member name="P:Jellyfin.Extensions.Json.JsonDefaults.Options">
<summary>
Gets the default <see cref="T:System.Text.Json.JsonSerializerOptions" /> options.
</summary>
<remarks>
The return value must not be modified.
If the defaults must be modified the author must use the copy constructor.
</remarks>
<returns>The default <see cref="T:System.Text.Json.JsonSerializerOptions" /> options.</returns>
</member>
<member name="P:Jellyfin.Extensions.Json.JsonDefaults.CamelCaseOptions">
<summary>
Gets camelCase json options.
</summary>
<remarks>
The return value must not be modified.
If the defaults must be modified the author must use the copy constructor.
</remarks>
<returns>The camelCase <see cref="T:System.Text.Json.JsonSerializerOptions" /> options.</returns>
</member>
<member name="P:Jellyfin.Extensions.Json.JsonDefaults.PascalCaseOptions">
<summary>
Gets PascalCase json options.
</summary>
<remarks>
The return value must not be modified.
If the defaults must be modified the author must use the copy constructor.
</remarks>
<returns>The PascalCase <see cref="T:System.Text.Json.JsonSerializerOptions" /> options.</returns>
</member>
<member name="T:Jellyfin.Extensions.Json.Utf8JsonExtensions">
<summary>
Extensions for Utf8JsonReader and Utf8JsonWriter.
</summary>
</member>
<member name="M:Jellyfin.Extensions.Json.Utf8JsonExtensions.IsEmptyString(System.Text.Json.Utf8JsonReader)">
<summary>
Determines if the reader contains an empty string.
</summary>
<param name="reader">The reader.</param>
<returns>Whether the reader contains an empty string.</returns>
</member>
<member name="M:Jellyfin.Extensions.Json.Utf8JsonExtensions.IsNull(System.Text.Json.Utf8JsonReader)">
<summary>
Determines if the reader contains a null value.
</summary>
<param name="reader">The reader.</param>
<returns>Whether the reader contains null.</returns>
</member>
<member name="T:Jellyfin.Extensions.ReadOnlyListExtension">
<summary>
Static extensions for the <see cref="T:System.Collections.Generic.IReadOnlyList`1"/> interface.
</summary>
</member>
<member name="M:Jellyfin.Extensions.ReadOnlyListExtension.IndexOf``1(System.Collections.Generic.IReadOnlyList{``0},``0)">
<summary>
Finds the index of the desired item.
</summary>
<param name="source">The source list.</param>
<param name="value">The value to fine.</param>
<typeparam name="T">The type of item to find.</typeparam>
<returns>Index if found, else -1.</returns>
</member>
<member name="M:Jellyfin.Extensions.ReadOnlyListExtension.FindIndex``1(System.Collections.Generic.IReadOnlyList{``0},System.Predicate{``0})">
<summary>
Finds the index of the predicate.
</summary>
<param name="source">The source list.</param>
<param name="match">The value to find.</param>
<typeparam name="T">The type of item to find.</typeparam>
<returns>Index if found, else -1.</returns>
</member>
<member name="M:Jellyfin.Extensions.ReadOnlyListExtension.FirstOrDefault``1(System.Collections.Generic.IReadOnlyList{``0})">
<summary>
Get the first or default item from a list.
</summary>
<param name="source">The source list.</param>
<typeparam name="T">The type of item.</typeparam>
<returns>The first item or default if list is empty.</returns>
</member>
<member name="T:Jellyfin.Extensions.ShuffleExtensions">
<summary>
Provides <c>Shuffle</c> extensions methods for <see cref="T:System.Collections.Generic.IList`1" />.
</summary>
</member>
<member name="M:Jellyfin.Extensions.ShuffleExtensions.Shuffle``1(System.Collections.Generic.IList{``0})">
<summary>
Shuffles the items in a list.
</summary>
<param name="list">The list that should get shuffled.</param>
<typeparam name="T">The type.</typeparam>
</member>
<member name="M:Jellyfin.Extensions.ShuffleExtensions.Shuffle``1(System.Collections.Generic.IList{``0},System.Random)">
<summary>
Shuffles the items in a list.
</summary>
<param name="list">The list that should get shuffled.</param>
<param name="rng">The random number generator to use.</param>
<typeparam name="T">The type.</typeparam>
</member>
<member name="T:Jellyfin.Extensions.SplitStringExtensions">
<summary>
Extension class for splitting lines without unnecessary allocations.
</summary>
</member>
<member name="M:Jellyfin.Extensions.SplitStringExtensions.SpanSplit(System.String,System.Char)">
<summary>
Creates a new string split enumerator.
</summary>
<param name="str">The string to split.</param>
<param name="separator">The separator to split on.</param>
<returns>The enumerator struct.</returns>
</member>
<member name="M:Jellyfin.Extensions.SplitStringExtensions.Split(System.ReadOnlySpan{System.Char},System.Char)">
<summary>
Creates a new span split enumerator.
</summary>
<param name="str">The span to split.</param>
<param name="separator">The separator to split on.</param>
<returns>The enumerator struct.</returns>
</member>
<member name="T:Jellyfin.Extensions.SplitStringExtensions.Enumerator">
<summary>
Provides an enumerator for the substrings separated by the separator.
</summary>
</member>
<member name="M:Jellyfin.Extensions.SplitStringExtensions.Enumerator.#ctor(System.ReadOnlySpan{System.Char},System.Char)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Extensions.SplitStringExtensions.Enumerator"/> struct.
</summary>
<param name="str">The span to split.</param>
<param name="separator">The separator to split on.</param>
</member>
<member name="P:Jellyfin.Extensions.SplitStringExtensions.Enumerator.Current">
<summary>
Gets a reference to the item at the current position of the enumerator.
</summary>
</member>
<member name="M:Jellyfin.Extensions.SplitStringExtensions.Enumerator.GetEnumerator">
<summary>
Returns <c>this</c>.
</summary>
<returns><c>this</c>.</returns>
</member>
<member name="M:Jellyfin.Extensions.SplitStringExtensions.Enumerator.MoveNext">
<summary>
Advances the enumerator to the next item.
</summary>
<returns><c>true</c> if there is a next element; otherwise <c>false</c>.</returns>
</member>
<member name="T:Jellyfin.Extensions.StreamExtensions">
<summary>
Class BaseExtensions.
</summary>
</member>
<member name="M:Jellyfin.Extensions.StreamExtensions.ReadAllLines(System.IO.Stream)">
<summary>
Reads all lines in the <see cref="T:System.IO.Stream" />.
</summary>
<param name="stream">The <see cref="T:System.IO.Stream" /> to read from.</param>
<returns>All lines in the stream.</returns>
</member>
<member name="M:Jellyfin.Extensions.StreamExtensions.ReadAllLines(System.IO.Stream,System.Text.Encoding)">
<summary>
Reads all lines in the <see cref="T:System.IO.Stream" />.
</summary>
<param name="stream">The <see cref="T:System.IO.Stream" /> to read from.</param>
<param name="encoding">The character encoding to use.</param>
<returns>All lines in the stream.</returns>
</member>
<member name="M:Jellyfin.Extensions.StreamExtensions.ReadAllLines(System.IO.TextReader)">
<summary>
Reads all lines in the <see cref="T:System.IO.TextReader" />.
</summary>
<param name="reader">The <see cref="T:System.IO.TextReader" /> to read from.</param>
<returns>All lines in the stream.</returns>
</member>
<member name="M:Jellyfin.Extensions.StreamExtensions.ReadAllLinesAsync(System.IO.TextReader,System.Threading.CancellationToken)">
<summary>
Reads all lines in the <see cref="T:System.IO.TextReader" />.
</summary>
<param name="reader">The <see cref="T:System.IO.TextReader" /> to read from.</param>
<param name="cancellationToken">The token to monitor for cancellation requests.</param>
<returns>All lines in the stream.</returns>
</member>
<member name="T:Jellyfin.Extensions.StringBuilderExtensions">
<summary>
Extension methods for the <see cref="T:System.Text.StringBuilder"/> class.
</summary>
</member>
<member name="M:Jellyfin.Extensions.StringBuilderExtensions.AppendJoinInSingleQuotes(System.Text.StringBuilder,System.Char,System.Collections.Generic.IReadOnlyList{System.String})">
<summary>
Concatenates and appends the members of a collection in single quotes using the specified delimiter.
</summary>
<param name="builder">The string builder.</param>
<param name="delimiter">The character delimiter.</param>
<param name="values">The collection of strings to concatenate.</param>
<returns>The updated string builder.</returns>
</member>
<member name="T:Jellyfin.Extensions.StringExtensions">
<summary>
Provides extensions methods for <see cref="T:System.String" />.
</summary>
<summary>
Checks whether or not the specified string has diacritics in it.
</summary>
</member>
<member name="M:Jellyfin.Extensions.StringExtensions.RemoveDiacritics(System.String)">
<summary>
Removes the diacritics character from the strings.
</summary>
<param name="text">The string to act on.</param>
<returns>The string without diacritics character.</returns>
</member>
<member name="M:Jellyfin.Extensions.StringExtensions.HasDiacritics(System.String)">
<summary>
Checks whether or not the specified string has diacritics in it.
</summary>
<param name="text">The string to check.</param>
<returns>True if the string has diacritics, false otherwise.</returns>
</member>
<member name="M:Jellyfin.Extensions.StringExtensions.Count(System.ReadOnlySpan{System.Char},System.Char)">
<summary>
Counts the number of occurrences of [needle] in the string.
</summary>
<param name="value">The haystack to search in.</param>
<param name="needle">The character to search for.</param>
<returns>The number of occurrences of the [needle] character.</returns>
</member>
<member name="M:Jellyfin.Extensions.StringExtensions.LeftPart(System.ReadOnlySpan{System.Char},System.Char)">
<summary>
Returns the part on the left of the <c>needle</c>.
</summary>
<param name="haystack">The string to seek.</param>
<param name="needle">The needle to find.</param>
<returns>The part left of the <paramref name="needle" />.</returns>
</member>
<member name="M:Jellyfin.Extensions.StringExtensions.RightPart(System.ReadOnlySpan{System.Char},System.Char)">
<summary>
Returns the part on the right of the <c>needle</c>.
</summary>
<param name="haystack">The string to seek.</param>
<param name="needle">The needle to find.</param>
<returns>The part right of the <paramref name="needle" />.</returns>
</member>
<member name="M:Jellyfin.Extensions.StringExtensions.Transliterated(System.String)">
<summary>
Returns a transliterated string which only contain ascii characters.
</summary>
<param name="text">The string to act on.</param>
<returns>The transliterated string.</returns>
</member>
<member name="M:Jellyfin.Extensions.StringExtensions.Trimmed(System.Collections.Generic.IEnumerable{System.String})">
<summary>
Ensures all strings are non-null and trimmed of leading an trailing blanks.
</summary>
<param name="values">The enumerable of strings to trim.</param>
<returns>The enumeration of trimmed strings.</returns>
</member>
<member name="M:Jellyfin.Extensions.StringExtensions.TruncateAtNull(System.String)">
<summary>
Truncates a string at the first null character ('\0').
</summary>
<param name="text">The input string.</param>
<returns>
The substring up to (but not including) the first null character,
or the original string if no null character is present.
</returns>
</member>
<member name="M:Jellyfin.Extensions.StringExtensions.NonConformingUnicodeRegex">
<remarks>
Pattern:<br/>
<code>([\uD800-\uDBFF](?![\uDC00-\uDFFF]))|((?&lt;![\uD800-\uDBFF])[\uDC00-\uDFFF])|()</code><br/>
Explanation:<br/>
<code>
○ Match with 3 alternative expressions, atomically.<br/>
○ 1st capture group.<br/>
○ Match a character in the set [\uD800-\uDBFF].<br/>
○ Zero-width negative lookahead.<br/>
○ Match a character in the set [\uDC00-\uDFFF].<br/>
○ 2nd capture group.<br/>
○ Zero-width negative lookbehind.<br/>
○ Match a character in the set [\uD800-\uDBFF] right-to-left.<br/>
○ Match a character in the set [\uDC00-\uDFFF].<br/>
○ 3rd capture group.<br/>
○ Match ''.<br/>
</code>
</remarks>
</member>
<member name="T:System.Text.RegularExpressions.Generated.NonConformingUnicodeRegex_0">
<summary>Custom <see cref="T:System.Text.RegularExpressions.Regex"/>-derived type for the NonConformingUnicodeRegex method.</summary>
</member>
<member name="F:System.Text.RegularExpressions.Generated.NonConformingUnicodeRegex_0.Instance">
<summary>Cached, thread-safe singleton instance.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.NonConformingUnicodeRegex_0.#ctor">
<summary>Initializes the instance.</summary>
</member>
<member name="T:System.Text.RegularExpressions.Generated.NonConformingUnicodeRegex_0.RunnerFactory">
<summary>Provides a factory for creating <see cref="T:System.Text.RegularExpressions.RegexRunner"/> instances to be used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.NonConformingUnicodeRegex_0.RunnerFactory.CreateInstance">
<summary>Creates an instance of a <see cref="T:System.Text.RegularExpressions.RegexRunner"/> used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
</member>
<member name="T:System.Text.RegularExpressions.Generated.NonConformingUnicodeRegex_0.RunnerFactory.Runner">
<summary>Provides the runner that contains the custom logic implementing the specified regular expression.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.NonConformingUnicodeRegex_0.RunnerFactory.Runner.Scan(System.ReadOnlySpan{System.Char})">
<summary>Scan the <paramref name="inputSpan"/> starting from base.runtextstart for the next match.</summary>
<param name="inputSpan">The text being scanned by the regular expression.</param>
</member>
<member name="M:System.Text.RegularExpressions.Generated.NonConformingUnicodeRegex_0.RunnerFactory.Runner.TryFindNextPossibleStartingPosition(System.ReadOnlySpan{System.Char})">
<summary>Search <paramref name="inputSpan"/> starting from base.runtextpos for the next location a match could possibly start.</summary>
<param name="inputSpan">The text being scanned by the regular expression.</param>
<returns>true if a possible match was found; false if no more matches are possible.</returns>
</member>
<member name="M:System.Text.RegularExpressions.Generated.NonConformingUnicodeRegex_0.RunnerFactory.Runner.TryMatchAtCurrentPosition(System.ReadOnlySpan{System.Char})">
<summary>Determine whether <paramref name="inputSpan"/> at base.runtextpos is a match for the regular expression.</summary>
<param name="inputSpan">The text being scanned by the regular expression.</param>
<returns>true if the regular expression matches at the current position; otherwise, false.</returns>
</member>
<member name="T:System.Text.RegularExpressions.Generated.Utilities">
<summary>Helper methods used by generated <see cref="T:System.Text.RegularExpressions.Regex"/>-derived implementations.</summary>
</member>
<member name="F:System.Text.RegularExpressions.Generated.Utilities.s_defaultTimeout">
<summary>Default timeout value set in <see cref="T:System.AppContext"/>, or <see cref="F:System.Text.RegularExpressions.Regex.InfiniteMatchTimeout"/> if none was set.</summary>
</member>
<member name="F:System.Text.RegularExpressions.Generated.Utilities.s_hasTimeout">
<summary>Whether <see cref="F:System.Text.RegularExpressions.Generated.Utilities.s_defaultTimeout"/> is non-infinite.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.Utilities.IndexOfNonAsciiOrAny_AEA8CFA2B5BC71ABC904D402F4CC4D3E0211E0681824955E81054C16A76CB030(System.ReadOnlySpan{System.Char})">
<summary>Finds the next index of any character that matches a character in the set [\uD800-\uDFFF\uFFFD].</summary>
</member>
</members>
</doc>
File diff suppressed because it is too large Load Diff
-224
View File
@@ -1,224 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Jellyfin.MediaEncoding.Hls</name>
</assembly>
<members>
<member name="T:Jellyfin.MediaEncoding.Hls.Cache.CacheDecorator">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Cache.CacheDecorator.#ctor(MediaBrowser.Controller.Persistence.IKeyframeRepository,Jellyfin.MediaEncoding.Hls.Extractors.IKeyframeExtractor,Microsoft.Extensions.Logging.ILogger{Jellyfin.MediaEncoding.Hls.Cache.CacheDecorator})">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.MediaEncoding.Hls.Cache.CacheDecorator"/> class.
</summary>
<param name="keyframeRepository">An instance of the <see cref="T:MediaBrowser.Controller.Persistence.IKeyframeRepository"/> interface.</param>
<param name="keyframeExtractor">An instance of the <see cref="T:Jellyfin.MediaEncoding.Hls.Extractors.IKeyframeExtractor"/> interface.</param>
<param name="logger">An instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Cache.CacheDecorator.IsMetadataBased">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Cache.CacheDecorator.TryExtractKeyframes(System.Guid,System.String,Jellyfin.MediaEncoding.Keyframes.KeyframeData@)">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Cache.CacheDecorator.LogKeyframeExtractionFailed(Microsoft.Extensions.Logging.ILogger,System.String)">
<summary>
<para><b>Message:</b> Failed to extract keyframes using {ExtractorName}</para>
<para><b>Level:</b> Debug</para>
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Cache.CacheDecorator.LogKeyframeExtractionSucceeded(Microsoft.Extensions.Logging.ILogger,System.String)">
<summary>
<para><b>Message:</b> Successfully extracted keyframes using {ExtractorName}</para>
<para><b>Level:</b> Debug</para>
</summary>
</member>
<member name="T:Jellyfin.MediaEncoding.Hls.Extensions.MediaEncodingHlsServiceCollectionExtensions">
<summary>
Extensions for the <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/> interface.
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Extensions.MediaEncodingHlsServiceCollectionExtensions.AddHlsPlaylistGenerator(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
<summary>
Adds the hls playlist generators to the <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>.
</summary>
<param name="serviceCollection">An instance of the <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/> interface.</param>
<returns>The updated service collection.</returns>
</member>
<member name="T:Jellyfin.MediaEncoding.Hls.Extractors.FfProbeKeyframeExtractor">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Extractors.FfProbeKeyframeExtractor.#ctor(MediaBrowser.Controller.MediaEncoding.IMediaEncoder,Emby.Naming.Common.NamingOptions,Microsoft.Extensions.Logging.ILogger{Jellyfin.MediaEncoding.Hls.Extractors.FfProbeKeyframeExtractor})">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.MediaEncoding.Hls.Extractors.FfProbeKeyframeExtractor"/> class.
</summary>
<param name="mediaEncoder">An instance of the <see cref="T:MediaBrowser.Controller.MediaEncoding.IMediaEncoder"/> interface.</param>
<param name="namingOptions">An instance of <see cref="T:Emby.Naming.Common.NamingOptions"/>.</param>
<param name="logger">An instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Extractors.FfProbeKeyframeExtractor.IsMetadataBased">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Extractors.FfProbeKeyframeExtractor.TryExtractKeyframes(System.Guid,System.String,Jellyfin.MediaEncoding.Keyframes.KeyframeData@)">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Extractors.FfProbeKeyframeExtractor.LogKeyframeExtractionError(Microsoft.Extensions.Logging.ILogger,System.String,System.Exception)">
<summary>
<para><b>Message:</b> Extracting keyframes from {FilePath} using ffprobe failed</para>
<para><b>Level:</b> Error</para>
</summary>
</member>
<member name="T:Jellyfin.MediaEncoding.Hls.Extractors.IKeyframeExtractor">
<summary>
Keyframe extractor.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Extractors.IKeyframeExtractor.IsMetadataBased">
<summary>
Gets a value indicating whether the extractor is based on container metadata.
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Extractors.IKeyframeExtractor.TryExtractKeyframes(System.Guid,System.String,Jellyfin.MediaEncoding.Keyframes.KeyframeData@)">
<summary>
Attempt to extract keyframes.
</summary>
<param name="itemId">The item id.</param>
<param name="filePath">The path to the file.</param>
<param name="keyframeData">The keyframes.</param>
<returns>A value indicating whether the keyframe extraction was successful.</returns>
</member>
<member name="T:Jellyfin.MediaEncoding.Hls.Extractors.MatroskaKeyframeExtractor">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Extractors.MatroskaKeyframeExtractor.#ctor(Microsoft.Extensions.Logging.ILogger{Jellyfin.MediaEncoding.Hls.Extractors.MatroskaKeyframeExtractor})">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.MediaEncoding.Hls.Extractors.MatroskaKeyframeExtractor"/> class.
</summary>
<param name="logger">An instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Extractors.MatroskaKeyframeExtractor.IsMetadataBased">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Extractors.MatroskaKeyframeExtractor.TryExtractKeyframes(System.Guid,System.String,Jellyfin.MediaEncoding.Keyframes.KeyframeData@)">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Extractors.MatroskaKeyframeExtractor.LogKeyframeExtractionError(Microsoft.Extensions.Logging.ILogger,System.String,System.Exception)">
<summary>
<para><b>Message:</b> Extracting keyframes from {FilePath} using matroska metadata failed</para>
<para><b>Level:</b> Error</para>
</summary>
</member>
<member name="T:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest">
<summary>
Request class for the <see cref="M:Jellyfin.MediaEncoding.Hls.Playlist.IDynamicHlsPlaylistGenerator.CreateMainPlaylist(Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest)"/> method.
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest.#ctor(System.Nullable{System.Guid},System.String,System.Int32,System.Int64,System.String,System.String,System.String,System.Boolean)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest"/> class.
</summary>
<param name="mediaSourceId">The media source id.</param>
<param name="filePath">The absolute file path to the file.</param>
<param name="desiredSegmentLengthMs">The desired segment length in milliseconds.</param>
<param name="totalRuntimeTicks">The total duration of the file in ticks.</param>
<param name="segmentContainer">The desired segment container eg. "ts".</param>
<param name="endpointPrefix">The URI prefix for the relative URL in the playlist.</param>
<param name="queryString">The desired query string to append (must start with ?).</param>
<param name="isRemuxingVideo">Whether the video is being remuxed.</param>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest.MediaSourceId">
<summary>
Gets the media source id.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest.FilePath">
<summary>
Gets the file path.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest.DesiredSegmentLengthMs">
<summary>
Gets the desired segment length in milliseconds.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest.TotalRuntimeTicks">
<summary>
Gets the total runtime in ticks.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest.SegmentContainer">
<summary>
Gets the segment container.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest.EndpointPrefix">
<summary>
Gets the endpoint prefix for the URL.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest.QueryString">
<summary>
Gets the query string.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest.IsRemuxingVideo">
<summary>
Gets a value indicating whether the video is being remuxed.
</summary>
</member>
<member name="T:Jellyfin.MediaEncoding.Hls.Playlist.DynamicHlsPlaylistGenerator">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Playlist.DynamicHlsPlaylistGenerator.#ctor(MediaBrowser.Controller.Configuration.IServerConfigurationManager,System.Collections.Generic.IEnumerable{Jellyfin.MediaEncoding.Hls.Extractors.IKeyframeExtractor})">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.MediaEncoding.Hls.Playlist.DynamicHlsPlaylistGenerator"/> class.
</summary>
<param name="serverConfigurationManager">An instance of the see <see cref="T:MediaBrowser.Controller.Configuration.IServerConfigurationManager"/> interface.</param>
<param name="extractors">An instance of <see cref="T:System.Collections.Generic.IEnumerable`1"/>.</param>
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Playlist.DynamicHlsPlaylistGenerator.CreateMainPlaylist(Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest)">
<inheritdoc />
</member>
<member name="T:Jellyfin.MediaEncoding.Hls.Playlist.IDynamicHlsPlaylistGenerator">
<summary>
Generator for dynamic HLS playlists where the segment lengths aren't known in advance.
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.Playlist.IDynamicHlsPlaylistGenerator.CreateMainPlaylist(Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest)">
<summary>
Creates the main playlist containing the main video or audio stream.
</summary>
<param name="request">An instance of the <see cref="T:Jellyfin.MediaEncoding.Hls.Playlist.CreateMainPlaylistRequest"/> class.</param>
<returns>The playlist as a formatted string.</returns>
</member>
<member name="T:Jellyfin.MediaEncoding.Hls.ScheduledTasks.KeyframeExtractionScheduledTask">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.ScheduledTasks.KeyframeExtractionScheduledTask.#ctor(MediaBrowser.Model.Globalization.ILocalizationManager,MediaBrowser.Controller.Library.ILibraryManager,System.Collections.Generic.IEnumerable{Jellyfin.MediaEncoding.Hls.Extractors.IKeyframeExtractor})">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.MediaEncoding.Hls.ScheduledTasks.KeyframeExtractionScheduledTask"/> class.
</summary>
<param name="localizationManager">An instance of the <see cref="T:MediaBrowser.Model.Globalization.ILocalizationManager"/> interface.</param>
<param name="libraryManager">An instance of the <see cref="T:MediaBrowser.Controller.Library.ILibraryManager"/> interface.</param>
<param name="keyframeExtractors">The keyframe extractors.</param>
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.ScheduledTasks.KeyframeExtractionScheduledTask.Name">
<inheritdoc />
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.ScheduledTasks.KeyframeExtractionScheduledTask.Key">
<inheritdoc />
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.ScheduledTasks.KeyframeExtractionScheduledTask.Description">
<inheritdoc />
</member>
<member name="P:Jellyfin.MediaEncoding.Hls.ScheduledTasks.KeyframeExtractionScheduledTask.Category">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.ScheduledTasks.KeyframeExtractionScheduledTask.ExecuteAsync(System.IProgress{System.Double},System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:Jellyfin.MediaEncoding.Hls.ScheduledTasks.KeyframeExtractionScheduledTask.GetDefaultTriggers">
<inheritdoc />
</member>
</members>
</doc>
@@ -1,260 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Jellyfin.MediaEncoding.Keyframes</name>
</assembly>
<members>
<member name="T:Jellyfin.MediaEncoding.Keyframes.FfProbe.FfProbeKeyframeExtractor">
<summary>
FfProbe based keyframe extractor.
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.FfProbe.FfProbeKeyframeExtractor.GetKeyframeData(System.String,System.String)">
<summary>
Extracts the keyframes using the ffprobe executable at the specified path.
</summary>
<param name="ffProbePath">The path to the ffprobe executable.</param>
<param name="filePath">The file path.</param>
<returns>An instance of <see cref="T:Jellyfin.MediaEncoding.Keyframes.KeyframeData"/>.</returns>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.FfProbe.FfProbeKeyframeExtractor.ParseStream(System.IO.StreamReader)">
<summary>
Parses the keyframe data from the FFProbe stream.
</summary>
<param name="reader">The stream reader containing FFProbe output.</param>
<returns>The parsed keyframe data.</returns>
</member>
<member name="T:Jellyfin.MediaEncoding.Keyframes.FfTool.FfToolKeyframeExtractor">
<summary>
FfTool based keyframe extractor.
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.FfTool.FfToolKeyframeExtractor.GetKeyframeData(System.String,System.String)">
<summary>
Extracts the keyframes using the fftool executable at the specified path.
</summary>
<param name="ffToolPath">The path to the fftool executable.</param>
<param name="filePath">The file path.</param>
<returns>An instance of <see cref="T:Jellyfin.MediaEncoding.Keyframes.KeyframeData"/>.</returns>
</member>
<member name="T:Jellyfin.MediaEncoding.Keyframes.KeyframeData">
<summary>
Keyframe information for a specific file.
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.KeyframeData.#ctor(System.Int64,System.Collections.Generic.IReadOnlyList{System.Int64})">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.MediaEncoding.Keyframes.KeyframeData"/> class.
</summary>
<param name="totalDuration">The total duration of the video stream in ticks.</param>
<param name="keyframeTicks">The video keyframes in ticks.</param>
</member>
<member name="P:Jellyfin.MediaEncoding.Keyframes.KeyframeData.TotalDuration">
<summary>
Gets the total duration of the stream in ticks.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Keyframes.KeyframeData.KeyframeTicks">
<summary>
Gets the keyframes in ticks.
</summary>
</member>
<member name="T:Jellyfin.MediaEncoding.Keyframes.Matroska.Extensions.EbmlReaderExtensions">
<summary>
Extension methods for the <see cref="T:NEbml.Core.EbmlReader"/> class.
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.Matroska.Extensions.EbmlReaderExtensions.FindElement(NEbml.Core.EbmlReader,System.UInt64)">
<summary>
Traverses the current container to find the element with <paramref name="identifier"/> identifier.
</summary>
<param name="reader">An instance of <see cref="T:NEbml.Core.EbmlReader"/>.</param>
<param name="identifier">The element identifier.</param>
<returns>A value indicating whether the element was found.</returns>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.Matroska.Extensions.EbmlReaderExtensions.ReadUIntFromBinary(NEbml.Core.EbmlReader)">
<summary>
Reads the current position in the file as an unsigned integer converted from binary.
</summary>
<param name="reader">An instance of <see cref="T:NEbml.Core.EbmlReader"/>.</param>
<returns>The unsigned integer.</returns>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.Matroska.Extensions.EbmlReaderExtensions.ReadSeekHead(NEbml.Core.EbmlReader)">
<summary>
Reads from the start of the file to retrieve the SeekHead segment.
</summary>
<param name="reader">An instance of <see cref="T:NEbml.Core.EbmlReader"/>.</param>
<returns>Instance of <see cref="T:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.SeekHead"/>.</returns>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.Matroska.Extensions.EbmlReaderExtensions.ReadInfo(NEbml.Core.EbmlReader,System.Int64)">
<summary>
Reads from SegmentContainer to retrieve the Info segment.
</summary>
<param name="reader">An instance of <see cref="T:NEbml.Core.EbmlReader"/>.</param>
<param name="position">The position of the info segment relative to the Segment container.</param>
<returns>Instance of <see cref="T:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.Info"/>.</returns>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.Matroska.Extensions.EbmlReaderExtensions.FindFirstTrackNumberByType(NEbml.Core.EbmlReader,System.Int64,System.UInt64)">
<summary>
Enters the Tracks segment and reads all tracks to find the specified type.
</summary>
<param name="reader">Instance of <see cref="T:NEbml.Core.EbmlReader"/>.</param>
<param name="tracksPosition">The relative position of the tracks segment.</param>
<param name="type">The track type identifier.</param>
<returns>The first track number with the specified type.</returns>
<exception cref="T:System.InvalidOperationException">Stream type is not found.</exception>
</member>
<member name="T:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants">
<summary>
Constants for the Matroska identifiers.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.SegmentContainer">
<summary>
The Matroska segment container identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.SeekHead">
<summary>
The Matroska seek head identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.Seek">
<summary>
The Matroska seek identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.Info">
<summary>
The Matroska info identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.TimestampScale">
<summary>
The Matroska timestamp scale identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.Duration">
<summary>
The Matroska duration identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.Tracks">
<summary>
The Matroska tracks identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.TrackEntry">
<summary>
The Matroska track entry identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.TrackNumber">
<summary>
The Matroska track number identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.TrackType">
<summary>
The Matroska track type identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.TrackTypeVideo">
<summary>
The Matroska video track type value.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.TrackTypeSubtitle">
<summary>
The Matroska subtitle track type value.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.Cues">
<summary>
The Matroska cues identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.CueTime">
<summary>
The Matroska cue time identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.CuePoint">
<summary>
The Matroska cue point identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.CueTrackPositions">
<summary>
The Matroska cue track positions identifier.
</summary>
</member>
<member name="F:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaConstants.CuePointTrackNumber">
<summary>
The Matroska cue point track number identifier.
</summary>
</member>
<member name="T:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaKeyframeExtractor">
<summary>
The keyframe extractor for the matroska container.
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.Matroska.MatroskaKeyframeExtractor.GetKeyframeData(System.String)">
<summary>
Extracts the keyframes in ticks (scaled using the container timestamp scale) from the matroska container.
</summary>
<param name="filePath">The file path.</param>
<returns>An instance of <see cref="T:Jellyfin.MediaEncoding.Keyframes.KeyframeData"/>.</returns>
</member>
<member name="T:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.Info">
<summary>
The matroska Info segment.
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.Info.#ctor(System.Int64,System.Nullable{System.Double})">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.Info"/> class.
</summary>
<param name="timestampScale">The timestamp scale in nanoseconds.</param>
<param name="duration">The duration of the entire file.</param>
</member>
<member name="P:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.Info.TimestampScale">
<summary>
Gets the timestamp scale in nanoseconds.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.Info.Duration">
<summary>
Gets the total duration of the file.
</summary>
</member>
<member name="T:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.SeekHead">
<summary>
The matroska SeekHead segment. All positions are relative to the Segment container.
</summary>
</member>
<member name="M:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.SeekHead.#ctor(System.Int64,System.Int64,System.Int64)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.SeekHead"/> class.
</summary>
<param name="infoPosition">The relative file position of the info segment.</param>
<param name="tracksPosition">The relative file position of the tracks segment.</param>
<param name="cuesPosition">The relative file position of the cues segment.</param>
</member>
<member name="P:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.SeekHead.InfoPosition">
<summary>
Gets relative file position of the info segment.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.SeekHead.TracksPosition">
<summary>
Gets the relative file position of the tracks segment.
</summary>
</member>
<member name="P:Jellyfin.MediaEncoding.Keyframes.Matroska.Models.SeekHead.CuesPosition">
<summary>
Gets the relative file position of the cues segment.
</summary>
</member>
</members>
</doc>
-305
View File
@@ -1,305 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Jellyfin.Networking</name>
</assembly>
<members>
<member name="T:Jellyfin.Networking.AutoDiscoveryHost">
<summary>
<see cref="T:Microsoft.Extensions.Hosting.BackgroundService"/> responsible for responding to auto-discovery messages.
</summary>
</member>
<member name="F:Jellyfin.Networking.AutoDiscoveryHost.PortNumber">
<summary>
The port to listen on for auto-discovery messages.
</summary>
</member>
<member name="M:Jellyfin.Networking.AutoDiscoveryHost.#ctor(Microsoft.Extensions.Logging.ILogger{Jellyfin.Networking.AutoDiscoveryHost},MediaBrowser.Controller.IServerApplicationHost,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Common.Net.INetworkManager)">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Networking.AutoDiscoveryHost" /> class.
</summary>
<param name="logger">The <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/>.</param>
<param name="appHost">The <see cref="T:MediaBrowser.Controller.IServerApplicationHost"/>.</param>
<param name="configurationManager">The <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/>.</param>
<param name="networkManager">The <see cref="T:MediaBrowser.Common.Net.INetworkManager"/>.</param>
</member>
<member name="M:Jellyfin.Networking.AutoDiscoveryHost.ExecuteAsync(System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="T:Jellyfin.Networking.HappyEyeballs.HttpClientExtension">
<summary>
Defines the <see cref="T:Jellyfin.Networking.HappyEyeballs.HttpClientExtension"/> class.
Implementation taken from https://github.com/ppy/osu-framework/pull/4191 .
</summary>
</member>
<member name="P:Jellyfin.Networking.HappyEyeballs.HttpClientExtension.UseIPv6">
<summary>
Gets or sets a value indicating whether the client should use IPv6.
</summary>
</member>
<member name="M:Jellyfin.Networking.HappyEyeballs.HttpClientExtension.OnConnect(System.Net.Http.SocketsHttpConnectionContext,System.Threading.CancellationToken)">
<summary>
Implements the httpclient callback method.
</summary>
<param name="context">The <see cref="T:System.Net.Http.SocketsHttpConnectionContext"/> instance.</param>
<param name="cancellationToken">The <see cref="T:System.Threading.CancellationToken"/> instance.</param>
<returns>The http steam.</returns>
</member>
<member name="T:Jellyfin.Networking.Manager.NetworkManager">
<summary>
Class to take care of network interface management.
</summary>
</member>
<member name="F:Jellyfin.Networking.Manager.NetworkManager._initLock">
<summary>
Threading lock for network properties.
</summary>
</member>
<member name="F:Jellyfin.Networking.Manager.NetworkManager._publishedServerUrls">
<summary>
Holds the published server URLs and the IPs to use them on.
</summary>
</member>
<member name="F:Jellyfin.Networking.Manager.NetworkManager._eventfire">
<summary>
Used to stop "event-racing conditions".
</summary>
</member>
<member name="F:Jellyfin.Networking.Manager.NetworkManager._interfaces">
<summary>
Dictionary containing interface addresses and their subnets.
</summary>
</member>
<member name="F:Jellyfin.Networking.Manager.NetworkManager._lanSubnets">
<summary>
Unfiltered user defined LAN subnets (<see cref="P:MediaBrowser.Common.Net.NetworkConfiguration.LocalNetworkSubnets"/>)
or internal interface network subnets if undefined by user.
</summary>
</member>
<member name="F:Jellyfin.Networking.Manager.NetworkManager._excludedSubnets">
<summary>
User defined list of subnets to excluded from the LAN.
</summary>
</member>
<member name="F:Jellyfin.Networking.Manager.NetworkManager._disposed">
<summary>
True if this object is disposed.
</summary>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.#ctor(MediaBrowser.Common.Configuration.IConfigurationManager,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Logging.ILogger{Jellyfin.Networking.Manager.NetworkManager})">
<summary>
Initializes a new instance of the <see cref="T:Jellyfin.Networking.Manager.NetworkManager"/> class.
</summary>
<param name="configurationManager">The <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> instance.</param>
<param name="startupConfig">The <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/> instance holding startup parameters.</param>
<param name="logger">Logger to use for messages.</param>
</member>
<member name="E:Jellyfin.Networking.Manager.NetworkManager.NetworkChanged">
<summary>
Event triggered on network changes.
</summary>
</member>
<member name="P:Jellyfin.Networking.Manager.NetworkManager.MockNetworkSettings">
<summary>
Gets or sets a value indicating whether testing is taking place.
</summary>
</member>
<member name="P:Jellyfin.Networking.Manager.NetworkManager.IsIPv4Enabled">
<summary>
Gets a value indicating whether IPv4 is enabled.
</summary>
</member>
<member name="P:Jellyfin.Networking.Manager.NetworkManager.IsIPv6Enabled">
<summary>
Gets a value indicating whether IP6 is enabled.
</summary>
</member>
<member name="P:Jellyfin.Networking.Manager.NetworkManager.TrustAllIPv6Interfaces">
<summary>
Gets a value indicating whether is all IPv6 interfaces are trusted as internal.
</summary>
</member>
<member name="P:Jellyfin.Networking.Manager.NetworkManager.PublishedServerUrls">
<summary>
Gets the Published server override list.
</summary>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.Dispose">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.OnNetworkAvailabilityChanged(System.Object,System.Net.NetworkInformation.NetworkAvailabilityEventArgs)">
<summary>
Handler for network change events.
</summary>
<param name="sender">Sender.</param>
<param name="e">A <see cref="T:System.Net.NetworkInformation.NetworkAvailabilityEventArgs"/> containing network availability information.</param>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.OnNetworkAddressChanged(System.Object,System.EventArgs)">
<summary>
Handler for network change events.
</summary>
<param name="sender">Sender.</param>
<param name="e">An <see cref="T:System.EventArgs"/>.</param>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.HandleNetworkChange">
<summary>
Triggers our event, and re-loads interface information.
</summary>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.OnNetworkChange">
<summary>
Waits for 2 seconds before re-initialising the settings, as typically these events fire multiple times in succession.
</summary>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.InitializeInterfaces">
<summary>
Generate a list of all the interface ip addresses and submasks where that are in the active/unknown state.
</summary>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.GetInterfacesCore(Microsoft.Extensions.Logging.ILogger,System.Boolean,System.Boolean)">
<summary>
Generate a list of all the interface ip addresses and submasks where that are in the active/unknown state.
</summary>
<param name="logger">The logger.</param>
<param name="isIPv4Enabled">If true evaluates IPV4 type ip addresses.</param>
<param name="isIPv6Enabled">If true evaluates IPV6 type ip addresses.</param>
<returns>A list of all locally known up addresses and submasks that are to be considered usable.</returns>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.InitializeLan(MediaBrowser.Common.Net.NetworkConfiguration)">
<summary>
Initializes internal LAN cache.
</summary>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.EnforceBindSettings(MediaBrowser.Common.Net.NetworkConfiguration)">
<summary>
Enforce bind addresses and exclusions on available interfaces.
</summary>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.FilterBindSettings(MediaBrowser.Common.Net.NetworkConfiguration,System.Collections.Generic.IList{MediaBrowser.Model.Net.IPData},System.Boolean,System.Boolean)">
<summary>
Filters a list of bind addresses and exclusions on available interfaces.
</summary>
<param name="config">The network config to be filtered by.</param>
<param name="interfaces">A list of possible interfaces to be filtered.</param>
<param name="isIPv4Enabled">If true evaluates IPV4 type ip addresses.</param>
<param name="isIPv6Enabled">If true evaluates IPV6 type ip addresses.</param>
<returns>A list of all locally known up addresses and submasks that are to be considered usable.</returns>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.InitializeRemote(MediaBrowser.Common.Net.NetworkConfiguration)">
<summary>
Initializes the remote address values.
</summary>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.InitializeOverrides(MediaBrowser.Common.Net.NetworkConfiguration)">
<summary>
Parses the user defined overrides into the dictionary object.
Overrides are the equivalent of localised publishedServerUrl, enabling
different addresses to be advertised over different subnets.
format is subnet=ipaddress|host|uri
when subnet = 0.0.0.0, any external address matches.
</summary>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.UpdateSettings(System.Object)">
<summary>
Reloads all settings and re-Initializes the instance.
</summary>
<param name="configuration">The <see cref="T:MediaBrowser.Common.Net.NetworkConfiguration"/> to use.</param>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.Dispose(System.Boolean)">
<summary>
Protected implementation of Dispose pattern.
</summary>
<param name="disposing"><c>True</c> to dispose the managed state.</param>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.TryParseInterface(System.String,System.Collections.Generic.IReadOnlyList{MediaBrowser.Model.Net.IPData}@)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.ShouldAllowServerAccess(System.Net.IPAddress)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.GetLoopbacks">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.GetAllBindInterfaces(System.Boolean)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.GetAllBindInterfaces(System.Boolean,MediaBrowser.Common.Configuration.IConfigurationManager,System.Collections.Generic.IReadOnlyList{MediaBrowser.Model.Net.IPData},System.Boolean,System.Boolean)">
<summary>
Reads the jellyfin configuration of the configuration manager and produces a list of interfaces that should be bound.
</summary>
<param name="individualInterfaces">Defines that only known interfaces should be used.</param>
<param name="configurationManager">The ConfigurationManager.</param>
<param name="knownInterfaces">The known interfaces that gets returned if possible or instructed.</param>
<param name="readIpv4">Include IPV4 type interfaces.</param>
<param name="readIpv6">Include IPV6 type interfaces.</param>
<returns>A list of ip address of which jellyfin should bind to.</returns>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.GetBindAddress(System.String,System.Nullable{System.Int32}@)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.GetBindAddress(Microsoft.AspNetCore.Http.HttpRequest,System.Nullable{System.Int32}@)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.GetBindAddress(System.Net.IPAddress,System.Nullable{System.Int32}@,System.Boolean)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.GetInternalBindAddresses">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.IsInLocalNetwork(System.String)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.IsLinkLocalAddress(System.Net.IPAddress)">
<summary>
Get if the IPAddress is Link-local.
</summary>
<param name="address">The IP Address.</param>
<returns>Bool indicates if the address is link-local.</returns>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.IsInLocalNetwork(System.Net.IPAddress)">
<inheritdoc/>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.CheckIfLanAndNotExcluded(System.Net.IPAddress)">
<summary>
Check if the address is in the LAN and not excluded.
</summary>
<param name="address">The IP address to check. The caller should make sure this is not an IPv4MappedToIPv6 address.</param>
<returns>Boolean indicates whether the address is in LAN.</returns>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.MatchesPublishedServerUrl(System.Net.IPAddress,System.Boolean,System.String@)">
<summary>
Attempts to match the source against the published server URL overrides.
</summary>
<param name="source">IP source address to use.</param>
<param name="isInExternalSubnet">True if the source is in an external subnet.</param>
<param name="bindPreference">The published server URL that matches the source address.</param>
<returns><c>true</c> if a match is found, <c>false</c> otherwise.</returns>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.MatchesBindInterface(System.Net.IPAddress,System.Boolean,System.String@)">
<summary>
Attempts to match the source against the user defined bind interfaces.
</summary>
<param name="source">IP source address to use.</param>
<param name="isInExternalSubnet">True if the source is in the external subnet.</param>
<param name="result">The result, if a match is found.</param>
<returns><c>true</c> if a match is found, <c>false</c> otherwise.</returns>
</member>
<member name="M:Jellyfin.Networking.Manager.NetworkManager.MatchesExternalInterface(System.Net.IPAddress,System.String@)">
<summary>
Attempts to match the source against external interfaces.
</summary>
<param name="source">IP source address to use.</param>
<param name="result">The result, if a match is found.</param>
<returns><c>true</c> if a match is found, <c>false</c> otherwise.</returns>
</member>
<member name="T:Jellyfin.Networking.Udp.SocketFactory">
<summary>
Factory class to create different kinds of sockets.
</summary>
</member>
<member name="M:Jellyfin.Networking.Udp.SocketFactory.CreateUdpBroadcastSocket(System.Int32)">
<inheritdoc />
</member>
</members>
</doc>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-500
View File
@@ -1,500 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>MediaBrowser.LocalMetadata</name>
</assembly>
<members>
<member name="T:MediaBrowser.LocalMetadata.BaseXmlProvider`1">
<summary>
The BaseXmlProvider.
</summary>
<typeparam name="T">Type of provider.</typeparam>
</member>
<member name="M:MediaBrowser.LocalMetadata.BaseXmlProvider`1.#ctor(MediaBrowser.Model.IO.IFileSystem)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.BaseXmlProvider`1"/> class.
</summary>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
</member>
<member name="P:MediaBrowser.LocalMetadata.BaseXmlProvider`1.Name">
<inheritdoc />
</member>
<member name="P:MediaBrowser.LocalMetadata.BaseXmlProvider`1.Order">
After Nfo
<inheritdoc />
</member>
<member name="P:MediaBrowser.LocalMetadata.BaseXmlProvider`1.FileSystem">
<summary>
Gets the IFileSystem.
</summary>
</member>
<member name="M:MediaBrowser.LocalMetadata.BaseXmlProvider`1.GetMetadata(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService,System.Threading.CancellationToken)">
<summary>
Gets metadata for item.
</summary>
<param name="info">The item info.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
<param name="cancellationToken">The cancellation token.</param>
<returns>The metadata for item.</returns>
</member>
<member name="M:MediaBrowser.LocalMetadata.BaseXmlProvider`1.Fetch(MediaBrowser.Controller.Providers.MetadataResult{`0},System.String,System.Threading.CancellationToken)">
<summary>
Get metadata from path.
</summary>
<param name="result">Resulting metadata.</param>
<param name="path">The path.</param>
<param name="cancellationToken">The cancellation token.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.BaseXmlProvider`1.GetXmlFile(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Get metadata from xml file.
</summary>
<param name="info">Item inf.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
<returns>The file system metadata.</returns>
</member>
<member name="M:MediaBrowser.LocalMetadata.BaseXmlProvider`1.HasChanged(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.LocalMetadata.Images.CollectionFolderLocalImageProvider">
<summary>
Collection folder local image provider.
</summary>
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.CollectionFolderLocalImageProvider.#ctor(MediaBrowser.Model.IO.IFileSystem)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.Images.CollectionFolderLocalImageProvider"/> class.
</summary>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
</member>
<member name="P:MediaBrowser.LocalMetadata.Images.CollectionFolderLocalImageProvider.Name">
<inheritdoc />
</member>
<member name="P:MediaBrowser.LocalMetadata.Images.CollectionFolderLocalImageProvider.Order">
Run after LocalImageProvider
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.CollectionFolderLocalImageProvider.Supports(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.CollectionFolderLocalImageProvider.GetImages(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.LocalMetadata.Images.EpisodeLocalImageProvider">
<summary>
Episode local image provider.
</summary>
</member>
<member name="P:MediaBrowser.LocalMetadata.Images.EpisodeLocalImageProvider.Name">
<inheritdoc />
</member>
<member name="P:MediaBrowser.LocalMetadata.Images.EpisodeLocalImageProvider.Order">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.EpisodeLocalImageProvider.Supports(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.EpisodeLocalImageProvider.GetImages(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.LocalMetadata.Images.InternalMetadataFolderImageProvider">
<summary>
Internal metadata folder image provider.
</summary>
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.InternalMetadataFolderImageProvider.#ctor(MediaBrowser.Model.IO.IFileSystem,Microsoft.Extensions.Logging.ILogger{MediaBrowser.LocalMetadata.Images.InternalMetadataFolderImageProvider})">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.Images.InternalMetadataFolderImageProvider"/> class.
</summary>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
</member>
<member name="P:MediaBrowser.LocalMetadata.Images.InternalMetadataFolderImageProvider.Order">
Make sure this is last so that all other locations are scanned first
<inheritdoc />
</member>
<member name="P:MediaBrowser.LocalMetadata.Images.InternalMetadataFolderImageProvider.Name">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.InternalMetadataFolderImageProvider.Supports(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.InternalMetadataFolderImageProvider.GetImages(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.LocalMetadata.Images.LocalImageProvider">
<summary>
Local image provider.
</summary>
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.LocalImageProvider.#ctor(MediaBrowser.Model.IO.IFileSystem)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.Images.LocalImageProvider"/> class.
</summary>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
</member>
<member name="P:MediaBrowser.LocalMetadata.Images.LocalImageProvider.Name">
<inheritdoc />
</member>
<member name="P:MediaBrowser.LocalMetadata.Images.LocalImageProvider.Order">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.LocalImageProvider.Supports(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.LocalImageProvider.GetImages(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.LocalImageProvider.GetImages(MediaBrowser.Controller.Entities.BaseItem,System.String,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Get images for item.
</summary>
<param name="item">The item.</param>
<param name="path">The images path.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
<returns>The local image info.</returns>
</member>
<member name="M:MediaBrowser.LocalMetadata.Images.LocalImageProvider.GetImages(MediaBrowser.Controller.Entities.BaseItem,System.Collections.Generic.IEnumerable{System.String},MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Get images for item from multiple paths.
</summary>
<param name="item">The item.</param>
<param name="paths">The image paths.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
<returns>The local image info.</returns>
</member>
<member name="T:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1">
<summary>
Provides a base class for parsing metadata xml.
</summary>
<typeparam name="T">Type of item xml parser.</typeparam>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser{`0}},MediaBrowser.Controller.Providers.IProviderManager)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1" /> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
</member>
<member name="P:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.Logger">
<summary>
Gets the logger.
</summary>
</member>
<member name="P:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.ProviderManager">
<summary>
Gets the provider manager.
</summary>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.Fetch(MediaBrowser.Controller.Providers.MetadataResult{`0},System.String,System.Threading.CancellationToken)">
<summary>
Fetches metadata for an item from one xml file.
</summary>
<param name="item">The item.</param>
<param name="metadataFile">The metadata file.</param>
<param name="cancellationToken">The cancellation token.</param>
<exception cref="T:System.ArgumentNullException">Item is null.</exception>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.Fetch(MediaBrowser.Controller.Providers.MetadataResult{`0},System.String,System.Xml.XmlReaderSettings,System.Text.Encoding,System.Threading.CancellationToken)">
<summary>
Fetches the specified item.
</summary>
<param name="item">The item.</param>
<param name="metadataFile">The metadata file.</param>
<param name="settings">The settings.</param>
<param name="encoding">The encoding.</param>
<param name="cancellationToken">The cancellation token.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.FetchDataFromXmlNode(System.Xml.XmlReader,MediaBrowser.Controller.Providers.MetadataResult{`0})">
<summary>
Fetches metadata from one Xml Element.
</summary>
<param name="reader">The reader.</param>
<param name="itemResult">The item result.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.FetchFromTaglinesNode(System.Xml.XmlReader,`0)">
<summary>
Fetches from taglines node.
</summary>
<param name="reader">The reader.</param>
<param name="item">The item.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.FetchFromGenresNode(System.Xml.XmlReader,`0)">
<summary>
Fetches from genres node.
</summary>
<param name="reader">The reader.</param>
<param name="item">The item.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.FetchDataFromPersonsNode(System.Xml.XmlReader,MediaBrowser.Controller.Providers.MetadataResult{`0})">
<summary>
Fetches the data from persons node.
</summary>
<param name="reader">The reader.</param>
<param name="item">The item.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.FetchFromStudiosNode(System.Xml.XmlReader,`0)">
<summary>
Fetches from studios node.
</summary>
<param name="reader">The reader.</param>
<param name="item">The item.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.GetLinkedChild(System.Xml.XmlReader)">
<summary>
Get linked child.
</summary>
<param name="reader">The xml reader.</param>
<returns>The linked child.</returns>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BaseItemXmlParser`1.GetShare(System.Xml.XmlReader)">
<summary>
Get share.
</summary>
<param name="reader">The xml reader.</param>
<returns>The share.</returns>
</member>
<member name="T:MediaBrowser.LocalMetadata.Parsers.BoxSetXmlParser">
<summary>
The box set xml parser.
</summary>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BoxSetXmlParser.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.LocalMetadata.Parsers.BoxSetXmlParser},MediaBrowser.Controller.Providers.IProviderManager)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.Parsers.BoxSetXmlParser"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.BoxSetXmlParser.FetchDataFromXmlNode(System.Xml.XmlReader,MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.Movies.BoxSet})">
<inheritdoc />
</member>
<member name="T:MediaBrowser.LocalMetadata.Parsers.PlaylistXmlParser">
<summary>
Playlist xml parser.
</summary>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.PlaylistXmlParser.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.LocalMetadata.Parsers.PlaylistXmlParser},MediaBrowser.Controller.Providers.IProviderManager)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.Parsers.PlaylistXmlParser"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Parsers.PlaylistXmlParser.FetchDataFromXmlNode(System.Xml.XmlReader,MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Playlists.Playlist})">
<inheritdoc />
</member>
<member name="T:MediaBrowser.LocalMetadata.Providers.BoxSetXmlProvider">
<summary>
Class BoxSetXmlProvider.
</summary>
</member>
<member name="M:MediaBrowser.LocalMetadata.Providers.BoxSetXmlProvider.#ctor(MediaBrowser.Model.IO.IFileSystem,Microsoft.Extensions.Logging.ILogger{MediaBrowser.LocalMetadata.Parsers.BoxSetXmlParser},MediaBrowser.Controller.Providers.IProviderManager)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.Providers.BoxSetXmlProvider"/> class.
</summary>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Providers.BoxSetXmlProvider.Fetch(MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.Movies.BoxSet},System.String,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Providers.BoxSetXmlProvider.GetXmlFile(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.LocalMetadata.Providers.PlaylistXmlProvider">
<summary>
Playlist xml provider.
</summary>
</member>
<member name="M:MediaBrowser.LocalMetadata.Providers.PlaylistXmlProvider.#ctor(MediaBrowser.Model.IO.IFileSystem,Microsoft.Extensions.Logging.ILogger{MediaBrowser.LocalMetadata.Parsers.PlaylistXmlParser},MediaBrowser.Controller.Providers.IProviderManager)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.Providers.PlaylistXmlProvider"/> class.
</summary>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Providers.PlaylistXmlProvider.Fetch(MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Playlists.Playlist},System.String,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Providers.PlaylistXmlProvider.GetXmlFile(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.#ctor(MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Controller.Configuration.IServerConfigurationManager,MediaBrowser.Controller.Library.ILibraryManager,Microsoft.Extensions.Logging.ILogger{MediaBrowser.LocalMetadata.Savers.BaseXmlSaver})">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver"/> class.
</summary>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="configurationManager">Instance of the <see cref="T:MediaBrowser.Controller.Configuration.IServerConfigurationManager"/> interface.</param>
<param name="libraryManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.ILibraryManager"/> interface.</param>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
</member>
<member name="P:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.FileSystem">
<summary>
Gets the file system.
</summary>
</member>
<member name="P:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.ConfigurationManager">
<summary>
Gets the configuration manager.
</summary>
</member>
<member name="P:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.LibraryManager">
<summary>
Gets the library manager.
</summary>
</member>
<member name="P:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.Logger">
<summary>
Gets the logger.
</summary>
</member>
<member name="P:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.Name">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.GetSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.GetLocalSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<summary>
Gets the save path.
</summary>
<param name="item">The item.</param>
<returns>System.String.</returns>
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.GetRootElementName(MediaBrowser.Controller.Entities.BaseItem)">
<summary>
Gets the name of the root element.
</summary>
<param name="item">The item.</param>
<returns>System.String.</returns>
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.IsEnabledFor(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Library.ItemUpdateType)">
<summary>
Determines whether [is enabled for] [the specified item].
</summary>
<param name="item">The item.</param>
<param name="updateType">Type of the update.</param>
<returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.SaveAsync(MediaBrowser.Controller.Entities.BaseItem,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.WriteCustomElementsAsync(MediaBrowser.Controller.Entities.BaseItem,System.Xml.XmlWriter)">
<summary>
Write custom elements.
</summary>
<param name="item">The item.</param>
<param name="writer">The xml writer.</param>
<returns>The task object representing the asynchronous operation.</returns>
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.AddCommonNodesAsync(MediaBrowser.Controller.Entities.BaseItem,System.Xml.XmlWriter)">
<summary>
Adds the common nodes.
</summary>
<param name="item">The item.</param>
<param name="writer">The xml writer.</param>
<returns>The task object representing the asynchronous operation.</returns>
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.AddSharesAsync(MediaBrowser.Model.Entities.IHasShares,System.Xml.XmlWriter)">
<summary>
Add shares.
</summary>
<param name="item">The item.</param>
<param name="writer">The xml writer.</param>
<returns>The task object representing the asynchronous operation.</returns>
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.AddMediaInfo``1(``0,System.Xml.XmlWriter)">
<summary>
Appends the media info.
</summary>
<param name="item">The item.</param>
<param name="writer">The xml writer.</param>
<typeparam name="T">Type of item.</typeparam>
<returns>The task object representing the asynchronous operation.</returns>
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BaseXmlSaver.AddLinkedChildren(MediaBrowser.Controller.Entities.Folder,System.Xml.XmlWriter,System.String,System.String)">
<summary>
ADd linked children.
</summary>
<param name="item">The item.</param>
<param name="writer">The xml writer.</param>
<param name="pluralNodeName">The plural node name.</param>
<param name="singularNodeName">The singular node name.</param>
<returns>The task object representing the asynchronous operation.</returns>
</member>
<member name="T:MediaBrowser.LocalMetadata.Savers.BoxSetXmlSaver">
<summary>
Box set xml saver.
</summary>
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BoxSetXmlSaver.#ctor(MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Controller.Configuration.IServerConfigurationManager,MediaBrowser.Controller.Library.ILibraryManager,Microsoft.Extensions.Logging.ILogger{MediaBrowser.LocalMetadata.Savers.BoxSetXmlSaver})">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.Savers.BoxSetXmlSaver"/> class.
</summary>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="configurationManager">Instance of the <see cref="T:MediaBrowser.Controller.Configuration.IServerConfigurationManager"/> interface.</param>
<param name="libraryManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.ILibraryManager"/> interface.</param>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BoxSetXmlSaver.IsEnabledFor(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Library.ItemUpdateType)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BoxSetXmlSaver.WriteCustomElementsAsync(MediaBrowser.Controller.Entities.BaseItem,System.Xml.XmlWriter)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.BoxSetXmlSaver.GetLocalSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.LocalMetadata.Savers.PlaylistXmlSaver">
<summary>
Playlist xml saver.
</summary>
</member>
<member name="F:MediaBrowser.LocalMetadata.Savers.PlaylistXmlSaver.DefaultPlaylistFilename">
<summary>
The default file name to use when creating a new playlist.
</summary>
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.PlaylistXmlSaver.#ctor(MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Controller.Configuration.IServerConfigurationManager,MediaBrowser.Controller.Library.ILibraryManager,Microsoft.Extensions.Logging.ILogger{MediaBrowser.LocalMetadata.Savers.PlaylistXmlSaver})">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.LocalMetadata.Savers.PlaylistXmlSaver"/> class.
</summary>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="configurationManager">Instance of the <see cref="T:MediaBrowser.Controller.Configuration.IServerConfigurationManager"/> interface.</param>
<param name="libraryManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.ILibraryManager"/> interface.</param>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.PlaylistXmlSaver.IsEnabledFor(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Library.ItemUpdateType)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.PlaylistXmlSaver.WriteCustomElementsAsync(MediaBrowser.Controller.Entities.BaseItem,System.Xml.XmlWriter)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.PlaylistXmlSaver.GetLocalSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.LocalMetadata.Savers.PlaylistXmlSaver.GetSavePath(System.String)">
<summary>
Get the save path.
</summary>
<param name="itemPath">The item path.</param>
<returns>The save path.</returns>
</member>
<member name="T:MediaBrowser.LocalMetadata.XmlProviderUtils">
<summary>
The xml provider utils.
</summary>
</member>
<member name="P:MediaBrowser.LocalMetadata.XmlProviderUtils.Name">
<summary>
Gets the name.
</summary>
</member>
</members>
</doc>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-710
View File
@@ -1,710 +0,0 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>MediaBrowser.XbmcMetadata</name>
</assembly>
<members>
<member name="M:MediaBrowser.XbmcMetadata.Configuration.NfoConfigurationFactory.GetConfigurations">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.NfoUserDataSaver">
<summary>
<see cref="T:Microsoft.Extensions.Hosting.IHostedService"/> responsible for updating NFO files' user data.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.NfoUserDataSaver.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.NfoUserDataSaver},MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IProviderManager)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.NfoUserDataSaver"/> class.
</summary>
<param name="logger">The <see cref="T:Microsoft.Extensions.Logging.ILogger"/>.</param>
<param name="config">The <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/>.</param>
<param name="userDataManager">The <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/>.</param>
<param name="providerManager">The <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/>.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.NfoUserDataSaver.StartAsync(System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.NfoUserDataSaver.StopAsync(System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Parsers.BaseNfoParser`1">
<summary>
The BaseNfoParser class.
</summary>
<typeparam name="T">The type.</typeparam>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.BaseNfoParser`1.#ctor(Microsoft.Extensions.Logging.ILogger,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Parsers.BaseNfoParser`1" /> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="P:MediaBrowser.XbmcMetadata.Parsers.BaseNfoParser`1.Logger">
<summary>
Gets the logger.
</summary>
</member>
<member name="P:MediaBrowser.XbmcMetadata.Parsers.BaseNfoParser`1.ProviderManager">
<summary>
Gets the provider manager.
</summary>
</member>
<member name="P:MediaBrowser.XbmcMetadata.Parsers.BaseNfoParser`1.SupportsUrlAfterClosingXmlTag">
<summary>
Gets a value indicating whether URLs after a closing XML tag are supported.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.BaseNfoParser`1.Fetch(MediaBrowser.Controller.Providers.MetadataResult{`0},System.String,System.Threading.CancellationToken)">
<summary>
Fetches metadata for an item from one xml file.
</summary>
<param name="item">The <see cref="T:MediaBrowser.Controller.Providers.MetadataResult`1"/>.</param>
<param name="metadataFile">The metadata file.</param>
<param name="cancellationToken">The <see cref="T:System.Threading.CancellationToken"/>.</param>
<exception cref="T:System.ArgumentNullException"><c>item</c> is <c>null</c>.</exception>
<exception cref="T:System.ArgumentException"><c>metadataFile</c> is <c>null</c> or empty.</exception>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.BaseNfoParser`1.Fetch(MediaBrowser.Controller.Providers.MetadataResult{`0},System.String,System.Xml.XmlReaderSettings,System.Threading.CancellationToken)">
<summary>
Fetches the specified item.
</summary>
<param name="item">The <see cref="T:MediaBrowser.Controller.Providers.MetadataResult`1"/>.</param>
<param name="metadataFile">The metadata file.</param>
<param name="settings">The <see cref="T:System.Xml.XmlReaderSettings"/>.</param>
<param name="cancellationToken">The <see cref="T:System.Threading.CancellationToken"/>.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.BaseNfoParser`1.ParseProviderLinks(`0,System.ReadOnlySpan{System.Char})">
<summary>
Parses a XML tag to a provider id.
</summary>
<param name="item">The item.</param>
<param name="xml">The xml tag.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.BaseNfoParser`1.FetchDataFromXmlNode(System.Xml.XmlReader,MediaBrowser.Controller.Providers.MetadataResult{`0})">
<summary>
Fetches metadata from an XML node.
</summary>
<param name="reader">The <see cref="T:System.Xml.XmlReader"/>.</param>
<param name="itemResult">The <see cref="T:MediaBrowser.Controller.Providers.MetadataResult`1"/>.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.BaseNfoParser`1.GetImageType(System.String)">
<summary>
Parses the <see cref="T:MediaBrowser.Model.Entities.ImageType"/> from the NFO aspect property.
</summary>
<param name="aspect">The NFO aspect property.</param>
<returns>The <see cref="T:MediaBrowser.Model.Entities.ImageType"/>.</returns>
</member>
<member name="T:MediaBrowser.XbmcMetadata.Parsers.EpisodeNfoParser">
<summary>
Nfo parser for episodes.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.EpisodeNfoParser.#ctor(Microsoft.Extensions.Logging.ILogger,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Parsers.EpisodeNfoParser"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.EpisodeNfoParser.Fetch(MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.TV.Episode},System.String,System.Xml.XmlReaderSettings,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.EpisodeNfoParser.FetchDataFromXmlNode(System.Xml.XmlReader,MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.TV.Episode})">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.EpisodeNfoParser.ReadEpisodeDetailsFromXml(MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.TV.Episode},System.String,System.Xml.XmlReaderSettings,System.Threading.CancellationToken)">
<summary>
Reads the episode details from the given xml and saves the result in the provided result item.
</summary>
</member>
<member name="T:MediaBrowser.XbmcMetadata.Parsers.MovieNfoParser">
<summary>
Nfo parser for movies.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.MovieNfoParser.#ctor(Microsoft.Extensions.Logging.ILogger,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Parsers.MovieNfoParser"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.DirectoryService"/> interface.</param>
</member>
<member name="P:MediaBrowser.XbmcMetadata.Parsers.MovieNfoParser.SupportsUrlAfterClosingXmlTag">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.MovieNfoParser.FetchDataFromXmlNode(System.Xml.XmlReader,MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.Video})">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Parsers.SeasonNfoParser">
<summary>
Nfo parser for seasons.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.SeasonNfoParser.#ctor(Microsoft.Extensions.Logging.ILogger,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Parsers.SeasonNfoParser"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.DirectoryService"/> interface.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.SeasonNfoParser.FetchDataFromXmlNode(System.Xml.XmlReader,MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.TV.Season})">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Parsers.SeriesNfoParser">
<summary>
Nfo parser for series.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.SeriesNfoParser.#ctor(Microsoft.Extensions.Logging.ILogger,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Parsers.SeriesNfoParser"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="P:MediaBrowser.XbmcMetadata.Parsers.SeriesNfoParser.SupportsUrlAfterClosingXmlTag">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.SeriesNfoParser.FetchDataFromXmlNode(System.Xml.XmlReader,MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.TV.Series})">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Parsers.SeriesNfoSeasonParser">
<summary>
NFO parser for seasons based on series NFO.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.SeriesNfoSeasonParser.#ctor(Microsoft.Extensions.Logging.ILogger,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Parsers.SeriesNfoSeasonParser"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="P:MediaBrowser.XbmcMetadata.Parsers.SeriesNfoSeasonParser.SupportsUrlAfterClosingXmlTag">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Parsers.SeriesNfoSeasonParser.FetchDataFromXmlNode(System.Xml.XmlReader,MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.TV.Season})">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Providers.AlbumNfoProvider">
<summary>
Nfo provider for albums.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.AlbumNfoProvider.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Providers.AlbumNfoProvider},MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Providers.AlbumNfoProvider"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.AlbumNfoProvider.Fetch(MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.Audio.MusicAlbum},System.String,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.AlbumNfoProvider.GetXmlFile(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Providers.ArtistNfoProvider">
<summary>
Nfo provider for artists.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.ArtistNfoProvider.#ctor(MediaBrowser.Model.IO.IFileSystem,Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Providers.ArtistNfoProvider},MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Providers.ArtistNfoProvider"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.ArtistNfoProvider.Fetch(MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.Audio.MusicArtist},System.String,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.ArtistNfoProvider.GetXmlFile(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="P:MediaBrowser.XbmcMetadata.Providers.BaseNfoProvider`1.Name">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.BaseNfoProvider`1.GetMetadata(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.BaseNfoProvider`1.HasChanged(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.BaseVideoNfoProvider`1.Fetch(MediaBrowser.Controller.Providers.MetadataResult{`0},System.String,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.BaseVideoNfoProvider`1.GetXmlFile(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Providers.EpisodeNfoProvider">
<summary>
Nfo provider for episodes.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.EpisodeNfoProvider.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Providers.EpisodeNfoProvider},MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Providers.EpisodeNfoProvider"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.EpisodeNfoProvider.Fetch(MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.TV.Episode},System.String,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.EpisodeNfoProvider.GetXmlFile(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Providers.MovieNfoProvider">
<summary>
Nfo provider for movies.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.MovieNfoProvider.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Providers.MovieNfoProvider},MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Providers.MovieNfoProvider"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="T:MediaBrowser.XbmcMetadata.Providers.MusicVideoNfoProvider">
<summary>
Nfo provider for music videos.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.MusicVideoNfoProvider.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Providers.MusicVideoNfoProvider},MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Providers.MusicVideoNfoProvider"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="T:MediaBrowser.XbmcMetadata.Providers.SeasonNfoProvider">
<summary>
Nfo provider for seasons.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.SeasonNfoProvider.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Providers.SeasonNfoProvider},MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Providers.SeasonNfoProvider"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.SeasonNfoProvider.Fetch(MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.TV.Season},System.String,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.SeasonNfoProvider.GetXmlFile(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Providers.SeriesNfoProvider">
<summary>
Nfo provider for series.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.SeriesNfoProvider.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Providers.SeriesNfoProvider},MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Providers.SeriesNfoProvider"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.SeriesNfoProvider.Fetch(MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.TV.Series},System.String,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.SeriesNfoProvider.GetXmlFile(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Providers.SeriesNfoSeasonProvider">
<summary>
NFO provider for seasons based on series NFO.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.SeriesNfoSeasonProvider.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Providers.SeriesNfoSeasonProvider},MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService,MediaBrowser.Controller.Library.ILibraryManager)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Providers.SeriesNfoSeasonProvider"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
<param name="libraryManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.ILibraryManager"/> interface.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.SeriesNfoSeasonProvider.Fetch(MediaBrowser.Controller.Providers.MetadataResult{MediaBrowser.Controller.Entities.TV.Season},System.String,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.SeriesNfoSeasonProvider.GetXmlFile(MediaBrowser.Controller.Providers.ItemInfo,MediaBrowser.Controller.Providers.IDirectoryService)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Providers.VideoNfoProvider">
<summary>
Nfo provider for videos.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Providers.VideoNfoProvider.#ctor(Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Providers.VideoNfoProvider},MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Common.Configuration.IConfigurationManager,MediaBrowser.Controller.Providers.IProviderManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Providers.IDirectoryService)">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Providers.VideoNfoProvider"/> class.
</summary>
<param name="logger">Instance of the <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/> interface.</param>
<param name="fileSystem">Instance of the <see cref="T:MediaBrowser.Model.IO.IFileSystem"/> interface.</param>
<param name="config">Instance of the <see cref="T:MediaBrowser.Common.Configuration.IConfigurationManager"/> interface.</param>
<param name="providerManager">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IProviderManager"/> interface.</param>
<param name="userManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserManager"/> interface.</param>
<param name="userDataManager">Instance of the <see cref="T:MediaBrowser.Controller.Library.IUserDataManager"/> interface.</param>
<param name="directoryService">Instance of the <see cref="T:MediaBrowser.Controller.Providers.IDirectoryService"/> interface.</param>
</member>
<member name="T:MediaBrowser.XbmcMetadata.Savers.AlbumNfoSaver">
<summary>
Nfo saver for albums.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.AlbumNfoSaver.#ctor(MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Controller.Configuration.IServerConfigurationManager,MediaBrowser.Controller.Library.ILibraryManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Savers.AlbumNfoSaver})">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Savers.AlbumNfoSaver"/> class.
</summary>
<param name="fileSystem">The file system.</param>
<param name="configurationManager">the server configuration manager.</param>
<param name="libraryManager">The library manager.</param>
<param name="userManager">The user manager.</param>
<param name="userDataManager">The user data manager.</param>
<param name="logger">The logger.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.AlbumNfoSaver.GetLocalSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.AlbumNfoSaver.GetRootElementName(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.AlbumNfoSaver.IsEnabledFor(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Library.ItemUpdateType)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.AlbumNfoSaver.WriteCustomElements(MediaBrowser.Controller.Entities.BaseItem,System.Xml.XmlWriter)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.AlbumNfoSaver.GetTagsUsed(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Savers.ArtistNfoSaver">
<summary>
Nfo saver for artist.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.ArtistNfoSaver.#ctor(MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Controller.Configuration.IServerConfigurationManager,MediaBrowser.Controller.Library.ILibraryManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Savers.ArtistNfoSaver})">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Savers.ArtistNfoSaver"/> class.
</summary>
<param name="fileSystem">The file system.</param>
<param name="configurationManager">the server configuration manager.</param>
<param name="libraryManager">The library manager.</param>
<param name="userManager">The user manager.</param>
<param name="userDataManager">The user data manager.</param>
<param name="logger">The logger.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.ArtistNfoSaver.GetLocalSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.ArtistNfoSaver.GetRootElementName(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.ArtistNfoSaver.IsEnabledFor(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Library.ItemUpdateType)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.ArtistNfoSaver.WriteCustomElements(MediaBrowser.Controller.Entities.BaseItem,System.Xml.XmlWriter)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.ArtistNfoSaver.GetTagsUsed(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="P:MediaBrowser.XbmcMetadata.Savers.BaseNfoSaver.Name">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.BaseNfoSaver.InvalidXMLCharsRegexRegex">
<remarks>
Pattern:<br/>
<code>(?&lt;![\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F\uFEFF\uFFFE\uFFFF]</code><br/>
Explanation:<br/>
<code>
○ Match with 3 alternative expressions, atomically.<br/>
○ Match a sequence of expressions.<br/>
○ Zero-width negative lookbehind.<br/>
○ Match a character in the set [\uD800-\uDBFF] right-to-left.<br/>
○ Match a character in the set [\uDC00-\uDFFF].<br/>
○ Match a sequence of expressions.<br/>
○ Match a character in the set [\uD800-\uDBFF].<br/>
○ Zero-width negative lookahead.<br/>
○ Match a character in the set [\uDC00-\uDFFF].<br/>
○ Match a character in the set [^\t\n\r -~\u00A0-\uFEFE\uFF00-\uFFFD].<br/>
</code>
</remarks>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.BaseNfoSaver.GetSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.BaseNfoSaver.GetLocalSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<summary>
Gets the save path.
</summary>
<param name="item">The item.</param>
<returns><see cref="T:System.String" />.</returns>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.BaseNfoSaver.GetRootElementName(MediaBrowser.Controller.Entities.BaseItem)">
<summary>
Gets the name of the root element.
</summary>
<param name="item">The item.</param>
<returns><see cref="T:System.String" />.</returns>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.BaseNfoSaver.IsEnabledFor(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Library.ItemUpdateType)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.BaseNfoSaver.SaveAsync(MediaBrowser.Controller.Entities.BaseItem,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.BaseNfoSaver.AddCommonNodes(MediaBrowser.Controller.Entities.BaseItem,System.Xml.XmlWriter,MediaBrowser.Controller.Library.ILibraryManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,MediaBrowser.Controller.Configuration.IServerConfigurationManager)">
<summary>
Adds the common nodes.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.BaseNfoSaver.GetOutputTrailerUrl(System.String)">
<summary>
Gets the output trailer URL.
</summary>
<param name="url">The URL.</param>
<returns>System.String.</returns>
</member>
<member name="T:MediaBrowser.XbmcMetadata.Savers.EpisodeNfoSaver">
<summary>
Nfo saver for episodes.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.EpisodeNfoSaver.#ctor(MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Controller.Configuration.IServerConfigurationManager,MediaBrowser.Controller.Library.ILibraryManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Savers.EpisodeNfoSaver})">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Savers.EpisodeNfoSaver"/> class.
</summary>
<param name="fileSystem">The file system.</param>
<param name="configurationManager">the server configuration manager.</param>
<param name="libraryManager">The library manager.</param>
<param name="userManager">The user manager.</param>
<param name="userDataManager">The user data manager.</param>
<param name="logger">The logger.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.EpisodeNfoSaver.GetLocalSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.EpisodeNfoSaver.GetRootElementName(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.EpisodeNfoSaver.IsEnabledFor(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Library.ItemUpdateType)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.EpisodeNfoSaver.WriteCustomElements(MediaBrowser.Controller.Entities.BaseItem,System.Xml.XmlWriter)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.EpisodeNfoSaver.GetTagsUsed(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Savers.MovieNfoSaver">
<summary>
Nfo saver for movies.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.MovieNfoSaver.#ctor(MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Controller.Configuration.IServerConfigurationManager,MediaBrowser.Controller.Library.ILibraryManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Savers.MovieNfoSaver})">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Savers.MovieNfoSaver"/> class.
</summary>
<param name="fileSystem">The file system.</param>
<param name="configurationManager">the server configuration manager.</param>
<param name="libraryManager">The library manager.</param>
<param name="userManager">The user manager.</param>
<param name="userDataManager">The user data manager.</param>
<param name="logger">The logger.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.MovieNfoSaver.GetLocalSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.MovieNfoSaver.GetRootElementName(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.MovieNfoSaver.IsEnabledFor(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Library.ItemUpdateType)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.MovieNfoSaver.WriteCustomElements(MediaBrowser.Controller.Entities.BaseItem,System.Xml.XmlWriter)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.MovieNfoSaver.GetTagsUsed(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Savers.SeasonNfoSaver">
<summary>
Nfo saver for seasons.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeasonNfoSaver.#ctor(MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Controller.Configuration.IServerConfigurationManager,MediaBrowser.Controller.Library.ILibraryManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Savers.SeasonNfoSaver})">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Savers.SeasonNfoSaver"/> class.
</summary>
<param name="fileSystem">The file system.</param>
<param name="configurationManager">the server configuration manager.</param>
<param name="libraryManager">The library manager.</param>
<param name="userManager">The user manager.</param>
<param name="userDataManager">The user data manager.</param>
<param name="logger">The logger.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeasonNfoSaver.GetLocalSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeasonNfoSaver.GetRootElementName(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeasonNfoSaver.IsEnabledFor(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Library.ItemUpdateType)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeasonNfoSaver.WriteCustomElements(MediaBrowser.Controller.Entities.BaseItem,System.Xml.XmlWriter)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeasonNfoSaver.GetTagsUsed(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="T:MediaBrowser.XbmcMetadata.Savers.SeriesNfoSaver">
<summary>
Nfo saver for series.
</summary>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeriesNfoSaver.#ctor(MediaBrowser.Model.IO.IFileSystem,MediaBrowser.Controller.Configuration.IServerConfigurationManager,MediaBrowser.Controller.Library.ILibraryManager,MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Library.IUserDataManager,Microsoft.Extensions.Logging.ILogger{MediaBrowser.XbmcMetadata.Savers.SeriesNfoSaver})">
<summary>
Initializes a new instance of the <see cref="T:MediaBrowser.XbmcMetadata.Savers.SeriesNfoSaver"/> class.
</summary>
<param name="fileSystem">The file system.</param>
<param name="configurationManager">the server configuration manager.</param>
<param name="libraryManager">The library manager.</param>
<param name="userManager">The user manager.</param>
<param name="userDataManager">The user data manager.</param>
<param name="logger">The logger.</param>
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeriesNfoSaver.GetLocalSavePath(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeriesNfoSaver.GetRootElementName(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeriesNfoSaver.IsEnabledFor(MediaBrowser.Controller.Entities.BaseItem,MediaBrowser.Controller.Library.ItemUpdateType)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeriesNfoSaver.WriteCustomElements(MediaBrowser.Controller.Entities.BaseItem,System.Xml.XmlWriter)">
<inheritdoc />
</member>
<member name="M:MediaBrowser.XbmcMetadata.Savers.SeriesNfoSaver.GetTagsUsed(MediaBrowser.Controller.Entities.BaseItem)">
<inheritdoc />
</member>
<member name="T:System.Text.RegularExpressions.Generated.InvalidXMLCharsRegexRegex_0">
<summary>Custom <see cref="T:System.Text.RegularExpressions.Regex"/>-derived type for the InvalidXMLCharsRegexRegex method.</summary>
</member>
<member name="F:System.Text.RegularExpressions.Generated.InvalidXMLCharsRegexRegex_0.Instance">
<summary>Cached, thread-safe singleton instance.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.InvalidXMLCharsRegexRegex_0.#ctor">
<summary>Initializes the instance.</summary>
</member>
<member name="T:System.Text.RegularExpressions.Generated.InvalidXMLCharsRegexRegex_0.RunnerFactory">
<summary>Provides a factory for creating <see cref="T:System.Text.RegularExpressions.RegexRunner"/> instances to be used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.InvalidXMLCharsRegexRegex_0.RunnerFactory.CreateInstance">
<summary>Creates an instance of a <see cref="T:System.Text.RegularExpressions.RegexRunner"/> used by methods on <see cref="T:System.Text.RegularExpressions.Regex"/>.</summary>
</member>
<member name="T:System.Text.RegularExpressions.Generated.InvalidXMLCharsRegexRegex_0.RunnerFactory.Runner">
<summary>Provides the runner that contains the custom logic implementing the specified regular expression.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.InvalidXMLCharsRegexRegex_0.RunnerFactory.Runner.Scan(System.ReadOnlySpan{System.Char})">
<summary>Scan the <paramref name="inputSpan"/> starting from base.runtextstart for the next match.</summary>
<param name="inputSpan">The text being scanned by the regular expression.</param>
</member>
<member name="M:System.Text.RegularExpressions.Generated.InvalidXMLCharsRegexRegex_0.RunnerFactory.Runner.TryFindNextPossibleStartingPosition(System.ReadOnlySpan{System.Char})">
<summary>Search <paramref name="inputSpan"/> starting from base.runtextpos for the next location a match could possibly start.</summary>
<param name="inputSpan">The text being scanned by the regular expression.</param>
<returns>true if a possible match was found; false if no more matches are possible.</returns>
</member>
<member name="M:System.Text.RegularExpressions.Generated.InvalidXMLCharsRegexRegex_0.RunnerFactory.Runner.TryMatchAtCurrentPosition(System.ReadOnlySpan{System.Char})">
<summary>Determine whether <paramref name="inputSpan"/> at base.runtextpos is a match for the regular expression.</summary>
<param name="inputSpan">The text being scanned by the regular expression.</param>
<returns>true if the regular expression matches at the current position; otherwise, false.</returns>
</member>
<member name="T:System.Text.RegularExpressions.Generated.Utilities">
<summary>Helper methods used by generated <see cref="T:System.Text.RegularExpressions.Regex"/>-derived implementations.</summary>
</member>
<member name="F:System.Text.RegularExpressions.Generated.Utilities.s_defaultTimeout">
<summary>Default timeout value set in <see cref="T:System.AppContext"/>, or <see cref="F:System.Text.RegularExpressions.Regex.InfiniteMatchTimeout"/> if none was set.</summary>
</member>
<member name="F:System.Text.RegularExpressions.Generated.Utilities.s_hasTimeout">
<summary>Whether <see cref="F:System.Text.RegularExpressions.Generated.Utilities.s_defaultTimeout"/> is non-infinite.</summary>
</member>
<member name="M:System.Text.RegularExpressions.Generated.Utilities.IndexOfNonAsciiOrAny_054D88A1CA74F303E737A5D6CB3A2FC78EF8B4B74FED9DBE7BF41353919E123B(System.ReadOnlySpan{System.Char})">
<summary>Finds the next index of any character that matches a character in the set [^\t\n\r -~\u00A0-\uD7FF\uE000-\uFEFE\uFF00-\uFFFD].</summary>
</member>
<member name="F:System.Text.RegularExpressions.Generated.Utilities.s_ascii_260000FFFFFFFFFFFFFFFFFFFFFF7F">
<summary>Supports searching for characters in or not in "\t\n\r !\"#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~".</summary>
</member>
</members>
</doc>
@@ -1,39 +0,0 @@
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning",
"Microsoft.EntityFrameworkCore.Database.Command": "Error"
}
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"outputTemplate": "[{Timestamp:HH:mm:ss.fff}] [{Level:u3}] [{ThreadId}] {SourceContext}: {Message:lj}{NewLine}{Exception}"
}
},
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "File",
"Args": {
"path": "%JELLYFIN_LOG_DIR%//log_.log",
"rollingInterval": "Day",
"retainedFileCountLimit": 3,
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": 100000000,
"outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}] [{Level:u3}] [{ThreadId}] {SourceContext}: {Message}{NewLine}{Exception}"
}
}
]
}
}
],
"Enrich": [ "FromLogContext", "WithThreadId" ]
}
}
@@ -1,14 +0,0 @@
{
"$schema": "https://json.schemastore.org/jellyfin-startup",
"// Comment": "Startup configuration defaults for Jellyfin Server",
"// Note": "For Linux: Use /var/lib/jellyfin, For Windows: Use C:/ProgramData/jellyfin",
"// Documentation": "These values are used when no command-line args or environment variables are set",
"Paths": {
"DataDir": "/var/lib/jellyfin",
"ConfigDir": "/var/lib/jellyfin",
"CacheDir": "/var/lib/jellyfin",
"LogDir": "/var/lib/jellyfin",
"TempDir": "/var/lib/jellyfin",
"WebDir": "/var/lib/jellyfin"
}
}
@@ -1,14 +0,0 @@
{
"$schema": "https://json.schemastore.org/jellyfin-startup",
"// Comment": "Linux-specific startup configuration for Jellyfin Server",
"// Instructions": "Copy this file to 'startup.json' in the Jellyfin directory",
"// Documentation": "These paths follow Linux FHS (Filesystem Hierarchy Standard)",
"Paths": {
"DataDir": "/var/lib/jellyfin",
"ConfigDir": "/var/lib/jellyfin",
"CacheDir": "/var/lib/jellyfin",
"LogDir": "/var/lib/jellyfin",
"TempDir": "/var/lib/jellyfin",
"WebDir": "/var/lib/jellyfin"
}
}
@@ -1,14 +0,0 @@
{
"$schema": "https://json.schemastore.org/jellyfin-startup",
"// Comment": "Windows-specific startup configuration for Jellyfin Server",
"// Instructions": "Copy this file to 'startup.json' in the Jellyfin directory",
"// Documentation": "These paths are optimized for Windows installations",
"Paths": {
"DataDir": "C:/ProgramData/jellyfin",
"ConfigDir": "C:/ProgramData/jellyfin",
"CacheDir": "C:/ProgramData/jellyfin",
"LogDir": "C:/ProgramData/jellyfin",
"TempDir": "C:/ProgramData/jellyfin",
"WebDir": "C:/ProgramData/jellyfin"
}
}
@@ -1,235 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>
{{#IF isInReportingMode}}
{{/IF}}
Jellyfin Startup
</title>
<style>
* {
font-family: sans-serif;
}
.flex-row {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: center;
align-items: center;
align-content: normal;
}
.flex-col {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
justify-content: center;
align-items: center;
align-content: normal;
}
header {
height: 5rem;
width: 100%;
}
header svg {
height: 3rem;
width: 9rem;
margin-right: 1rem;
}
/* ol.action-list {
list-style-type: none;
position: relative;
} */
ol.action-list * {
font-family: monospace;
font-weight: 300;
font-size: clamp(18px, 100vw / var(--width), 20px);
font-feature-settings: 'onum', 'pnum';
line-height: 1.8;
-webkit-text-size-adjust: none;
}
/*
ol.action-list li {
padding-top: .5rem;
}
ol.action-list li::before {
position: absolute;
left: -0.8em;
font-size: 1.1em;
} */
/* Attribution as heavily inspired by: https://iamkate.com/code/tree-views/ */
.action-list {
--spacing: 1.4rem;
--radius: 14px;
}
.action-list li {
display: block;
position: relative;
padding-left: calc(2 * var(--spacing) - var(--radius) - 1px);
}
.action-list ul {
margin-left: calc(var(--radius) - var(--spacing));
padding-left: 0;
}
.action-list ul li {
border-left: 2px solid #ddd;
}
.action-list ul li:last-child {
border-color: transparent;
}
.action-list ul li::before {
content: '';
display: block;
position: absolute;
top: calc(var(--spacing) / -2);
left: -2px;
width: calc(var(--spacing) + 2px);
height: calc(var(--spacing) + 1px);
border: solid #ddd;
border-width: 0 0 2px 2px;
}
.action-list summary {
display: block;
cursor: pointer;
}
.action-list summary::marker,
.action-list summary::-webkit-details-marker {
display: none;
}
.action-list summary:focus {
outline: none;
}
.action-list summary:focus-visible {
outline: 1px dotted #000;
}
.action-list li::after,
.action-list summary::before {
content: '';
display: block;
position: absolute;
top: calc(var(--spacing) / 2 - var(--radius) + 4px);
left: calc(var(--spacing) - var(--radius) - -5px);
}
.action-list summary::before {
z-index: 1;
/* background: #696 url('expand-collapse.svg') 0 0; */
}
.action-list details[open]>summary::before {
background-position: calc(-2 * var(--radius)) 0;
}
.action-list li.danger-item::after,
.action-list li.danger-strong-item::after {
content: '❌';
}
ol.action-list li span.danger-strong-item {
text-decoration-style: solid;
text-decoration-color: red;
text-decoration-line: underline;
}
ol.action-list li.warn-item::after {
content: '⚠️';
}
ol.action-list li.success-item::after {
content: '✅';
}
ol.action-list li.info-item::after {
content: '🔹';
}
/* End Attribution */
</style>
</head>
<body>
<div>
<header class="flex-row">
{{^IF isInReportingMode}}
<p>Jellyfin Server {{version}} still starting. Please wait.</p>
{{#ELSE}}
<p>Jellyfin Server has encountered an error and was not able to start.</p>
{{/ELSE}}
{{/IF}}
{{#IF localNetworkRequest}}
<p style="margin-left: 1rem;">You can download the current log file <a href='/startup/logger'
target="_blank">here</a>.</p>
{{/IF}}
</header>
{{#DECLARE LogEntry |--}}
{{#LET children = Children}}
<li class="{{FormatLogLevel(children).ToString()}}-item">
{{--| #IF children.Count > 0}}
<details open>
<summary>{{DateOfCreation}} - {{Content}}</summary>
<ul class="action-list">
{{--| #EACH children.Reverse() |-}}
{{#IMPORT 'LogEntry'}}
{{--| /EACH |-}}
</ul>
</details>
{{--| #ELSE |-}}
<span class="{{FormatLogLevel(children).ToString()}}-item">{{DateOfCreation}} - {{Content}}</span>
{{--| /ELSE |--}}
{{--| /IF |-}}
</li>
{{--| /DECLARE}}
{{#IF localNetworkRequest}}
<div class="flex-col">
<ol class="action-list">
{{#FOREACH log IN logs.Reverse()}}
{{#IMPORT 'LogEntry' #WITH log}}
{{/FOREACH}}
</ol>
</div>
{{#ELSE}}
{{#IF networkManagerReady}}
<p>Please visit this page from your local network to view detailed startup logs.</p>
{{#ELSE}}
<p>Initializing network settings. Please wait.</p>
{{/ELSE}}
{{/IF}}
{{/ELSE}}
{{/IF}}
</div>
</body>
{{^IF isInReportingMode}}
<script>
setTimeout(() => {
window.location.reload();
}, {{ retryValue.TotalMilliseconds }});
</script>
{{/IF}}
</html>
Binary file not shown.
File diff suppressed because one or more lines are too long
-1284
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,127 +0,0 @@
-- Add Base Performance Indexes
-- These are the essential performance indexes that were in the original schema dump
-- but missing from the InitialCreate migration
-- Run this if migration doesn't apply automatically
\echo 'Adding base performance indexes...';
-- ============================================================================
-- BaseItems Performance Indexes
-- ============================================================================
\echo 'Creating BaseItems performance indexes...';
CREATE INDEX IF NOT EXISTS baseitems_communityrating_idx
ON library."BaseItems" ("CommunityRating" DESC);
CREATE INDEX IF NOT EXISTS baseitems_datecreated_idx
ON library."BaseItems" ("DateCreated" DESC);
CREATE INDEX IF NOT EXISTS baseitems_datemodified_idx
ON library."BaseItems" ("DateModified" DESC);
CREATE INDEX IF NOT EXISTS baseitems_parentid_idx
ON library."BaseItems" ("ParentId", "Type");
CREATE INDEX IF NOT EXISTS baseitems_premieredate_idx
ON library."BaseItems" ("PremiereDate" DESC);
CREATE INDEX IF NOT EXISTS baseitems_productionyear_idx
ON library."BaseItems" ("ProductionYear" DESC);
CREATE INDEX IF NOT EXISTS baseitems_seriespresentationuniquekey_idx
ON library."BaseItems" ("SeriesPresentationUniqueKey", "IndexNumber", "ParentIndexNumber");
CREATE INDEX IF NOT EXISTS baseitems_sortname_idx
ON library."BaseItems" ("SortName");
CREATE INDEX IF NOT EXISTS baseitems_topparentid_idx
ON library."BaseItems" ("TopParentId", "Type");
\echo '✓ BaseItems indexes created';
-- ============================================================================
-- BaseItemProviders Performance Indexes
-- ============================================================================
\echo 'Creating BaseItemProviders performance indexes...';
CREATE INDEX IF NOT EXISTS baseitemproviders_providerid_idx
ON library."BaseItemProviders" ("ProviderId", "ItemId");
CREATE INDEX IF NOT EXISTS baseitemproviders_providervalue_idx
ON library."BaseItemProviders" ("ProviderValue", "ProviderId");
\echo '✓ BaseItemProviders indexes created';
-- ============================================================================
-- MediaStreamInfos Performance Indexes
-- ============================================================================
\echo 'Creating MediaStreamInfos performance indexes...';
CREATE INDEX IF NOT EXISTS mediastreaminfos_codec_idx
ON library."MediaStreamInfos" ("Codec");
CREATE INDEX IF NOT EXISTS mediastreaminfos_itemid_idx
ON library."MediaStreamInfos" ("ItemId", "StreamType");
\echo '✓ MediaStreamInfos indexes created';
-- ============================================================================
-- PeopleBaseItemMap Performance Indexes
-- ============================================================================
\echo 'Creating PeopleBaseItemMap performance indexes...';
CREATE INDEX IF NOT EXISTS peoplebaseitemmap_itemid_idx
ON library."PeopleBaseItemMap" ("ItemId", "PeopleId");
CREATE INDEX IF NOT EXISTS peoplebaseitemmap_peopleid_idx
ON library."PeopleBaseItemMap" ("PeopleId", "ItemId");
\echo '✓ PeopleBaseItemMap indexes created';
-- ============================================================================
-- UserData Performance Indexes
-- ============================================================================
\echo 'Creating UserData performance indexes...';
CREATE INDEX IF NOT EXISTS userdata_lastplayeddate_idx
ON library."UserData" ("LastPlayedDate" DESC);
CREATE INDEX IF NOT EXISTS userdata_userid_isfavorite_idx
ON library."UserData" ("UserId", "IsFavorite");
CREATE INDEX IF NOT EXISTS userdata_userid_played_idx
ON library."UserData" ("UserId", "Played");
\echo '✓ UserData indexes created';
-- ============================================================================
-- Update Statistics
-- ============================================================================
\echo 'Updating table statistics...';
ANALYZE library."BaseItems";
ANALYZE library."BaseItemProviders";
ANALYZE library."MediaStreamInfos";
ANALYZE library."PeopleBaseItemMap";
ANALYZE library."UserData";
\echo '';
\echo '========================================';
\echo '✓ Base Performance Indexes Created!';
\echo '========================================';
\echo '';
\echo 'Created 18 base performance indexes:';
\echo ' - 9 on BaseItems';
\echo ' - 2 on BaseItemProviders';
\echo ' - 2 on MediaStreamInfos';
\echo ' - 2 on PeopleBaseItemMap';
\echo ' - 3 on UserData';
\echo '';
\echo 'These indexes are essential for good performance.';
\echo 'Restart Jellyfin to see improvements.';
-216
View File
@@ -1,216 +0,0 @@
-- Combined Performance Indexes Script
-- This combines both base and supplementary indexes into one script
-- Run this on a fresh database after InitialCreate migration
\echo '========================================';
\echo 'Creating All Performance Indexes';
\echo '========================================';
\echo '';
-- ============================================================================
-- PART 1: Base Performance Indexes (18 total)
-- ============================================================================
\echo 'Part 1: Adding base performance indexes (18)...';
\echo '';
-- BaseItems Performance Indexes (9)
\echo 'Creating BaseItems performance indexes...';
CREATE INDEX IF NOT EXISTS baseitems_communityrating_idx
ON library."BaseItems" ("CommunityRating" DESC);
CREATE INDEX IF NOT EXISTS baseitems_datecreated_idx
ON library."BaseItems" ("DateCreated" DESC);
CREATE INDEX IF NOT EXISTS baseitems_datemodified_idx
ON library."BaseItems" ("DateModified" DESC);
CREATE INDEX IF NOT EXISTS baseitems_parentid_idx
ON library."BaseItems" ("ParentId", "Type");
CREATE INDEX IF NOT EXISTS baseitems_premieredate_idx
ON library."BaseItems" ("PremiereDate" DESC);
CREATE INDEX IF NOT EXISTS baseitems_productionyear_idx
ON library."BaseItems" ("ProductionYear" DESC);
CREATE INDEX IF NOT EXISTS baseitems_seriespresentationuniquekey_idx
ON library."BaseItems" ("SeriesPresentationUniqueKey", "IndexNumber", "ParentIndexNumber");
CREATE INDEX IF NOT EXISTS baseitems_sortname_idx
ON library."BaseItems" ("SortName");
CREATE INDEX IF NOT EXISTS baseitems_topparentid_idx
ON library."BaseItems" ("TopParentId", "Type");
\echo '✓ BaseItems indexes created (9)';
-- BaseItemProviders Performance Indexes (2)
\echo 'Creating BaseItemProviders performance indexes...';
CREATE INDEX IF NOT EXISTS baseitemproviders_providerid_idx
ON library."BaseItemProviders" ("ProviderId", "ItemId");
CREATE INDEX IF NOT EXISTS baseitemproviders_providervalue_idx
ON library."BaseItemProviders" ("ProviderValue", "ProviderId");
\echo '✓ BaseItemProviders indexes created (2)';
-- MediaStreamInfos Performance Indexes (2)
\echo 'Creating MediaStreamInfos performance indexes...';
CREATE INDEX IF NOT EXISTS mediastreaminfos_codec_idx
ON library."MediaStreamInfos" ("Codec");
CREATE INDEX IF NOT EXISTS mediastreaminfos_itemid_idx
ON library."MediaStreamInfos" ("ItemId", "StreamType");
\echo '✓ MediaStreamInfos indexes created (2)';
-- PeopleBaseItemMap Performance Indexes (2)
\echo 'Creating PeopleBaseItemMap performance indexes...';
CREATE INDEX IF NOT EXISTS peoplebaseitemmap_itemid_idx
ON library."PeopleBaseItemMap" ("ItemId", "PeopleId");
CREATE INDEX IF NOT EXISTS peoplebaseitemmap_peopleid_idx
ON library."PeopleBaseItemMap" ("PeopleId", "ItemId");
\echo '✓ PeopleBaseItemMap indexes created (2)';
-- UserData Performance Indexes (3)
\echo 'Creating UserData performance indexes...';
CREATE INDEX IF NOT EXISTS userdata_lastplayeddate_idx
ON library."UserData" ("LastPlayedDate" DESC);
CREATE INDEX IF NOT EXISTS userdata_userid_isfavorite_idx
ON library."UserData" ("UserId", "IsFavorite");
CREATE INDEX IF NOT EXISTS userdata_userid_played_idx
ON library."UserData" ("UserId", "Played");
\echo '✓ UserData indexes created (3)';
\echo '';
\echo '✓ Part 1 Complete: 18 base performance indexes created';
\echo '';
-- ============================================================================
-- PART 2: Supplementary Performance Indexes (5 total)
-- ============================================================================
\echo 'Part 2: Adding supplementary performance indexes (5)...';
\echo '';
-- BaseItems Supplementary Indexes (3)
\echo 'Creating BaseItems supplementary indexes...';
-- Index: idx_baseitems_type_isvirtualitem_topparentid
CREATE INDEX IF NOT EXISTS idx_baseitems_type_isvirtualitem_topparentid
ON library."BaseItems" ("Type", "IsVirtualItem", "TopParentId")
WHERE "BaseItems"."IsVirtualItem" = false;
-- Index: idx_baseitems_topparentid_isfolder
CREATE INDEX IF NOT EXISTS idx_baseitems_topparentid_isfolder
ON library."BaseItems" ("TopParentId", "IsFolder", "IsVirtualItem")
WHERE "BaseItems"."TopParentId" IS NOT NULL;
-- Index: idx_baseitems_datecreated_filtered
CREATE INDEX IF NOT EXISTS idx_baseitems_datecreated_filtered
ON library."BaseItems" ("DateCreated" DESC, "Type", "IsVirtualItem")
WHERE "BaseItems"."DateCreated" IS NOT NULL AND "BaseItems"."IsVirtualItem" = false;
\echo '✓ BaseItems supplementary indexes created (3)';
-- ItemValuesMap Supplementary Index (1)
\echo 'Creating ItemValuesMap supplementary index...';
-- Index: idx_itemvaluesmap_itemvalueid_itemid
CREATE INDEX IF NOT EXISTS idx_itemvaluesmap_itemvalueid_itemid
ON library."ItemValuesMap" ("ItemValueId", "ItemId");
\echo '✓ ItemValuesMap supplementary index created (1)';
-- ActivityLogs Supplementary Index (1)
\echo 'Creating ActivityLogs supplementary index...';
-- Index: idx_activitylogs_userid_datecreated
-- Note: Only creates if ActivityLogs table exists
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = 'activitylog'
AND table_name = 'ActivityLogs'
) THEN
CREATE INDEX IF NOT EXISTS idx_activitylogs_userid_datecreated
ON activitylog."ActivityLogs" ("UserId", "DateCreated" DESC)
WHERE "ActivityLogs"."UserId" IS NOT NULL;
RAISE NOTICE '✓ Created idx_activitylogs_userid_datecreated';
ELSE
RAISE NOTICE '⚠ ActivityLogs table not found, skipping';
END IF;
END $$;
\echo '✓ ActivityLogs supplementary index created (1)';
\echo '';
\echo '✓ Part 2 Complete: 5 supplementary indexes created';
\echo '';
-- ============================================================================
-- Update Statistics
-- ============================================================================
\echo 'Updating table statistics...';
ANALYZE library."BaseItems";
ANALYZE library."BaseItemProviders";
ANALYZE library."MediaStreamInfos";
ANALYZE library."PeopleBaseItemMap";
ANALYZE library."UserData";
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = 'activitylog'
AND table_name = 'ActivityLogs'
) THEN
ANALYZE activitylog."ActivityLogs";
RAISE NOTICE '✓ ActivityLogs statistics updated';
END IF;
END $$;
\echo '✓ Statistics updated';
-- ============================================================================
-- Summary
-- ============================================================================
\echo '';
\echo '========================================';
\echo '✓ All Performance Indexes Created!';
\echo '========================================';
\echo '';
\echo 'Summary:';
\echo ' Base Indexes: 18';
\echo ' - BaseItems: 9';
\echo ' - BaseItemProviders: 2';
\echo ' - MediaStreamInfos: 2';
\echo ' - PeopleBaseItemMap: 2';
\echo ' - UserData: 3';
\echo '';
\echo ' Supplementary Indexes: 5';
\echo ' - BaseItems: 3';
\echo ' - ItemValuesMap: 1';
\echo ' - ActivityLogs: 1';
\echo '';
\echo ' Total Indexes Added: 23';
\echo '';
\echo 'Performance improvement: 70-90% faster queries!';
\echo '';
\echo 'Next: Restart Jellyfin to see improvements.';
\echo '========================================';
-365
View File
@@ -1,365 +0,0 @@
-- PostgreSQL Performance Diagnostics for Jellyfin
-- Run this to diagnose current performance issues
\timing on
\x auto
\echo '========================================='
\echo 'Jellyfin PostgreSQL Performance Report'
\echo '========================================='
\echo ''
-- ============================================================================
-- 1. Connection Pool Status
-- ============================================================================
\echo '1. CONNECTION POOL STATUS'
\echo '-----------------------------------------'
SELECT
count(*) as total_connections,
count(*) FILTER (WHERE state = 'active') as active,
count(*) FILTER (WHERE state = 'idle') as idle,
count(*) FILTER (WHERE state = 'idle in transaction') as idle_in_transaction,
count(*) FILTER (WHERE state = 'idle in transaction (aborted)') as aborted,
count(*) FILTER (WHERE wait_event_type IS NOT NULL) as waiting
FROM pg_stat_activity
WHERE datname = 'jellyfin';
\echo ''
-- ============================================================================
-- 2. Long-Running Queries
-- ============================================================================
\echo '2. LONG-RUNNING QUERIES (>1 second)'
\echo '-----------------------------------------'
SELECT
pid,
usename,
application_name,
now() - query_start as duration,
state,
wait_event_type,
wait_event,
left(query, 100) as query_preview
FROM pg_stat_activity
WHERE datname = 'jellyfin'
AND state != 'idle'
AND query_start < now() - interval '1 second'
ORDER BY duration DESC
LIMIT 10;
\echo ''
-- ============================================================================
-- 3. Table Sizes
-- ============================================================================
\echo '3. TABLE SIZES (Top 10)'
\echo '-----------------------------------------'
SELECT
s.schemaname,
s.relname as tablename,
pg_size_pretty(pg_total_relation_size(s.schemaname||'.'||s.relname)) AS total_size,
pg_size_pretty(pg_relation_size(s.schemaname||'.'||s.relname)) AS table_size,
pg_size_pretty(pg_total_relation_size(s.schemaname||'.'||s.relname) - pg_relation_size(s.schemaname||'.'||s.relname)) AS index_size,
s.n_live_tup as row_count
FROM pg_stat_user_tables s
WHERE s.schemaname IN ('library', 'users', 'authentication', 'displaypreferences', 'activitylog')
ORDER BY pg_total_relation_size(s.schemaname||'.'||s.relname) DESC
LIMIT 10;
\echo ''
-- ============================================================================
-- 4. Index Usage Statistics
-- ============================================================================
\echo '4. INDEX USAGE (Tables with low index usage)'
\echo '-----------------------------------------'
SELECT
schemaname,
relname as tablename,
seq_scan,
idx_scan,
n_live_tup as rows,
CASE
WHEN seq_scan + idx_scan > 0
THEN round(idx_scan::numeric / (seq_scan + idx_scan) * 100, 2)
ELSE 0
END as index_usage_percent
FROM pg_stat_user_tables
WHERE schemaname IN ('library', 'users', 'authentication', 'displaypreferences', 'activitylog')
AND n_live_tup > 100
ORDER BY
CASE
WHEN seq_scan + idx_scan > 0
THEN idx_scan::numeric / (seq_scan + idx_scan)
ELSE 0
END ASC
LIMIT 10;
\echo ''
-- ============================================================================
-- 5. Missing Indexes (High Sequential Scans)
-- ============================================================================
\echo '5. TABLES WITH HIGH SEQUENTIAL SCANS'
\echo '-----------------------------------------'
SELECT
schemaname,
relname as tablename,
seq_scan,
seq_tup_read,
idx_scan,
n_live_tup,
CASE
WHEN seq_scan > 0
THEN seq_tup_read / seq_scan
ELSE 0
END as avg_rows_per_seq_scan
FROM pg_stat_user_tables
WHERE schemaname IN ('library', 'users', 'authentication', 'displaypreferences', 'activitylog')
AND seq_scan > 100
AND seq_tup_read > 10000
ORDER BY seq_tup_read DESC
LIMIT 10;
\echo ''
-- ============================================================================
-- 6. Table Bloat (Dead Tuples)
-- ============================================================================
\echo '6. TABLE BLOAT (Dead Tuples)'
\echo '-----------------------------------------'
SELECT
schemaname,
relname as tablename,
n_dead_tup as dead_tuples,
n_live_tup as live_tuples,
CASE
WHEN n_live_tup > 0
THEN round(n_dead_tup::numeric / n_live_tup * 100, 2)
ELSE 0
END as dead_tuple_percent,
last_vacuum,
last_autovacuum,
last_analyze,
last_autoanalyze
FROM pg_stat_user_tables
WHERE schemaname IN ('library', 'users', 'authentication', 'displaypreferences', 'activitylog')
AND n_dead_tup > 100
ORDER BY n_dead_tup DESC
LIMIT 10;
\echo ''
-- ============================================================================
-- 7. Cache Hit Ratio
-- ============================================================================
\echo '7. CACHE HIT RATIO (Should be >95%)'
\echo '-----------------------------------------'
SELECT
'Buffer Cache Hit Ratio' as metric,
round(
sum(blks_hit) / nullif(sum(blks_hit) + sum(blks_read), 0) * 100,
2
) as hit_ratio_percent
FROM pg_stat_database
WHERE datname = 'jellyfin';
\echo ''
-- ============================================================================
-- 8. Index Efficiency
-- ============================================================================
\echo '8. UNUSED OR RARELY USED INDEXES'
\echo '-----------------------------------------'
SELECT
schemaname,
relname as tablename,
indexrelname as indexname,
pg_size_pretty(pg_relation_size(indexrelid)) as index_size,
idx_scan as times_used,
idx_tup_read,
idx_tup_fetch
FROM pg_stat_user_indexes
WHERE schemaname IN ('library', 'users', 'authentication', 'displaypreferences', 'activitylog')
AND idx_scan < 50
AND pg_relation_size(indexrelid) > 1000000
ORDER BY pg_relation_size(indexrelid) DESC
LIMIT 10;
\echo ''
-- ============================================================================
-- 9. Locks
-- ============================================================================
\echo '9. CURRENT LOCKS (Blocked queries)'
\echo '-----------------------------------------'
SELECT
bl.pid AS blocked_pid,
a.usename AS blocked_user,
ka.query AS blocking_query,
now() - ka.query_start AS blocking_duration,
a.query AS blocked_query
FROM pg_catalog.pg_locks bl
JOIN pg_catalog.pg_stat_activity a ON bl.pid = a.pid
JOIN pg_catalog.pg_locks kl ON bl.transactionid = kl.transactionid AND bl.pid != kl.pid
JOIN pg_catalog.pg_stat_activity ka ON kl.pid = ka.pid
WHERE NOT bl.granted
AND a.datname = 'jellyfin';
\echo ''
-- ============================================================================
-- 10. Slow Queries (if pg_stat_statements is enabled)
-- ============================================================================
\echo '10. SLOWEST QUERIES (Requires pg_stat_statements extension)'
\echo '-----------------------------------------'
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM pg_extension WHERE extname = 'pg_stat_statements'
) THEN
RAISE NOTICE 'pg_stat_statements is installed. Showing slow queries...';
ELSE
RAISE NOTICE 'pg_stat_statements is NOT installed. Run: CREATE EXTENSION pg_stat_statements;';
END IF;
END $$;
-- Only run if extension exists (wrapped in DO block to prevent error)
DO $$
DECLARE
query_rec RECORD;
BEGIN
IF EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'pg_stat_statements') THEN
FOR query_rec IN
SELECT
calls,
round(mean_exec_time::numeric, 2) as avg_time_ms,
round(max_exec_time::numeric, 2) as max_time_ms,
round(total_exec_time::numeric, 2) as total_time_ms,
round((100 * total_exec_time / sum(total_exec_time) OVER ())::numeric, 2) as percent_total,
left(query, 100) as query_preview
FROM pg_stat_statements
WHERE query NOT LIKE '%pg_stat_statements%'
AND query NOT LIKE '%pg_catalog%'
ORDER BY mean_exec_time DESC
LIMIT 10
LOOP
RAISE NOTICE 'Calls: %, Avg: %ms, Max: %ms, Total: %ms, %%: %, Query: %',
query_rec.calls,
query_rec.avg_time_ms,
query_rec.max_time_ms,
query_rec.total_time_ms,
query_rec.percent_total,
query_rec.query_preview;
END LOOP;
END IF;
END $$;
\echo ''
-- ============================================================================
-- 11. Database Configuration
-- ============================================================================
\echo '11. KEY POSTGRESQL SETTINGS'
\echo '-----------------------------------------'
SELECT
name,
setting,
unit,
short_desc
FROM pg_settings
WHERE name IN (
'max_connections',
'shared_buffers',
'effective_cache_size',
'work_mem',
'maintenance_work_mem',
'random_page_cost',
'effective_io_concurrency',
'autovacuum',
'checkpoint_completion_target',
'wal_buffers',
'default_statistics_target'
)
ORDER BY name;
\echo ''
-- ============================================================================
-- 12. Recommendations
-- ============================================================================
\echo '12. RECOMMENDATIONS'
\echo '-----------------------------------------'
DO $$
DECLARE
conn_count int;
hit_ratio numeric;
max_conn int;
bloat_tables int;
BEGIN
-- Check connection count
SELECT count(*) INTO conn_count
FROM pg_stat_activity WHERE datname = 'jellyfin';
SELECT setting::int INTO max_conn
FROM pg_settings WHERE name = 'max_connections';
IF conn_count::numeric / max_conn > 0.8 THEN
RAISE WARNING 'High connection usage: % of % max connections', conn_count, max_conn;
RAISE NOTICE 'RECOMMENDATION: Increase max_connections in postgresql.conf';
END IF;
-- Check cache hit ratio
SELECT round(
sum(blks_hit) / nullif(sum(blks_hit) + sum(blks_read), 0) * 100, 2
) INTO hit_ratio
FROM pg_stat_database WHERE datname = 'jellyfin';
IF hit_ratio < 95 THEN
RAISE WARNING 'Low cache hit ratio: %%. Target: >95%%', hit_ratio;
RAISE NOTICE 'RECOMMENDATION: Increase shared_buffers and effective_cache_size';
END IF;
-- Check bloat
SELECT count(*) INTO bloat_tables
FROM pg_stat_user_tables
WHERE n_dead_tup > 1000
AND schemaname IN ('library', 'users', 'authentication');
IF bloat_tables > 0 THEN
RAISE WARNING 'Found % tables with significant dead tuples', bloat_tables;
RAISE NOTICE 'RECOMMENDATION: Run VACUUM ANALYZE or adjust autovacuum settings';
END IF;
RAISE NOTICE 'Diagnostic report complete.';
END $$;
\echo ''
\echo '========================================='
\echo 'Run sql/performance_indexes.sql to add missing indexes'
\echo 'See PERFORMANCE_TROUBLESHOOTING.md for detailed fixes'
\echo '========================================='
-201
View File
@@ -1,201 +0,0 @@
-- PostgreSQL Performance Indexes for Jellyfin
-- Run this script to improve query performance
-- Safe to run multiple times (uses IF NOT EXISTS)
\timing on
\echo 'Creating performance indexes for Jellyfin PostgreSQL database...'
-- ============================================================================
-- BaseItems Table Indexes
-- ============================================================================
\echo 'Creating indexes on BaseItems table...'
-- Index for filtering by type and virtual items (improves library filtering)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitems_type_isvirtual
ON library."BaseItems" (Type, BaseItems.IsVirtualItem)
WHERE IsVirtualItem = false;
-- Index for parent-child relationships (improves hierarchy queries)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitems_parent_type
ON library."BaseItems" (BaseItems.ParentId, Type)
WHERE ParentId IS NOT NULL;
-- Index for date-based queries (recently added items, sorting)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitems_datecreated
ON library."BaseItems" (BaseItems.DateCreated DESC)
WHERE DateCreated IS NOT NULL;
-- Index for date modified (sync operations)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitems_datemodified
ON library."BaseItems" (BaseItems.DateModified DESC)
WHERE DateModified IS NOT NULL;
-- Index for sorting by name (alphabetical browsing)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitems_sortname
ON library."BaseItems" (BaseItems.SortName)
WHERE SortName IS NOT NULL;
-- Index for TopParent lookups (library organization)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitems_topparent_type
ON library."BaseItems" (BaseItems.TopParentId, Type)
WHERE TopParentId IS NOT NULL;
-- Index for premiere date (upcoming/recent content)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitems_premieredate
ON library."BaseItems" (BaseItems.PremiereDate DESC)
WHERE PremiereDate IS NOT NULL;
-- Index for production year (decade/year filtering)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitems_productionyear
ON library."BaseItems" (BaseItems.ProductionYear DESC)
WHERE ProductionYear IS NOT NULL;
-- Index for community rating (sorting by rating)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitems_rating
ON library."BaseItems" (BaseItems.CommunityRating DESC NULLS LAST);
-- Index for series episodes
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitems_series_episode
ON library."BaseItems" (BaseItems.SeriesPresentationUniqueKey, BaseItems.IndexNumber, BaseItems.ParentIndexNumber)
WHERE Type = 'MediaBrowser.Controller.Entities.TV.Episode';
-- ============================================================================
-- BaseItemProviders Table Indexes
-- ============================================================================
\echo 'Creating indexes on BaseItemProviders table...'
-- Index for provider value lookups (IMDb, TMDB, etc.)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitem_providers_value
ON library."BaseItemProviders" (ProviderValue, ProviderId);
-- Index for finding all items by provider (reverse lookup)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_baseitem_providers_id
ON library."BaseItemProviders" (ProviderId, ItemId);
-- ============================================================================
-- UserData Table Indexes
-- ============================================================================
\echo 'Creating indexes on UserData table...'
-- Index for finding user's watched items
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_userdata_user_played
ON library."UserData" (UserId, Played);
-- Index for finding user's favorite items
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_userdata_user_favorite
ON library."UserData" (UserId, IsFavorite)
WHERE IsFavorite = true;
-- Index for last played date
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_userdata_lastplayed
ON library."UserData" (LastPlayedDate DESC)
WHERE LastPlayedDate IS NOT NULL;
-- ============================================================================
-- PeopleBaseItemMap Table Indexes
-- ============================================================================
\echo 'Creating indexes on PeopleBaseItemMap table...'
-- Index for finding all items for a person
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_people_items_person
ON library."PeopleBaseItemMap" (PeopleId, ItemId);
-- Index for finding all people for an item (already covered by FK, but explicit)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_people_items_item
ON library."PeopleBaseItemMap" (ItemId, PeopleId);
-- ============================================================================
-- ItemValuesMap Table Indexes
-- ============================================================================
\echo 'Creating indexes on ItemValuesMap table...'
-- Index for finding items by value (genres, tags, etc.)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_itemvalues_map_value
ON library."ItemValuesMap" (ItemValueId, ItemId);
-- ============================================================================
-- ActivityLog Table Indexes
-- ============================================================================
\echo 'Creating indexes on ActivityLog table...'
-- Index for date filtering (recent activity)
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_activitylog_date
ON activitylog."ActivityLog" (DateCreated DESC);
-- Index for user activity
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_activitylog_user
ON activitylog."ActivityLog" (UserId, DateCreated DESC)
WHERE UserId IS NOT NULL;
-- ============================================================================
-- MediaStreamInfos Table Indexes
-- ============================================================================
\echo 'Creating indexes on MediaStreamInfos table...'
-- Index for finding streams by item and type
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_mediastreams_item_type
ON library."MediaStreamInfos" (ItemId, Type);
-- Index for codec searches
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_mediastreams_codec
ON library."MediaStreamInfos" (Codec)
WHERE Codec IS NOT NULL;
-- ============================================================================
-- Analyze Tables
-- ============================================================================
\echo 'Analyzing tables to update statistics...'
ANALYZE library."BaseItems";
ANALYZE library."BaseItemProviders";
ANALYZE library."UserData";
ANALYZE library."PeopleBaseItemMap";
ANALYZE library."ItemValuesMap";
ANALYZE library."MediaStreamInfos";
-- Analyze ActivityLog if it exists
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = 'activitylog'
AND table_name = 'ActivityLog'
) THEN
ANALYZE activitylog."ActivityLog";
RAISE NOTICE 'ActivityLog analyzed';
END IF;
END $$;
-- ============================================================================
-- Report Index Usage
-- ============================================================================
\echo 'Current index usage statistics:'
SELECT
schemaname,
relname as tablename,
indexrelname as indexname,
pg_size_pretty(pg_relation_size(indexrelid)) as index_size,
idx_scan as times_used,
idx_tup_read as rows_read,
idx_tup_fetch as rows_fetched
FROM pg_stat_user_indexes
WHERE schemaname IN ('library', 'activitylog', 'users', 'authentication', 'displaypreferences')
ORDER BY schemaname, relname, indexrelname;
\echo ''
\echo 'Index creation complete!'
\echo ''
\echo 'Note: CONCURRENTLY builds indexes without blocking writes, but takes longer.'
\echo 'Monitor progress with: SELECT * FROM pg_stat_progress_create_index;'
\echo ''
\echo 'After indexing, restart Jellyfin to clear connection pools.'
-220
View File
@@ -1,220 +0,0 @@
-- PostgreSQL Performance Indexes for Jellyfin
-- Based on actual schema analysis
-- Run this script to add supplementary performance indexes
-- Safe to run multiple times
\timing on
\echo '========================================';
\echo 'Jellyfin PostgreSQL Supplementary Indexes';
\echo '========================================';
\echo '';
\echo 'Your schema already has comprehensive indexes from EF Core migrations.';
\echo 'This script adds only missing supplementary indexes.';
\echo '';
-- ============================================================================
-- Check Existing Indexes
-- ============================================================================
\echo 'Analyzing existing indexes...';
DO $$
DECLARE
idx_count int;
BEGIN
SELECT count(*) INTO idx_count
FROM pg_indexes
WHERE schemaname = 'library' AND tablename = 'BaseItems';
RAISE NOTICE 'Found % existing indexes on BaseItems table', idx_count;
END $$;
-- ============================================================================
-- BaseItems - Add Only Missing Supplementary Indexes
-- ============================================================================
\echo 'Adding supplementary BaseItems indexes...';
-- Composite index for filtered library browsing (type + virtual + parent)
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE schemaname = 'library'
AND tablename = 'BaseItems'
AND indexname = 'idx_baseitems_type_isvirtualitem_topparentid'
) THEN
CREATE INDEX CONCURRENTLY idx_baseitems_type_isvirtualitem_topparentid
ON library."BaseItems" ("Type", "IsVirtualItem", "TopParentId")
WHERE "IsVirtualItem" = false;
RAISE NOTICE 'Created idx_baseitems_type_isvirtualitem_topparentid';
ELSE
RAISE NOTICE 'Index idx_baseitems_type_isvirtualitem_topparentid already exists';
END IF;
END $$;
-- Index for folder hierarchy queries
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE schemaname = 'library'
AND tablename = 'BaseItems'
AND indexname = 'idx_baseitems_topparentid_isfolder'
) THEN
CREATE INDEX CONCURRENTLY idx_baseitems_topparentid_isfolder
ON library."BaseItems" ("TopParentId", "IsFolder", "IsVirtualItem")
WHERE "TopParentId" IS NOT NULL;
RAISE NOTICE 'Created idx_baseitems_topparentid_isfolder';
ELSE
RAISE NOTICE 'Index idx_baseitems_topparentid_isfolder already exists';
END IF;
END $$;
-- Index for recently added content with filters
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE schemaname = 'library'
AND tablename = 'BaseItems'
AND indexname = 'idx_baseitems_datecreated_filtered'
) THEN
CREATE INDEX CONCURRENTLY idx_baseitems_datecreated_filtered
ON library."BaseItems" ("DateCreated" DESC, "Type", "IsVirtualItem")
WHERE "DateCreated" IS NOT NULL AND "IsVirtualItem" = false;
RAISE NOTICE 'Created idx_baseitems_datecreated_filtered';
ELSE
RAISE NOTICE 'Index idx_baseitems_datecreated_filtered already exists';
END IF;
END $$;
-- ============================================================================
-- ItemValuesMap - Add Reverse Lookup Index
-- ============================================================================
\echo 'Checking ItemValuesMap indexes...';
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE schemaname = 'library'
AND tablename = 'ItemValuesMap'
AND indexname = 'idx_itemvaluesmap_itemvalueid_itemid'
) THEN
CREATE INDEX CONCURRENTLY idx_itemvaluesmap_itemvalueid_itemid
ON library."ItemValuesMap" ("ItemValueId", "ItemId");
RAISE NOTICE 'Created idx_itemvaluesmap_itemvalueid_itemid';
ELSE
RAISE NOTICE 'Index idx_itemvaluesmap_itemvalueid_itemid already exists';
END IF;
END $$;
-- ============================================================================
-- ActivityLogs - Add User-Specific Index
-- (Note: Table is ActivityLogs, not ActivityLog)
-- ============================================================================
\echo 'Checking ActivityLogs indexes...';
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = 'activitylog'
AND table_name = 'ActivityLogs'
) THEN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE schemaname = 'activitylog'
AND tablename = 'ActivityLogs'
AND indexname = 'idx_activitylogs_userid_datecreated'
) THEN
CREATE INDEX CONCURRENTLY idx_activitylogs_userid_datecreated
ON activitylog."ActivityLogs" ("UserId", "DateCreated" DESC)
WHERE "UserId" IS NOT NULL;
RAISE NOTICE 'Created idx_activitylogs_userid_datecreated';
ELSE
RAISE NOTICE 'Index idx_activitylogs_userid_datecreated already exists';
END IF;
ELSE
RAISE NOTICE 'ActivityLogs table not found (expected: activitylog.ActivityLogs)';
END IF;
END $$;
-- ============================================================================
-- Analyze Tables to Update Statistics
-- ============================================================================
\echo '';
\echo 'Updating table statistics...';
ANALYZE library."BaseItems";
ANALYZE library."BaseItemProviders";
ANALYZE library."UserData";
ANALYZE library."PeopleBaseItemMap";
ANALYZE library."ItemValuesMap";
ANALYZE library."ItemValues";
ANALYZE library."MediaStreamInfos";
ANALYZE library."Peoples";
ANALYZE library."Chapters";
ANALYZE library."KeyframeData";
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = 'activitylog'
AND table_name = 'ActivityLogs'
) THEN
ANALYZE activitylog."ActivityLogs";
RAISE NOTICE 'ActivityLogs statistics updated';
END IF;
END $$;
\echo 'Statistics updated.';
-- ============================================================================
-- Report Current Index Status
-- ============================================================================
\echo '';
\echo '========================================';
\echo 'Index Usage Report';
\echo '========================================';
-- Show all indexes and their usage
SELECT
schemaname,
relname as tablename,
indexrelname as indexname,
pg_size_pretty(pg_relation_size(indexrelid)) as index_size,
idx_scan as times_used,
idx_tup_read as rows_read,
idx_tup_fetch as rows_fetched,
CASE
WHEN idx_scan = 0 THEN 'UNUSED'
WHEN idx_scan < 10 THEN 'RARELY USED'
WHEN idx_scan < 100 THEN 'OCCASIONALLY USED'
ELSE 'FREQUENTLY USED'
END as usage_category
FROM pg_stat_user_indexes
WHERE schemaname IN ('library', 'activitylog', 'users', 'authentication', 'displaypreferences')
ORDER BY schemaname, relname, idx_scan DESC;
\echo '';
\echo '========================================';
\echo 'Summary';
\echo '========================================';
\echo 'Your database already had comprehensive indexes from EF Core migrations.';
\echo 'Added supplementary composite indexes for specific query patterns.';
\echo '';
\echo 'Next steps:';
\echo '1. Monitor performance with: psql -U jellyfin -d jellyfin -f sql/diagnostics.sql';
\echo '2. Check query plans for slow queries';
\echo '3. Consider removing rarely-used indexes after 30 days';
\echo '4. Restart Jellyfin to clear connection pools';
\echo '';
\echo 'See SCHEMA_ANALYSIS.md for detailed index information.';
\echo '========================================';
@@ -1,173 +0,0 @@
-- 10_create_supplementary_indexes.sql
-- Creates additional performance indexes not included in the base schema dump
-- These are safe to run multiple times (uses IF NOT EXISTS checks)
\echo 'Creating supplementary performance indexes...';
-- ============================================================================
-- BaseItems Supplementary Indexes
-- (Schema dump has 19 indexes, adding 3 more for specific query patterns)
-- ============================================================================
-- Composite index for filtered library browsing (type + virtual + parent)
-- Use case: Browse items by type in a specific library, excluding virtual items
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE schemaname = 'library'
AND tablename = 'BaseItems'
AND indexname = 'idx_baseitems_type_isvirtualitem_topparentid'
) THEN
RAISE NOTICE 'Creating idx_baseitems_type_isvirtualitem_topparentid...';
CREATE INDEX CONCURRENTLY idx_baseitems_type_isvirtualitem_topparentid
ON library."BaseItems" ("Type", "IsVirtualItem", "TopParentId")
WHERE "IsVirtualItem" = false;
RAISE NOTICE '✓ Created idx_baseitems_type_isvirtualitem_topparentid';
ELSE
RAISE NOTICE '✓ Index idx_baseitems_type_isvirtualitem_topparentid already exists';
END IF;
EXCEPTION
WHEN duplicate_table THEN
RAISE NOTICE '✓ Index idx_baseitems_type_isvirtualitem_topparentid already exists (caught duplicate)';
END $$;
-- Index for folder hierarchy queries
-- Use case: Navigate folder structures efficiently
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE schemaname = 'library'
AND tablename = 'BaseItems'
AND indexname = 'idx_baseitems_topparentid_isfolder'
) THEN
RAISE NOTICE 'Creating idx_baseitems_topparentid_isfolder...';
CREATE INDEX CONCURRENTLY idx_baseitems_topparentid_isfolder
ON library."BaseItems" ("TopParentId", "IsFolder", "IsVirtualItem")
WHERE "TopParentId" IS NOT NULL;
RAISE NOTICE '✓ Created idx_baseitems_topparentid_isfolder';
ELSE
RAISE NOTICE '✓ Index idx_baseitems_topparentid_isfolder already exists';
END IF;
EXCEPTION
WHEN duplicate_table THEN
RAISE NOTICE '✓ Index idx_baseitems_topparentid_isfolder already exists (caught duplicate)';
END $$;
-- Index for recently added content with filters
-- Use case: "Recently Added" view across all libraries
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE schemaname = 'library'
AND tablename = 'BaseItems'
AND indexname = 'idx_baseitems_datecreated_filtered'
) THEN
RAISE NOTICE 'Creating idx_baseitems_datecreated_filtered...';
CREATE INDEX CONCURRENTLY idx_baseitems_datecreated_filtered
ON library."BaseItems" ("DateCreated" DESC, "Type", "IsVirtualItem")
WHERE "DateCreated" IS NOT NULL AND "IsVirtualItem" = false;
RAISE NOTICE '✓ Created idx_baseitems_datecreated_filtered';
ELSE
RAISE NOTICE '✓ Index idx_baseitems_datecreated_filtered already exists';
END IF;
EXCEPTION
WHEN duplicate_table THEN
RAISE NOTICE '✓ Index idx_baseitems_datecreated_filtered already exists (caught duplicate)';
END $$;
-- ============================================================================
-- ItemValuesMap Supplementary Index
-- (Schema dump has IX_ItemValuesMap_ItemId, adding reverse lookup)
-- ============================================================================
-- Index for reverse lookup (find items by genre/tag)
-- Use case: "Show all items with genre 'Action'"
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE schemaname = 'library'
AND tablename = 'ItemValuesMap'
AND indexname = 'idx_itemvaluesmap_itemvalueid_itemid'
) THEN
RAISE NOTICE 'Creating idx_itemvaluesmap_itemvalueid_itemid...';
CREATE INDEX CONCURRENTLY idx_itemvaluesmap_itemvalueid_itemid
ON library."ItemValuesMap" ("ItemValueId", "ItemId");
RAISE NOTICE '✓ Created idx_itemvaluesmap_itemvalueid_itemid';
ELSE
RAISE NOTICE '✓ Index idx_itemvaluesmap_itemvalueid_itemid already exists';
END IF;
EXCEPTION
WHEN duplicate_table THEN
RAISE NOTICE '✓ Index idx_itemvaluesmap_itemvalueid_itemid already exists (caught duplicate)';
END $$;
-- ============================================================================
-- ActivityLogs Supplementary Index
-- (Schema dump has IX_ActivityLogs_DateCreated, adding user-specific index)
-- ============================================================================
-- Index for user-specific activity queries
-- Use case: "Show activity for user X"
DO $$
BEGIN
-- Check if ActivityLogs table exists
IF EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = 'activitylog'
AND table_name = 'ActivityLogs'
) THEN
IF NOT EXISTS (
SELECT 1 FROM pg_indexes
WHERE schemaname = 'activitylog'
AND tablename = 'ActivityLogs'
AND indexname = 'idx_activitylogs_userid_datecreated'
) THEN
RAISE NOTICE 'Creating idx_activitylogs_userid_datecreated...';
CREATE INDEX CONCURRENTLY idx_activitylogs_userid_datecreated
ON activitylog."ActivityLogs" ("UserId", "DateCreated" DESC)
WHERE "UserId" IS NOT NULL;
RAISE NOTICE '✓ Created idx_activitylogs_userid_datecreated';
ELSE
RAISE NOTICE '✓ Index idx_activitylogs_userid_datecreated already exists';
END IF;
ELSE
RAISE NOTICE '⚠ ActivityLogs table not found, skipping user-specific index';
END IF;
EXCEPTION
WHEN duplicate_table THEN
RAISE NOTICE '✓ Index idx_activitylogs_userid_datecreated already exists (caught duplicate)';
END $$;
-- ============================================================================
-- Analyze Tables to Update Statistics
-- ============================================================================
\echo 'Updating table statistics...';
ANALYZE library."BaseItems";
ANALYZE library."ItemValuesMap";
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = 'activitylog'
AND table_name = 'ActivityLogs'
) THEN
ANALYZE activitylog."ActivityLogs";
RAISE NOTICE '✓ ActivityLogs statistics updated';
END IF;
END $$;
\echo '✓ Supplementary indexes created successfully!';
\echo '';
\echo 'Summary:';
\echo ' - Added 3 composite indexes on BaseItems';
\echo ' - Added 1 reverse lookup index on ItemValuesMap';
\echo ' - Added 1 user-specific index on ActivityLogs';
\echo '';
\echo 'These indexes complement the 50+ existing indexes from your schema dump.';
File diff suppressed because it is too large Load Diff
-14
View File
@@ -1,14 +0,0 @@
{
"_comment": "Jellyfin Startup Configuration - Windows defaults - using C:/ProgramData/jellyfin",
"_note": "These paths will be used unless overridden by environment variables or command-line arguments",
"_priority": "Command-line args \u003E Environment variables \u003E This file \u003E Built-in defaults",
"_examples": "See startup.linux.json or startup.windows.json in Resources/Configuration for other OS examples",
"Paths": {
"DataDir": "C:/ProgramData/jellyfin/data",
"ConfigDir": "C:/ProgramData/jellyfin/config",
"CacheDir": "C:/ProgramData/jellyfin/cache",
"LogDir": "C:/ProgramData/jellyfin/log",
"TempDir": "C:\\Users\\wjones\\AppData\\Local\\Temp\\jellyfin",
"WebDir": "C:/ProgramData/jellyfin/wwwroot"
}
}
-13
View File
@@ -1,13 +0,0 @@
{
"_comment": "Jellyfin Startup Configuration - Linux defaults - using /var/lib/jellyfin",
"_note": "These paths will be used unless overridden by environment variables or command-line arguments",
"_priority": "Command-line args > Environment variables > This file > Built-in defaults",
"Paths": {
"DataDir": "/var/lib/jellyfin/data",
"ConfigDir": "/etc/jellyfin",
"CacheDir": "/var/cache/jellyfin",
"LogDir": "/var/log/jellyfin",
"TempDir": "/tmp/jellyfin",
"WebDir": "wwwroot"
}
}
-13
View File
@@ -1,13 +0,0 @@
{
"_comment": "Jellyfin Startup Configuration - Windows defaults - using C:/ProgramData/jellyfin",
"_note": "These paths will be used unless overridden by environment variables or command-line arguments",
"_priority": "Command-line args > Environment variables > This file > Built-in defaults",
"Paths": {
"DataDir": "C:/ProgramData/jellyfin/data",
"ConfigDir": "C:/ProgramData/jellyfin/config",
"CacheDir": "C:/ProgramData/jellyfin/cache",
"LogDir": "C:/ProgramData/jellyfin/log",
"TempDir": "C:/ProgramData/Temp/jellyfin",
"WebDir": "wwwroot"
}
}
-12
View File
@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\jellyfin.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: 07E39F42-A2C6-4B32-AF8C-725F957A73FF-->
-26
View File
@@ -1,26 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="251" height="72" fill="none" viewBox="0 0 251 72">
<g clip-path="url(#a)">
<path fill="url(#b)"
d="M24.212 49.158C22.66 46.042 32.838 27.588 36 27.588c3.167.002 13.323 18.488 11.788 21.57-1.534 3.082-22.025 3.116-23.576 0" />
<path fill="url(#c)" fill-rule="evenodd"
d="M.482 64.995C-4.195 55.605 26.477 0 36 0c9.533 0 40.153 55.713 35.527 64.995s-66.368 9.39-71.045 0m12.254-8.148c3.064 6.152 43.518 6.084 46.548 0 3.03-6.086-17.032-42.586-23.275-42.586S9.671 50.694 12.736 56.847"
clip-rule="evenodd" />
<path fill="#fff"
d="M225.22 56c-.28 0-.42 0-.527-.055a.5.5 0 0 1-.219-.218c-.054-.107-.054-.247-.054-.527V26.8c0-.28 0-.42.054-.527a.5.5 0 0 1 .219-.219c.107-.054.247-.054.527-.054h5.183c.28 0 .42 0 .527.054a.5.5 0 0 1 .218.219c.055.107.055.247.055.527v2.895a7.9 7.9 0 0 1 3.419-3.254q2.261-1.103 5.074-1.103 3.308 0 5.845 1.434a10.1 10.1 0 0 1 4.026 4.026q1.434 2.536 1.434 5.9V55.2c0 .28 0 .42-.055.527a.5.5 0 0 1-.218.218c-.107.055-.247.055-.527.055h-5.625c-.28 0-.42 0-.527-.055a.5.5 0 0 1-.218-.218c-.055-.107-.055-.247-.055-.527V38.408q0-2.978-1.709-4.688-1.654-1.764-4.357-1.764-2.702 0-4.412 1.764-1.654 1.766-1.654 4.688V55.2c0 .28 0 .42-.054.527a.5.5 0 0 1-.219.218c-.107.055-.247.055-.527.055zm-11.54-33.363c-.28 0-.42 0-.527-.055a.5.5 0 0 1-.218-.218c-.055-.107-.055-.247-.055-.527v-6.121c0-.28 0-.42.055-.527a.5.5 0 0 1 .218-.219c.107-.054.247-.054.527-.054h5.624c.28 0 .42 0 .527.054a.5.5 0 0 1 .219.219c.054.107.054.247.054.527v6.12c0 .28 0 .42-.054.528a.5.5 0 0 1-.219.218c-.107.055-.247.055-.527.055zm0 33.363c-.28 0-.42 0-.527-.054a.5.5 0 0 1-.218-.219c-.055-.107-.055-.247-.055-.527V26.8c0-.28 0-.42.055-.527a.5.5 0 0 1 .218-.218c.107-.055.247-.055.527-.055h5.624c.28 0 .42 0 .527.055a.5.5 0 0 1 .219.218c.054.107.054.247.054.527v28.4c0 .28 0 .42-.054.527a.5.5 0 0 1-.219.219c-.107.054-.247.054-.527.054zm-16.712-.054c.107.054.247.054.527.054h5.625c.28 0 .42 0 .526-.054a.5.5 0 0 0 .219-.219c.055-.107.055-.247.055-.527V32.452h5.872c.28 0 .42 0 .527-.054a.5.5 0 0 0 .219-.219c.054-.107.054-.247.054-.527V26.8c0-.28 0-.42-.054-.527a.5.5 0 0 0-.219-.218c-.107-.055-.247-.055-.527-.055h-5.872v-.992q0-2.261 1.323-3.31 1.379-1.102 3.75-1.102.454 0 .939.044c.345.031.518.047.634-.004a.48.48 0 0 0 .241-.22c.061-.111.061-.274.061-.6V15.39c0-.304 0-.457-.061-.589a.7.7 0 0 0-.248-.284c-.122-.078-.261-.097-.537-.136a14.5 14.5 0 0 0-1.966-.126q-5.184 0-8.273 2.812t-3.088 7.942V26H186.53c-.3 0-.451 0-.58.05a.75.75 0 0 0-.296.205c-.091.104-.143.244-.248.526l-7.43 19.9-7.483-19.903c-.105-.28-.158-.42-.249-.524a.75.75 0 0 0-.296-.205c-.129-.049-.279-.049-.578-.049h-5.769c-.394 0-.591 0-.717.083a.5.5 0 0 0-.213.314c-.031.147.041.33.186.697L174.281 56l-.661 1.6q-.883 1.874-2.041 3.033-1.103 1.158-3.584 1.158-.883 0-1.875-.166a13 13 0 0 1-.73-.1c-.389-.066-.584-.099-.709-.053a.47.47 0 0 0-.26.22c-.066.116-.066.298-.066.663v4.329c0 .243 0 .365.045.481a.7.7 0 0 0 .189.266c.095.081.194.116.392.185q.684.24 1.47.351 1.158.22 2.371.22 4.246 0 7.059-2.426 2.867-2.37 4.577-6.728l10.517-26.58h5.72V55.2c0 .28 0 .42.055.527a.5.5 0 0 0 .218.219M154.363 56c-.28 0-.42 0-.527-.054a.5.5 0 0 1-.219-.219c-.054-.107-.054-.247-.054-.527V15.054c0-.28 0-.42.054-.527a.5.5 0 0 1 .219-.219c.107-.054.247-.054.527-.054h5.624c.28 0 .42 0 .527.054a.5.5 0 0 1 .218.219c.055.107.055.247.055.527V55.2c0 .28 0 .42-.055.527a.5.5 0 0 1-.218.219c-.107.054-.247.054-.527.054zm-11.621 0c-.28 0-.42 0-.527-.054a.5.5 0 0 1-.219-.219c-.054-.107-.054-.247-.054-.527V15.054c0-.28 0-.42.054-.527a.5.5 0 0 1 .219-.219c.107-.054.247-.054.527-.054h5.624c.28 0 .42 0 .527.054a.5.5 0 0 1 .219.219c.054.107.054.247.054.527V55.2c0 .28 0 .42-.054.527a.5.5 0 0 1-.219.219c-.107.054-.247.054-.527.054zm-18.132.662q-4.632-.001-8.107-2.096a14.6 14.6 0 0 1-5.404-5.68q-1.93-3.585-1.93-7.942 0-4.522 1.93-7.996 1.985-3.53 5.349-5.57 3.42-2.04 7.61-2.04 4.688 0 7.942 2.04 3.253 1.986 4.963 5.294 1.71 3.309 1.709 7.335 0 .828-.11 1.654-.031.45-.12.841c-.037.165-.055.247-.115.33a.55.55 0 0 1-.208.168c-.095.04-.194.04-.393.04h-21.057q.33 3.309 2.537 5.294 2.205 1.986 5.459 1.985 2.482 0 4.191-1.047a8.2 8.2 0 0 0 2.206-1.986c.241-.316.362-.474.484-.542a.6.6 0 0 1 .352-.083c.139.006.296.083.608.236l4.269 2.094c.239.118.359.176.431.275a.52.52 0 0 1 .098.298c0 .122-.058.231-.172.45q-1.432 2.742-4.526 4.607-3.419 2.04-7.996 2.04m-.552-25.368q-2.702 0-4.687 1.654-1.93 1.6-2.537 4.577h14.118q-.22-2.757-2.151-4.466-1.875-1.765-4.743-1.765M90.801 56c-.28 0-.42 0-.527-.054a.5.5 0 0 1-.218-.218C90 55.62 90 55.48 90 55.2v-5.294c0-.28 0-.42.055-.527a.5.5 0 0 1 .218-.218c.107-.055.247-.055.527-.055h1.572q2.646 0 4.19-1.489 1.6-1.545 1.6-4.08V15.715c0-.28 0-.42.055-.527a.5.5 0 0 1 .218-.219c.107-.054.247-.054.527-.054h5.956c.28 0 .42 0 .527.054a.5.5 0 0 1 .218.219c.055.107.055.247.055.527v27.546q0 3.804-1.655 6.672-1.599 2.868-4.632 4.467-2.979 1.6-7.06 1.6z" />
</g>
<defs>
<linearGradient id="b" x1="12" x2="71.999" y1="30.001" y2="63.002"
gradientUnits="userSpaceOnUse">
<stop stop-color="#aa5cc3" />
<stop offset="1" stop-color="#00a4dc" />
</linearGradient>
<linearGradient id="c" x1="12" x2="71.999" y1="29.999" y2="63.001"
gradientUnits="userSpaceOnUse">
<stop stop-color="#aa5cc3" />
<stop offset="1" stop-color="#00a4dc" />
</linearGradient>
<clipPath id="a">
<path fill="#fff" d="M0 0h251v72H0z" />
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
;
Binary file not shown.
@@ -1,17 +0,0 @@
/* logo */
.topbar-wrapper img[alt="Swagger UI"], .topbar-wrapper span {
visibility: collapse;
}
.topbar-wrapper .link:after {
content: '';
display: block;
background-image: url(../jellyfin.svg);
background-position: center;
background-repeat: no-repeat;
background-size: contain;
box-sizing: border-box;
width: 220px;
height: 40px;
}
/* end logo */
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More