fix Analyse

This commit is contained in:
nadja
2026-08-26 18:29:39 +02:00
parent 797279f641
commit e60da3daf6
9 changed files with 18 additions and 127 deletions

View File

@@ -4,7 +4,6 @@ import {
updateRecipe, deleteRecipe, getCategories, getDb
} from '../db.js';
import { getTikTokData } from '../services/tiktok.js';
import { getInstagramData } from '../services/instagram.js';
import { isOllamaAvailable, extractRecipe } from '../services/ai.js';
import { trackEvent } from '../analytics-db.js';
@@ -111,43 +110,4 @@ router.post('/from-tiktok', async (req, res) => {
}
});
router.post('/from-instagram', async (req, res) => {
try {
const { url } = req.body;
if (!url) return res.status(400).json({ error: 'URL erforderlich' });
const instagramData = await getInstagramData(url);
const ollamaAvailable = await isOllamaAvailable();
let extracted = null;
let aiStatus = ollamaAvailable ? 'available' : 'unavailable';
let aiMessage = '';
if (ollamaAvailable && instagramData.title) {
try {
extracted = await extractRecipe(instagramData.title);
aiStatus = 'success';
} catch (e) {
console.error('Ollama Extraktion fehlgeschlagen:', e.message);
aiStatus = 'error';
aiMessage = e.message;
}
} else if (!ollamaAvailable) {
aiMessage = 'Ollama-Server nicht erreichbar';
} else if (!instagramData.title) {
aiMessage = 'Kein Titel im Video gefunden';
}
res.json({
instagram: instagramData,
ollama: ollamaAvailable,
aiStatus,
aiMessage,
extracted,
});
} catch (error) {
res.status(500).json({ error: error.message });
}
});
export default router;

View File

@@ -1,39 +0,0 @@
const INSTAGRAM_TOKEN = process.env.INSTAGRAM_TOKEN;
export async function getInstagramData(url) {
const reelMatch = url.match(/instagram\.com\/(?:p|reel)\/([A-Za-z0-9_-]+)/);
const usernameMatch = url.match(/instagram\.com\/([^/]+)\//);
if (INSTAGRAM_TOKEN) {
try {
const oembedUrl = `https://graph.facebook.com/v18.0/instagram_oembed?url=${encodeURIComponent(url)}&fields=author_name,thumbnail_url,title,html&access_token=${INSTAGRAM_TOKEN}`;
const response = await fetch(oembedUrl);
if (response.ok) {
const data = await response.json();
return {
title: data.title || '',
author: data.author_name || '',
authorUrl: `https://www.instagram.com/${data.author_name || ''}`,
thumbnail: data.thumbnail_url || '',
embedHtml: data.html || '',
reelId: reelMatch ? reelMatch[1] : null,
};
}
} catch (e) {
console.error('Instagram oEmbed Fehler:', e.message);
}
}
return {
title: '',
author: usernameMatch ? usernameMatch[1] : '',
authorUrl: usernameMatch ? `https://www.instagram.com/${usernameMatch[1]}` : '',
thumbnail: '',
embedHtml: '',
reelId: reelMatch ? reelMatch[1] : null,
};
}
export function isInstagramUrl(url) {
return /instagram\.com\/(p|reel)\//.test(url);
}