string baseUrl = "https://api-key.fusionbrain.ai/";
string apiKey = "ключ";
string secretKey = "секрет";
using (var client = new HttpClient { BaseAddress = new Uri(baseUrl) })
{
// Установка заголовков запроса
client.DefaultRequestHeaders.Add("X-Key", $"Key {apiKey}");
client.DefaultRequestHeaders.Add("X-Secret", $"Secret {secretKey}");
// Получение списка моделей
var modelResponse = client.GetAsync("key/api/v1/models").Result;
modelResponse.EnsureSuccessStatusCode();
var modelData = JsonConvert.DeserializeObject<List<dynamic>>(modelResponse.Content.ReadAsStringAsync().Result);
string modelId = modelData[0]["id"];
// Вывод ID модели в лог
project.SendInfoToLog("Получен ID модели: " + modelId);
var parameters = new
{
type = "GENERATE",
style = "Detailed photo",
numImages = 1,
negativePromptUnclip = "яркие цвета, кислотность, высокая контрастность",
width = 512,
height = 512,
generateParams = new { query = project.Variables["query"].Value }
};
var generateUrl = "key/api/v1/text2image/run";
var formData = new MultipartFormDataContent();
formData.Add(new StringContent(modelId), "model_id");
formData.Add(new StringContent(JsonConvert.SerializeObject(parameters), Encoding.UTF8, "application/json"), "params");
// Запуск генерации изображения
var generateResponse = client.PostAsync(generateUrl, formData).Result;
generateResponse.EnsureSuccessStatusCode();
var generateData = JsonConvert.DeserializeObject<dynamic>(generateResponse.Content.ReadAsStringAsync().Result);
string requestId = generateData.uuid;
// Вывод UUID операции генерации в лог
project.SendInfoToLog("Генерация изображения начата, UUID: " + requestId, true);
int attempts = 10;
int delay = 10;
// Проверка статуса операции генерации
while (attempts > 0)
{
var checkResponse = client.GetAsync($"key/api/v1/text2image/status/{requestId}").Result;
checkResponse.EnsureSuccessStatusCode();
var checkData = JsonConvert.DeserializeObject<dynamic>(checkResponse.Content.ReadAsStringAsync().Result);
if (checkData.status == "DONE")
{
// Обработка успешной генерации
project.SendInfoToLog("Генерация изображения завершена, обработка изображения...", true);
try
{
var imageBase64 = checkData.images[0].ToString();
project.Variables["image"].Value = imageBase64;
// Вывод в лог о том, что данные изображения сохранены
project.SendInfoToLog("Данные изображения сохранены в переменной 'image'.", true);
}
catch (Exception ex)
{
project.SendInfoToLog("Ошибка обработки изображения: " + ex.Message, true);
}
break;
}
else if (checkData.status == "FAILED")
{
project.SendInfoToLog("Генерация изображения не удалась.", true);
break;
}
attempts--;
Thread.Sleep(delay * 1000);
}
}