Initial vault setup
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
---
|
||||
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é)
|
||||
Reference in New Issue
Block a user