* use blurred cover art as song background * use channel watermark when cover art is unavailable * add drawtext to song filter * cleanup * force song cover art as png * fix songs on windows and qsv
41 lines
1.5 KiB
C#
41 lines
1.5 KiB
C#
using System.IO;
|
|
using System.Reflection;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using ErsatzTV.Core;
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
namespace ErsatzTV.Services.RunOnce
|
|
{
|
|
public class ResourceExtractorService : IHostedService
|
|
{
|
|
public async Task StartAsync(CancellationToken cancellationToken)
|
|
{
|
|
if (!Directory.Exists(FileSystemLayout.ResourcesCacheFolder))
|
|
{
|
|
Directory.CreateDirectory(FileSystemLayout.ResourcesCacheFolder);
|
|
}
|
|
|
|
Assembly assembly = typeof(ResourceExtractorService).GetTypeInfo().Assembly;
|
|
|
|
await ExtractResource(assembly, "background.png", cancellationToken);
|
|
await ExtractResource(assembly, "ErsatzTV.png", cancellationToken);
|
|
await ExtractResource(assembly, "Roboto-Regular.ttf", cancellationToken);
|
|
await ExtractResource(assembly, "OPTIKabel-Heavy.otf", cancellationToken);
|
|
}
|
|
|
|
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
|
|
|
|
private async Task ExtractResource(Assembly assembly, string name, CancellationToken cancellationToken)
|
|
{
|
|
await using Stream resource = assembly.GetManifestResourceStream($"ErsatzTV.Resources.{name}");
|
|
if (resource != null)
|
|
{
|
|
await using FileStream fs = File.Create(
|
|
Path.Combine(FileSystemLayout.ResourcesCacheFolder, name));
|
|
await resource.CopyToAsync(fs, cancellationToken);
|
|
}
|
|
}
|
|
}
|
|
}
|