No description
  • Go 90.9%
  • HTML 5.9%
  • Shell 3.2%
Find a file
2026-01-11 10:25:33 +01:00
.gitignore fix: Zuverlässigeres Parsen der Sortennamen 2026-01-11 10:25:33 +01:00
config.example.json initial revision 2026-01-05 13:37:39 +01:00
formatter.go fix: Zuverlässigeres Parsen der Sortennamen 2026-01-11 10:25:33 +01:00
go.mod Sicherstellen, dass die URL erhalten bleibt. 2026-01-05 21:50:37 +01:00
go.sum initial revision 2026-01-05 13:37:39 +01:00
INSTALL.md Unis-Installationsskript. 2026-01-05 14:44:44 +01:00
install.sh Unis-Installationsskript. 2026-01-05 14:44:44 +01:00
main.go fix: Zuverlässigeres Parsen der Sortennamen 2026-01-11 10:25:33 +01:00
main_test.go fix: Zuverlässigeres Parsen der Sortennamen 2026-01-11 10:25:33 +01:00
parser-lemgo.go Größere Bilder posten 2026-01-05 22:54:13 +01:00
parser-wurnl.go fix: Zuverlässigeres Parsen der Sortennamen 2026-01-11 10:25:33 +01:00
parser_lemgo_test.go fix: Zuverlässigeres Parsen der Sortennamen 2026-01-11 10:25:33 +01:00
parser_wurnl_test.go fix: Zuverlässigeres Parsen der Sortennamen 2026-01-11 10:25:33 +01:00
README.md restructured 2026-01-05 22:13:12 +01:00
test_input.html Bessere Formatierung der Postings 2026-01-05 14:36:52 +01:00
test_output.md Bessere Formatierung der Postings 2026-01-05 14:36:52 +01:00

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

  1. Kopiere config.example.json zu config.json:
cp config.example.json config.json
  1. Bearbeite config.json und 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.json benö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:

  1. Lädt die Apfel-Links aus dem Cache (falls vorhanden) oder von den Index-Seiten
  2. Wählt zufällig eine Apfelsorte aus
  3. Extrahiert Titel, Beschreibung und Bild
  4. 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
  5. Lädt das Bild hoch
  6. 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 - Hauptprogramm
  • config.json - Konfigurationsdatei (nicht im Repository, siehe .gitignore)
  • config.example.json - Beispiel-Konfiguration
  • apple_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