Browse Source

allow uploading large watermarks (#2151)

pull/2152/head
Jason Dove 1 year ago committed by GitHub
parent
commit
b85571b159
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      CHANGELOG.md
  2. 4
      ErsatzTV.Core/FileSystemLayout.cs
  3. 48
      ErsatzTV.Core/SystemEnvironment.cs
  4. 3
      ErsatzTV.Infrastructure/Plex/PlexTvApiClient.cs
  5. 10
      ErsatzTV/Pages/WatermarkEditor.razor
  6. 17
      ErsatzTV/Program.cs
  7. 4
      ErsatzTV/Services/RunOnce/EndpointValidatorService.cs
  8. 2
      ErsatzTV/Startup.cs

2
CHANGELOG.md

@ -81,6 +81,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- `num`: the mid-roll point number, starting with 1 - `num`: the mid-roll point number, starting with 1
- Add `Disable Watermarks` checkbox to block items - Add `Disable Watermarks` checkbox to block items
- Block items that have this checked will never display a watermark, even with Deco set to override watermark - Block items that have this checked will never display a watermark, even with Deco set to override watermark
- Add `ETV_MAXIMUM_UPLOAD_MB` environment variable to allow uploading large watermarks
- Default value is 10
### Changed ### Changed
- Allow `Other Video` libraries and `Image` libraries to use the same folders - Allow `Other Video` libraries and `Image` libraries to use the same folders

4
ErsatzTV.Core/FileSystemLayout.cs

@ -75,7 +75,7 @@ public static class FileSystemLayout
Environment.SpecialFolderOption.DoNotVerify), Environment.SpecialFolderOption.DoNotVerify),
"ersatztv"); "ersatztv");
string customConfigFolder = Environment.GetEnvironmentVariable("ETV_CONFIG_FOLDER"); string customConfigFolder = SystemEnvironment.ConfigFolder;
bool useCustomConfigFolder = !string.IsNullOrWhiteSpace(customConfigFolder); bool useCustomConfigFolder = !string.IsNullOrWhiteSpace(customConfigFolder);
if (useCustomConfigFolder && isDocker) if (useCustomConfigFolder && isDocker)
@ -101,7 +101,7 @@ public static class FileSystemLayout
Environment.SpecialFolderOption.DoNotVerify), Environment.SpecialFolderOption.DoNotVerify),
"etv-transcode"); "etv-transcode");
string customTranscodeFolder = Environment.GetEnvironmentVariable("ETV_TRANSCODE_FOLDER"); string customTranscodeFolder = SystemEnvironment.TranscodeFolder;
bool useCustomTranscodeFolder = !string.IsNullOrWhiteSpace(customTranscodeFolder); bool useCustomTranscodeFolder = !string.IsNullOrWhiteSpace(customTranscodeFolder);
if (useCustomTranscodeFolder && isDocker) if (useCustomTranscodeFolder && isDocker)

48
ErsatzTV.Core/SystemEnvironment.cs

@ -0,0 +1,48 @@
namespace ErsatzTV.Core;
public class SystemEnvironment
{
static SystemEnvironment()
{
BaseUrl = Environment.GetEnvironmentVariable("ETV_BASE_URL");
ConfigFolder = Environment.GetEnvironmentVariable("ETV_CONFIG_FOLDER");
TranscodeFolder = Environment.GetEnvironmentVariable("ETV_TRANSCODE_FOLDER");
string uiPortVariable = Environment.GetEnvironmentVariable("ETV_UI_PORT");
if (!int.TryParse(uiPortVariable, out int uiPort))
{
uiPort = 8409;
}
UiPort = uiPort;
string streamingPortVariable = Environment.GetEnvironmentVariable("ETV_STREAMING_PORT");
if (!int.TryParse(streamingPortVariable, out int streamingPort))
{
streamingPort = 8409;
}
StreamingPort = streamingPort;
AllowSharedPlexServers =
!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("ETV_ALLOW_SHARED_PLEX_SERVERS"));
string maximumUploadMbVariable = Environment.GetEnvironmentVariable("ETV_MAXIMUM_UPLOAD_MB");
if (!int.TryParse(maximumUploadMbVariable, out int maximumUploadMb))
{
maximumUploadMb = 10;
}
MaximumUploadMb = maximumUploadMb;
}
public static string BaseUrl { get; }
public static string ConfigFolder { get; }
public static string TranscodeFolder { get; }
public static int UiPort { get; }
public static int StreamingPort { get; }
public static bool AllowSharedPlexServers { get; }
public static int MaximumUploadMb { get; }
}

3
ErsatzTV.Infrastructure/Plex/PlexTvApiClient.cs

@ -48,8 +48,7 @@ public class PlexTvApiClient : IPlexTvApiClient
IEnumerable<PlexResource> ownedServers = allServers; IEnumerable<PlexResource> ownedServers = allServers;
string allowSharedServers = Environment.GetEnvironmentVariable("ETV_ALLOW_SHARED_PLEX_SERVERS"); if (!SystemEnvironment.AllowSharedPlexServers)
if (string.IsNullOrWhiteSpace(allowSharedServers))
{ {
ownedServers = ownedServers.Filter(r => r.Owned); ownedServers = ownedServers.Filter(r => r.Owned);
} }

10
ErsatzTV/Pages/WatermarkEditor.razor

@ -67,7 +67,9 @@
</div> </div>
@if (!string.IsNullOrWhiteSpace(_model.Image?.Path) && _model.ImageSource == ChannelWatermarkImageSource.Custom) @if (!string.IsNullOrWhiteSpace(_model.Image?.Path) && _model.ImageSource == ChannelWatermarkImageSource.Custom)
{ {
<MudElement HtmlTag="img" src="@($"artwork/watermarks/{_model.Image.UrlWithContentType}")" Style="max-height: 50px"/> <div class="d-flex" style="max-height: 50px">
<MudElement HtmlTag="img" src="@($"artwork/watermarks/{_model.Image.UrlWithContentType}")" />
</div>
} }
</MudStack> </MudStack>
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5"> <MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
@ -250,7 +252,7 @@
try try
{ {
Either<BaseError, string> maybeCacheFileName = await Mediator.Send( Either<BaseError, string> maybeCacheFileName = await Mediator.Send(
new SaveArtworkToDisk(e.File.OpenReadStream(10 * 1024 * 1024), ArtworkKind.Watermark, e.File.ContentType), new SaveArtworkToDisk(e.File.OpenReadStream(SystemEnvironment.MaximumUploadMb * 1024 * 1024), ArtworkKind.Watermark, e.File.ContentType),
_cts.Token); _cts.Token);
maybeCacheFileName.Match( maybeCacheFileName.Match(
relativeFileName => relativeFileName =>
@ -266,8 +268,8 @@
} }
catch (IOException) catch (IOException)
{ {
Snackbar.Add("Watermark exceeds maximum allowed file size of 10 MB", Severity.Error); Snackbar.Add($"Watermark exceeds maximum allowed file size of {SystemEnvironment.MaximumUploadMb} MB", Severity.Error);
Logger.LogError("Watermark exceeds maximum allowed file size of 10 MB"); Logger.LogError("Watermark exceeds maximum allowed file size of {MaximumUploadMb} MB", SystemEnvironment.MaximumUploadMb);
} }
catch (Exception ex) catch (Exception ex)
{ {

17
ErsatzTV/Program.cs

@ -134,21 +134,8 @@ public class Program
private static IHostBuilder CreateHostBuilder(string[] args) private static IHostBuilder CreateHostBuilder(string[] args)
{ {
string uiPortVariable = Environment.GetEnvironmentVariable("ETV_UI_PORT"); Settings.UiPort = SystemEnvironment.UiPort;
if (!int.TryParse(uiPortVariable, out int uiPort)) Settings.StreamingPort = SystemEnvironment.StreamingPort;
{
uiPort = 8409;
}
Settings.UiPort = uiPort;
string streamingPortVariable = Environment.GetEnvironmentVariable("ETV_STREAMING_PORT");
if (!int.TryParse(streamingPortVariable, out int streamingPort))
{
streamingPort = 8409;
}
Settings.StreamingPort = streamingPort;
return Host.CreateDefaultBuilder(args) return Host.CreateDefaultBuilder(args)
.ConfigureServices(services => services.AddSingleton(LoggingLevelSwitches)) .ConfigureServices(services => services.AddSingleton(LoggingLevelSwitches))

4
ErsatzTV/Services/RunOnce/EndpointValidatorService.cs

@ -17,12 +17,10 @@ public class EndpointValidatorService : BackgroundService
{ {
await Task.Yield(); await Task.Yield();
string baseUrl = Environment.GetEnvironmentVariable("ETV_BASE_URL");
_logger.LogInformation( _logger.LogInformation(
"Server will listen on streaming port {StreamingPort}, UI port {UiPort} - try UI at {UI}", "Server will listen on streaming port {StreamingPort}, UI port {UiPort} - try UI at {UI}",
Settings.StreamingPort, Settings.StreamingPort,
Settings.UiPort, Settings.UiPort,
$"http://localhost:{Settings.UiPort}{baseUrl}"); $"http://localhost:{Settings.UiPort}{SystemEnvironment.BaseUrl}");
} }
} }

2
ErsatzTV/Startup.cs

@ -451,7 +451,7 @@ public class Startup
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{ {
string baseUrl = Environment.GetEnvironmentVariable("ETV_BASE_URL"); string baseUrl = SystemEnvironment.BaseUrl;
if (!string.IsNullOrWhiteSpace(baseUrl)) if (!string.IsNullOrWhiteSpace(baseUrl))
{ {
try try

Loading…
Cancel
Save