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:
@@ -197,21 +197,26 @@ Startseite kommen. Weißes Blatt oder 500er? Dann [SSH]
|
||||
|
||||
### C3 [SSH] Datenstände erzeugen
|
||||
|
||||
`data/matchcenter.json` und `data/instagram.json` sind bewusst nicht im Repo, die
|
||||
holen die Syncs. Vor dem ersten Lauf fehlen Tabellen, Spiele und der
|
||||
Instagram-Block (die Seite bricht deswegen nicht, sie zeigt Ersatzinhalte).
|
||||
`data/matchcenter.json` ist bewusst nicht im Repo, die holt der Sync. Vor dem
|
||||
ersten Lauf fehlen Tabellen und Spiele (die Seite bricht deswegen nicht, sie zeigt
|
||||
Ersatzinhalte).
|
||||
|
||||
```bash
|
||||
cd /www/htdocs/w01ca75d/tsv08kulmbach-website
|
||||
php bin/matchcenter-sync.php # Spiele, Ergebnisse, Tabellen, Wappen
|
||||
php bin/instagram-sync.php # Posts und Bilder
|
||||
```
|
||||
|
||||
**Der Instagram-Lauf ist der Wackelkandidat des ganzen Deploys.** Instagram sperrt
|
||||
Rechenzentrums-IPs; bisher lief der Scraper nur über einen privaten Anschluss.
|
||||
Schlägt er hier fehl, ist das kein Fehler im Deploy: dann bleibt der Weg, ihn von
|
||||
zu Hause laufen zu lassen und `data/instagram.json` samt Bildern hochzuladen, oder
|
||||
der Block wird redaktionell gepflegt. Die Website funktioniert in jedem Fall.
|
||||
**Instagram braucht hier nichts mehr.** Seit dem 17.09.2026 gibt es keinen Scraper
|
||||
und keinen Cron dafür: `data/instagram.json` liegt IM REPO und kommt mit dem Pull
|
||||
mit, die Bilder ebenso. Neue Beiträge nimmt Claude im Chat mit
|
||||
`php bin/instagram-add.php <post-url>` auf. Hintergrund in CLAUDE.md, Abschnitt
|
||||
„Instagram-Beiträge".
|
||||
|
||||
**Einmalig beim ersten Pull nach dem 17.09.2026:** auf dem Server liegt noch eine
|
||||
alte, unversionierte `data/instagram.json` vom letzten Sync-Lauf. Git bricht den
|
||||
Pull sonst ab („untracked working tree file would be overwritten"). Sie ist
|
||||
reiner Skript-Output und enthält keine Pflegearbeit, also einfach löschen:
|
||||
`rm data/instagram.json && git pull`.
|
||||
|
||||
### C4 [SSH] `preflight` bis null Fehler
|
||||
|
||||
@@ -270,11 +275,12 @@ nicht `app_secret`). Steht er leer, antwortet der Endpoint mit 403 und **nichts*
|
||||
| # | Pfad | Zeitpunkt |
|
||||
|---|---|---|
|
||||
| 1 | `www.tsv08kulmbach.de/cron.php?job=matchcenter&key=KEY` | stündlich, Minute 37 |
|
||||
| 2 | `www.tsv08kulmbach.de/cron.php?job=instagram&key=KEY` | täglich, 06:17 |
|
||||
| 3 | `www.tsv08kulmbach.de/cron.php?job=instagram&key=KEY` | täglich, 18:17 |
|
||||
| 4 | `www.tsv08kulmbach.de/cron.php?job=logrotate&key=KEY` | täglich, 03:23 |
|
||||
| 2 | `www.tsv08kulmbach.de/cron.php?job=logrotate&key=KEY` | täglich, 03:23 |
|
||||
|
||||
Vier Dinge dahinter sind Absicht:
|
||||
Die beiden früheren Instagram-Jobs (06:17 und 18:17) sind am 17.09.2026 entfallen und
|
||||
**gehören im KAS gelöscht** — der Endpoint kennt den Job nicht mehr und antwortet mit 403.
|
||||
|
||||
Drei Dinge dahinter sind Absicht:
|
||||
|
||||
- **Matchcenter stündlich statt halbstündlich am Spieltag.** Das KAS kann Wochentage
|
||||
nicht mit einem Halbstunden-Takt kombinieren, wie es die ursprüngliche Crontab vorsah.
|
||||
@@ -282,8 +288,6 @@ Vier Dinge dahinter sind Absicht:
|
||||
spätestens eine Stunde später. Kostet 24 Läufe/Tag. Wer den Verkehr zum BFV klein
|
||||
halten will, nimmt zwei „täglich"-Jobs (07:37 und 19:37) und lebt damit, dass
|
||||
Samstagsergebnisse erst abends stehen.
|
||||
- **Instagram zwei Einträge**, weil „täglich" nur einen Zeitpunkt kennt. Bewusst nicht
|
||||
stündlich: Instagram sperrt auffällige Zugriffsmuster schneller als der BFV.
|
||||
- **Versetzte Minuten**, damit sich zwei Läufe nie überlappen (die Syncs sperren sich
|
||||
per Lock, sonst fällt einer aus).
|
||||
- **Das E-Mail-Feld im KAS bleibt leer.** Die Antwort ist immer leer (204 = gelaufen oder
|
||||
|
||||
Reference in New Issue
Block a user