|
|
|
@ -93,16 +93,17 @@ public class Midjourney {
|
|
|
|
|
|
|
|
|
|
JSONObject responseJson = JSON.parseObject(responseBody);
|
|
|
|
|
|
|
|
|
|
// 检查响应状态
|
|
|
|
|
if (responseJson.getIntValue("code") != 0) {
|
|
|
|
|
// 检查响应状态 - 修改判断条件,code=1 表示成功
|
|
|
|
|
if (responseJson.getIntValue("code") != 1) {
|
|
|
|
|
System.out.println(responseJson);
|
|
|
|
|
String errorMsg = "Midjourney imagine失败: " + responseJson.getString("msg");
|
|
|
|
|
String errorMsg = "Midjourney imagine失败: " +
|
|
|
|
|
(responseJson.containsKey("description") ? responseJson.getString("description") : "未知错误");
|
|
|
|
|
log.error(errorMsg);
|
|
|
|
|
throw new Exception(errorMsg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取任务ID
|
|
|
|
|
String taskId = responseJson.getJSONObject("data").getString("task_id");
|
|
|
|
|
// 获取任务ID - 从result字段获取
|
|
|
|
|
String taskId = responseJson.getString("result");
|
|
|
|
|
log.info("Midjourney imagine任务ID: {}", taskId);
|
|
|
|
|
|
|
|
|
|
return taskId;
|
|
|
|
@ -125,7 +126,7 @@ public class Midjourney {
|
|
|
|
|
|
|
|
|
|
// 创建请求
|
|
|
|
|
Request request = new Request.Builder()
|
|
|
|
|
.url(BASE_URL + "/mj/task/fetch/" + taskId)
|
|
|
|
|
.url(BASE_URL + "/mj/task/" + taskId + "/fetch")
|
|
|
|
|
.method("GET", null)
|
|
|
|
|
.addHeader("Authorization", "Bearer " + API_KEY)
|
|
|
|
|
.build();
|
|
|
|
@ -163,26 +164,39 @@ public class Midjourney {
|
|
|
|
|
|
|
|
|
|
while (retryCount < maxRetries) {
|
|
|
|
|
JSONObject result = queryTaskStatus(taskId);
|
|
|
|
|
JSONObject data = result.getJSONObject("data");
|
|
|
|
|
|
|
|
|
|
if (data == null) {
|
|
|
|
|
log.error("查询任务状态失败: {}", result.getString("msg"));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String status = data.getString("status");
|
|
|
|
|
// 直接使用响应中的字段,不再尝试获取data字段
|
|
|
|
|
String status = result.getString("status");
|
|
|
|
|
log.info("任务状态: {}", status);
|
|
|
|
|
|
|
|
|
|
// 检查进度
|
|
|
|
|
String progress = result.getString("progress");
|
|
|
|
|
log.info("任务进度: {}", progress);
|
|
|
|
|
|
|
|
|
|
// 任务状态可能为空字符串,需要检查progress或其他字段来判断任务是否完成
|
|
|
|
|
if (status != null && !status.isEmpty()) {
|
|
|
|
|
if ("SUCCESS".equals(status)) {
|
|
|
|
|
// 任务成功,获取图片URL
|
|
|
|
|
String imageUrl = data.getString("imageUrl");
|
|
|
|
|
String imageUrl = result.getString("imageUrl");
|
|
|
|
|
log.info("生成的图片URL: {}", imageUrl);
|
|
|
|
|
break;
|
|
|
|
|
} else if ("FAILED".equals(status)) {
|
|
|
|
|
// 任务失败
|
|
|
|
|
log.error("任务失败: {}", data.getString("failReason"));
|
|
|
|
|
log.error("任务失败: {}", result.getString("failReason"));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 检查description字段
|
|
|
|
|
String description = result.getString("description");
|
|
|
|
|
if (description != null && description.contains("成功") && !"0%".equals(progress)) {
|
|
|
|
|
// 如果描述包含"成功"且进度不为0%,可能任务已完成
|
|
|
|
|
String imageUrl = result.getString("imageUrl");
|
|
|
|
|
if (imageUrl != null && !imageUrl.isEmpty()) {
|
|
|
|
|
log.info("生成的图片URL: {}", imageUrl);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 任务仍在进行中,等待后重试
|
|
|
|
|
log.info("任务进行中,等待{}毫秒后重试...", retryInterval);
|
|
|
|
|
Thread.sleep(retryInterval);
|
|
|
|
|