-
Notifications
You must be signed in to change notification settings - Fork 0
Post Info Files fr
Langues : English | Français
À partir de la version 5.5. Tout ce que décrit cette page demande ngPost 5.5 ou plus récent ; les versions antérieures n'ont pas de fiches de post.
Sur cette page :
- C'est quoi une fiche de post ?
- En 3 minutes
- Où poser le modèle
- Les trois réglages
- Toutes les variables
- Vos informations, et qui les voit
- Le mot de passe dans une fiche
- Un exemple complet
- Exporter la fiche d'un ancien post
- S'en servir depuis un script
- Ça ne marche pas
Après chaque post, ngPost peut écrire un petit fichier texte à côté de votre
.nzb, décrivant ce que vous venez de poster : le nom, la taille, le nom de
l'archive, vos propres notes.
Certains index Usenet réclament ce genre de fiche pour référencer un post. ngPost ne connaît aucun format d'index. Vous lui donnez un modèle, il remplit les trous. Ainsi, si un index change son format, seul son modèle change, et personne d'autre n'est concerné.
C'est facultatif. Tant que vous ne renseignez pas POST_INFO_TEMPLATE,
aucun fichier n'est écrit, rien n'est demandé, rien ne change.
1. Copiez ceci dans un nouveau fichier texte appelé ma_fiche.txt :
date =__date__
nom =__originalName__
taille =__postSize__
archive =__rarName__
groupes =__groups__Tout ce qui est écrit __comme_ceci__ est une variable que ngPost remplace.
Tout le reste est écrit exactement comme vous l'avez tapé : texte et variables
se mélangent librement sur une même ligne :
commentaire =filmé par moi, __originalName__, posté dans __groups__Une ligne commençant par # en première colonne est un commentaire : elle
n'est pas écrite dans la fiche. Décalez-la d'une espace si vous voulez malgré
tout qu'elle soit écrite. Il n'y a rien d'autre à retenir comme échappement.
2. Posez ce fichier là où vous pouvez le lire. À côté de votre
ngPost.conf est le plus simple :
| Système | Dossier |
|---|---|
| Windows | %LOCALAPPDATA%\ngPost\ |
| Linux | ~/.config/ngPost/ |
| macOS | ~/Library/Application Support/ngPost/ |
3. Ajoutez ces deux lignes à votre ngPost.conf :
POST_INFO_TEMPLATE = ma_fiche.txt
POST_INFO_OUTPUT = __nzbDir__/__nzbName__.info.txt4. Postez quelque chose.
5. Regardez à côté de votre .nzb : un fichier .info.txt vous attend,
rempli :
date =2026-08-18
nom =Sauvegarde-Photos-2026.tar
taille =2505484398
archive =876EFID5Y22SH1CO5C7C
groupes =alt.binaries.testVoilà toute l'idée. Le reste de cette page n'est que du détail.
N'importe où. La seule chose qui compte est que ngPost puisse lire le modèle et écrire la fiche.
Si le modèle n'est pas dans le même dossier que votre
ngPost.conf, écrivez son chemin complet. Un simple nom de fichier dans la configuration veut dire « à côté du fichier de configuration », et nulle part ailleurs : ngPost n'ira pas le chercher.
- Un chemin absolu est utilisé tel quel :
/home/moi/modeles/ma_fiche.txt,C:\Users\moi\modeles\ma_fiche.txt. - Un chemin relatif écrit dans
ngPost.confest compris depuis le dossier de ce fichier de configuration :ma_fiche.txtveut dire « à côté de ma conf ». - Un chemin relatif donné en ligne de commande (
--post_info_template) est compris depuis le dossier où vous vous trouvez. - Le
~est remplacé par votre dossier personnel.
Utilisateurs d'AppImage : le dossier depuis lequel l'AppImage s'exécute n'est pas un endroit sur lequel compter. Posez votre modèle dans votre dossier de configuration ou dans votre dossier personnel.
Utilisateurs de Windows :
C:\Program Files\...est en lecture seule pour un utilisateur normal (UAC). N'y mettez ni votre modèle, ni surtout le fichier produit.
Le dossier templates/ des sources de ngPost contient des modèles prêts à
copier, mais ce dossier n'a rien de spécial : ce ne sont que des exemples.
À partir de la version 5.5, la fenêtre Informations du post… propose une liste de modèles plutôt qu'un chemin à saisir :
- le modèle de votre configuration (
POST_INFO_TEMPLATE) arrive en premier, marqué (default). Le laisser sélectionné signifie « ce que dit la configuration » : si vous changez la configuration plus tard, ce post suit ; - Choisir un fichier… ouvre un explorateur. Un modèle ouvert ainsi est ajouté à la liste et y reste jusqu'à la fermeture de ngPost : les posts suivants de la même soirée le retrouvent en un clic. Fermer ngPost l'oublie — c'est un confort, pas un réglage ;
- la petite ✕ à côté de la liste retire le modèle sélectionné de cette liste. Elle ne supprime pas le fichier, et ne peut pas retirer le modèle par défaut de la configuration ;
-
Utiliser ce modèle pour mes prochains posts écrit le modèle sélectionné
dans votre configuration, en
POST_INFO_TEMPLATE. Il devient alors le modèle par défaut, pour ce post et pour tous les suivants.
Le Post Auto propose les deux mêmes contrôles, à une différence près : ce que vous y réglez vaut pour tous les posts que ce lancement va créer, et non pour un seul.
La fenêtre contient deux choses différentes, et les garder séparées est tout l'intérêt :
Le modèle — le fichier, ligne par ligne. C'est le fichier lui-même. Une
ligne du tableau par ligne du fichier, dans son ordre : le nom à gauche du =,
le contenu à droite (du texte, des variables, ou les deux), et ce qui va
sortir. Les commentaires y figurent aussi, en gris et marqués (non écrit).
Vous pouvez modifier une ligne, en insérer une sous celle qui est sélectionnée,
ou en supprimer une — mais ces changements n'atteignent le disque que par
Enregistrer sous…, car le post lit le fichier, pas ce tableau. Si vous
sortez sans avoir enregistré, ngPost vous le dit plutôt que de vous montrer une
fiche et d'en écrire une autre.
Vos champs — les valeurs de ce post. Une ligne par __meta:nom__ que le
modèle utilise, où qu'il apparaisse — seul sur une ligne ou au milieu d'une
phrase. Ces valeurs appartiennent au post, jamais au modèle : elles ne sont
jamais écrites dans le fichier du dessus. Ajouter un champ crée à la fois la
valeur et la ligne qui l'écrit.
La troisième colonne est un aperçu vivant : tapez un titre et la ligne qui l'utilise se met à jour. Une valeur déjà connue au moment où vous préparez le post s'affiche telle qu'elle sortira ; une valeur qui n'existera qu'une fois le post terminé reste vide et indique rempli après le post. Et elle affiche le mot de passe si votre modèle l'écrit : cette colonne, c'est ce que le fichier contiendra, et l'y cacher serait un mensonge confortable.
Le bouton ? Que puis-je mettre dans un modèle liste toutes les variables que ngPost connaît, ce que chacune contient, et si elle existe avant ou après le post. Il est construit à partir de la même table que le moteur de rendu : il ne peut donc pas décrire une variable que ngPost ne gère pas.
| Clé | Exemple | Ce que ça fait |
|---|---|---|
POST_INFO_TEMPLATE |
ma_fiche.txt |
votre modèle. Vide (par défaut) = fonctionnalité désactivée. Le renseigner coche aussi Créer une fiche de post sur chaque onglet de post : vous choisissez une fois, et plus jamais |
POST_INFO_OUTPUT |
__nzbDir__/__nzbName__.info.txt |
où écrire la fiche. Les variables fonctionnent aussi ici, et un chemin relatif est compris depuis le dossier de votre fichier de configuration |
POST_INFO_ONLY_ON_SUCCESS |
true (défaut) |
pas de fiche pour un post échoué ou incomplet |
POST_INFO_OUTPUT accepte les mêmes variables que le modèle lui-même, ce qui
est bien pratique :
# à côté du nzb (le défaut)
POST_INFO_OUTPUT = __nzbDir__/__nzbName__.info.txt
# toutes les fiches ensemble, dans un dossier surveillé par votre index
POST_INFO_OUTPUT = /home/moi/index_inbox/__nzbName__.txt
# rangées par votre propre catégorie, les dossiers sont créés au besoin
POST_INFO_OUTPUT = /home/moi/fiches/__meta:categorie__/__nzbName__.txtPOST_INFO_ONLY_ON_SUCCESS est actif par défaut parce qu'un index qui importe
ces fichiers automatiquement n'a que faire d'une fiche décrivant un post cassé.
Ces trois réglages, et tous ceux des post-commandes, existent aussi en options
de ligne de commande (--post_info_template, --post_info_output,
--no_post_info_only_on_success…) : ngPost se pilote donc sans aucun fichier de
configuration. Voir Ligne de commande.
Ce qui n'est pas reconnu est laissé tel quel dans le fichier, et ngPost vous le signale dans le journal : une faute de frappe se voit, au lieu de passer inaperçue.
| Variable | Exemple | Signification |
|---|---|---|
__originalName__ |
Sauvegarde-Photos-2026.tar |
le nom de ce que vous avez demandé à poster |
__sourcePath__ |
/data/sauvegardes/Sauvegarde-Photos-2026.tar |
son chemin complet |
__originalPath__ |
/data/sauvegardes |
dossier des fichiers postés (conservé pour les anciens scripts) |
__nzbPath__ |
/data/nzb/Sauvegarde-Photos-2026.nzb |
le fichier nzb |
__nzbDir__ |
/data/nzb |
le dossier qui le contient |
__nzbName__ |
Sauvegarde-Photos-2026 |
son nom, sans .nzb
|
__nzbFileName__ |
Sauvegarde-Photos-2026.nzb |
son nom, avec .nzb
|
__rarName__ |
876EFID5Y22SH1CO5C7C |
le nom de l'archive — celui à rechercher sur Usenet |
| Variable | Exemple | ⚠ À lire |
|---|---|---|
__postSize__ |
2505484398 |
octets de l'archive et de sa parité, avant encodage yEnc. Un .nfo copié à côté des volumes rar n'est pas compté |
__postSizeHuman__ |
2.33 GB |
la même chose, lisible |
__sizeInByte__ |
2505484398 |
historique, inchangée pour les scripts existants. Préférez __postSize__ dans un nouveau modèle |
| Variable | Exemple | Signification |
|---|---|---|
__status__ |
success |
success, partial ou failed
|
__nbFiles__ |
42 |
fichiers postés |
__nbArticles__ |
3600 |
articles |
__nbArticlesPosted__ |
3600 |
articles passés |
__nbArticlesFailed__ |
0 |
articles en échec |
__avgSpeed__ |
12.5 MB/s |
vitesse moyenne |
__durationSec__ |
200 |
durée en secondes |
__postId__ |
42 |
identifiant dans la base d'historique |
__appVersion__ |
5.5 |
le ngPost qui a fait le post |
| Variable | Exemple | Signification |
|---|---|---|
__date__ |
2026-08-18 |
fin du post, heure locale |
__date:dd/MM/yyyy__ |
18/08/2026 |
la même, à votre format |
__dateStart__ |
2026-08-18 |
début du transfert |
__dateStart:HH:mm__ |
21:30 |
la même, à votre format |
Le format entre : et __ est un format de date Qt :
dd jour, MM mois, yyyy année, HH:mm:ss heure.
| Variable | ⚠ À lire |
|---|---|
__par2Pct__ |
redondance par2. Vide quand par2 est désactivé, même si un pourcentage est configuré, parce qu'il n'y a alors aucune parité à décrire |
__nzbPoster__ |
le posteur écrit dans le nzb. Avec l'obfuscation des articles, le From: réel de chaque article est aléatoire et différent : cette variable est le posteur déclaré, pas ceux-là |
__rarPass__ |
le mot de passe de l'archive. Voir plus bas |
__meta:<nom>__ |
une de vos propres informations, voir la section suivante |
__postInfoPath__ |
chemin de la fiche elle-même. Vide dans la fiche (elle n'existe pas encore), renseigné pour les post-commandes qui suivent |
__jsonPath__ |
fichier json temporaire décrivant tout le post, post-commandes uniquement, vide dans une fiche |
Votre fiche n'est pas obligée de ressembler à nom =valeur. Ce peut être un
document JSON ou XML, ce qu'un index doté d'une API web préfère recevoir.
Dites à ngPost lequel, de l'une de ces deux façons — une seule suffit :
-
nommez votre modèle
fiche.jsonoufiche.xml, ou -
écrivez
#!json(ou#!xml) sur une ligne à lui dans le modèle. C'est un commentaire, il n'apparaît donc jamais dans le fichier obtenu.
Les deux sont utiles. Nommer est plus court. Déclarer survit à un fichier
renommé ou partagé, et c'est la seule façon pour un modèle que vous gardez en
.txt. Quand un modèle fait les deux, la déclaration l'emporte — un modèle
peut donc porter n'importe quel nom et dire quand même ce qu'il produit.
#!json
{
"archive": "__rarName__",
"titre": "__meta:titre__",
"taille": "__postSize__"
}ngPost s'occupe alors des valeurs qu'il insère : un titre contenant un " ou
une & ne peut plus casser votre fichier. Il ne touche qu'aux valeurs : vos
accolades, vos balises et vos noms de champs restent exactement comme vous les
avez tapés.
Mettez des guillemets autour de vos nombres. Une valeur que ngPost n'a rien à remplir sort vide — un ancien post n'a pas de taille, et il n'y a pas de pourcentage par2 quand par2 est désactivé.
"taille": ,est du JSON cassé,"taille": ""non. Partez detemplates/post_info_json.txtet c'est déjà fait.
Un modèle qui ne dit rien est du texte simple, et rien n'y est modifié : vos
fiches nom =valeur continuent de fonctionner exactement comme avant.
YAML n'est pas géré, ni par le nom ni par une déclaration. Le guillemetage
d'une valeur YAML dépend de l'endroit où elle se trouve dans le document, et le
faire à moitié transformerait silencieusement yes, null ou 1.0 en un
booléen, un nul et un nombre au lieu de votre texte — un fichier qui s'ouvre
bien mais qui ne dit plus ce que vous aviez écrit.
Un titre, un lien vers un portail, une catégorie : ngPost ne peut pas les inventer, c'est vous qui les saisissez.
Dans l'interface : dans l'onglet de post, cliquez sur Informations du
post…. Chaque __meta:nom__ utilisé par votre modèle apparaît dans le tableau
Vos champs, en bas de la fenêtre, en attente d'une valeur : vous n'avez rien
à deviner ni à déclarer.
Créer une fiche de post est déjà cochée dès que POST_INFO_TEMPLATE est
renseigné dans votre configuration, sur chaque onglet et pour chaque post :
vous n'avez rien à cocher non plus. Décochez-la pour sauter la fiche d'un post
en particulier ; vider un onglet pour enfiler le suivant efface les valeurs que
vous aviez saisies, mais laisse la case tranquille.
En ligne de commande :
ngPost -i Rando-Mercantour-2026.mkv \\
--post_meta "titre=Randonnée au Mercantour, 2026" \\
--post_meta "categorie=Vidéo perso"Chaque ligne a une case Aussi dans le NZB, décochée par défaut. Un champ part toujours dans la fiche ; la case ne fait qu'ajouter une seconde destination :
| Fiche de post | Dans le nzb | |
|---|---|---|
| case décochée (défaut) | oui | non |
| case cochée | oui | oui |
Un nzb circule. Il est partagé, envoyé, parfois republié. Un lien vers un portail, une note privée ou un nom de client n'ont rien à y faire. C'est pourquoi rien n'est publié sans que vous le disiez.
En ligne de commande la règle est la même : les deux écrivent le champ dans la fiche, et
-m/--metale publie en plus dans le nzb.--post_metane le publie jamais.
Une information que vous n'avez pas remplie donne une valeur vide. C'est normal, ce n'est pas une erreur : un modèle s'écrit une fois et sert à tous vos posts.
Le modèle générique livré avec ngPost n'écrit pas le mot de passe. Ajouter
mot de passe =__rarPass__ à votre modèle est un choix délibéré, car le fichier
devient alors aussi sensible que le mot de passe lui-même.
Quand ngPost écrit une fiche contenant le mot de passe :
- Sous Linux et macOS, le fichier est créé lisible par vous seul, et les droits sont posés avant le premier octet écrit : il n'est donc jamais exposé, même brièvement.
- Sous Windows, le fichier hérite des droits de son dossier. ngPost vous avertit dans le journal ; rangez ce genre de fichier dans un dossier que vous seul pouvez lire.
À l'export de la fiche d'un ancien post, ngPost demande avant d'inclure le mot de passe, et seulement si le modèle le réclame effectivement.
Reproduire la fiche d'un index, ici Baselien.
Le modèle (baselien.txt) :
date =__date:dd/MM/yyyy__
nom du post =__originalName__
taille post =__postSize__
mot de passe =__rarPass__
nom a rechercher =__rarName__
posteur =__nzbPoster__
groupe =__groups__
pourcent =__par2Pct__
portail1 =__meta:portail1__
titre =__meta:titre__
categorie =__meta:categorie__
qualite =__meta:qualite__
genre =__meta:genre__Ce que vous saisissez dans l'onglet de post :
| Nom | Valeur | NZB |
|---|---|---|
portail1 |
https://example.org/mes-albums/mercantour-2026 |
☐ |
titre |
Randonnée au Mercantour, 2026 |
☐ |
categorie |
Vidéo perso |
☐ |
qualite |
1080p |
☐ |
genre |
Nature |
☐ |
Ce que vous obtenez, à côté de votre nzb :
date =15/08/2026
nom du post =Rando-Mercantour-2026.mkv
taille post =2505484398
mot de passe =nHkPz2wQr
nom a rechercher =876EFID5Y22SH1CO5C7C
posteur =h0wsef7@8xw81s.r7
groupe =alt.binaries.test
pourcent =8
portail1 =https://example.org/mes-albums/mercantour-2026
titre =Randonnée au Mercantour, 2026
categorie =Vidéo perso
qualite =1080p
genre =NatureCe modèle est dans templates/post_info_baselien.txt des sources de ngPost.
Les posts déjà dans votre historique peuvent eux aussi produire leur fiche.
Dans l'interface : onglet Historique, sélectionnez un post, puis Exporter la fiche… (également dans le menu clic droit).
En ligne de commande :
# dans un fichier
ngPost --export_post_info 42 --post_info_template ma_fiche.txt -o fiche.txt
# sur la sortie standard, pour la rediriger
ngPost --export_post_info 42 --post_info_template ma_fiche.txtUne limite, annoncée franchement : pour les posts réalisés avant la version de ngPost qui a introduit cette fonctionnalité, le pourcentage par2, le nom source et vos propres informations n'ont jamais été enregistrés. Ces lignes ressortent vides, et ngPost vous le dit. Tout le reste (date, nom, taille, archive, mot de passe, groupes) est exact.
NZB_POST_CMD exécute une commande à la fin de chaque post. Les mêmes
variables y fonctionnent, et elles sont toutes disponibles en variables
d'environnement : un script peut donc être appelé sans le moindre argument.
NZB_POST_CMD = /home/moi/scripts/envoi_index.sh#!/bin/bash
# toutes les variables fixes de cette page sont là, en MAJUSCULES, préfixées NGPOST_
echo "posté : $NGPOST_ORIGINAL_NAME ($NGPOST_POST_SIZE octets)"
echo "nzb : $NGPOST_NZB_PATH"
echo "fiche : $NGPOST_POST_INFO_PATH"
# la date arrive en NGPOST_DATE / NGPOST_DATE_START (ISO) et NGPOST_DATE_EPOCH
echo "date : $NGPOST_DATE"
# vos informations sont dans un fichier json, clés intactes
python3 -c "import json,os; print(json.load(open(os.environ['NGPOST_JSON']))['meta'])"
curl -F "nzb=@$NGPOST_NZB_PATH" -F "fiche=@$NGPOST_POST_INFO_PATH" https://mon.index/apiBon à savoir :
- les commandes d'un post s'exécutent l'une après l'autre, dans l'ordre où vous les avez déclarées, et après l'envoi du nzb si vous en avez configuré un ;
- ngPost les attend avant de se terminer : une commande lancée tout à la fin d'un post n'est plus tuée en cours de route ;
- une commande qui échoue, plante ou ne démarre même pas est signalée dans le journal, avec son code de retour et sa sortie d'erreur ;
- le code de retour de ngPost n'est pas modifié par une commande en échec, sauf
si vous mettez
POST_CMD_FAIL_IS_ERROR = true; - une commande bloquée maintient ngPost en vie ;
Ctrl+Cinterrompt toujours, etPOST_CMD_TIMEOUT = 300la tue au bout de cinq minutes ; - le mot de passe de l'archive n'est pas mis dans l'environnement ni dans le
json.
__rarPass__en argument fonctionne toujours, etPOST_CMD_EXPOSE_PASSWORD = truele remet partout si vous en avez besoin ; - une valeur contenant des espaces ou des guillemets reste un seul argument.
| Ce que vous voyez | Ce qu'il faut regarder |
|---|---|
| aucun fichier |
POST_INFO_TEMPLATE est-il renseigné ? Le post est-il réussi ? Par défaut rien n'est écrit pour un post échoué (POST_INFO_ONLY_ON_SUCCESS) |
cannot read the template ... |
le chemin affiché dans le journal est celui que ngPost a essayé. Un chemin relatif dans la conf est cherché à côté de la conf |
cannot write ... |
le dossier de destination n'existe pas ou ne vous appartient pas. Program Files est le grand classique |
refusing to overwrite ... |
la destination est votre nzb, votre modèle, ou un de vos fichiers source. Changez POST_INFO_OUTPUT
|
une __variable__ est restée telle quelle |
faute de frappe dans le nom. Le journal liste celles qu'il n'a pas reconnues. Attention, la casse compte |
un %1 de mon texte est devenu un chemin |
%1 est l'alias historique du chemin du nzb, dans NZB_POST_CMD uniquement. Dans un modèle il est laissé tel quel, vérifiez que vous ne regardez pas une post-commande |
| une ligne est vide | normal pour un __meta:...__ non renseigné, et pour __par2Pct__ quand par2 est désactivé |
| les accents sont bizarres | le fichier est écrit en UTF-8. Dites-le à votre éditeur, ou à votre importateur |
| où est le journal ? | l'interface l'affiche dans le panneau du bas ; en ligne de commande il est sur la sortie, et LOG_IN_FILE = true l'écrit dans un fichier |
Start
Use ngPost
- Configuration
- ngPost.conf reference
- Command line usage
- History and resume
- Post info files (from version 5.5)
- VPN support
Project
Démarrer
Utiliser ngPost
- Configuration
- Référence ngPost.conf
- Ligne de commande
- Historique et reprise
- Fiches de post (à partir de la version 5.5)
- Support VPN
Projet