{"id":2264,"date":"2025-09-10T19:47:52","date_gmt":"2025-09-10T19:47:52","guid":{"rendered":"https:\/\/ojoaosanti.com\/saude\/?page_id=2264"},"modified":"2025-09-10T19:48:45","modified_gmt":"2025-09-10T19:48:45","slug":"nutri-li-simulador-de-calorias-por-foto","status":"publish","type":"page","link":"https:\/\/ojoaosanti.com\/saude\/en\/nutri-li-simulador-de-calorias-por-foto\/","title":{"rendered":"Nutri Li \u2013 Simulador de Calorias por Foto\u00a0"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"2264\" class=\"elementor elementor-2264\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-26a5cb6 e-flex e-con-boxed e-con e-parent\" data-id=\"26a5cb6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bbd7913 elementor-widget__width-initial elementor-widget-mobile__width-inherit titulo-gradient elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"bbd7913\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">How many calories are in this dish?<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d380949 elementor-widget elementor-widget-shortcode\" data-id=\"d380949\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <div id=\"nutrili-calorie\" style=\"max-width:760px;margin:20px auto;padding:16px;border:1px solid #e6e8eb;border-radius:12px;background:#fff;\">\r\n        <div style=\"display:flex;gap:12px;align-items:center;margin-bottom:12px\">\r\n            <div style=\"width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#e6f3fb,#d9eef8);font-size:22px\">\ud83d\udd25<\/div>\r\n            <div>\r\n                <div style=\"font-weight:600\">Simulator: How many calories are in this dish?<\/div>\r\n                <div style=\"font-size:13px;color:#657786\">Send a photo and description of the dish. Li will estimate the total calories and macronutrients.<\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div style=\"margin-bottom:10px\">\r\n            <label style=\"display:block;margin-bottom:6px\">Choose a photo of the dish<\/label>\r\n            <input type=\"file\" id=\"nutrili_calorie_file\" accept=\"image\/*\" \/>\r\n            <div id=\"nutrili_calorie_preview\" style=\"margin-top:8px\"><\/div>\r\n        <\/div>\r\n\r\n        <div style=\"margin-bottom:8px\">\r\n            <label>Describe what's on your plate (required):<\/label>\r\n            <input id=\"nutrili_calorie_context\" placeholder=\"Example: 150g of rice, beans, grilled steak, salad...\" style=\"width:100%;padding:8px;border:1px solid #dfe6ea;border-radius:8px\" \/>\r\n        <\/div>\r\n\r\n        <div style=\"display:flex;gap:8px;align-items:center\">\r\n            <button id=\"nutrili_calorie_send\" style=\"background:#066A98;color:#fff;padding:10px 14px;border-radius:8px;border:0;cursor:pointer\">Send and analyze<\/button>\r\n            <div id=\"nutrili_calorie_status\" style=\"font-size:14px;color:#555\"><\/div>\r\n        <\/div>\r\n\r\n        <div id=\"nutrili_calorie_result\" style=\"margin-top:14px;border-top:1px solid #eee;padding-top:12px;\"><\/div>\r\n\r\n        <div style=\"margin-top:12px;font-size:12px;color:#657786\">\u26a0\ufe0f Approximate estimates. Educational content, not a substitute for professional consultation.<\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n    (function(){\r\n        const fileInput = document.getElementById('nutrili_calorie_file');\r\n        const preview = document.getElementById('nutrili_calorie_preview');\r\n        const sendBtn = document.getElementById('nutrili_calorie_send');\r\n        const status = document.getElementById('nutrili_calorie_status');\r\n        const result = document.getElementById('nutrili_calorie_result');\r\n        const contextInput = document.getElementById('nutrili_calorie_context');\r\n\r\n        let selectedFile = null;\r\n\r\n        fileInput.addEventListener('change', (e) => {\r\n            const f = e.target.files[0];\r\n            if (!f) return;\r\n            if (!f.type.startsWith('image\/')) {\r\n                alert('Envie uma imagem v\u00e1lida.');\r\n                return;\r\n            }\r\n            selectedFile = f;\r\n            const img = document.createElement('img');\r\n            img.style.maxWidth = '320px';\r\n            img.style.maxHeight = '240px';\r\n            img.src = URL.createObjectURL(f);\r\n            preview.innerHTML = '';\r\n            preview.appendChild(img);\r\n        });\r\n\r\n        sendBtn.addEventListener('click', async () => {\r\n            if (!selectedFile) { alert('Escolha uma imagem primeiro.'); return; }\r\n            if (!contextInput.value.trim()) { alert('Por favor, descreva os alimentos do prato.'); return; }\r\n\r\n            sendBtn.disabled = true;\r\n            status.textContent = 'Enviando...';\r\n            result.innerHTML = '';\r\n\r\n            try {\r\n                \/\/ Upload image\r\n                const form = new FormData();\r\n                form.append('action', 'nutrili_calorie_upload');\r\n                form.append('file', selectedFile);\r\n                form.append('nonce', 'bba3438a61');\r\n\r\n                const upRes = await fetch('https:\/\/ojoaosanti.com\/saude\/wp-admin\/admin-ajax.php', { method: 'POST', body: form });\r\n                const upJson = await upRes.json();\r\n                if (!upJson || !upJson.success) {\r\n                    throw new Error(upJson && upJson.error ? upJson.error : 'Falha no upload.');\r\n                }\r\n                const imageUrl = upJson.url;\r\n                status.textContent = 'Imagem enviada. Analisando...';\r\n\r\n                \/\/ Call REST\r\n                const apiRes = await fetch('https:\/\/ojoaosanti.com\/saude\/en\/wp-json\/nutrili\/v1\/calorie', {\r\n                    method: 'POST',\r\n                    headers: { 'Content-Type':'application\/json', 'X-Nutrili-Calorie-Nonce': '1a438ec7a0' },\r\n                    body: JSON.stringify({ image_url: imageUrl, context: contextInput.value })\r\n                });\r\n                const apiJson = await apiRes.json();\r\n                if (!apiJson || !apiJson.success) {\r\n                    result.innerHTML = '<div style=\"color:#c00\">Erro: ' + (apiJson && apiJson.error ? apiJson.error : 'Resposta inv\u00e1lida') + '<\/div>';\r\n                } else {\r\n                    result.innerHTML = '<pre style=\"white-space:pre-wrap;font-family:inherit;\">' + apiJson.reply + '<\/pre>';\r\n                }\r\n            } catch (err) {\r\n                console.error(err);\r\n                result.innerHTML = '<div style=\"color:#c00\">Erro: ' + (err.message || 'Falha inesperada') + '<\/div>';\r\n            } finally {\r\n                sendBtn.disabled = false;\r\n                status.textContent = '';\r\n            }\r\n        });\r\n    })();\r\n    <\/script>\r\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>How many calories are in this dish?<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-2264","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ojoaosanti.com\/saude\/en\/wp-json\/wp\/v2\/pages\/2264","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ojoaosanti.com\/saude\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ojoaosanti.com\/saude\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ojoaosanti.com\/saude\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ojoaosanti.com\/saude\/en\/wp-json\/wp\/v2\/comments?post=2264"}],"version-history":[{"count":7,"href":"https:\/\/ojoaosanti.com\/saude\/en\/wp-json\/wp\/v2\/pages\/2264\/revisions"}],"predecessor-version":[{"id":2271,"href":"https:\/\/ojoaosanti.com\/saude\/en\/wp-json\/wp\/v2\/pages\/2264\/revisions\/2271"}],"wp:attachment":[{"href":"https:\/\/ojoaosanti.com\/saude\/en\/wp-json\/wp\/v2\/media?parent=2264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}