diff --git a/.gitignore b/.gitignore
index 8a30d25..5112f75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -396,3 +396,4 @@ FodyWeavers.xsd
# JetBrains Rider
*.sln.iml
+KIKunstKirstenKlöckner/wwwroot/generated_images/*
diff --git a/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj b/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj
index 77beb84..03f043e 100644
--- a/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj
+++ b/KIKunstKirstenKlöckner/KIKunstKirstenKlöckner.csproj
@@ -17,6 +17,7 @@
+
diff --git a/KIKunstKirstenKlöckner/Pages/AiArt.razor b/KIKunstKirstenKlöckner/Pages/AiArt.razor
index c2767d9..688b363 100644
--- a/KIKunstKirstenKlöckner/Pages/AiArt.razor
+++ b/KIKunstKirstenKlöckner/Pages/AiArt.razor
@@ -1,6 +1,5 @@
@page "/aiart"
@using OpenAI_API
-@using Microsoft.AspNetCore.Components.Web
@using OpenAI_API.Chat
@using OpenAI_API.Models
@using System.Diagnostics
@@ -8,8 +7,6 @@
@inject TooltipService TooltipService
@inject DialogService DialogService
-@inject IJSRuntime JSRuntime;
-
AiArt
Wunschbilder von KI nur für dich
@@ -170,11 +167,83 @@
BusyMessage = newMessage;
await InvokeAsync(StateHasChanged);
}
-
- public async Task GenerateImage()
+
+ private readonly HttpClient _client = new();
+
+ protected override Task OnInitializedAsync()
{
- //await JSRuntime.InvokeVoidAsync("DoSexyStuffBridge", _imagePrompt);
- _imageUrl = await JSRuntime.InvokeAsync("DoSexyStuffBridge", _imagePrompt);
+ var inferenceModelUrl = "https://api-inference.huggingface.co/models/Nacken/ki-kunst-kirsten-kloeckner-colab";
+
+ // TODO: nicht im repo speichern
+ var API_TOKEN = "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";
+
+ //_client.BaseAddress = new Uri(inferenceModelUrl);
+
+ _client.DefaultRequestHeaders.Clear();
+ _client.DefaultRequestHeaders.Add("Authorization", $"Bearer {API_TOKEN}");
+
+ return base.OnInitializedAsync();
+ }
+
+ ///
+ /// Geneiert das Bild für den aktuellen
+ ///
+ public async Task GenerateImageAsync()
+ {
+ var postData = new
+ {
+ inputs = _imagePrompt
+ };
+
+ JsonContent content = JsonContent.Create(postData);
+
+ async Task FailedToDrawImage()
+ {
+ bool? retry = await DialogService.Confirm("Leider konnte das Bild nicht gemalt werden. Möchtest du es noch eimal versuchen?", "Ups, ein Fehler ist aufgetreten...",
+ new ConfirmOptions { OkButtonText = "Ja", CancelButtonText = "Nein" });
+
+ if (retry == true)
+ await GenerateImageAsync();
+ }
+
+ try
+ {
+ var inferenceModelUrl = "https://api-inference.huggingface.co/models/Nacken/ki-kunst-kirsten-kloeckner-colab";
+
+ var response = await _client.PostAsync(inferenceModelUrl, content);
+
+ if (response?.IsSuccessStatusCode == true)
+ {
+ await using Stream imageStream = await response.Content.ReadAsStreamAsync();
+
+ using Image image = await Image.LoadAsync(imageStream);
+
+ string imgUrl = $"generated_images/{DateTime.Now:dd_MM_yyyy_hh_mm_s}.jpg";
+
+ string mapPath = $"./wwwroot/{imgUrl}";
+ await image.SaveAsJpegAsync(mapPath);
+
+ _imageUrl = imgUrl;
+ }
+ else
+ {
+ Console.WriteLine($"Image conversion failed: {response}");
+
+ if (Debugger.IsAttached)
+ Debugger.Break();
+
+ await FailedToDrawImage();
+ }
+ }
+ catch (Exception exception)
+ {
+ Console.WriteLine($"Image request failed: {exception}");
+
+ if (Debugger.IsAttached)
+ Debugger.Break();
+
+ await FailedToDrawImage();
+ }
}
private async Task DoStuff()
@@ -215,7 +284,7 @@
await UpdateBusyMessage("Kirstens Assistent hat eine Idee! Er wird sie nun malen...");
- Task makeImagesTask = GenerateImage();
+ Task makeImagesTask = GenerateImageAsync();
//CancellationTokenSource cancelFunnyMessages = new CancellationTokenSource();
diff --git a/KIKunstKirstenKlöckner/Pages/_Host.cshtml b/KIKunstKirstenKlöckner/Pages/_Host.cshtml
index 5d2e5de..edfc3d1 100644
--- a/KIKunstKirstenKlöckner/Pages/_Host.cshtml
+++ b/KIKunstKirstenKlöckner/Pages/_Host.cshtml
@@ -34,25 +34,5 @@
-
-
-
-
-