Initial commit

This commit is contained in:
2026-03-23 20:59:26 +01:00
commit 16c95f747b
56 changed files with 21177 additions and 0 deletions

198
README.md Normal file
View File

@@ -0,0 +1,198 @@
# 🐺 Lycostorrent
**Version 1.0.0** | Interface de recherche de torrents multi-sources
![Version](https://img.shields.io/badge/version-1.0.0-blue)
![Python](https://img.shields.io/badge/python-3.11+-green)
![Docker](https://img.shields.io/badge/docker-ready-blue)
---
## 📋 Description
Lycostorrent est une interface web unifiée pour rechercher des torrents sur plusieurs sources :
- **Jackett** - Agrégateur d'indexers
- **Prowlarr** - Gestionnaire d'indexers
- **Flux RSS** - Sources personnalisées
L'application enrichit automatiquement les résultats avec les métadonnées de **TMDb** (films/séries) et **Last.fm** (musique).
---
## ✨ Fonctionnalités
### Recherche
- 🔍 Recherche multi-trackers simultanée
- 🏷️ Parsing intelligent des titres (qualité, codec, langue, HDR)
- 🔄 Filtres dynamiques côté client
- 📊 Tri par seeders, taille, date, nom
- 📱 Interface responsive (mobile-friendly)
### Nouveautés
- 🎬 Dernières sorties Films/Séries avec affiches TMDb
- 🎵 Dernières sorties Musique avec pochettes Last.fm
- 🎌 Catégorie Anime dédiée
- 📦 Regroupement intelligent des versions
### Administration
- ⚙️ Configuration des catégories par tracker
- 🏷️ Gestion des tags de parsing
- 📡 Gestion des flux RSS avec Flaresolverr
---
## 🚀 Installation
### Prérequis
- Docker & Docker Compose
- Jackett et/ou Prowlarr configurés
- Clés API : TMDb, Last.fm (optionnel)
### Docker Compose
```yaml
version: '3.8'
services:
lycostorrent:
build: .
container_name: lycostorrent
ports:
- "5555:5000"
environment:
# Sources (au moins une requise)
- JACKETT_URL=http://jackett:9117
- JACKETT_API_KEY=votre_api_key
- PROWLARR_URL=http://prowlarr:9696
- PROWLARR_API_KEY=votre_api_key
# Enrichissement (optionnel mais recommandé)
- TMDB_API_KEY=votre_api_key
- LASTFM_API_KEY=votre_api_key
# Flaresolverr pour RSS protégés (optionnel)
- FLARESOLVERR_URL=http://flaresolverr:8191
# Logs
- LOG_LEVEL=INFO
volumes:
- ./config:/app/config
- ./logs:/app/logs
restart: unless-stopped
```
### Lancement
```bash
docker-compose up -d
```
Accéder à : `http://votre-ip:5555`
---
## 📁 Structure
```
lycostorrent/
├── app/
│ ├── main.py # Application Flask
│ ├── config.py # Configuration
│ ├── indexer_manager.py # Gestion Jackett/Prowlarr
│ ├── jackett_api.py # API Jackett
│ ├── prowlarr_api.py # API Prowlarr
│ ├── tmdb_api.py # API TMDb
│ ├── lastfm_api.py # API Last.fm
│ ├── torrent_parser.py # Parsing des titres
│ ├── rss_source.py # Gestion flux RSS
│ ├── templates/ # Templates HTML
│ └── static/ # CSS, JS
├── config/ # Configuration persistante
├── logs/ # Logs applicatifs
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── VERSION
├── CHANGELOG.md
└── README.md
```
---
## 🔧 Configuration
### Variables d'environnement
| Variable | Requis | Description |
|----------|--------|-------------|
| `JACKETT_URL` | * | URL de Jackett |
| `JACKETT_API_KEY` | * | Clé API Jackett |
| `PROWLARR_URL` | * | URL de Prowlarr |
| `PROWLARR_API_KEY` | * | Clé API Prowlarr |
| `TMDB_API_KEY` | Non | Clé API TMDb (enrichissement) |
| `LASTFM_API_KEY` | Non | Clé API Last.fm (enrichissement) |
| `FLARESOLVERR_URL` | Non | URL Flaresolverr (RSS protégés) |
| `LOG_LEVEL` | Non | Niveau de log (INFO, DEBUG, WARNING) |
\* Au moins Jackett OU Prowlarr requis
### Obtenir les clés API
- **TMDb** : https://www.themoviedb.org/settings/api
- **Last.fm** : https://www.last.fm/api/account/create
---
## 📱 Pages
| Route | Description |
|-------|-------------|
| `/` | Page de recherche |
| `/latest` | Nouveautés (films, séries, anime, musique) |
| `/admin/latest` | Config catégories par tracker |
| `/admin/parsing` | Config tags de parsing |
| `/admin/rss` | Config flux RSS |
---
## 🔒 Sécurité
- ✅ Headers HTTP de sécurité
- ✅ Validation des entrées
- ✅ Protection XSS
- ✅ Protection SSRF
- ✅ Masquage des secrets
Voir [SECURITY_AUDIT.md](SECURITY_AUDIT.md) pour les détails.
---
## 📝 Changelog
Voir [CHANGELOG.md](CHANGELOG.md) pour l'historique des versions.
---
## 🐛 Dépannage
### Aucun tracker trouvé
- Vérifier les URLs et clés API
- Vérifier que Jackett/Prowlarr sont accessibles
### Pas d'enrichissement TMDb
- Vérifier la clé API TMDb
- Les logs montrent les erreurs de recherche
### RSS retourne 403
- Activer Flaresolverr
- Ajouter les cookies de session
---
## 📄 Licence
Projet personnel - Usage privé uniquement.
---
**Développé avec ❤️ et l'aide de Claude (Anthropic)**