// 从配置文件导入设置 // 配置在 env.js 文件中定义 // DOM 元素 const textInput = document.getElementById('text-input'); const styleSelect = document.getElementById('style-select'); const generateBtn = document.getElementById('generateBtn'); const loadingDiv = document.getElementById('loading'); const expressionsContainer = document.getElementById('expressions'); // 调用后端API async function callBackendAPI(text, style) { try { const response = await fetch('http://127.0.0.1:5002/api/aimodelapp/expression-maker', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ text: text, style: style }) }); if (!response.ok) { const errorData = await response.json(); throw new Error(errorData.error || `API请求失败: ${response.status} ${response.statusText}`); } const data = await response.json(); if (data.success) { return data.expressions; } else { throw new Error(data.error || 'API响应格式异常'); } } catch (error) { console.error('API调用错误:', error); throw error; } } // 解析AI响应 function parseAIResponse(response) { try { // 尝试直接解析JSON const parsed = JSON.parse(response); return parsed.expressions || {}; } catch (error) { // 如果直接解析失败,尝试提取JSON部分 const jsonMatch = response.match(/\{[\s\S]*\}/); if (jsonMatch) { try { const parsed = JSON.parse(jsonMatch[0]); return parsed.expressions || {}; } catch (e) { console.error('JSON解析失败:', e); } } // 如果JSON解析失败,返回空对象 console.error('无法解析AI响应:', response); return {}; } } // 显示表情建议 function displayExpressions(expressions) { expressionsContainer.innerHTML = ''; if (!expressions || Object.keys(expressions).length === 0) { expressionsContainer.innerHTML = '