- Added format_author_as_tag() function to convert author names to tag format - Author names automatically added to tags with spaces replaced by underscores - Example: 'Jörg Lohrer' → 'Jörg_Lohrer' tag - Enables author filtering via WordPress tag taxonomy - Updated documentation to reflect new author handling approach - Version bump to 0.3.0
191 lines
6.1 KiB
Markdown
191 lines
6.1 KiB
Markdown
# Changelog
|
|
|
|
## Version 0.3.0 (2025-10-01)
|
|
|
|
### Feature - Autor-zu-Tag-Mapping 🏷️
|
|
|
|
**Neues Feature:** Autoren werden automatisch als Tags hinzugefügt!
|
|
|
|
**Funktion:**
|
|
- Autor aus Frontmatter wird extrahiert (`author`, `#staticSiteGenerator.author`, `#commonMetadata.creator`)
|
|
- Autor-Name wird automatisch als Tag im Format `Vorname_Nachname` hinzugefügt
|
|
- Leerzeichen werden durch Unterstriche ersetzt
|
|
- Mehrfache Unterstriche werden konsolidiert
|
|
|
|
**Beispiel:**
|
|
```yaml
|
|
author: Jörg Lohrer
|
|
tags:
|
|
- OER
|
|
- Community
|
|
```
|
|
|
|
**Ergebnis:**
|
|
- Tags in WordPress: `OER`, `Community`, `Jörg_Lohrer`
|
|
- Filterung nach Autoren über WordPress-Tag-Taxonomie möglich
|
|
|
|
**Technische Details:**
|
|
- Neue Funktion `format_author_as_tag()` in `markdown_parser.py`
|
|
- Autor-Tag wird nur hinzugefügt, wenn Autor vorhanden und noch nicht in Tags
|
|
- Integration in `extract_wordpress_metadata()` nach Autor-Extraktion
|
|
|
|
---
|
|
|
|
## Version 0.2.2 (2025-10-01)
|
|
|
|
### Bugfix - Kritisch! 🐛
|
|
|
|
#### Tags/Kategorien werden jetzt korrekt zugewiesen
|
|
**Problem:** Tags und Kategorien wurden als existierend erkannt, aber NICHT dem Beitrag zugewiesen.
|
|
|
|
**Ursache:**
|
|
- WordPress-API gibt bei `term_exists`-Fehler die `term_id` in den Fehler-Daten zurück
|
|
- Diese `term_id` wurde nicht genutzt, es wurde nur erneut gesucht (was nichts fand)
|
|
- Ohne Tag-IDs konnte WordPress die Tags nicht zuweisen
|
|
|
|
**Lösung:**
|
|
- Extrahiere `term_id` direkt aus `error_data['data']['term_id']`
|
|
- Bei `term_exists`-Code: Nutze die zurückgegebene `term_id` sofort
|
|
- Fallback: Suche erneut falls Extraktion fehlschlägt
|
|
- Gezielte Suche mit `search`-Parameter für bessere Performance
|
|
|
|
**Vorher:**
|
|
```
|
|
Fehler beim Erstellen des Tags 'OER': 400 Client Error...
|
|
Details: {'code': 'term_exists', 'data': {'term_id': 3866}}
|
|
# Tag-ID 3866 wurde NICHT genutzt → Tag nicht zugewiesen
|
|
```
|
|
|
|
**Nachher:**
|
|
```
|
|
→ Tag 'OER' existiert bereits (ID: 3866)
|
|
→ Tag 'OEP' gefunden (ID: 3867)
|
|
Gesamt Tag-IDs: [3866, 3867, ...]
|
|
# Tag-IDs werden dem Beitrag zugewiesen ✅
|
|
```
|
|
|
|
### Verbesserungen
|
|
|
|
- `get_tags()` und `get_categories()` mit optionalem `search`-Parameter
|
|
- Reduziert API-Calls durch gezielte Suche statt alle Tags/Kategorien zu laden
|
|
- Debug-Ausgaben zeigen jetzt auch gefundene (nicht nur neue) Tags/Kategorien
|
|
|
|
## Version 0.2.1 (2025-10-01)
|
|
|
|
### Bugfixes
|
|
|
|
#### Frontmatter-Parsing für Hash-Kommentar-Stil
|
|
**Problem:** Frontmatter mit `#commonMetadata:` (als YAML-Kommentar) wurde nicht korrekt geparst.
|
|
|
|
**Lösung:**
|
|
- Unterstützung für flaches Frontmatter (wenn `#commonMetadata:` als Kommentar behandelt wird)
|
|
- `creativeWorkStatus` und `datePublished` werden jetzt auch direkt (nicht verschachtelt) erkannt
|
|
- Status-Konvertierung: `Published` → `publish` (case-insensitive mit "publish" in)
|
|
|
|
#### Veröffentlichungsdatum für alle Status
|
|
**Problem:** Datum wurde bei draft-Posts nicht gesetzt.
|
|
|
|
**Lösung:**
|
|
- `date_gmt` zusätzlich zu `date` setzen für explizite Kontrolle
|
|
- Hinweis bei draft-Posts, dass Datum erst beim Veröffentlichen aktiv wird
|
|
|
|
### Verbesserungen
|
|
|
|
#### Debug-Ausgaben
|
|
- **Tag-Verarbeitung:** Zeigt gefundene Tags aus Frontmatter und zugewiesene IDs
|
|
- **Post-Erstellung:** Zeigt alle gesendeten Daten (Tags, Kategorien, Datum)
|
|
- **WordPress-Response:** Zeigt zurückgegebene Daten von WordPress
|
|
- **Erfolgsmeldung:** ✅ für bessere Sichtbarkeit
|
|
|
|
#### Beispiel-Ausgabe:
|
|
```
|
|
Tags aus Frontmatter: ['Tag1', 'Tag2']
|
|
→ Tag 'Tag1' ID: 123
|
|
→ Tag 'Tag2' ID: 124
|
|
Gesamt Tag-IDs: [123, 124]
|
|
Veröffentlichungsdatum: 2025-09-02T00:00:00
|
|
Erstelle Beitrag mit Daten:
|
|
- Status: publish
|
|
- Tags: [123, 124]
|
|
- Datum: 2025-09-02T00:00:00
|
|
- Datum GMT: 2025-09-02T00:00:00
|
|
✅ Beitrag 'Titel' erstellt (ID: 456, Status: publish)
|
|
WordPress-Tags: [123, 124]
|
|
WordPress-Datum: 2025-09-02T00:00:00
|
|
```
|
|
|
|
## Version 0.2.0 (2025-10-01)
|
|
|
|
### Bugfixes
|
|
|
|
#### 1. Tag-Duplikatsfehler behoben
|
|
**Problem:** Beim Erstellen bereits existierender Tags kam es zu `400 Bad Request` Fehlern.
|
|
|
|
**Lösung:**
|
|
- Bessere Fehlerbehandlung in `get_or_create_tag()` und `get_or_create_category()`
|
|
- Bei 400-Fehler wird automatisch erneut nach dem Tag/Kategorie gesucht
|
|
- Ausführlichere Fehlermeldungen mit Response-Details
|
|
|
|
#### 2. Post-Duplikatsprüfung verbessert
|
|
**Problem:** Beiträge mit gleichem Titel wurden trotz Duplikatsprüfung doppelt angelegt.
|
|
|
|
**Lösung:**
|
|
- `check_post_exists()` sucht jetzt in allen Status (draft, publish, etc.)
|
|
- Case-insensitive Vergleich der Titel
|
|
- Prüft sowohl `rendered` als auch `raw` Titel
|
|
- Erhöhte Suchanzahl von 10 auf 100 Posts
|
|
- Debug-Ausgabe bei gefundenen Duplikaten
|
|
|
|
#### 3. Veröffentlichungsdatum wird gesetzt
|
|
**Problem:** Das `datePublished` aus dem Frontmatter wurde nicht an WordPress übergeben.
|
|
|
|
**Lösung:**
|
|
- Datumsextraktion aus verschiedenen Frontmatter-Feldern:
|
|
- `date`
|
|
- `datePublished`
|
|
- `#commonMetadata.datePublished`
|
|
- `#staticSiteGenerator.datePublished`
|
|
- Automatische Formatierung: `YYYY-MM-DD` → `YYYY-MM-DDT00:00:00`
|
|
- Datum wird als `date`-Feld an WordPress-API übergeben
|
|
|
|
### Neue Features
|
|
|
|
- **USAGE_MODES.md**: Übersichtsdokumentation der drei Verwendungsmodi
|
|
|
|
## Version 0.1.0 (2025-10-01)
|
|
|
|
### Features
|
|
|
|
- Automatische Metadaten-Extraktion aus YAML-Frontmatter
|
|
- Drei Verwendungsmodi:
|
|
1. Einzelne URL
|
|
2. YAML-Batch
|
|
3. Forgejo-Repository
|
|
- WordPress REST-API Integration
|
|
- Duplikatsprüfung für Posts und Medien
|
|
- Schema.org-Support
|
|
- Markdown zu HTML Konvertierung
|
|
- Automatische Tag/Kategorie-Erstellung
|
|
|
|
## Bekannte Probleme
|
|
|
|
Keine.
|
|
|
|
## Geplante Features
|
|
|
|
## Geplante Features
|
|
|
|
### Hoch-Priorität
|
|
- [ ] **Autor-Mapping:** WordPress-User aus Frontmatter-Autor automatisch zuordnen oder manuelles Mapping
|
|
- [ ] **Robuste Forgejo-API:** Bessere Fehlerbehandlung, Progress-Tracking für Batch-Imports
|
|
|
|
### Mittel-Priorität
|
|
- [ ] GitHub-Repository Support (zusätzlich zu Forgejo)
|
|
- [ ] Batch-Update (bestehende Posts aktualisieren statt nur überspringen)
|
|
- [ ] Featured Image aus Markdown-Content extrahieren (erstes Bild falls kein Frontmatter-Image)
|
|
|
|
### Niedrig-Priorität
|
|
- [ ] Custom Post Types Support
|
|
- [ ] Zeitzone-Unterstützung für Veröffentlichungsdatum
|
|
- [ ] Mehrsprachige Beiträge (WPML/Polylang Support)
|
|
- [ ] Dry-Run-Modus (zeigt was passieren würde ohne zu erstellen)
|