From eab8e82674ced3ca698d913d2640668138faa3b1 Mon Sep 17 00:00:00 2001 From: nadja Date: Wed, 26 Aug 2026 15:07:55 +0200 Subject: [PATCH] fix Analyse --- backend/services/instagram.js | 41 +++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 backend/services/instagram.js diff --git a/backend/services/instagram.js b/backend/services/instagram.js new file mode 100644 index 0000000..cb88455 --- /dev/null +++ b/backend/services/instagram.js @@ -0,0 +1,41 @@ +import fetch from 'node-fetch'; + +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); +}