📄 src/Cli/Program.cs
using System.Threading;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Slopper.Cli;
using Slopper.Domain;
using Slopper.Infrastructure.Ai;
using Slopper.Infrastructure.Database;
using Slopper.Infrastructure.Ffmpeg;

var builder = Host.CreateApplicationBuilder();

builder.ConfigureOpenTelemetry();

builder.Services.AddClipSelector().AddClipGenerator();

builder.Services.AddJellyfinDatabase().AddSlopperDatabase().AddFfmpegServices().AddAi();

using var app = builder.Build();

await app.StartAsync();

using var scope = app.Services.CreateScope();
var logger = scope.ServiceProvider.GetRequiredService<ILogger<Program>>();
var mediaRepository = scope.ServiceProvider.GetRequiredService<IMediaRepository>();
var media = await mediaRepository.GetRandomMediaItem(CancellationToken.None);
logger.LogInformation("Media: {MediaId}", media.Id);

await app.StopAsync();