Files
Lycostorrent/CHANGELOG.md
2026-03-23 20:59:26 +01:00

30 KiB
Raw Blame History

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ésultats
  • app/static/js/latest.js - Logique de filtrage multiple
  • app/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/qbittorrent ne 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 path
  • app/plugins/torrent_clients/__init__.py - Parsing URL intelligent
  • app/main.py - Gestion port vide + path
  • app/templates/admin.html - Nouveau champ chemin
  • app/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ée
  • app/static/js/latest.js - Fonction displayResults avec filtre
  • app/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: 1 avec flex-wrap pour 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: block au lieu de flex pour les <td>
  • Labels - Affichage du data-label avec : 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és
  • POST /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) et L'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écouvrir
  • static/css/discover.css - Styles Découvrir
  • static/js/discover.js - Logique Découvrir
  • static/js/nav.js - Navigation dynamique

API ajoutées

  • GET /api/modules - Récupère les modules activés
  • GET /api/admin/modules - Config modules pour admin
  • POST /api/admin/modules - Sauvegarde modules
  • GET /api/discover/<category> - Liste TMDb par catégorie
  • GET /api/discover/detail/<type>/<id> - Détails TMDb
  • POST /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èmes
  • static/js/theme-loader.js - Chargement du thème au démarrage

Fichiers modifiés

  • templates/admin.html - Onglet Apparence
  • templates/index.html - Support des thèmes
  • templates/latest.html - Support des thèmes
  • templates/login.html - Support des thèmes
  • static/css/admin.css - Styles des cartes de thèmes
  • static/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 ThreadPoolExecutor avec 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/latest
  • indexer_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égorie
  • edit_category(name, path) - Modifie le chemin d'une catégorie
  • get_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 chargement
  • sendToTorrentClient(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 plugins
    • GET /api/admin/torrent-client/config - Configuration actuelle
    • POST /api/admin/torrent-client/config - Sauvegarder config
    • POST /api/admin/torrent-client/test - Tester connexion
    • POST /api/torrent-client/add - Envoyer un torrent
    • GET /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

  1. Créer un fichier .py dans plugins/torrent_clients/
  2. Hériter de TorrentClientPlugin
  3. Implémenter les méthodes requises
  4. 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=true sur /api/trackers pour 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_required sur toutes les routes principales
  • Sessions Flask sécurisées avec cookie permanent
  • Redirection automatique vers /login si non authentifié
  • Logs des connexions/déconnexions

Notes

  • Si AUTH_PASSWORD est 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 onerror sur 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-config fusionne 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/filters pour charger la config des filtres
  • Les filtres créés dans Admin → Filtres sont immédiatement disponibles dans la recherche

Technique

  • FILTER_CONFIG dans 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.json pour persister la configuration
  • API endpoints :
    • GET /api/admin/filters - Récupérer la config
    • POST /api/admin/filters - Sauvegarder la config
    • POST /api/admin/filters/reset - Réinitialiser
    • POST /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 /admin unifié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/reset pour 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() et escapeHtml()
  • Protection SSRF dans les flux RSS (validation des URLs)
  • Blocage des URLs locales (localhost, 127.0.0.1)

Technique

  • Export DEFAULT_PARSING_TAGS dans 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é