Skip to content

Post Info Files fr

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

Fiches de post

Langues : English | Français

À partir de la version 5.4.3. Tout ce que décrit cette page demande ngPost 5.4.3 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.

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.

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

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
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.0 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, dépliez Informations du post (optionnel) et ajoutez vos lignes. Le nom à gauche est ce que vous écrivez entre __meta: et __ dans votre modèle.

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 NZB, décochée par défaut :

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, --post_meta est privé et -m/--meta publie dans le nzb.

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