- Go 90.9%
- HTML 5.9%
- Shell 3.2%
| .gitignore | ||
| config.example.json | ||
| formatter.go | ||
| go.mod | ||
| go.sum | ||
| INSTALL.md | ||
| install.sh | ||
| main.go | ||
| main_test.go | ||
| parser-lemgo.go | ||
| parser-wurnl.go | ||
| parser_lemgo_test.go | ||
| parser_wurnl_test.go | ||
| README.md | ||
| test_input.html | ||
| test_output.md | ||
alte-sorten2social
Ein Go-Programm, das zufällig Apfelsorten aus dem historischen Sortenverzeichnis der WUR-Bibliothek auswählt und automatisch auf einer GoToSocial/Mastodon-Instanz postet. Code aus AI gebastelt. Beispiel unter https://social.23.nu/@sorten
Funktionen
- Durchsucht alle 11 Index-Seiten des Apfel-Sortenverzeichnisses der WUR-Bibliothek
- Wählt zufällig eine Apfelsorte aus
- Extrahiert Titel, Beschreibung und Bild der Sorte
- Postet automatisch auf GoToSocial/Mastodon mit Bild und Text
- Caching der Links für schnellere Ausführung
Installation
Voraussetzungen
- Go 1.24 oder höher
- Zugang zu einer GoToSocial- oder Mastodon-Instanz
Build
go build -o alte-sorten2social .
Konfiguration
- Kopiere
config.example.jsonzuconfig.json:
cp config.example.json config.json
- Bearbeite
config.jsonund trage deine Instanz-Daten ein:
{
"instance": "https://deine-instanz.de",
"username": "dein-benutzername",
"password": "dein-passwort",
"client_id": "",
"client_secret": "",
"access_token": ""
}
Die Felder client_id, client_secret und access_token werden automatisch beim ersten Lauf befüllt.
Hinweis zur Authentifizierung: Beim ersten Lauf wird eine OAuth-Authentifizierung durchgeführt. Das Programm zeigt eine URL an, die du im Browser öffnen musst, um die Anwendung zu autorisieren. Nach der Autorisierung erhältst du einen Authorization Code, den du in das Programm eingibst. Das Access Token wird dann in der Config-Datei gespeichert und für zukünftige Läufe verwendet.
Test-Modus
Das Programm unterstützt einen Test-Modus, der es ermöglicht, die generierten Postings zu überprüfen, ohne sie tatsächlich zu Mastodon zu senden.
Test-Modus aktivieren
Führe das Programm mit dem -test Flag aus:
go run . -test
oder
./sorten-poster -test
Was passiert im Test-Modus?
- Keine Konfiguration erforderlich: Im Test-Modus wird keine
config.jsonbenötigt, da keine Verbindung zu Mastodon hergestellt wird. - Console-Ausgabe: Das generierte Posting wird vollständig auf der Konsole ausgegeben, inklusive:
- Titel als Überschrift
- Extrahierter Text-Content
- URL der Quelle
- Bild-URL (falls vorhanden)
- Keine Netzwerk-Requests: Es werden keine Daten zu Mastodon gesendet, aber die Apfel-Seiten werden weiterhin von der WUR-Bibliothek geladen.
- Cache funktioniert: Der Cache für Apfel-Links funktioniert auch im Test-Modus normal.
Beispiel-Ausgabe
Links aus Cache geladen: 100 eindeutige Apfel-Seiten
Ausgewählte Seite: https://library.wur.nl/speccol/fruitvrij/aepfel/Aepf1/Ae028.htm
[TEST-MODUS] Bild würde geladen werden von: https://library.wur.nl/speccol/fruitvrij/aepfel/Aepf1/Images/Pl28.jpg
=== TEST-MODUS: Posting würde folgendermaßen aussehen ===
## Baumann's Reinette
**Heimath und Vorkommen:** Beschreibung der Herkunft...
https://library.wur.nl/speccol/fruitvrij/aepfel/Aepf1/Ae028.htm
Bild-URL: https://library.wur.nl/speccol/fruitvrij/aepfel/Aepf1/Images/Pl28.jpg
=== ENDE TEST-MODUS ===
Test-Modus: Posting wurde auf Konsole ausgegeben (nicht gesendet)
Der Test-Modus ist besonders nützlich für:
- Entwicklung und Debugging
- Überprüfung der Text-Extraktion und Formatierung
- Testen der Text-Kürzung auf 500 Zeichen
- Validierung der Duplikat-Entfernung in der "Literatur und Synonyme"-Sektion
Verwendung
./alte-sorten2social
Das Programm:
- Lädt die Apfel-Links aus dem Cache (falls vorhanden) oder von den Index-Seiten
- Wählt zufällig eine Apfelsorte aus
- Extrahiert Titel, Beschreibung und Bild
- Authentifiziert sich bei der GoToSocial-Instanz:
- Erstellt automatisch OAuth-App falls nötig
- Beim ersten Lauf: Führt OAuth-Authorization durch (einmalig, interaktiv)
- Speichert Access Token für zukünftige Läufe
- Lädt das Bild hoch
- Postet den Status mit Titel, Beschreibung, Link und Bild
Caching
Die extrahierten Links werden in apple_links_cache.json gespeichert und sind 24 Stunden gültig. Dies beschleunigt die Ausführung erheblich, da die Index-Seiten nicht bei jedem Lauf neu geladen werden müssen.
Dateien
main.go- Hauptprogrammconfig.json- Konfigurationsdatei (nicht im Repository, siehe.gitignore)config.example.json- Beispiel-Konfigurationapple_links_cache.json- Cache der extrahierten Links (wird automatisch erstellt).gitignore- Ignoriert Config und Cache-Dateien
Technische Details
- Verwendet die Mastodon-kompatible API (funktioniert mit GoToSocial)
- OAuth2-Authentifizierung mit automatischer App-Erstellung
- Windows-1252 zu UTF-8 Encoding-Konvertierung für korrekte Umlaute
- HTML-Parsing zur Extraktion von Titel, Text und Bildern
- Automatische Filterung von Navigations-Elementen