Patchwork

Patchwork
Astro TypeScript Sharp Last.fm
ListenBrainz Docker Open-Source

Générateur de collage de pochettes d’albums basé sur l’historique d’écoute Last.fm et ListenBrainz.

Réécriture complète en TypeScript d’une version PHP originale, avec de nombreuses améliorations sur les performances et les fonctionnalités.

Stack technique

Le projet tourne en mode SSR avec Astro et l’adaptateur Node.js (ou Vercel). Les pochettes sont récupérées depuis les APIs Last.fm et ListenBrainz, puis assemblées en une seule image JPEG par Sharp, une librairie de traitement d’image native basée sur libvips — très rapide et légère en mémoire.

Un système de cache filesystem évite de re-générer les images déjà produites. Le TTL est dynamique selon la période demandée : 6h pour les 7 derniers jours, jusqu’à 7 jours pour l’historique complet.

Le projet est livré avec un Dockerfile et un docker-compose.yml pour un déploiement autonome, ainsi qu’un bouton de déploiement Vercel one-click.

Fonctionnalités

  • Support de Last.fm et ListenBrainz
  • Grilles configurables de 1×1 à 10×10
  • Taille des images ajustable (50–300px)
  • Bordures optionnelles entre les pochettes
  • Cache filesystem avec TTL dynamique par période
  • Headers de réponse X-Cache, X-Generation-Time, X-Image-Width/Height
  • Analytics Matomo auto-hébergé, optionnel

API

L’image se génère via une simple requête HTTP :

GET /patchwork.jpg?username=USER&provider=lastfm&period=overall&rows=3&cols=3&size=150
jeer.fr
- 2026
version: 1.1.4 changelog code
Mentions légales