Holaraの画像生成APIとGAS連動にチャレンジするも失敗したので運営に相談した話
novelAIよりも、HolaraAIのイラストが好きだ!
const HOLARA_API_KEY = 'secret-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
const GOOGLE_DRIVE_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
const HOLARA_URL = 'https://holara.ai/holara/api/external/1.0/generate_image';
function HOLARA( arg_prompt = '1girl, solo, black hair, red eyes, snowing, long hair, fox ears') {
var data = {
'api_key': HOLARA_API_KEY,
'model': 'Akasha: Anime',
'num_images': 1,
'prompt': arg_prompt,
'negative_prompt': 'bad hands, bad arms',
'width': 512,
'height': 512,
'steps': 28,
'cfg_scale': 12
};
var options = {
'method': 'post',
'payload': data,
'muteHttpExceptions': true
};
var response = UrlFetchApp.fetch(HOLARA_URL, options);
var responseCode = response.getResponseCode();
if (responseCode != 200) {
return [['Error',responseCode + ' ' + response.getContentText()]];
} else {
var jsonResponse = JSON.parse(response.getContentText());
var imageBase64 = jsonResponse['images'][0];
var imageBlob = Utilities.base64Decode(imageBase64);
// Save the image to the specified Google Drive folder
var folder = DriveApp.getFolderById(GOOGLE_DRIVE_ID);
var imageFile = folder.createFile('generated_image.png', imageBlob, MimeType.PNG);
var msg = jsonResponse['status'] + ',' + jsonResponse['execution_time'] + ',' + jsonResponse['generation_cost'] +","+ jsonResponse['hologems_remaining'];
return [['IMAGE("' + imageFile.getUrl() + '")', msg]];
}
}
GASで =HOLARA("1girl, smile, mehyou") と入れたら、女豹のポーズで笑顔の女の子が出る予定だった。ついでに指定したGoogleドライブに保存して使えるようにした。
400 {"error": "invalid width or height"}
ダメみたいですね…… UrlFetchApp.fetchでWidth,Heightの2つを512で渡しているが、コードが200の正常じゃなくて「400のエラー」が返って来た。
Holara(@Holara_AI)さん / Twitter
HolaraのGuideのコードを見返したり、chatGPT4さんに頼ったり、GASマニュアルを読んでみたが結局わからず、DMしてみた。
日本語で対応してくれた。結果としては「送信方法が間違っていて見直して」とのこと。もうちょっと頑張ってみようと思う。
var data = {
'api_key': HOLARA_API_KEY,
'model': 'Akasha: Anime',
'num_images': 1,
'prompt': arg_prompt,
'negative_prompt': 'bad hands, bad arms',
'width': 512,
'height': 512,
'steps': 28,
'cfg_scale': 12
};
var options = {
'method': 'post',
'payload': data,
'muteHttpExceptions': true
};
var response = UrlFetchApp.fetch(HOLARA_URL, options);
var responseCode = response.getResponseCode();
ここの設定のどこかがおかしい! もし分かったITに詳しい方いたらコメントお願いします!
このあたり、勉強するか……