fix Analyse
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user