|
|
|
@ -112,11 +112,11 @@ public class SunoMusicGenerator {
|
|
|
|
|
Thread.sleep(RETRY_INTERVAL);
|
|
|
|
|
|
|
|
|
|
// 构建查询URL,添加ids参数
|
|
|
|
|
HttpUrl.Builder urlBuilder = HttpUrl.parse(FEED_URL).newBuilder();
|
|
|
|
|
|
|
|
|
|
// 注意:不使用HttpUrl.Builder,直接构建URL字符串以避免自动URL编码
|
|
|
|
|
StringBuilder urlBuilder = new StringBuilder(FEED_URL);
|
|
|
|
|
|
|
|
|
|
// 添加ids参数,用逗号分隔多个ID
|
|
|
|
|
if (!taskIds.isEmpty()) {
|
|
|
|
|
// 注意:这里我们查询的是clips的ID,而不是生成任务的ID
|
|
|
|
|
// 从生成响应中获取clips的ID
|
|
|
|
|
List<String> clipIds = new ArrayList<>();
|
|
|
|
|
if (generateJson.containsKey("clips")) {
|
|
|
|
@ -129,28 +129,34 @@ public class SunoMusicGenerator {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 构建查询参数
|
|
|
|
|
urlBuilder.append("?");
|
|
|
|
|
|
|
|
|
|
// 如果找到了clips的ID,则使用这些ID进行查询
|
|
|
|
|
if (!clipIds.isEmpty()) {
|
|
|
|
|
String idsParam = String.join(",", clipIds);
|
|
|
|
|
urlBuilder.addQueryParameter("ids", idsParam);
|
|
|
|
|
urlBuilder.append("ids=").append(idsParam);
|
|
|
|
|
log.info("使用clips ID查询: {}", idsParam);
|
|
|
|
|
} else {
|
|
|
|
|
// 否则使用任务ID
|
|
|
|
|
String idsParam = String.join(",", taskIds);
|
|
|
|
|
urlBuilder.addQueryParameter("ids", idsParam);
|
|
|
|
|
urlBuilder.append("ids=").append(idsParam);
|
|
|
|
|
log.info("使用任务ID查询: {}", idsParam);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String url = urlBuilder.toString();
|
|
|
|
|
log.info("查询URL: {}", url);
|
|
|
|
|
|
|
|
|
|
// 创建查询请求
|
|
|
|
|
Request feedRequest = new Request.Builder()
|
|
|
|
|
.url(urlBuilder.build())
|
|
|
|
|
.url(url)
|
|
|
|
|
.method("GET", null)
|
|
|
|
|
.addHeader("Authorization", "Bearer " + ak)
|
|
|
|
|
.addHeader("Accept", "application/json") // 添加Accept头
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
log.info("查询URL: {}", urlBuilder.build());
|
|
|
|
|
log.info("查询URL: {}", url);
|
|
|
|
|
|
|
|
|
|
// 执行查询请求
|
|
|
|
|
Response feedResponse = client.newCall(feedRequest).execute();
|
|
|
|
|