feat: complete implementation using gemini as analyzer

This commit is contained in:
Stevan Freeborn
2025-08-19 12:43:34 -05:00
parent 85304eadd1
commit d470574b99
12 changed files with 135 additions and 143 deletions
+14 -1
View File
@@ -20,6 +20,7 @@ try
await Host.CreateDefaultBuilder(args)
.ConfigureLogging(static l => l.ClearProviders())
.ConfigureHostConfiguration(static config => config.AddJsonFile("appsettings.json"))
.ConfigureServices(static (_, services) =>
{
services.AddHttpClient();
@@ -30,9 +31,21 @@ try
services.AddSingleton<ITranscriber, WhisperTranscriber>();
services.AddSingleton<ITranscriptAnalyzer, GeminiAnalyzer>(sp =>
{
const string modelOptionName = "Model";
const string keyOptionName = "ApiKey";
var config = sp.GetRequiredService<IConfiguration>();
var geminiSection = config.GetSection("Gemini");
var key = geminiSection[keyOptionName];
var model = geminiSection[modelOptionName];
if (string.IsNullOrWhiteSpace(key))
{
throw new InvalidOperationException($"{keyOptionName} is not configured in appsettings.json.");
}
var clientFactory = sp.GetRequiredService<IHttpClientFactory>();
return new GeminiAnalyzer(clientFactory, "");
return new GeminiAnalyzer(clientFactory, key, model);
});
services.AddSingleton<IShortsCreator, ShortsCreator>();
})