30 KiB
30 KiB
Changelog - Lycostorrent
Toutes les modifications notables de ce projet sont documentées dans ce fichier.
Format basé sur Keep a Changelog, et ce projet adhère au Semantic Versioning.
[1.9.25] - 2025-02-05
🏷️ Filtres par année avec pastilles
Ajouté
- Pastilles cliquables :
[2026][2025][2024][2023][≤2022][Tous] - Sélection multiple - Possibilité de sélectionner plusieurs années
- Filtrage instantané - Pas besoin de recharger
- Option 100 résultats dans le sélecteur
Comportement
- Clic sur une année → toggle on/off
- Clic sur "Tous" → désactive les autres filtres
- Par défaut : "Tous" actif
- Compteur affiché :
(15/42)
Fichiers modifiés
app/templates/latest.html- Pastilles HTML + option 100 résultatsapp/static/js/latest.js- Logique de filtrage multipleapp/static/css/latest.css- Styles pastilles (desktop + mobile)
[1.9.24] - 2025-12-28
🔌 Support chemin (path) pour client torrent
Problème résolu
- URLs avec reverse proxy comme
https://geco.useed.me/qbittorrentne fonctionnaient pas - Erreur
invalid literal for int()quand le port était vide
Ajouté
- Champ "Chemin" dans l'admin pour les reverse proxy
- Port optionnel - Laisser vide pour utiliser le port par défaut (80/443)
- Parsing intelligent - Coller une URL complète la découpe automatiquement
Rétrocompatibilité
| Configuration | URL générée |
|---|---|
host: "192.168.1.100", port: 8080 |
http://192.168.1.100:8080 |
host: "geco.useed.me", path: "/qbittorrent", use_ssl: true |
https://geco.useed.me/qbittorrent |
host: "https://example.com/qbit" |
https://example.com/qbit |
Fichiers modifiés
app/plugins/torrent_clients/base.py- TorrentClientConfig avec pathapp/plugins/torrent_clients/__init__.py- Parsing URL intelligentapp/main.py- Gestion port vide + pathapp/templates/admin.html- Nouveau champ cheminapp/static/js/admin.js- Support path dans formulaire
[1.9.23] - 2025-12-28
🗓️ Filtre par année dans Latest
Ajouté
- Sélecteur d'année avec options : Toutes, 2026, 2025, 2024, 2023, 2022
- Filtrage instantané - Changer l'année sans recharger les données
- Compteur intelligent - Affiche "X nouveautés de 2025"
Fonctionnement
- Filtre basé sur l'année TMDb (
tmdb.year) - Si pas d'info TMDb, le résultat reste affiché
- Re-filtrage instantané quand on change l'année
Fichiers modifiés
app/templates/latest.html- Sélecteur annéeapp/static/js/latest.js- Fonction displayResults avec filtreapp/static/css/latest.css- Style .no-results
[1.9.22] - 2025-12-28
📱 Refonte complète modal torrents Latest (mobile)
Modifié
- Structure HTML - Passage de
<table>à<div>(comme Discover) - Boutons adaptatifs -
flex: 1avecflex-wrappour s'adapter à l'écran - Taille tactile - Boutons correctement dimensionnés pour smartphone
Structure torrent (identique à Discover)
<div class="torrent-item">
<div class="torrent-info">
<div class="torrent-name">...</div>
<div class="torrent-meta">...</div>
</div>
<div class="torrent-actions">
<a class="btn-link">🔗</a>
<a class="btn-magnet">🧲</a>
...
</div>
</div>
[1.9.21] - 2025-12-28
🔧 Tentative correction boutons modal (grille CSS)
Modifié
- Passage à CSS Grid pour les boutons d'action
grid-template-columns: repeat(2, 1fr)pour forcer 2x2
[1.9.20] - 2025-12-28
🔧 Correction affichage infos torrents mobile
Corrigé
- Cellules visibles -
display: blockau lieu deflexpour les<td> - Labels - Affichage du
data-labelavec:après
[1.9.19] - 2025-12-28
🔧 CSS harmonisé + bouton déconnexion
Corrigé
- Bouton déconnexion - Séparé des autres liens de navigation
- Taille fixe - 50px sur tablette, 40px sur mobile
- Navigation - Styles identiques sur Search, Latest et Discover
[1.9.18] - 2025-12-28
📱 Harmonisation CSS Latest avec Search/Discover
Modifié
- Navigation - Flex wrap responsive identique
- Catégories - Grid auto-fit
- Cards - Poster 200px, actions en ligne
- Modal - Plein écran sur mobile
[1.9.17] - 2025-12-27
📱 CSS mobile amélioré pour Latest et Discover
Latest - Menus mobile
- Catégories - Grille 2 colonnes au lieu de scroll horizontal invisible
- Navigation - Grille responsive au lieu de flex wrap cassé
- Boutons trackers - Grille 2 colonnes, taille correcte
- Liste trackers - Scrollable avec grille propre
Discover - Torrents mobile
- Torrent item - Layout en colonne avec actions en bas
- Nom du torrent - Multi-ligne avec word-break
- Métadonnées - Badges avec background distincts
- Boutons actions - Flex avec bordure séparatrice, taille tactile
[1.9.16] - 2025-12-27
🎯 Filtrage par année et numéro de suite
Ajouté
- Détection des suites - Les numéros (2, 3, II, III...) dans le titre sont détectés
- Filtrage par année - Tolérance de ±1 an, exclut les années trop différentes
Exemples
- "Zootopie 2" (2025) → exclut "Zootopia (2016)" car années différentes ET pas de "2"
- "Sisu 2" → exclut "Sisu (2023)" car pas de numéro de suite
[1.9.15] - 2025-12-27
🔍 Filtrage multi-mots amélioré
Corrigé
- Problème CrazySpirits - "Thérapie de choc" retournait "Police Academy...choc"
- Nouvelle règle : 2-3 mots significatifs → 2 matches minimum requis
Règles de filtrage
| Mots significatifs | Minimum requis |
|---|---|
| 1 mot | 1 match |
| 2-3 mots | 2 matches |
| 4+ mots | 50% des mots |
[1.9.14] - 2025-12-27
🔍 Filtrage simplifié
Modifié
- Algorithme de filtrage simplifié : vérifie si au moins un mot significatif (4+ caractères) est présent dans le titre du torrent
- Mots stop exclus : the, les, der, das, die, and, for, with, etc.
[1.9.13] - 2025-12-27
🔍 Recherche avec tous les titres
Corrigé
- Recherche complète - Essaie TOUTES les requêtes (titre original + titre français) au lieu de s'arrêter au premier résultat
- Exemple : "Thérapie de choc" cherche maintenant avec "You Hurt My Feelings" ET "Thérapie de choc"
[1.9.12] - 2025-12-27
🔍 Filtrage avec mot-clé principal
Ajouté
- Détection du mot principal - Premier mot de 4+ caractères du titre
- Match flexible - Accepte les torrents contenant le mot principal
Exemple
- "Sisu 2" → mot principal = "sisu"
- Torrent "Sisu.2023.FRENCH" → match car contient "sisu"
[1.9.11] - 2025-12-27
🔍 Filtrage amélioré pour titres courts
Corrigé
- Titres courts (comme "Sisu") maintenant correctement filtrés
- Seuil d'inclusion réduit à 3 caractères (au lieu de 5)
- Seuil de similarité réduit à 0.7 (au lieu de 0.8)
- Mots-clés courts : 1 match minimum suffit
[1.9.10] - 2025-12-27
🐛 Suppression du fallback
Corrigé
- Plus de faux résultats - Si aucun torrent pertinent n'est trouvé, affiche "Aucun torrent trouvé" au lieu de résultats non pertinents
- Suppression du fallback qui retournait les 10 premiers résultats bruts
[1.9.9] - 2025-12-27
📥 Modal d'options dans Discover
Ajouté
- Modal de téléchargement - Même interface que Search/Latest
- Choix de la catégorie - Liste des catégories qBittorrent
- Auto-remplissage du chemin - Selon la catégorie sélectionnée
- Option pause - Démarrer en pause
- Feedback visuel - Bouton ⏳ → ✅/❌
[1.9.8] - 2025-12-27
⚙️ Sélection des trackers pour Discover
Ajouté
- Section Admin → Modules → "Trackers pour Découvrir"
- Sélection visuelle - Cocher/décocher chaque tracker
- Boutons tout/rien - Sélectionner ou désélectionner tous
- Persistance - Sauvegardé dans
/app/config/discover_trackers.json
API
GET /api/admin/discover-trackers- Récupère les trackers configurésPOST /api/admin/discover-trackers- Sauvegarde la sélection
[1.9.7] - 2025-12-27
🎬 Bande-annonce YouTube + Lien tracker
Ajouté
- Bande-annonce YouTube - Intégrée dans le modal de détails Discover
- Recherche multilingue - Trailer FR d'abord, puis EN
- Priorité - Trailer > Teaser
- Auto-stop - La vidéo s'arrête à la fermeture du modal
- Bouton 🔗 - Lien vers la page du torrent sur le tracker
[1.9.6] - 2025-12-27
🔍 Filtrage plus strict
Modifié
- Seuil de similarité augmenté à 0.8 (au lieu de 0.7)
- Mots-clés - Vérifie que 60% des mots-clés sont présents avec minimum 2 matches
[1.9.5] - 2025-12-27
🔍 Filtrage des résultats Discover
Ajouté
- Fonction
_filter_relevant_torrents()- Filtre les résultats par titre - Normalisation des titres - Suppression accents, caractères spéciaux
- Comparaison intelligente - Inclusion, similarité, mots-clés
Corrigé
- Les résultats non pertinents de CrazySpirits sont maintenant filtrés
[1.9.4] - 2025-12-27
🔍 Correction recherche Discover - Titres non-latins
Corrigé
- Titres thaï/chinois/etc. - Utilise le titre anglais original au lieu du titre non-latin
- Recherches successives - Essaie original_title + year, puis original_title, puis title + year, puis title
- Détection caractères latins - Fonction
_is_latin_text()pour vérifier si le titre est utilisable
Exemple
- Film thaï "ปัง" → recherche avec "Bang 2025" (titre anglais) au lieu de "ปัง 2025"
[1.9.3] - 2025-12-27
🐛 Correction regroupement - Années entre parenthèses
Corrigé
- Support des années entre parenthèses -
(2016)maintenant correctement reconnu - Les films comme
L'Age.De.Glace.5.(2016)etL'Age.De.Glace.4.(2012)sont maintenant séparés
Technique
- Regex modifiée pour inclure
\(et\)dans la détection d'année
[1.9.2] - 2025-12-27
🐛 Correction regroupement - Suites de films
Corrigé
- Séparation par année - Les films avec des années différentes ne sont plus groupés
- Exemple : "Les Schtroumpfs 2 (2013)" et "Les Schtroumpfs (2011)" maintenant séparés
Technique
- Nouvelle fonction
_extract_base_title_and_year()qui extrait titre ET année - Règle stricte : années différentes = pas de regroupement
[1.9.1] - 2025-12-27
🐛 Correction regroupement Latest
Corrigé
- Regroupement plus strict - Évite les faux positifs (ex: "The Empire Strikes Back" vs "Exists")
- Seuil de similarité augmenté à 0.85
Technique
- Nouvelle fonction
_extract_base_title()qui extrait uniquement le titre avant les métadonnées - Double vérification : similarité du titre de base ET similarité globale
[1.9.0] - 2025-12-27
🌟 Page Découvrir + Système de Modules
Page Découvrir
- Nouvelle page
/discover- Explore les nouveautés cinéma et TV depuis TMDb - 5 catégories disponibles :
- 🎬 Au cinéma (films actuellement en salle)
- 🔥 Films populaires
- 📺 Séries en cours de diffusion
- ⭐ Séries populaires
- 📅 Films à venir
- Affichage en grille avec affiches, notes et années
- Modal de détails avec synopsis, genres et note
- Recherche automatique de torrents sur tous vos trackers
- Envoi direct au client torrent depuis les résultats
Système de Modules
- Nouvel onglet Admin → Modules - Activer/désactiver les fonctionnalités
- 3 modules disponibles :
- 🔍 Recherche (activé par défaut)
- 🎬 Nouveautés (activé par défaut)
- 🌟 Découvrir (désactivé par défaut)
- Navigation dynamique - Le menu s'adapte aux modules activés
- Persistance - Configuration sauvegardée en JSON
Fichiers ajoutés
templates/discover.html- Page Découvrirstatic/css/discover.css- Styles Découvrirstatic/js/discover.js- Logique Découvrirstatic/js/nav.js- Navigation dynamique
API ajoutées
GET /api/modules- Récupère les modules activésGET /api/admin/modules- Config modules pour adminPOST /api/admin/modules- Sauvegarde modulesGET /api/discover/<category>- Liste TMDb par catégorieGET /api/discover/detail/<type>/<id>- Détails TMDbPOST /api/discover/search-torrents- Recherche torrents
[1.8.0] - 2025-12-27
🎨 Système de thèmes
Ajouté
-
8 thèmes disponibles :
- 🌙 Sombre (par défaut)
- ☀️ Clair
- 🌊 Océan (bleu-vert)
- 💜 Violet
- 🌿 Nature (vert)
- 🌅 Sunset (orange)
- 🤖 Cyberpunk (néon)
- ❄️ Nord (palette nordique)
-
Onglet Apparence dans Admin - Sélection visuelle des thèmes avec aperçu
-
Persistance du thème - Sauvegardé en localStorage
-
Chargement instantané - Pas de flash blanc au chargement
-
Transitions fluides - Changement de thème animé
Fichiers ajoutés
static/css/themes.css- Définition de tous les thèmesstatic/js/theme-loader.js- Chargement du thème au démarrage
Fichiers modifiés
templates/admin.html- Onglet Apparencetemplates/index.html- Support des thèmestemplates/latest.html- Support des thèmestemplates/login.html- Support des thèmesstatic/css/admin.css- Styles des cartes de thèmesstatic/js/admin.js- Gestion des thèmes
[1.7.1] - 2025-12-27
⚡ Recherche parallèle
Ajouté
- Recherche parallèle par tracker - Chaque tracker est interrogé en parallèle
- Avant : Jackett recevait 10 trackers et les faisait séquentiellement (~17s)
- Après : 10 requêtes parallèles vers Jackett (~5s)
Logs améliorés
🔍 Recherche: 'fallout' | Catégorie: tv | Trackers: 10
✅ jackett:sharewood-api: 45 résultats
✅ jackett:yggtorrent: 38 résultats
...
📦 Recherche parallèle: 220 résultats bruts (en 5.24s)
[1.7.0] - 2025-12-27
⚡ Requêtes parallèles - Performance améliorée
Ajouté
- Requêtes parallèles pour Latest - Tous les trackers sont interrogés simultanément
- Requêtes parallèles Jackett/Prowlarr - Les deux sources sont interrogées en même temps
- Logging du temps d'exécution - Affiche le temps total des recherches
Gain de performance
| Avant (séquentiel) | Après (parallèle) | Gain |
|---|---|---|
| 4 trackers × 3s = 12s | max(3s) = 3s | ~75% |
| 6 trackers × 2s = 12s | max(2s) = 2s | ~85% |
Technique
- Utilisation de
ThreadPoolExecutoravec max 10 workers - Timeout de 60s par requête
- Les erreurs d'un tracker n'affectent pas les autres
Fichiers modifiés
main.py- Parallélisation de/api/latestindexer_manager.py- Parallélisation Jackett + Prowlarr
[1.6.1] - 2025-12-27
📁 Gestion des catégories dans l'administration
Ajouté
- Section "Catégories & Dossiers" dans Admin → Client Torrent
- Catégories personnalisées avec chemin de destination par défaut
- Auto-remplissage du chemin quand on sélectionne une catégorie dans le modal
- Synchronisation avec qBittorrent - crée les catégories directement dans le client
- API
/api/admin/torrent-client/categories- GET/POST pour gérer les catégories - API
/api/admin/torrent-client/sync-categories- Synchronise avec le client
Fonctionnalités admin
- ➕ Ajouter une catégorie avec son chemin
- ✏️ Modifier le nom et le chemin
- 🗑️ Supprimer une catégorie
- 🔄 Synchroniser avec qBittorrent (crée les catégories manquantes)
- 💾 Sauvegarder la configuration
Plugin qBittorrent v1.2.0
create_category(name, path)- Crée une catégorieedit_category(name, path)- Modifie le chemin d'une catégorieget_categories_with_paths()- Récupère les catégories avec leurs chemins
[1.6.0] - 2025-12-27
📥 Modal d'options de téléchargement
Ajouté
- Modal de sélection quand on clique sur 📥
- Choix de la catégorie - Liste déroulante des catégories du client
- Chemin personnalisé - Spécifier un dossier de destination
- Option "Démarrer en pause" - Ajouter le torrent sans le lancer
- API
/api/torrent-client/categories- Récupère les catégories disponibles
Interface du modal
┌─────────────────────────────┐
│ 📥 Options de téléchargement │
├─────────────────────────────┤
│ Catégorie: [Films ▼] │
│ Dossier: [/downloads/films] │
│ ☐ Démarrer en pause │
│ [Annuler] [Envoyer] │
└─────────────────────────────┘
Support par client
| Option | qBittorrent | Transmission |
|---|---|---|
| Catégorie | ✅ | ❌ (non supporté) |
| Dossier | ✅ | ✅ |
| Pause | ✅ | ✅ |
[1.5.2] - 2025-12-27
🔧 Correction plugin qBittorrent
Corrigé
- Téléchargement local des .torrent - qBittorrent distant n'a pas accès aux URLs Jackett internes
- Détection des redirections magnet - Gère les URLs qui redirigent vers un magnet
- Gestion des erreurs améliorée - Meilleurs messages d'erreur
Plugin qBittorrent v1.2.0
- Télécharge les fichiers .torrent localement avant envoi
- Détecte les redirections HTTP vers magnet
- Vérifie le format bencode avant envoi
[1.5.1] - 2025-12-26
📱 Amélioration affichage mobile des modals
Corrigé
- Modal plein écran sur mobile (plus de scroll horizontal)
- Table des torrents responsive - affichage en cartes sur mobile
- Boutons d'action bien alignés et accessibles
- Labels visibles pour chaque donnée (Tracker, Taille, Seeds, Date)
Changements CSS
- Modal en plein écran sur mobile (100vh)
- Table transformée en liste de cartes
- Boutons d'action avec flex-wrap
- Suppression du min-width qui causait le scroll
[1.5.0] - 2025-12-26
📱 Progressive Web App (PWA)
Ajouté
- Manifest PWA - L'application est maintenant installable
- Service Worker - Cache des assets pour un chargement rapide
- Icônes - 8 tailles d'icônes (72x72 à 512x512)
- Support iOS - Meta tags pour Apple mobile web app
- Raccourcis - Accès rapide à Recherche et Nouveautés
Fonctionnalités PWA
- 📱 Installable sur mobile (Android/iOS) et desktop
- 🖥️ Mode standalone - Plein écran sans barre de navigateur
- ⚡ Cache intelligent - Assets statiques mis en cache
- 🎨 Thème - Couleur #e63946 (rouge Lycostorrent)
Comment installer
- Android : Menu Chrome → "Ajouter à l'écran d'accueil"
- iOS : Safari → Partager → "Sur l'écran d'accueil"
- Desktop : Icône d'installation dans la barre d'adresse
Fichiers ajoutés
app/static/
├── manifest.json # Configuration PWA
├── sw.js # Service Worker
└── icons/ # Icônes PNG
├── icon-72x72.png
├── icon-96x96.png
├── icon-128x128.png
├── icon-144x144.png
├── icon-152x152.png
├── icon-192x192.png
├── icon-384x384.png
└── icon-512x512.png
[1.4.1] - 2025-12-26
📥 Bouton "Envoyer au client torrent"
Ajouté
- Bouton 📥 sur chaque résultat de recherche
- Bouton 📥 sur chaque torrent dans les nouveautés
- Notification toast de succès/erreur
- Support HTTP Basic Auth pour les seedbox (reverse proxy)
Fonctionnement
- Le bouton n'apparaît que si un client torrent est configuré et connecté
- Clique sur 📥 → envoie le magnet/torrent au client
- Feedback visuel : ⏳ → ✅ ou ❌
Technique
checkTorrentClient()vérifie le statut au chargementsendToTorrentClient(url, button)envoie via l'API- Plugin qBittorrent v1.1.0 avec support HTTP Basic Auth
[1.4.0] - 2025-12-26
⬇️ Système de plugins Client Torrent
Ajouté
- Architecture de plugins pour les clients torrent
- Plugin qBittorrent inclus et fonctionnel
- Onglet "Client Torrent" dans l'administration
- Configuration via interface web :
- Sélection du plugin
- Host, port, utilisateur, mot de passe
- Option SSL
- Test de connexion
- API endpoints :
GET /api/admin/torrent-client/plugins- Liste des pluginsGET /api/admin/torrent-client/config- Configuration actuellePOST /api/admin/torrent-client/config- Sauvegarder configPOST /api/admin/torrent-client/test- Tester connexionPOST /api/torrent-client/add- Envoyer un torrentGET /api/torrent-client/status- Statut du client
Structure des plugins
app/plugins/torrent_clients/
├── __init__.py # Gestionnaire auto-découverte
├── base.py # Classe abstraite
├── qbittorrent.py # Plugin qBittorrent
└── README.md # Guide création plugins
Pour créer un nouveau plugin
- Créer un fichier
.pydansplugins/torrent_clients/ - Hériter de
TorrentClientPlugin - Implémenter les méthodes requises
- Définir
PLUGIN_CLASS = VotreClasse
Le plugin sera automatiquement détecté au démarrage.
[1.3.1] - 2025-12-26
🔧 RSS uniquement pour les Nouveautés
Modifié
- Les flux RSS n'apparaissent plus dans la page Recherche
- Les RSS sont maintenant uniquement disponibles dans la page Nouveautés
- Paramètre
?include_rss=truesur/api/trackerspour inclure les RSS
Technique
/api/trackers: par défaut sans RSS (pour la recherche)/api/trackers?include_rss=true: avec RSS (pour les nouveautés)
[1.3.0] - 2025-12-26
🔐 Système d'authentification
Ajouté
- Page de login avec nom d'utilisateur et mot de passe
- Protection de toutes les routes - authentification requise pour accéder au site
- Sessions persistantes - reste connecté 7 jours par défaut
- Bouton de déconnexion 🚪 dans la navigation
- Variables d'environnement pour configurer :
AUTH_USERNAME: nom d'utilisateur (défaut:admin)AUTH_PASSWORD: mot de passe (vide = pas d'auth requise)SESSION_LIFETIME: durée de session en secondes (défaut: 604800 = 7 jours)SECRET_KEY: clé secrète pour les sessions (auto-générée si non définie)
Technique
- Décorateur
@login_requiredsur toutes les routes principales - Sessions Flask sécurisées avec cookie permanent
- Redirection automatique vers
/loginsi non authentifié - Logs des connexions/déconnexions
Notes
- Si
AUTH_PASSWORDest vide ou non défini, l'authentification est désactivée - Compatible avec l'ancien système (ADMIN_PASSWORD toujours supporté)
[1.2.6] - 2024-12-25
🐛 Fix images placeholder
Corrigé
- Bug affichage SVG cassé : Les images placeholder utilisent maintenant du base64 au lieu de SVG inline
- Plus de problèmes d'échappement de caractères dans les attributs HTML
- Les placeholders affichent une icône 🎵 pour la musique et 🎬 pour les films
[1.2.5] - 2024-12-25
🎵 Amélioration affichage Musique
Corrigé
- Bug affichage "No Album Art" en texte brut : l'image de fallback s'affiche maintenant correctement
- Utilisation de
sanitizeUrl()pour l'URL de la cover - Ajout d'un handler
onerrorsur l'image pour le fallback
Amélioré
- Affichage "ℹ️ Infos Last.fm non disponibles" quand l'album n'est pas trouvé sur Last.fm
- Tentative d'extraire artiste/album du titre du torrent si Last.fm ne trouve pas
- Style amélioré pour le placeholder de l'image album
[1.2.4] - 2024-12-25
🐛 Correction sauvegarde catégories
Corrigé
- La sauvegarde des catégories des trackers fonctionne à nouveau !
- Le format des données envoyées par le JavaScript était incorrect
- La fonction de sauvegarde fusionne maintenant correctement avec la config existante
Technique
admin.js: Envoi de{ config: { tracker, categories } }au lieu de{ tracker, categories }main.py: La route POST/api/admin/latest-configfusionne les données au lieu d'écraser tout le fichier
[1.2.3] - 2024-12-25
🔄 Rechargement automatique des filtres
Corrigé
- Plus besoin de redémarrer Docker ! Le parser détecte automatiquement les modifications du fichier
filters_config.json - Les nouveaux filtres sont appliqués immédiatement à la prochaine recherche
Technique
- Le parser vérifie la date de modification du fichier config avant chaque parsing
- Si le fichier a changé, il recharge automatiquement la configuration
- Log "🔄 Config des filtres modifiée, rechargement..." dans les logs quand ça se produit
[1.2.2] - 2024-12-25
🔄 Filtres dynamiques dans la recherche
Corrigé
- Les filtres personnalisés apparaissent maintenant dans la recherche !
- La page de recherche charge dynamiquement les filtres depuis l'API
- Plus besoin de modifier le code JS pour ajouter de nouveaux filtres
Ajouté
- Route publique
/api/filterspour charger la config des filtres - Les filtres créés dans Admin → Filtres sont immédiatement disponibles dans la recherche
Technique
FILTER_CONFIGdans search.js est maintenant dynamique (chargé au démarrage)- Fallback sur une config minimale si l'API ne répond pas
[1.2.1] - 2024-12-25
🎮 Plus de catégories de filtres
Ajouté
- Nouveaux filtres par défaut :
- 🎮 Plateforme : PC, Windows, Linux, Mac, PS5, PS4, Xbox, Switch, Steam, GOG...
- 💻 Type Logiciel : Portable, Repack, ISO, Setup, Crack, Patch, x64, x86...
- 📚 Format Ebook : EPUB, PDF, MOBI, CBR, CBZ, DJVU...
- 📖 Type Ebook : Roman, BD, Comics, Manga, Magazine, Audiobook...
- 🕹️ Type Jeu : RPG, FPS, Action, Adventure, Strategy, Simulation...
Amélioré
- Ajout de filtre simplifié : plus besoin de connaître le nom technique, juste le nom et l'emoji
- Interface plus intuitive pour créer de nouveaux filtres
[1.2.0] - 2024-12-25
🎛️ Gestion dynamique des filtres
Ajouté
- Nouvel onglet "Filtres" dans le panneau d'administration
- Éditeur de filtres : ajouter, modifier, supprimer des filtres
- Configuration des valeurs : définir les mots-clés à détecter pour chaque filtre
- Test de détection : tester un titre pour voir les filtres détectés
- Fichier JSON :
config/filters_config.jsonpour persister la configuration - API endpoints :
GET /api/admin/filters- Récupérer la configPOST /api/admin/filters- Sauvegarder la configPOST /api/admin/filters/reset- RéinitialiserPOST /api/admin/filters/test- Tester un titre
Modifié
- torrent_parser.py : charge les filtres depuis le JSON au lieu du code en dur
- Le parser se recharge automatiquement après sauvegarde
Technique
- Patterns regex construits dynamiquement à partir de la config
- Singleton pattern pour le parser avec reload
[1.1.2] - 2024-12-25
🎵 Filtres Musique
Ajouté
- Nouveaux filtres pour la musique dans la recherche :
- Format Audio : FLAC, MP3, AAC, Lossless, 320, V0, 24bit...
- Type : Album, Single, EP, Live, Concert, Discography, Soundtrack...
- Source Audio : CD, Vinyl, WEB, SACD...
Modifié
- Parser de titres enrichi pour détecter les métadonnées musicales
[1.1.1] - 2024-12-25
🎨 Amélioration interface Recherche
Modifié
- Sélecteur de trackers : nouveau design identique à la page Nouveautés
- Panneau dépliable "🔧 Sélectionner les trackers"
- Boutons "Tout sélectionner" / "Tout désélectionner"
- Filtres masquables : bouton ▼/▶ pour afficher/masquer les filtres
- Uniformisation du style entre les pages Recherche et Nouveautés
[1.1.0] - 2024-12-25
✨ Nouveau panneau d'administration unifié
Ajouté
- Page
/adminunifiée avec 3 onglets (Catégories, Tags, RSS) - Design moderne avec onglets animés
- Toast notifications pour les actions
- Section aide repliable pour RSS
- Route
/api/admin/parsing-tags/resetpour réinitialiser les tags
Modifié
- Navigation simplifiée : 3 liens au lieu de 5
- CSS admin refait : design cohérent et moderne
- Interface responsive améliorée pour mobile
Sécurité (v1.1.0)
- Headers HTTP de sécurité (X-Content-Type-Options, X-Frame-Options, etc.)
- Validation renforcée des entrées (longueur, nombre de trackers)
- Protection XSS avec
sanitizeUrl()etescapeHtml() - Protection SSRF dans les flux RSS (validation des URLs)
- Blocage des URLs locales (localhost, 127.0.0.1)
Technique
- Export
DEFAULT_PARSING_TAGSdans tmdb_api.py - Route alternative
/api/admin/tracker-categories?tracker=xxx
[1.0.0] - 2024-12-25
🎉 Version initiale stable
Fonctionnalités principales
- Recherche multi-trackers via Jackett et Prowlarr
- Page Nouveautés avec enrichissement TMDb (films/séries) et Last.fm (musique)
- Parsing intelligent des titres de torrents (qualité, codec, langue, HDR, etc.)
- Interface responsive adaptée aux smartphones
- Filtres dynamiques côté client (qualité, source, langue, tracker)
- Tri et pagination des résultats
Sources supportées
- Jackett (indexers configurés)
- Prowlarr (indexers configurés)
- Flux RSS génériques (avec support Flaresolverr + cookies)
Administration
/admin/latest- Configuration des catégories par tracker/admin/parsing- Gestion des tags de nettoyage des titres/admin/rss- Gestion des flux RSS
Intégrations
- TMDb API - Métadonnées films/séries
- Last.fm API - Métadonnées musique
- Flaresolverr - Bypass Cloudflare pour RSS
Versioning
- MAJOR (X.0.0) : Changements incompatibles, refonte majeure
- MINOR (0.X.0) : Nouvelles fonctionnalités rétrocompatibles
- PATCH (0.0.X) : Corrections de bugs, sécurité