Skip to content

Post Info Files fr

Hydro74000 edited this page Aug 22, 2026 · 19 revisions
ngPost

Fiches de post

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 ?

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.

En 3 minutes

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.txt

4. 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.test

Voilà toute l'idée. Le reste de cette page n'est que du détail.

Où poser le modèle

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.conf est compris depuis le dossier de ce fichier de configuration : ma_fiche.txt veut 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.

Choisir le modèle dans l'interface

À 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.

Les deux moitiés de la fenêtre

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.

Les trois réglages

Clé Exemple Ce que ça fait
POST_INFO_TEMPLATE ma_fiche.txt votre modèle. Vide (par défaut) = fonctionnalité désactivée
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__.txt

POST_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.

Toutes les variables

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.

Noms et chemins

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

Tailles

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

Compteurs et statut

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

Dates

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.

Les autres, avec un piège

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

Vos informations, et qui les voit

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, cochez Créer une fiche de post, puis 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.

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/--meta le publie en plus dans le nzb. --post_meta ne 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 mot de passe dans une fiche

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.

Un exemple complet

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 =Nature

Ce modèle est dans templates/post_info_baselien.txt des sources de ngPost.

Exporter la fiche d'un ancien post

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.txt

Une 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.

S'en servir depuis un script

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/api

Bon à 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+C interrompt toujours, et POST_CMD_TIMEOUT = 300 la 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, et POST_CMD_EXPOSE_PASSWORD = true le remet partout si vous en avez besoin ;
  • une valeur contenant des espaces ou des guillemets reste un seul argument.

Ça ne marche pas

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

Clone this wiki locally