Instagram: Scraper raus, Beitraege einzeln ueber oEmbed aufnehmen

bin/instagram-sync.php lieferte seit dem 03.09.2026 bei jedem Lauf "Keine Posts
ermittelbar". Von einem privaten Anschluss gegengeprueft: feed/user und
web_profile_info antworten mit 401 require_login, das Profil-HTML traegt keine
Beitragsdaten mehr, auch /embed/ liefert nur noch eine App-Huelle. Es lag also
nicht an der Server-IP, und der Scraper ist geloescht, damit ihn niemand
wiederbelebt. Graph API (Meta-Konto noetig) und kommerzielle Dienste wurden
verworfen.

Neu: bin/instagram-add.php. --profil liest die Beitragsliste ueber headless
Chrome aus dem gerenderten Profil-DOM (im HTML stehen die Codes nicht) und holt
zu jedem neuen Beitrag Bild, Caption und Datum ueber Instagrams oEmbed-Endpunkt;
das Datum steckt in der media_id. Daneben einzelne URLs, --liste, --entfernen und
--bild als Notfall. Der Shortcode ist Primaerschluessel und damit die komplette
Dedupe-Logik. Die Struktur von data/instagram.json bleibt exakt gleich, deshalb
war an Startseite, News-Feed und Stadionzeitung nichts zu aendern.

Kein Cron mehr: der Job faellt aus public/cron.php, auf dem Webspace gibt es kein
Chrome. Die Chrome-Suche liegt jetzt gemeinsam in bin/chrome-lib.php, genutzt von
bin/logo-build.php und bin/instagram-add.php.

data/instagram.json ist ab jetzt versioniert. Solange sie ignoriert war, lief sie
gegen die versionierten Bilder auseinander: lokal lagen 10 Bilder zu 9 Eintraegen,
drei Beitraege fehlten im Feed, zwei Eintraege hatten kein Bild. Repariert, jetzt
16 Eintraege zu 16 Bildern. bin/preflight.php prueft das in beide Richtungen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J9mubC8gtpjtJntbhSJBRS
This commit is contained in:
2026-09-17 11:23:12 +02:00
parent 75fce4f680
commit fef80bf669
25 changed files with 753 additions and 357 deletions

150
data/instagram.json Normal file
View File

@@ -0,0 +1,150 @@
{
"fetched_at": 1789636733,
"username": "tsv08kulmbach",
"posts": [
{
"shortcode": "DdROjQqjI1_",
"caption": "Ergebnisse 🔴⚫️",
"alt": "Ergebnisse 🔴⚫️",
"taken_at": 1789391962,
"is_video": false,
"image": "img/instagram/DdROjQqjI1_.jpg",
"url": "https://www.instagram.com/p/DdROjQqjI1_/"
},
{
"shortcode": "DdHvGEDDLIh",
"caption": "🔴⚫️-Programm am Wochenende",
"alt": "🔴⚫️-Programm am Wochenende",
"taken_at": 1789073480,
"is_video": false,
"image": "img/instagram/DdHvGEDDLIh.jpg",
"url": "https://www.instagram.com/p/DdHvGEDDLIh/"
},
{
"shortcode": "DdB5NiwDLiq",
"caption": "Rückblick zum Sportfest im Katzbachtal\n\nDrei Tage voller Sport, Spannung und Teamgeist – unser Sportfest mit Jugendturnieren, Jugendspielen sowie Herren- und Frauen-Punktspielen. ⚽️\n\nVielen Dank an alle Mannschaften, Trainer:innen, Helfer:innen und Fans, die dieses Wochenende zu etwas Besonderem gemacht haben! 🙌 \nOhne euch wäre das nicht möglich gewesen!\n\n🔴⚫️",
"alt": "Rückblick zum Sportfest im Katzbachtal",
"taken_at": 1788877457,
"is_video": false,
"image": "img/instagram/DdB5NiwDLiq.jpg",
"url": "https://www.instagram.com/p/DdB5NiwDLiq/"
},
{
"shortcode": "Dc-41FTDC7u",
"caption": "Heimsiege für unsere Erste und unsere Frauen! 🥳\nLeider keine Punkte für unsere Zweite!\n\n🔴⚫️",
"alt": "Heimsiege für unsere Erste und unsere Frauen! 🥳",
"taken_at": 1788776594,
"is_video": false,
"image": "img/instagram/Dc-41FTDC7u.jpg",
"url": "https://www.instagram.com/p/Dc-41FTDC7u/"
},
{
"shortcode": "Dc0lDcXDEG-",
"caption": "Vorschau aufs Sportfest-Wochenende 🔴⚫️\n\nWir freuen uns auf euer kommen und eure Unterstützung!",
"alt": "Vorschau aufs Sportfest-Wochenende 🔴⚫️",
"taken_at": 1788430681,
"is_video": false,
"image": "img/instagram/Dc0lDcXDEG-.jpg",
"url": "https://www.instagram.com/p/Dc0lDcXDEG-/"
},
{
"shortcode": "DcswzHHMHUs",
"caption": "Verdienter Heimdreier für unsere Erste am vergangenen Samstag 💪🏻\n\nÜberzeugende 1. Halbzeit und eine etwas wilde 2. Halbzeit 🤹🏻‍♂️",
"alt": "Verdienter Heimdreier für unsere Erste am vergangenen Samstag 💪🏻",
"taken_at": 1788168403,
"is_video": false,
"image": "img/instagram/DcswzHHMHUs.jpg",
"url": "https://www.instagram.com/p/DcswzHHMHUs/"
},
{
"shortcode": "DcrER7ODIlF",
"caption": "Sportfest im Katzbachtal!\n\nMittlerweile ist es ein echtes Highlight in unserem Vereinskalender: Das Sportfest im Katzbachtal!⚽🎉\n\n🗓️ 04.09. – 06.09.\n\nVon Freitag bis Sonntagabend erwartet euch ein abwechslungsreiches Programm für Groß und Klein – mit Fußball pur, Unterhaltung und geselligem Beisammensein.\nNatürlich ist auch für das leibliche Wohl bestens gesorgt 🌭🍕🍹🍺\n\nWir freuen uns auf euren Besuch! ❤️🖤",
"alt": "Sportfest im Katzbachtal!",
"taken_at": 1788111508,
"is_video": false,
"image": "img/instagram/DcrER7ODIlF.jpg",
"url": "https://www.instagram.com/p/DcrER7ODIlF/"
},
{
"shortcode": "DcjmUaMMJnD",
"caption": "🔴⚫️\n\nErste Herren\n6. Spieltag\n🗓️ Samstag, 29.8.\n🏟️ Heimspiel gegen Marktschorgast\n🕑 Anstoß: 14 Uhr\n\nZweite Herren \n🗓️Mittwoch, 2.9.\n🏟️ In Melkendorf gegen Thurnau 2\n🕑 Anstoß: 18 Uhr\n\nWir freuen uns auf eure Unterstützung!",
"alt": "🔴⚫️",
"taken_at": 1787860919,
"is_video": false,
"image": "img/instagram/DcjmUaMMJnD.jpg",
"url": "https://www.instagram.com/p/DcjmUaMMJnD/"
},
{
"shortcode": "DcavewWMsVH",
"caption": "Auswärtssieg für unsere Erste! 🙌",
"alt": "Auswärtssieg für unsere Erste! 🙌",
"taken_at": 1787563732,
"is_video": false,
"image": "img/instagram/DcavewWMsVH.jpg",
"url": "https://www.instagram.com/p/DcavewWMsVH/"
},
{
"shortcode": "DcQa-pwshfy",
"caption": "Für unsere Erste gehts auswärts weiter! 💪🏻\n\n🔴⚫️",
"alt": "Für unsere Erste gehts auswärts weiter! 💪🏻",
"taken_at": 1787217439,
"is_video": false,
"image": "img/instagram/DcQa-pwshfy.jpg",
"url": "https://www.instagram.com/p/DcQa-pwshfy/"
},
{
"shortcode": "DcPBlNMjKbP",
"caption": "🔴⚫️ Schnuppertraining im Katzbachtal! \n\n📅 29.08.\n⏰ 10:00–11:00 Uhr\n📍 Katzbachtal\n\nEine Stunde Fußball pur – für alle von der G- bis zur C-Jugend!",
"alt": "🔴⚫️ Schnuppertraining im Katzbachtal!",
"taken_at": 1787170569,
"is_video": false,
"image": "img/instagram/DcPBlNMjKbP.jpg",
"url": "https://www.instagram.com/p/DcPBlNMjKbP/"
},
{
"shortcode": "DcJDDkEMo0d",
"caption": "Leider keine Punkte am vergangenen Spieltag…😤\n\nAbhaken und voller Fokus auf das kommende Auswärtsspiel!",
"alt": "Leider keine Punkte am vergangenen Spieltag…😤",
"taken_at": 1786970016,
"is_video": false,
"image": "img/instagram/DcJDDkEMo0d.jpg",
"url": "https://www.instagram.com/p/DcJDDkEMo0d/"
},
{
"shortcode": "Db-XCrOsd4q",
"caption": "Heimspiel! - bei gewohnten Temperaturen 🔥",
"alt": "Heimspiel! - bei gewohnten Temperaturen 🔥",
"taken_at": 1786611395,
"is_video": false,
"image": "img/instagram/Db-XCrOsd4q.jpg",
"url": "https://www.instagram.com/p/Db-XCrOsd4q/"
},
{
"shortcode": "Db2ya5TDMLC",
"caption": "Unsere Ergebnisse vom Wochenende 🔴⚫️",
"alt": "Unsere Ergebnisse vom Wochenende 🔴⚫️",
"taken_at": 1786357314,
"is_video": false,
"image": "img/instagram/Db2ya5TDMLC.jpg",
"url": "https://www.instagram.com/p/Db2ya5TDMLC/"
},
{
"shortcode": "Dbs_SENMqBr",
"caption": "Weiter geht’s! 🔴⚫️",
"alt": "Weiter geht’s! 🔴⚫️",
"taken_at": 1786028513,
"is_video": false,
"image": "img/instagram/Dbs_SENMqBr.jpg",
"url": "https://www.instagram.com/p/Dbs_SENMqBr/"
},
{
"shortcode": "Dbk0vKCs-p2",
"caption": "Gebrauchter Samstagnachmittag…\nMund abputzen und weiter machen!\n\n🔴⚫️",
"alt": "Gebrauchter Samstagnachmittag…",
"taken_at": 1785754549,
"is_video": false,
"image": "img/instagram/Dbk0vKCs-p2.jpg",
"url": "https://www.instagram.com/p/Dbk0vKCs-p2/"
}
]
}