diff --git a/src/MediaBrowser.Common/Media/Import/ImportController.cs b/src/MediaBrowser.Common/Media/Import/ImportController.cs index 04fdc04..8a92697 100644 --- a/src/MediaBrowser.Common/Media/Import/ImportController.cs +++ b/src/MediaBrowser.Common/Media/Import/ImportController.cs @@ -9,7 +9,7 @@ public class ImportController(Ffmpeg ffmpeg, MediaConfig mediaConfig, MediaDbCon .Concat(['/', '\\', ':', '*', '?', '"', '<', '>', '|']) .Distinct() .ToArray(); - [HttpPost("files")] + [HttpPost("files"), DisableRequestSizeLimit] public async Task Add([FromForm] AddFileRequest request) { if (!Directory.Exists(mediaConfig.ImportDirectory) diff --git a/src/MediaBrowser.Frontend/src/app/app.routes.ts b/src/MediaBrowser.Frontend/src/app/app.routes.ts index f6f4eb9..0109272 100644 --- a/src/MediaBrowser.Frontend/src/app/app.routes.ts +++ b/src/MediaBrowser.Frontend/src/app/app.routes.ts @@ -13,6 +13,11 @@ export const routes: Routes = [ loadComponent: () => import('./search/search').then(m => m.SearchComponent), canActivate: [authGuard] }, + { + path: 'searchByTag', + loadComponent: () => import('./search/search').then(m => m.SearchComponent), + canActivate: [authGuard] + }, { path: 'import', loadComponent: () => import('./import/import').then(m => m.ImportComponent), diff --git a/src/MediaBrowser.Frontend/src/app/meta/meta.html b/src/MediaBrowser.Frontend/src/app/meta/meta.html index d099a7a..f0552b0 100644 --- a/src/MediaBrowser.Frontend/src/app/meta/meta.html +++ b/src/MediaBrowser.Frontend/src/app/meta/meta.html @@ -13,7 +13,7 @@

{{ type }}

diff --git a/src/MediaBrowser.Frontend/src/app/search/search-content.ts b/src/MediaBrowser.Frontend/src/app/search/search-content.ts index b2d7157..dee0d5c 100644 --- a/src/MediaBrowser.Frontend/src/app/search/search-content.ts +++ b/src/MediaBrowser.Frontend/src/app/search/search-content.ts @@ -28,7 +28,7 @@ export class SearchContentComponent { getTooltip(result: MediaReadModel): string { let tooltip = result.title; - if (result.duration) { + if (result.duration && !result.mime.startsWith('image/')) { tooltip += `\nDuration: ${ReadonlyInfoSectionComponent.formatDuration(result.duration)}`; } diff --git a/src/MediaBrowser.Tests/MediaBrowserWebApplicationFactory.cs b/src/MediaBrowser.Tests/MediaBrowserWebApplicationFactory.cs index e326952..78dedd7 100644 --- a/src/MediaBrowser.Tests/MediaBrowserWebApplicationFactory.cs +++ b/src/MediaBrowser.Tests/MediaBrowserWebApplicationFactory.cs @@ -94,6 +94,7 @@ public MediaBrowserWebApplicationFactory(DbType dbType = DbType.Sqlite, TimeSpan public DbConnection? Connection { get; private set; } public DbType DbType { get; } public List ConfigurationFiles { get; } + public const string Version = "v1"; public string CastDirectory { get; } public string DirectorsDirectory { get; } public string GenresDirectory { get; } @@ -121,7 +122,7 @@ public async Task StartServerAsync() StartServer(); await Installer.OnStartup(Services, CancellationTokenSource.Token); } - protected override IHostBuilder CreateHostBuilder() => Installer.CreateHostBuilder([], ConfigurationFiles, Connection); + protected override IHostBuilder CreateHostBuilder() => Installer.CreateHostBuilder([], ConfigurationFiles, Version, Connection); public string GetJwtForTestUser(UserReadModel? user = null) { diff --git a/src/MediaBrowser.Tests/SwaggerTest.cs b/src/MediaBrowser.Tests/SwaggerTest.cs index 0e230f4..95a9278 100644 --- a/src/MediaBrowser.Tests/SwaggerTest.cs +++ b/src/MediaBrowser.Tests/SwaggerTest.cs @@ -14,7 +14,7 @@ public async Task Test() using var swaggerPage = await client.GetAsync("/swagger"); swaggerPage.EnsureSuccessStatusCode(); - using var swaggerJsonFile = await client.GetAsync($"/swagger/{Installer.Version}/swagger.json"); + using var swaggerJsonFile = await client.GetAsync($"/swagger/{MediaBrowserWebApplicationFactory.Version}/swagger.json"); swaggerJsonFile.EnsureSuccessStatusCode(); } } \ No newline at end of file diff --git a/src/MediaBrowser/Installer.cs b/src/MediaBrowser/Installer.cs index 1a17673..d951f1a 100644 --- a/src/MediaBrowser/Installer.cs +++ b/src/MediaBrowser/Installer.cs @@ -2,10 +2,8 @@ namespace MediaBrowser; public class Installer { - public const string Version = "v1"; - public const string CliArgsKey = "CliArgs", TestConfigsKey = "TestConfigs"; - public static IHostBuilder CreateHostBuilder(string[] args, IReadOnlyList configs, DbConnection? connection = null) + public static IHostBuilder CreateHostBuilder(string[] args, IReadOnlyList configs, string version, DbConnection? connection = null) { var builder = Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration(configurationBuilder => @@ -14,12 +12,12 @@ public static IHostBuilder CreateHostBuilder(string[] args, IReadOnlyList ConfigureServices(services, version)) .ConfigureServices((context, services) => MediaInstaller.ConfigureServices(context, services, connection)) .ConfigureServices(ImportInstaller.ConfigureServices) .ConfigureServices(UserInstaller.ConfigureServices) - .ConfigureWebHostDefaults(webBuilder => webBuilder.Configure(ConfigureApp)); + .ConfigureWebHostDefaults(webBuilder => webBuilder.Configure(app => ConfigureApp(app, version))); return builder; } @@ -41,7 +39,7 @@ public static void ConfigureSettings(IConfigurationBuilder configurationBuilder) } } - static void ConfigureServices(HostBuilderContext context, IServiceCollection services) + static void ConfigureServices(IServiceCollection services, string version) { // Add services to the container services.AddControllers() @@ -52,14 +50,14 @@ static void ConfigureServices(HostBuilderContext context, IServiceCollection ser services.Configure(options => options.Filters.Add(new ValidationStatus417Filter())); // Add Swagger services - services.AddSwaggerGen(options => options.SwaggerDoc(Version, new() + services.AddSwaggerGen(options => options.SwaggerDoc(version, new() { Title = "MediaBrowser API", - Version = Version + Version = version })); } - static void ConfigureApp(IApplicationBuilder app) + static void ConfigureApp(IApplicationBuilder app, string version) { // Configure the HTTP request pipeline app.UseDefaultFiles() @@ -70,7 +68,7 @@ static void ConfigureApp(IApplicationBuilder app) app.UseSwagger(); app.UseSwaggerUI(c => { - c.SwaggerEndpoint($"/swagger/{Version}/swagger.json", $"MediaBrowser API {Version}"); + c.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"MediaBrowser API {version}"); c.RoutePrefix = "swagger"; }); diff --git a/src/MediaBrowser/Program.cs b/src/MediaBrowser/Program.cs index ca7c5f4..5e72f0e 100644 --- a/src/MediaBrowser/Program.cs +++ b/src/MediaBrowser/Program.cs @@ -7,7 +7,7 @@ public static class Program { public async static Task Main(string[] args) { - var builder = CreateHostBuilder(args, []); + var builder = CreateHostBuilder(args, [], typeof(Program).Assembly.GetName().Version!.ToString()); using var app = builder.Build(); var cancellationToken = app.Services.GetRequiredService().ApplicationStopped;