Version 2.0.0 - Komplette Neuimplementierung mit moderner Architektur
NowScrobbling ist ein WordPress-Plugin, das Last.fm und Trakt.tv Daten per Shortcode darstellt. Version 2.0 ist eine vollständige Neuimplementierung mit moderner PHP 8.2+ Architektur, PSR-4 Autoloading, Multi-Layer-Caching und REST API.
- PSR-4 Autoloading: Composer-basiertes Autoloading für saubere Klassenstruktur
- Dependency Injection: Leichtgewichtiger DI-Container für lose Kopplung
- Modularität: Saubere Trennung von Concerns (Cache, API, Shortcodes, Admin, Security)
- Keine externen Abhängigkeiten: Reines PHP, kein jQuery für Frontend
- In-Memory Layer: Per-Request-Cache für schnellen Zugriff
- Transient Layer: WordPress Transients als primärer Cache (1-60 Min)
- Fallback Layer: 7-Tage Notfall-Cache bei API-Fehlern
- ETag Layer: HTTP Conditional Requests für Bandbreitenersparnis
- Stale-While-Revalidate: Alte Daten anzeigen während neue geladen werden
- Thundering Herd Protection: Verhindert gleichzeitige API-Anfragen
- Cloudflare: Automatische Header-Optimierung
- LiteSpeed: Cache-Purge Integration
- Nginx: FastCGI Cache Support
- Object Cache: Redis/Memcached/APCu Erkennung
GET /wp-json/nowscrobbling/v1/render/{shortcode}- Shortcode rendernGET /wp-json/nowscrobbling/v1/status- Plugin-Status (Admin)POST /wp-json/nowscrobbling/v1/cache/clear- Cache leeren (Admin)
- Granulare Nonces: Separate Tokens pro Endpunkt
- Zentraler Sanitizer: Korrekte Reihenfolge (unslash → sanitize → validate)
- Rate Limiting: API-Missbrauchsschutz
- Capability Checks: Admin-Aktionen nur mit
manage_options
- Tab-basierte Einstellungen: Credentials, Caching, Display, Diagnostics
- API-Verbindungstest: Live-Test der API-Credentials
- Cache-Statistiken: Detaillierte Metriken und Hit-Raten
- Debug-Logging: Umfassendes Logging bei aktiviertem Debug-Modus
- Kein jQuery: Reines ES6+ JavaScript
- IntersectionObserver: Lazy Loading für sichtbare Shortcodes
- Hash-basiertes Diffing: Kein DOM-Flackern bei Updates
- Exponential Backoff: Intelligentes Polling bei Fehlern
- Visibility API: Pausiert Polling bei inaktivem Tab
- Automatische Migration: Optionen von v1.3 werden automatisch migriert
- Rollback-Funktion: Möglichkeit zur Rückkehr auf v1.3 Optionen
- Keine Datenverluste: Alle bestehenden Einstellungen bleiben erhalten
- WordPress 6.0 oder höher
- PHP 8.2 oder höher
- Composer (für Installation aus Git)
- Last.fm API-Schlüssel (optional)
- Trakt.tv Client ID (optional)
- Suche nach "NowScrobbling" im Plugin-Verzeichnis
- Klicke auf "Installieren" und dann "Aktivieren"
- Gehe zu "Einstellungen > NowScrobbling" und konfiguriere deine API-Schlüssel
cd wp-content/plugins/
git clone https://github.com/willrobin/NowScrobbling.git
cd NowScrobbling/nowscrobbling
composer install --no-dev --optimize-autoloaderDann aktiviere das Plugin im WordPress Admin-Panel.
-
Last.fm API-Schlüssel:
- Besuche Last.fm API
- Erstelle eine neue API-Anwendung
- Kopiere den API-Schlüssel in die Plugin-Einstellungen (Tab: Credentials)
-
Trakt.tv Client ID:
- Besuche Trakt.tv API
- Erstelle eine neue OAuth-Anwendung
- Kopiere die Client ID in die Plugin-Einstellungen (Tab: Credentials)
- Last.fm Cache-Dauer: 1-60 Minuten (Standard: 1 Minute)
- Trakt Cache-Dauer: 1-60 Minuten (Standard: 5 Minuten)
- Allgemeine Cache-Dauer: 1-60 Minuten (Standard: 60 Minuten)
- Fallback-Cache: 7 Tage (fest, für Notfälle)
- Anzahl Top Artists/Albums/Tracks: 5-50 Einträge
- Anzahl Loved Tracks: 5-50 Einträge
- Polling-Intervall: 20-300 Sekunden
Zeigt den aktuellen Status der Last.fm Aktivität an (Now Playing oder Last Played).
Zeigt die letzten Scrobbles von Last.fm an.
max_length: Maximale Zeichenlänge (Standard: 45)
Zeigt die Top-Künstler von Last.fm an.
period: Zeitraum (7day,1month,3month,6month,12month,overall)max_length: Maximale Zeichenlänge (Standard: 15)
Zeigt die Top-Alben von Last.fm an.
period: Zeitraum (wie oben)max_length: Maximale Zeichenlänge (Standard: 45)
Zeigt die Top-Titel von Last.fm an.
period: Zeitraum (wie oben)max_length: Maximale Zeichenlänge (Standard: 45)
Zeigt die Lieblingslieder von Last.fm an.
max_length: Maximale Zeichenlänge (Standard: 45)
Zeigt den aktuellen Status der Trakt Aktivität an (Currently Watching oder Last Watched).
Zeigt die letzten Aktivitäten von Trakt an.
show_year: Jahr anzeigen (true/false)show_rating: Bewertung anzeigen (true/false)show_rewatch: Rewatch-Count anzeigen (true/false)
Zeigt die letzten Filme von Trakt an.
Zeigt die letzten Serien von Trakt an.
Zeigt die letzten Episoden von Trakt an.
Das Plugin verwendet CSS-Variablen für einfache Anpassungen:
:root {
--ns-primary-color: #2690ff;
--ns-primary-light: rgba(38, 144, 255, 0.1);
--ns-primary-border: rgba(38, 144, 255, 0.25);
--ns-primary-hover: rgba(38, 144, 255, 0.75);
--ns-text-color: #1a1a1a;
--ns-text-muted: #666;
--ns-border-radius: 5px;
--ns-transition: 0.3s ease;
}
/* Dark Mode Support */
@media (prefers-color-scheme: dark) {
:root {
--ns-text-color: #f0f0f0;
--ns-text-muted: #999;
}
}- Gehe zu "Einstellungen > NowScrobbling > Tab: Diagnostics"
- Aktiviere "Debug-Log aktivieren"
- Überprüfe das Debug-Log im Diagnostics-Tab
- Verwende den "Alle Caches leeren" Button im Diagnostics-Tab
- Oder nutze die REST API:
POST /wp-json/nowscrobbling/v1/cache/clear
- Verwende den "API-Verbindungen testen" Button im Diagnostics-Tab
- Die Ergebnisse zeigen den Status beider APIs
Bei Aktivierung von v2.0 werden alle v1.3 Einstellungen automatisch migriert:
- API-Credentials
- Cache-Einstellungen
- Display-Präferenzen
- Debug-Optionen
Falls Probleme auftreten, kann die Migration im Diagnostics-Tab überprüft und bei Bedarf zurückgesetzt werden.
- Multisite: Nicht unterstützt (geplant für v2.1)
- API-Limits: Bei sehr hoher Last können API-Limits erreicht werden
- JavaScript: AJAX-Updates benötigen JavaScript (SSR funktioniert ohne)
- PHP 8.2+
- Composer
- WordPress 6.0+ Test-Umgebung
git clone https://github.com/willrobin/NowScrobbling.git
cd NowScrobbling/nowscrobbling
composer installcomposer test
# oder
./vendor/bin/phpunitcomposer phpcs
# oder
./vendor/bin/phpcsSiehe CHANGELOG.md für die vollständige Versionshistorie.
- Forke das Repository
- Erstelle einen Feature-Branch (
git checkout -b feature/AmazingFeature) - Committe deine Änderungen (
git commit -m 'Add some AmazingFeature') - Push zum Branch (
git push origin feature/AmazingFeature) - Öffne einen Pull Request
Siehe CONTRIBUTING.md für detaillierte Richtlinien.
Dieses Projekt ist unter der GPL v2 oder später lizenziert - siehe die LICENSE Datei für Details.
Robin Will - robinwill.de
- Last.fm für die API
- Trakt.tv für die API
- WordPress Community für die Unterstützung