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:
@@ -17,7 +17,7 @@ declare(strict_types=1);
|
||||
*
|
||||
* Warum nicht GitHub Actions mit FTP-Upload: dort müsste ein Dritter Schreibzugang
|
||||
* zum ganzen Webspace kennen. Hier kennt der Aufrufer einen Schlüssel, der
|
||||
* ausschließlich "starte einen der drei Jobs" kann — deutlich kleinerer Radius.
|
||||
* ausschließlich "starte einen der beiden Jobs" kann — deutlich kleinerer Radius.
|
||||
*
|
||||
* Aufruf: https://www.tsv08kulmbach.de/cron.php?job=matchcenter&key=<cron.key>
|
||||
* Schlüssel alternativ als Header X-Cron-Key (bevorzugt, landet nicht im Log
|
||||
@@ -27,7 +27,7 @@ declare(strict_types=1);
|
||||
* - Job-Whitelist, keine freien Skriptnamen aus der URL
|
||||
* - Schlüssel aus config.php, Vergleich mit hash_equals; ohne echten Schlüssel ist zu
|
||||
* - Mindestabstand zwischen zwei Läufen (cron.min_interval) — ein geleakter Link kann
|
||||
* damit nicht dauerfeuern und uns die Server-IP bei BFV/Instagram sperren lassen
|
||||
* damit nicht dauerfeuern und uns die Server-IP beim BFV sperren lassen
|
||||
* - flock in den Skripten selbst: parallele Aufrufe überspringen sich
|
||||
* - Antwort ist immer leer. 403 nur bei falschem Schlüssel/Job, damit ein falsch
|
||||
* eingerichteter Cron-Dienst überhaupt auffällt (sonst syncte wochenlang nichts,
|
||||
@@ -51,9 +51,11 @@ header('Cache-Control: no-store');
|
||||
// Code). Der Job passt in denselben Rahmen wie die zwei Syncs: kein Parameter aus der
|
||||
// URL, keine Netzverbindung nach außen, er schreibt ausschließlich in storage/logs.
|
||||
// Eine VIERTE Ausnahme braucht wieder denselben Aufwand an Begründung.
|
||||
// 'instagram' stand hier bis zum 17.09.2026 und ist entfallen: Instagram verlangt seit
|
||||
// Anfang September Login für den Profilabruf, der Scraper ist gelöscht. Beiträge kommen
|
||||
// jetzt einzeln über bin/instagram-add.php herein (Chat-Pflege, kein Cron).
|
||||
$jobs = [
|
||||
'matchcenter' => 'bin/matchcenter-sync.php',
|
||||
'instagram' => 'bin/instagram-sync.php',
|
||||
'logrotate' => 'bin/log-rotate.php',
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user