Partenaire Amazon : Misère.

71 x served & 17 x viewed

J’en avais marre d’entendre dire que mes prix dans mes posts n’étaient pas à jours ! J’ai donc cherché et finalement le mieux pour avoir des prix à jours dans les articles c’est de devenir Partenaire de Amazon. Ensuite on a des iframes qui permettent d’avoir des prix sur les articles qui sont mis à jours. (Si vous avez une autre solution, je suis preneur)

Non je ne compte pas me faire de l’argent même si le blog me coûte de l’argent :

  • Nom de domaine : env. 12 Euros/TTC par an.
  • Hébergement chez PHPNET.ORG : env. 6 Euros/HT par mois.

Sans parler du temps !

Voici ma fortune sur les 30 derniers jours:

 

AMAZON : Ou le filtrage stupide des commentaires.

95 x served & 30 x viewed

Misère.

Amazon : Comment avoir un fichier Excel/Numbers ( format CSV ) des factures à partir des emails ? ( sous Mac )

242 x served & 98 x viewed

Après avoir demandé au support d’Amazon (très réactif sur Twitter) qui m’a envoyé vers ce lien : https://www.amazon.fr/gp/help/customer/display.html/ref=help_search_1-1?ie=UTF8&nodeId=202119330&qid=1521482623&sr=1-1 . Mais en fait ce lien n’est valable uniquement pour Amazon Business . Je me suis lancé dans la création d’un script …

Cette première version du script permet d’avoir (à 100%) :

  • La date.
  • La référence.
  • Le prix.

En fait dans mon fichier CSV j’ai mis :

  • compteur :compteur d’email : fiable à 100%
  • Fichier : lien vers l’email : fiable à 100%
  • De : envoyé par : fiable à 100% (c’est toujours  confirmation-commande@amazon.fr )
  • Date : date : fiable à 100%
  • Amazon RTE : le but était la recherche de la balise « X-AMAZON-RTE-VERSION:« 
  • Commande : Référence de la commande  : fiable à 100%
  • Document : le but était la recherche de la balise « X-SES-Outgoing: » . Pour plus d’information voir ici : https://docs.aws.amazon.com/fr_fr/ses/latest/DeveloperGuide/receiving-email-notifications-examples.html
  • Sequence : le but était la recherche de la balise « Feedback-ID:« .
  • Amazon Client Host : le but était la recherche de la balise « X-AMAZON-CLIENT-HOST:« .
  • Message ID : le but était la recherche de la balise « Message-ID:« .
  • Prix : prix total de la commande :  fiable à 100%
  • Cumul : non fiable
  • Version Total : version pour la découpage du total ( pour le debug )
  • Version Commande : version pour la découpage du total ( pour le debug )

Il ne faut pas tenir compte de la colonne cumul, car dans le fichier on trouve plusieurs fois une même commande (répétition des emails).

Comment utiliser le script ? Il suffit de faire un répertoire à la racine et de copier le script à l’intérieur. Ensuite le script recherche tous les emails dans Mail (sou Mac) qui sont relatifs à une commande. J’aurais pu faire le script en Perl ou Python, mais je préfère ne pas imposer d’installation de ses deux langages.

Voici le script (sans indentation … à cause du copier/coller sous WordPress):

#!/bin/bash
# ARIAS Frederic
# Version V1
compteur=1
erreur=0
Somme=0
NbLu=0

chercheFichier() {
 Rep="$1"
 for item in $Rep/*
 do [ -f "$item" ] 
 ext="${item##*.}"
 if [ "$ext" = "emlx" ] ; then
 De=`head -50 $item | grep "^X-Envelope-From:" | awk '{print $2 }' | head -1`
 if [ ! -n "$De" ] ;
 then
 De=`head -60 $item | grep "^From: " | awk -v FS="(<|>)" '{print $2}' | head -1`
 fi
 if [ ! -n "$De" ] ;
 then
 De=`head -60 $item | grep "^From: " | awk -v FS='("|")' '{print $2}' | head -1`
 fi
 NbLu=`expr $NbLu + 1`
 if [ "$De" == "confirmation-commande@amazon.fr" ] || [ "$De" == "confirmation-envoi@amazon.fr" ]
 then
 echo "Une nouvelle facture Amazon ? " 
 Business=`head -200 $item | grep "^X-AMAZON-RTE-VERSION:" | awk '{print $2}' | head -1`
 if [ ! -n "$Business" ] ;
 then
 Business='?'
 fi
 ClientHost=`head -200 $item | grep "^X-AMAZON-CLIENT-HOST:" | awk '{print $2}' | head -1`
 if [ ! -n "$ClientHost" ] ;
 then
 ClientHost='?'
 fi
 MessageID=`head -100 $item | grep "Message-ID: " | awk '{print $2}' | head -1`
 Date=`head -150 $item | grep "^Date:" | awk '{print $2 " " $3 " " $4 " " $5 " " $6}' | head -1`
 Document=`head -50 $item | grep "X-SES-Outgoing:" | awk '{print $2}' | head -1`
 Sequence=`head -50 $item | grep "Feedback-ID:" | awk '{print $2}' | head -1`
 Commande=`head -100 $item | grep "^Commande" | awk '{print $2}' | head -1`
 CommandeVersion=1
 if [ "$Commande" == "n=C2=B0" ] ;
 then
 Commande=`head -100 $item | grep "^Commande" | awk '{print "#" $3}' | head -1`
 CommandeVersion=2
 fi
 if [ ! -n "$Commande" ] ;
 then
 Commande=`head -100 $item | grep "D=C3=A9tails de votre commande n=C2=B0" | awk '{print "#" $6}' | head -1`
 CommandeVersion=3
 fi
 if [ ! -n "$Commande" ] ;
 then
 Commande=`head -100 $item | grep "tail de votre commande n" | awk '{print "#" $6}' | head -1`
 CommandeVersion=4
 fi
 if [ ! -n "$Commande" ] ;
 then
 Commande=`head -100 $item | grep "Commande Num=C3=A9ro de commande :=09=09=09" | awk '{print $5}' | sed 's/=09/ /g' | awk '{print "#" $2}' | head -1`
 CommandeVersion=5
 fi
 if [ ! -n "$Commande" ] ;
 then
 Commande=`head -100 $item | grep "N=C2=B0 de commande Amazon :" | awk '{print "#" $6}' | head -1`
 CommandeVersion=9
 fi
 if [ ! -n "$Commande" ] ;
 then
 Commande=`head -100 $item | grep "Num=C3=A9ro de commande :=09=09=09" | awk '{print $4}' | sed 's/=09/ /g' | awk '{print "#" $2}' | head -1`
 CommandeVersion=6
 fi
 if [ ! -n "$Commande" ] ;
 then
 Commande=`head -400 $item | grep "display-order-status" | sed 's/</ /g' | sed 's/>/ /g' | awk '{print "#" $3}' | head -1`
 CommandeVersion=7
 fi
 if [ ! -n "$Commande" ] ;
 then
 Commande=`head -300 $item | grep "history/view.html" | sed 's/</ /g' | sed 's/>/ /g' | awk '{print "#" $3}' | head -1 `
 CommandeVersion=8
 fi
 Total=`head -200 $item | grep "Montant total pour cet envoi :" | awk '{print $7}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=1
 if [ ! -n "$Total" ] ;
 then
 Total=`head -200 $item | grep "Montant total de la commande :" | awk '{print $8}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=2
 fi
 if [ "$Total" == "EUR" ] ;
 then
 Total=`head -200 $item | grep "Montant total de la commande :" | awk '{print $7}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=3
 fi
 if [ ! -n "$Total" ] ;
 then
 Total=`head -200 $item | grep "Montant total pour cet envoi :" | awk '{print $8}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=4
 fi
 if [ ! -n "$Total" ] ;
 then
 Total=`head -200 $item | grep "Total TTC :" | awk '{print $8}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=5
 fi
 if [ ! -n "$Total" ] ;
 then
 Total=`head -200 $item | grep "Total TTC :" | awk '{print $5}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=6
 fi
 if [ ! -n "$Total" ] ;
 then
 Total=`head -200 $item | grep "^Total :" | awk '{print $4}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=7
 fi
 if [ ! -n "$Total" ] ;
 then
 Total=`head -200 $item | grep "Total TTC:" | awk '{print $4}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=8
 fi
 if [ ! -n "$Total" ] ;
 then
 Total=`head -200 $item | grep "Montant total pour cette commande&nbsp;:EUR" | awk '{print $6}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=9
 fi
 if [ ! -n "$Total" ] ;
 then
 Total=`head -200 $item | grep '<td width="98%"><span class="small">' | awk '{print $4}' | sed 's/</ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=10
 fi
 if [ ! -n "$Total" ] ;
 then
 Total=`head -200 $item | grep '<b>Montant total de la commande:' | awk '{print $7}' | sed 's/</ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=11
 fi
 if [ ! -n "$Total" ] ;
 then
 Total=`head -200 $item | grep "Total :" | awk '{print $4}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1`
 TotalVersion=12
 fi
 if [ -n "$Commande" ] ;
 then
 if [ -n "$Total" ] ; 
 then
 Somme=`echo "scale=3; $Somme + $Total " | bc`
 fi 
 if [ ! -n "$Total" ] ;
 then
 echo "Source (Total err) : $item "
 fi
 echo "$compteur | $De | $Date | $Business | $Commande | $Document | $Sequence | $ClientHost | $MessageID | $Total | $Somme "
 echo "$compteur ; $item ; $De ; $Date ; $Business ; $Commande ; $Document ; $Sequence ; $ClientHost ; $MessageID ; $Total ; $Somme ; $TotalVersion ; $CommandeVersion " >> facture_amazon.csv
 compteur=`expr $compteur + 1`
 fi
 if [ ! -n "$Commande" ] ;
 then
 echo "Source : $item "
 erreur=`expr $erreur + 1`
 fi
 fi
 fi
 [ -d "$item" ] && chercheFichier "$item"
 done
}

echo "compteur ; Fichier ; De ; Date ; Amazon RTE Version ; Commande ; Document ; Sequence ; Amazon Client Host ; Message ID ; Prix ; Cumul ; Version Total ; Version Commande " > facture_amazon.csv

START=$(date +%s);

[ -d "../Library/Mail/" ] && chercheFichier "../Library/Mail/"

END=$(date +%s);
DIFF=`echo $((END-START)) | awk '{print int($1/60)":"int($1%60)}'`

echo "Fin du script : Lu : $NbLu / Bon : $compteur / Mauvais : $erreur / Temps : $DIFF ."

J’ai testé ce script sur mes emails et cela a bien fonctionné. Le nom du fichier CSV est facture_amazon.csv et il doit être dans le répertoire crée. J’ai compté 12 syntaxes différentes sur les emails de 2006 à 2018.

Pour connaitre le nombre de commande il faut faire (les commandes sont en double, ou en triple … car il y a répétition des emails) :

cat facture_amazon.csv | awk '{print $15}' | grep -v "Document" | sort -n | uniq -c | wc -l

Sinon avec Number/Excel vous pouvez le faire aussi.

A suivre.

P.S.: Si vous utilisez ce script, j’accepte d’avoir une bière en retour 😉 .