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

View File

@@ -43,11 +43,13 @@ $log = static function (string $msg, string $level = 'INFO'): void {
* darin umschreiben. Damit ist eine veröffentlichte Ausgabe wirklich eingefroren.
*
* Warum das nötig ist: der Snapshot friert die DATEN ein, verwies aber weiter auf
* Ordner, die die Sync-Skripte verwalten. bin/matchcenter-sync.php räumt Wappen weg,
* die der BFV nicht mehr führt, bin/instagram-sync.php ältere Posts — am 31.07.2026
* nachgewiesen: ein Lauf löschte 18 Wappen und 3 Instagram-Bilder. Bei den Wappen
* dauert das eine Saison, bei Instagram Wochen. Danach zeigte eine archivierte
* Ausgabe Lücken, und „gedruckt = fixiert" wäre nur die halbe Wahrheit.
* Ordner, die andere Skripte verwalten. bin/matchcenter-sync.php räumt Wappen weg,
* die der BFV nicht mehr führt — am 31.07.2026 nachgewiesen: ein Lauf löschte 18 Wappen
* und 3 Instagram-Bilder. Danach zeigte eine archivierte Ausgabe Lücken, und
* „gedruckt = fixiert" wäre nur die halbe Wahrheit.
* Bei Instagram ist die Gefahr seit dem 17.09.2026 kleiner (der aufräumende
* bin/instagram-sync.php ist weg, Beiträge kommen einzeln über bin/instagram-add.php),
* aber ein Bild kann weiterhin per --entfernen verschwinden. Das Einfrieren bleibt.
*
* img/news wird mit eingefroren, obwohl News-Bilder nicht maschinenverwaltet sind:
* ein Artikelbild kann im Chat ersetzt werden, und dann änderte sich nachträglich