Files
wiki/Catalogue-Self-Hosted/apps/app-jellysweep.md
T
2026-06-09 18:40:21 +02:00

144 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Jellysweep
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, file-management, jellyfin, cleanup, python, automation]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=file-management, https://github.com/jon4hz/jellysweep]
---
# Jellysweep 🧹
> Outil Python d'auto-nettoyage pour **Jellyfin** : supprime automatiquement les films et épisodes non visionnés depuis longtemps, en s'appuyant sur les statistiques de visionnage de votre serveur média.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | https://github.com/jon4hz/jellysweep |
| **GitHub** | https://github.com/jon4hz/jellysweep |
| **License** | MIT |
| **Langage** | Python |
| **Étoiles GitHub** | 13 ⭐ |
| **Dernière MAJ** | 2025 |
| **Catégorie** | [[cat-file-management]] |
## 📝 Description
**Jellysweep** répond à un problème typique des utilisateurs de **Jellyfin** : les bibliothèques gonflent mécaniquement au fil des mois (séries terminées non revisitées, films vus une fois et oubliés, doublons). Plutôt que de purger à la main, Jellysweep automatise la suppression selon des **règles temporelles** et des **statistiques d'usage** fournies par l'API Jellyfin.
Le fonctionnement : Jellysweep interroge l'API Jellyfin, identifie les items (films/épisodes) non joués depuis X jours, vérifie qu'ils ne sont pas dans une « keep list » de l'utilisateur, puis **supprime les fichiers** du filesystem (et du catalogue Jellyfin) après une période de grâce configurable. Possibilité de recevoir une **notification Telegram / Discord / webhook** avant suppression effective.
⚠️ **Note de confiance (low)** : le projet est jeune (13⭐), la dernière MAJ est récente mais la communauté reste limitée. ⚠️ Tester sur un dataset non critique avant déploiement production, et toujours conserver un **backup** des médias.
Idéal pour les utilisateurs de **Sonarr / Radarr / Jellyfin** qui veulent boucler la boucle du cycle : téléchargement → lecture → suppression automatique.
## 🚀 Installation
### Option 1 : Docker Compose (recommandé)
```yaml
version: '3.8'
services:
jellysweep:
image: ghcr.io/jon4hz/jellysweep:latest
container_name: jellysweep
restart: unless-stopped
environment:
- JELLYFIN_URL=http://jellyfin:8096
- JELLYFIN_API_KEY=*** # Créer dans Jellyfin > Admin > API Keys
- JELLYFIN_USER_IDS=***_user_id
- GRACE_PERIOD_DAYS=14
- UNWATCHED_DAYS_THRESHOLD=90
- SCAN_CRON=0 3 * * * # Tous les jours à 3h du matin
- TZ=Europe/Paris
- WEBHOOK_URL=*** # Optionnel : notification Telegram/Discord avant suppression
volumes:
- /srv/media:/media:ro # Lecture seule pour l'analyse
- /srv/media-trash:/trash # Poubelle avant suppression définitive
depends_on:
- jellyfin
networks:
- media
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
ports:
- "8096:8096"
volumes:
- /srv/media:/media
- jellyfin-config:/config
networks:
- media
volumes:
jellyfin-config:
networks:
media:
driver: bridge
```
### Option 2 : Installation manuelle
```bash
git clone https://github.com/jon4hz/jellysweep.git
cd jellysweep
pip install -r requirements.txt
cp config.example.yaml config.yaml
# Éditer config.yaml (URL Jellyfin, API key, seuils)
python -m jellysweep --config config.yaml --dry-run
python -m jellysweep --config config.yaml
```
## ⚙️ Configuration
- **API Key Jellyfin** : `Dashboard > Administration > API Keys > +` → nommer « Jellysweep ».
- **Grace period** : nombre de jours entre la détection et la suppression effective (sécurité anti-faux positif).
- **Keep list** : titres à ne jamais supprimer, via fichier `keep.txt` ou interface.
- **Cron interne** : configurer la fréquence d'analyse (1×/jour suffit).
- **Mode dry-run** : **toujours** tester en `--dry-run` d'abord pour voir ce qui serait supprimé.
- **Webhook** : Telegram/Discord pour recevoir la liste des fichiers supprimés la nuit.
## 🔄 Alternatives
### Open Source
- **Sonarr / Radarr** — Gestionnaires automatisés (mais ne suppriment pas l'ancien)
- **cleanup-jellyfin** (scripts) — Projets similaires communautaires
- **trash-guides** (rConfig) — Bonnes pratiques, pas un outil
- [[app-filebrowser]] — Permet la suppression manuelle
- **autoremove-torrents** — Cible qBittorrent/Deluge, pas Jellyfin
### Propriétaires
- Aucune solution propriétaire équivalente. Plex propose des outils similaires côté « managed cloud », mais sans équivalent self-host direct.
- **Plex Pass + Tautulli** — Monitoring Plex (pas Jellyfin), avec quelques règles de cleanup.
- **iDrive / Backblaze B2 lifecycle rules** — Plutôt orienté backup, pas média.
## 🔐 Sécurité
- **HTTPS recommandé** si Jellyfin est exposé (sinon l'API key circule en clair).
- Limiter les permissions de l'API key Jellyfin au strict minimum (lecture + delete).
- **Toujours démarrer en `--dry-run`** et vérifier la liste avant d'activer la suppression réelle.
- **Backup** des médias supprimés : monter un volume `trash` séparé et purger manuellement après 30 jours.
- **Volumes en `:ro`** sur les dossiers médias pour l'analyse (l'app n'écrit que dans `/trash`).
- Surveiller l'espace disque de la poubelle (peut saturer si beaucoup de suppressions).
- **RGPD** : si vos médias contiennent des données personnelles (vidéos de famille), Jellysweep supprime définitivement → adapter la politique de rétention.
- Tester la restauration depuis `/trash` avant de faire confiance à l'outil.
## 📚 Ressources
- [GitHub jon4hz/jellysweep](https://github.com/jon4hz/jellysweep)
- [selfh.st listing](https://selfh.st/apps/?tag=file-management)
- [Reddit - Automating episode cleanup](https://www.reddit.com/r/JellyfinCommunity/comments/1o6ucvu/automating_episode_cleanup/)
- [Jellyfin API docs](https://api.jellyfin.org/)
## Pages Liées
- [[cat-file-management]] — Catégorie File Management
- [[recettes-docker-compose]] — Templates Docker Compose
- [[securisation-home-lab]] — Sécurité
- [[traefik]] — Reverse proxy (si Jellyfin exposé)