Templates de scoring¶
Un template de scoring est un profil JSON qui associe un poids entier à chaque Custom Format (CF). Quand un torrent est analysé, le moteur additionne les poids de tous les CFs qui matchent — le score final détermine le classement des résultats.
Quand un template est actif, il remplace entièrement les filtres globaux de l'application (langue, taille, qualité). Les filtres globaux ne servent de fallback que si aucun template n'est configuré.
Structure JSON complète¶
{
"slug": "mon-template",
"name": "Mon Template",
"description": "Un template personnalisé pour mes préférences",
"config": {
"scores": {
"vff": 500,
"vfi": 450,
"multi": 300,
"1080p": 200,
"remux-tier-01": 600,
"lq": -8000,
"cam": -10000
},
"constraints": {
"relegate_below": -5000,
"remove_below": null
},
"weights": {
"rtn_base": 0.0,
"cf_score": 1.0,
"language_bonus": 0.8
},
"language_prefs": {
"preferred_audio": ["fr", "multi"],
"preferred_subs": ["fr", "none"],
"must_have_french_audio": false
},
"size_rules": [
{ "source": "remux", "resolution": null, "min_gb": 20, "max_gb": 60, "behavior": "remove" },
{ "source": "bluray", "resolution": null, "min_gb": 10, "max_gb": 50, "behavior": "remove" },
{ "source": "web-dl", "resolution": "2160p", "min_gb": 8, "max_gb": 30, "behavior": "remove" },
{ "source": "web-dl", "resolution": null, "min_gb": 5, "max_gb": 20, "behavior": "remove" },
{ "source": "webrip", "resolution": null, "min_gb": 2, "max_gb": 15, "behavior": "remove" },
{ "source": "default","resolution": null, "min_gb": null,"max_gb": null,"behavior": "remove" }
]
}
}
Référence des champs¶
scores (obligatoire)¶
Dictionnaire {slug_ou_trash_id → poids}. Chaque clé peut être :
- Un slug de CF (recommandé) :
vff,2160p,remux-tier-01 - Un
trash_idbrut :404c08fd0bd67f39b4d8e5709319094e
Le moteur calcule un cf_raw_score = somme des poids des CFs qui matchent le torrent.
constraints¶
| Champ | Type | Défaut | Description |
|---|---|---|---|
relegate_below |
int |
-10000 |
Torrents avec score < relegate_below → relégués en fin de liste (visibles, mais après les autres) |
remove_below |
int\|null |
null |
Torrents avec score < remove_below → retirés définitivement de la liste. null = désactivé |
Reléguer vs Supprimer
relegate_below: le torrent reste visible, en dernier. L'utilisateur peut le choisir manuellement.remove_below: le torrent disparaît complètement. À utiliser pour les releases absolument indésirables (CAM, TS).
Rétrocompatibilité
L'ancien champ ban_below (à la racine de config ou dans constraints) est toujours lu et mappé vers relegate_below automatiquement.
weights¶
Multiplicateurs appliqués à chaque composante du score final :
| Champ | Type | Défaut | Composante |
|---|---|---|---|
rtn_base |
float |
0.0 |
rtn_score = source_id × 100 (0–1000, qualité RTN : Remux=1000, BluRay=900…) |
cf_score |
float |
1.0 |
cf_raw = somme des poids CF matchés |
language_bonus |
float |
0.0 |
lang_score = bonus selon preferred_audio (voir ci-dessous) |
Valeurs par défaut (rtn_base=0, cf_score=1, language_bonus=0) → comportement identique à un template sans weights : seul le CF score compte.
Exemple — donner un bonus langue de ~800 pts :
Aveclanguage_bonus=0.8, un torrent dont l'audio correspond à preferred_audio[0] reçoit 0.8 × 1000 = +800 pts.
language_prefs¶
Préférences de langue utilisées pour calculer le lang_score et filtrer les torrents.
| Champ | Type | Description |
|---|---|---|
preferred_audio |
list[str] |
Langues audio par ordre de préférence. Premier match = score plein, deuxième = moitié, etc. |
preferred_subs |
list[str] |
Langues de sous-titres préférées (informatif, non encore scoré) |
must_have_french_audio |
bool |
Si true : les torrents sans langue fr sont retirés de la liste |
Calcul du lang_score :
| Match | Score |
|---|---|
preferred_audio[0] |
+1000 |
preferred_audio[1] |
+500 |
preferred_audio[2] |
+250 |
| Aucun match | 0 |
Remplacement du filtre langue global
Quand un template est actif, language_prefs remplace le filtre de langue global de l'application. Si language_prefs n'est pas défini dans le template, aucun filtrage de langue n'est appliqué (le template gère la langue via les scores CF).
size_rules¶
Liste de règles de taille par source et résolution, évaluées dans l'ordre (première règle qui matche gagne).
"size_rules": [
{ "source": "remux", "resolution": null, "min_gb": 20, "max_gb": 60, "behavior": "remove" },
{ "source": "web-dl", "resolution": "2160p", "min_gb": 8, "max_gb": 30, "behavior": "remove" },
{ "source": "web-dl", "resolution": null, "min_gb": 5, "max_gb": 20, "behavior": "remove" },
{ "source": "default","resolution": null, "min_gb": null,"max_gb": null,"behavior": "remove" }
]
| Champ | Valeurs | Description |
|---|---|---|
source |
remux, bluray, web-dl, webrip, hdtv, dvd, cam, default |
Source qualité RTN. default = fallback si aucune autre règle ne matche |
resolution |
"2160p", "1080p", "720p", "480p", null |
Résolution ciblée. null = toute résolution |
min_gb |
float\|null |
Taille minimum en Go. null = pas de borne basse |
max_gb |
float\|null |
Taille maximum en Go. null = pas de borne haute |
behavior |
"remove", "relegate" |
remove = torrent retiré de la liste ; relegate = torrent relégué en fin de liste |
Sources disponibles (Radarr IDs) :
source |
Source ID | Qualité reconnue |
|---|---|---|
remux |
10 | Remux, REMUX, BluRay REMUX |
bluray |
9 | BluRay, Blu-ray, BDRip, BRRip |
web-dl |
7 | WEB-DL, WebDL, WEB |
webrip |
8 | WEBRip, WebRip |
hdtv |
6 | HDTV |
dvd |
5 | DVD, DVDRip |
cam |
1–4 | CAM, TS, TC, Telecine |
Remplacement du filtre taille global
Quand un template est actif, size_rules remplace le filtre de taille global. Si aucune size_rules n'est définie, aucun filtrage de taille n'est appliqué par le template.
Ordering des résultats (CF actif)¶
Quand un template est actif, l'ordre final des résultats Stremio suit cette hiérarchie :
- Non-relégué + Instant (debrid cached) — score le plus élevé en tête
- Relégué + Instant (debrid cached, mais sous
relegate_below) - Non-relégué + DL (à envoyer au debrid)
- Relégué + DL
Le contenu disponible instantanément est toujours prioritaire sur le contenu à télécharger, quel que soit son statut de relégation.
Les clés scores — slugs et alias¶
Chaque clé du dictionnaire scores peut être :
- Un slug de CF (recommandé) :
vff,2160p,remux-tier-01 - Un
trash_idbrut :404c08fd0bd67f39b4d8e5709319094e - Un alias interne :
bluray-tier-01→ résolu versuhd-bluray-tier-01
Slugs vs trash_ids
Utilisez toujours les slugs dans vos templates personnalisés. Ils sont lisibles, stables, et le sync les résout automatiquement.
Alias de slugs¶
| Alias écrit | Résolu vers |
|---|---|
fr-scene-groups |
french-scene |
french-lq-groups |
french-lq |
low-quality-groups |
lq |
hq-release-groups |
mainframe |
hq-audio |
dts-hd-ma |
hdr10 |
hdr |
hdr10plus |
hdr10plus-boost |
dolby-vision |
dv-boost |
atmos |
truehd-atmos |
bluray-tier-01 |
uhd-bluray-tier-01 |
bluray-tier-02 |
uhd-bluray-tier-02 |
Templates système¶
Les templates système sont importés depuis le dépôt miroir. Ils sont protégés et mis à jour automatiquement à chaque sync.
| Slug | Nom | Langue | Résolution |
|---|---|---|---|
vff-vfi-hd |
VFF/VFI HD | VFF/VFI | 1080p |
vff-vfi-uhd |
VFF/VFI UHD | VFF/VFI | 2160p |
vff-vfi-web |
VFF/VFI WEB Compact | VFF/VFI | 1080p WEB |
vff-vfi-uhd-web |
VFF/VFI UHD WEB | VFF/VFI | 2160p WEB |
multi-hd |
MULTi HD | MULTi | 1080p |
multi-uhd |
MULTi UHD | MULTi | 2160p HDR |
vostfr-hd |
VOSTFR HD | VOSTFR | 1080p |
remux-cinephile |
Remux Cinéphile | Toutes | Remux |
anime-vf |
Animé VF | VFF/VFI/VOSTFR | Variable |
anime-multi |
Animé MULTi | MULTi/Dual | Variable |
Cloner pour personnaliser
Les templates système sont en lecture seule. Pour les modifier : TRaSH → Templates → Cloner.
Guide : créer un template personnalisé¶
Étape 1 — Cloner un template de base¶
- Allez dans l'admin :
/admin/quality/templates - Trouvez le template le plus proche de vos besoins
- Cliquez Cloner — cela crée une copie
source = userjamais écrasée par la sync
Étape 2 — Configurer les scores et contraintes¶
{
"scores": {
"vff": 500, "vfi": 450, "multi": 300, "vostfr": 100,
"1080p": 200, "2160p": 300,
"remux-tier-01": 600, "web-tier-01": 400,
"lq": -8000, "cam": -10000
},
"constraints": {
"relegate_below": -5000,
"remove_below": null
}
}
Étape 3 — Ajouter langue et taille (optionnel)¶
{
"weights": { "rtn_base": 0.0, "cf_score": 1.0, "language_bonus": 0.8 },
"language_prefs": {
"preferred_audio": ["fr", "multi"],
"must_have_french_audio": false
},
"size_rules": [
{ "source": "remux", "resolution": null, "min_gb": 20, "max_gb": 60, "behavior": "remove" },
{ "source": "web-dl", "resolution": null, "min_gb": 5, "max_gb": 25, "behavior": "remove" }
]
}
Étape 4 — Tester¶
Utilisez le Testeur de CF pour vérifier le classement sur des titres réels.
Export et import¶
- Exporter : bouton Exporter JSON dans l'admin → fichier
.jsonau format du miroir - Importer : coller le JSON dans un nouveau template dans l'admin
- Partager : proposez une PR dans le dossier
templates/du dépôt miroir
Contribution au miroir¶
- Exportez votre template au format JSON
- Proposez une PR sur github.com/LimeHubs/streamfusion-trash-mirror
- Placez le fichier dans
templates/
Les templates communautaires sont reviewés avant intégration.