# Empecher RECAP si tirage FDJ non effectué.



## symbol (2 Août 2018)

Bonjour, 

C'est a chaque nouvelle situation qu'on s'apercoit d'un manque.

Le RECAP se lance parfaitement et fonctionne comme une horloge.

Cependant, aujourd'hui la FDJ n'a toujours pas publiée les résultats du tirage sur son site a 15h00.

Le RECAP se lancant automatiquement a 14h15, du coup, il a repris le tirage d'hier soir (qui est resté online de la veille) et l'a appliqué au prono pour ce midi :-(

J'aimerais que le script vérifie avant si les résultats (ou la date) online sont les mêmes (ou différents)
par rapport au dernier RECAP effectué.

En cas de résultat identique , le RECAP ne s'effectuerait pas (je le lancerais a la main plus tard).

Donc :
1) le script se lance, et assigne les données du tirage (date + N°) à la variable "winningNumbers" puis sauvegarde dans RESULTATS.txt
2) Le tirage précedent est stocké dans le fichier RESULTATS.txt (puisque chaque nouveau lancement du script efface les données précédentes)

J'aimerais une aide pour les commandes afin de comparer les N° (ou la date) lors du lancement du RECAP avec ceux stockés dans le fichier RESULTATS.txt

Si identique, arrêter le RECAP (ou le mettre en stand by pour 30 minutes, puis recommencer la comparaison)

Si quelqu'un a du temps et l'envie, pour me guider. 

Merci


Pour info :
Les données (date + N°) sont stockés dans le fichier RESULTATS.txt comme suit :

Mardi 31 juillet 2018 - Soir :
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
03 04 07 08 09 13 17 24 25 27 29 30 40 43 51 52 54 61 69 70
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

une correction a prendre en compte :

Je crois qu'il est plus simple de comparer la date du dernier tirage dans le fichier RESULTATS.txt avec la date qui est extrait de la page FDJ ( variable "affichagedate" ).
Si les 2 sont identiques, c'est donc que le tirage n'est pas encore effectué.

J'ai trouvé une base :

Code (Text):
if test "$1" == "1"
then
        echo $1
else
        echo "no"
fi

J'imagine qu'en modifiant selon le principe :

if "$affichagedate" == ICI_DATE_EXTRAITE_CONTENUE_DANS_FICHIER_RESULTATS.txt
then
mettre_en_attente
then
continuer_le_script
fi


Est-ce que ca semble correct dans le principe ?

merci

J'ai trouvé ca aussi qui semble indiquer que je suis sur la bonne voie :
if [ condition ]; then
do_run_this_due_to_true_condition
else
do_run_this_due_to_false_condition
fi


----------



## Membre supprimé 1129907 (2 Août 2018)

Je connais ça, la méthode que j’utilise c’est de stocker la date des dernières données récupérées dans un coin (fichier) et de comparer avec la nouvelle date.


----------



## symbol (2 Août 2018)

Surtout dans le cas présent, la date inclus la notion de "MIDI" et "SOIR".


----------



## symbol (2 Août 2018)

je vais essayer de me dépatouiller avec ca


----------



## symbol (2 Août 2018)

J'ai deja un fichier contenant les dates des derniers RECAP effectué (fichier LOGTIRAGE.txt)

ca se presente comme suit :
---------------------------------------------------------------------------------
RECAP executé Mercredi 01 août 2018 - Midi : 17:21 53
RECAP executé Mercredi 01 août 2018 - Soir : 21:15 00
RECAP executé Jeudi 02 août 2018 - Midi : 14:15 06
---------------------------------------------------------------------------------

Si je ne trompe pas, la variable contenant la date (et les N°) affichée dans le site de la FDJ est "affichagedate"


```
affichagedate=$(curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep -i '<div class="keno_numeros mb10 fl sprite-jeux-bg_resultat_keno">' | sed $'s/.*<h3 class="dateTirage mt20 fl">\(.*\)<span>&nbsp;-&nbsp;\(.*\)<\/span><\/h3>.*sprite-jeux-bg_resultat_keno">\(.*\)<\/div><br class="sp".*/\\1 - \\2 :\\\n\\3/' | sed 's/<p class="keno_num">/ /g' | sed 's/ \([0-9]\)<\/p>/ 0\1/g' | head -1)
```


La commande pour ecrire la date quand le RECAP est effectué

```
echo RECAP executé "${affichagedate}" "$date_actuelle" >> /Users/xxx/Desktop/KENODATA/LOGTIRAGE.txt
```


Je dirais que :
si DATE (dans fichier LOGTIRAGE.txt, 1ere ligne) est
identique a date affichée a la FDJ, alors attendre 30 mn puis reessayer
sinon
lancer le RECAP

Par contre maintenant, comment les mettre de facon a avoir un code qui fait ce que je demande ??    C'est toujours la meme question. Comment le faire ?


----------



## Membre supprimé 1129907 (2 Août 2018)

Pour récupérer les deux date du tirage de la fdj (tu peux rajouter un "head -1" pour n'avoir que la plus récente) :

```
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g'
```

Si je cherche une de ces dates dans un fichier "test" et de faire des actions suivant le cas :

```
if ! grep 'Jeudi 02 août 2018 - Soir' test
then
  echo date non trouvé, nouveau tirage
else
  echo date trouvé, pas de mise à jour ...
fi
```


----------



## symbol (3 Août 2018)

Merci de ta réponse

Voila ce que ca va donner :


```
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt

if ! grep 'Jeudi 02 août 2018 - Soir' LOGTIRAGEDUJOUR.txt   <-- je verrais apres pour comparer les dates
then
  echo date non trouvé, nouveau tirage  (j'imagine que si la condition est vraie alors le script continu ?)
else
  echo date trouvé, pas de mise à jour ... (la date est trouvée, donc je fais "pause 300". Apres la pause de 5 mn (300 sec), comment recommencer le test ?
fi
```


MAJ : je viens de trouver sur le net

```
while commande1
do
     commande2
     ...
done
```

Selon https://www.quennec.fr/trucs-astuces/systèmes/gnulinux/programmation-shell-sous-gnulinux/les-bases-de-la-programmation-shell/les-structures-de-contrôle/boucle-while
"La boucle *while *permet d'exécuter les commandes présentes entre le *do *et le *done *tant que la commande1 placée à droite du *while *retourne un code *vrai*."



Est-ce ca peut marcher ca ?

```
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt

while  ici commande pour comparer les 2 dates    (si date dans fichier LOGTIRAGEDUJOUR.txt est identique a la date contenue dans le fichier RESULTATS.txt (1ere ligne) )
do
pause 300
done
```


----------



## Membre supprimé 1129907 (3 Août 2018)

Tout à fait, il faudra penser à remettre le curl dans la boucle while.

Dans la condition du while, met « grep » si tu veux que la boucle soit s’il trouve le texte recherché. Le « ! grep » est pour que cela boucle tant qu’il n’est pas trouvé.
Pense éventuellement à faire stopper les script s’il y a trop de tentatives en échec...


----------



## symbol (3 Août 2018)

Donc j'en suis la :


```
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt

while  ! grep            #   (si date dans fichier LOGTIRAGEDUJOUR.txt est identique a la date contenue dans le fichier RESULTATS.txt (1ere ligne) )

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt

do

pause 300

done
```


Je regarde les commandes  "grep" sur internet pour comparer 2 elements

Quand je créé un fichier texte, ou je met des commandes, je me retrouve avec une erreur

```
Last login: Fri Aug  3 16:42:12 on console
iMac-de-xxx:~ xxx$ /Users/xxx/Desktop/atester.sh
-bash: /Users/xxx/Desktop/atester.sh: Permission denied
```
Quand je veux lancer le .sh dans le terminal :-/

MAJ : probleme réglé avec
sudo chmod 755 'filename'

MAJ #2

Pour lire le contenu de LOGTIRAGEDUJOUR.txt
je fais :

```
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt
var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`
echo $var
```

et ca m'affiche bien le contenu de LOGTIRAGEDUJOUR.txt (soit "Vendredi 03 août 2018 - Midi" )

reste plus qu'a voir si la variable "$var" est présente dans le fichier RESULTATS.txt


----------



## symbol (3 Août 2018)

@ecatomb

Est-ce ca parait correct stp ?


```
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt
var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`


while  ! grep "var"  /Users/xxx/Desktop/KENODATA/RESULTATS.txt

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt

var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`

do

sleep 300

done
```


----------



## Membre supprimé 1129907 (3 Août 2018)

Un point qui pourrait te servir, c'est de stocker le contenu de la page dans un fichier (exemple TIRAGEDUJOUR.html). Cela te permettra d'être certain d'extraire les données du bon fichier.
L'option "-q" pour le grep permet de l'avoir en silencieux, utile lors du test du while.
J'ai ajouté un compteur pour arrêter au bout de 10 essais

Cela donne donc ceci :


```
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' > /Users/xxx/Desktop/KENODATA/TIRAGEDUJOUR.html
var=$(grep "dateTirage" /Users/xxx/Desktop/KENODATA/TIRAGEDUJOUR.html | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1)

tentative=0
while  [ $tentative -lt 10 ] && ! grep -q "$var" /Users/xxx/Desktop/KENODATA/RESULTATS.txt
do

sleep 300
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' > /Users/xxx/Desktop/KENODATA/TIRAGEDUJOUR.html
var=$(grep "dateTirage" /Users/xxx/Desktop/KENODATA/TIRAGEDUJOUR.html | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1)
tentative=$((tentative + 1))

done

if [ $tentative -eq 10 ]
then
exit 1
fi

# Extraction des numéros :)
```


----------



## symbol (3 Août 2018)

Merci de ta réponse,

Je ne comprends pas bien pourquoi tu sauvegardes dans TIRAGEDUJOUR.html  alors que moi je sauvegarde dans TIRAGEDUJOUR.txt


----------



## Membre supprimé 1129907 (3 Août 2018)

Tu sauvegardais le résultat dans LOGTIRAGEDUJOUR.txt
Dans ma version, je sauvegarde la page html entière, il ne s'agit donc plus de log mais d'un fichier html ^^


----------



## symbol (3 Août 2018)

oui d'accord, mais quel est l'avantage ?

Ca a une importance de mettre html quand ca contient du html ?


----------



## Membre supprimé 1129907 (3 Août 2018)

Aucun, juste une habitude que j'ai ^^


----------



## symbol (3 Août 2018)

ok


----------



## symbol (3 Août 2018)

J'ai testé, ca ne fonctionne pas correctement.

Dans le fichier RESULTATS.txt j'ai changé "Vendredi 03 août 2018 - MIDI :"   par   "Vendredi 03 août 2018 - SOIR :"
le dernier tirage affiché sur la page FDJ est *"Vendredi 03 août 2018 - Midi"*


- J'ai lancé le script. 
- Le script devrait continuer, alors qu'il s'arrete tout meme 5 mn (bien que "Vendredi 03 août 2018 - MIDI :" soit different de "Vendredi 03 août 2018 - SOIR :"


----------



## Membre supprimé 1129907 (3 Août 2018)

Testé avec RESULTATS.txt contenant "Vendredi 03 août 2018 - SOIR" (cela boucle bien) ou "Vendredi 03 août 2018 - Midi" (cela va bien jusqu'à la fin).
Il faut d'ailleurs le modifier pour que ça fasse bien ce que tu veux en enlevant le "!" devant le grep car si on trouve le numéro, c'est que cela n'a pas été mis à jour. C'est corrigé dans la version ci-dessous dans laquelle j'ai rajouté des "echo" pour identifier le problème chez toi

```
#!/bin/bash

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt
var=$(grep "dateTirage" /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1)

tentative=0
while  [ $tentative -lt 10 ] && grep -q "$var" RESULTATS.txt
do

sleep 300
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt
var=$(grep "dateTirage" /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1)
tentative=$((tentative + 1))

echo $tentative

done

if [ $tentative -eq 10 ]
then
  exit 1
fi

echo "Extraction des numéros :)"
```


----------



## symbol (3 Août 2018)

merci 

Ca semble parfait.


----------



## Membre supprimé 1129907 (3 Août 2018)

N'oublie pas de stocker le contenu de la variable dans ton fichier "RESULTATS.txt" à la fin de ton scripts complet.

[Edit]Plutôt que de faire

```
sudo chmod 755 'filename'
```
fait un simple

```
chmod +x 'filename'
```

Pas besoin de passer via un sudo pour ajouter les droits d'execution à un script


----------



## symbol (4 Août 2018)

Pourquoi je ne peux pas lancer un script directement d'un fichier texte créé ?


----------



## symbol (4 Août 2018)

Je retourne a mon script

- Dans mon fichier LOGTIRAGEDUJOUR.txt c'est la date du dernier tirage qui figure sur le site de la FDJ (j'extrait la date, et la met dans LOGTIRAGEDUJOUR.txt )
- RESULTATS.txt c'est le fichier créé avec les résultats du dernier tirage

Bon, Comme tu le vois les dates sont identiques.













Maintenant je lance le script ci-dessous :


```
# en cas de retard d'affichage du nouveau tirage KENO sur le site de la FDJ, cette fonction s'assure que le script utilise bien un tirage jamais publié.
# Compare le tirage affiché sur le site de la FDJ au tirage deja présent dans le fichier RESULTATS.txt. Si le tirage est un nouveau tirage alors le script continu, sinon le script attends 5 mn (300 secondes) et recompare jusqu'a ce que le nouveau tirage soit mis a jour sur le site de la FDJ.

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt
var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`




while  grep "$var"  /Users/xxx/Desktop/KENODATA/RESULTATS.txt

do

echo TIRAGE IDENTIQUE : ATTENTE 5 MN [300 sec]
sleep 300

#curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt
var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`

done

echo OK TIRAGE DIFFERENT
```


ca m'affiche :

iMac-de-xxx:~ xxx$ /Users/xxx/Desktop/atester.sh
OK TIRAGE DIFFERENT

Alors que les dates sont identiques


----------



## symbol (4 Août 2018)

2eme posts (on peut pas mettre plus de 2 images !)

Ton script importe toute la page HTML de la FDJ.
As tu remarqué qu'ils annoncent la date du prochain tirage en bas de page ?





Du coup, ton script me renvoi
iMac-de-xxx:~ xxx$ /Users/xxx/Desktop/ATESTERECATOMB.sh
"Extraction des numéros "

C'est pas possible, j'ai deja le tirage d'hier dans les fichiers LOGTIRAGEDUJOUR.txt et RESULTATS.txt

Par contre, le fichier LOGTIRAGEDUJOUR.txt est en UTF-8 et RESULTATS.txt en UTF-16 (il doit etre en UTF16, sinon le forum n'affiche pas certains caracteres), est ce que le probleme ne vient pas la ?


Alors du coup j'ajoute au script la commande pour convertir de UTF8 vers UTF-16


```
# en cas de retard d'affichage du nouveau tirage KENO sur le site de la FDJ, cette fonction s'assure que le script utilise bien un tirage jamais publié.
# Compare le tirage affiché sur le site de la FDJ au tirage deja présent dans le fichier RESULTATS.txt. Si le tirage est un nouveau tirage alors le script continu, sinon le script attends 5 mn (300 secondes) et recompare jusqu'a ce que le nouveau tirage soit mis a jour sur le site de la FDJ.

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt
iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt" > "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR2.txt"
mv "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR2.txt" "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt"
var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`




while  grep "$var"  /Users/xxx/Desktop/KENODATA/RESULTATS.txt

do

echo TIRAGE IDENTIQUE : ATTENTE 5 MN [300 sec]
sleep 300

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt
iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt" > "/Users/xxx/Desktop/KENODATA//LOGTIRAGEDUJOUR2.txt"
mv "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR2.txt" "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt"
var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`

done

echo OK TIRAGE DIFFERENT
```

Je lance le truc, et j'ai :
iMac-de-xxx:~ xxx$ /Users/xxx/Desktop/atester.sh
grep: illegal byte sequence

ouhhhhhh c'est dur 

merci


----------



## zeltron54 (4 Août 2018)

Bonjour,
Si j'en crois tes copie d'écran
LOGTIRAGEDUJOUR  -->   Vendredi 03 août 2018 - Soir
RESULTATS  -->  Vendredi 03 août 2018 - Soir.:

le point et : en fin !  c'est pas la même chose


----------



## symbol (4 Août 2018)

exact


----------



## symbol (4 Août 2018)

donc je devrais ajouter " :" a la fin de la ligne "Jour Date Mois Année - Soir (ou Midi)"  qui se trouve dans LOGTIRAGEDUJOUR.txt, pour que la comparaisonn entre RESULTATS.txt et  LOGTIRAGEDUJOUR.txt puisse se faire correctement ?


----------



## Membre supprimé 1129907 (4 Août 2018)

zeltron54 a dit:


> Bonjour,
> Si j'en crois tes copie d'écran
> LOGTIRAGEDUJOUR  -->   Vendredi 03 août 2018 - Soir
> RESULTATS  -->  Vendredi 03 août 2018 - Soir.:
> ...


La fonction grep se fiche qu'il y ai des caractères en plus avant ou après ce qu'il cherche 



symbol a dit:


> 2eme posts (on peut pas mettre plus de 2 images !)
> 
> Ton script importe toute la page HTML de la FDJ.
> As tu remarqué qu'ils annoncent la date du prochain tirage en bas de page ?


Tant que ce n'est pas avant, aucun souci 

C'est pour vérifier ce genre de problème que je préfère stocker la source utilisée. Cela permet de faire des vérifications.
Il n'y a le mot "dateTirage" que pour les dates des tirages déjà effectués. Cela ne pose donc pas de problème et la date du prochain tirage ne sortira pas. Le cas pouvant poser problème serait un tirage exceptionnel comme le vendredi 13




symbol a dit:


> Du coup, ton script me renvoi
> iMac-de-xxx:~ xxx$ /Users/xxx/Desktop/ATESTERECATOMB.sh
> "Extraction des numéros "
> 
> ...


Bien vu, de mon côté je n'ai pas de problème mais le fichier LOGTIRAGEDUJOUR.txt est en UTF8

Teste ceci, le fichier "RESULTATS.txt" sera en UTF-8 donc la recherche fonctionnera avec et le "LOGTIRAGEDUJOUR.txt" lui sera en UTF16 pour ton forum. En prime, ça met à jour le "RESULTATS.txt" à chaque nouveau tirage.


```
var=`curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1`

while  grep "$var" RESULTATS.txt
do

echo TIRAGE IDENTIQUE : ATTENTE 5 MN [300 sec]
sleep 300
var=`curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1`

done

set -v
echo OK TIRAGE DIFFERENT
echo "$var" > RESULTATS.txt
iconv -f 'UTF-8' -t 'UTF-16' RESULTATS.txt > LOGTIRAGEDUJOUR.txt
```


----------



## symbol (4 Août 2018)

Je viens de tester , ca ne fonctionne pas comme prévu.

j'obtiens :
iMac-de-xxx:~ xxx$ /Users/xxx/Desktop/ATESTERECATOMB.sh
Vendredi 03 août 2018 - Soir
TIRAGE IDENTIQUE : ATTENTE 5 MN [300 sec]





LOGTIRAGEDUJOUR.txt contient :
"Vendredi 03 août 2018 - Soir"

RESULTATS.txt contient :
Vendredi 03 août 2018 - Midi :
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
09 12 16 20 23 25 35 36 37 43 46 47 51 57 59 63 64 67 69 70
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

ALEX X1 :  06 15 16 25 36 46 55...(16,25,36,46)...[4/7]▶  2 € X1       ★★ 2 € ★★
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄

RECAP du 03-08-2018 21:15:01 Toujours vérifier vos tickets en point FDJ
http://kenopronos.free-bb.eu  © Tous droits réservés


Note :
LOGTIRAGEDUJOUR.txt est toujours en UTF-8
RESULTATS.txt est en UTF-16


----------



## symbol (4 Août 2018)

Je retourne dans ma vertsion du script :


```
# en cas de retard d'affichage du nouveau tirage KENO sur le site de la FDJ, cette fonction s'assure que le script utilise bien un tirage jamais publié.
# Compare le tirage affiché sur le site de la FDJ au tirage deja présent dans le fichier RESULTATS.txt. Si le tirage est un nouveau tirage alors le script continu, sinon le script attends 5 mn (300 secondes) et recompare jusqu'a ce que le nouveau tirage soit mis a jour sur le site de la FDJ.

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt
sed 's/Midi/Midi :/g' /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR1.txt
sed 's/Soir/Soir :/g' /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR1.txt
iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR1.txt" > "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR2.txt"
mv "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR2.txt" "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt"
rm "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR1.txt"

var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`


while  grep "$var"  /Users/xxx/Desktop/KENODATA/RESULTATS.txt

do

echo TIRAGE IDENTIQUE : ATTENTE 5 MN [300 sec]
sleep 300

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt
sed 's/Midi/Midi :/g' /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR1.txt
sed 's/Soir/Soir :/g' /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR1.txt
iconv -f 'UTF-8' -t 'UTF-16' "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR1.txt" > "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR2.txt"
mv "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR2.txt" "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt"
rm "/Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR1.txt"

var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`

done

echo OK TIRAGE DIFFERENT
```


Maintenant les 2 fichiers LOGTIRAGEDUJOUR.txt et RESULTATS.txt sont en UTF-16
j'ai une erreur avec GREP

```
iMac-de-xxx:~ xxx$ /Users/xxx/Desktop/atester.sh
grep: illegal byte sequence
OK TIRAGE DIFFERENT
iMac-de-xxx:~ xxx$
```


----------



## symbol (4 Août 2018)

Concernant ton script (le dernier posté).

Si je change dans le fichier RESULTATS.txt "Vendredi 03 août 2018 - Soir :" par "Vendredi 03 août 2018 - Midi :"    et que le fichier LOGTIRAGEDUJOUR.txt contient "Vendredi 03 août 2018 - Soir :" , le script me dit

```
iMac-de-xxx:~ xxx$ /Users/xxx/Desktop/ATESTERECATOMB.sh
Vendredi 03 août 2018 - Soir
TIRAGE IDENTIQUE : ATTENTE 5 MN [300 sec]
```


Je met a dispo les 2 fichiers (LOGTIRAGEDUJOUR.txt  et  RESULTATS.txt)
https://workupload.com/file/pEDXfbx


----------



## Membre supprimé 1129907 (4 Août 2018)

symbol a dit:


> Je viens de tester , ca ne fonctionne pas comme prévu.
> 
> ...
> 
> ...


Donc c'est normal ...

Plutôt que de me faire chercher plein de fois 10min une solution à ton problème et tout détruire ensuite, peux-tu plutôt me dire ce que tu as et que tu veux avoir au final dans tes différents fichiers ?
Merci


----------



## symbol (4 Août 2018)

Repartons sur une bonne base .

Le script que m'as donné en dernier, est censé comparer 2 dates (l'une sur le site de la FDJ et l'autre qui se trouve dans un fichier texte RESULTATS.txt)


SI les dates sont identiques, alors le script attends 5 mn, recompare les dates.
Si les dates sont differentes, alors le script continu pour mettre a jour avec le nouveau tirage.

Voila pour ce que ca doit faire.

La réponse a la demande est ci-dessous.




```
var=`curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1`

while  grep "$var" RESULTATS.txt
do

echo TIRAGE IDENTIQUE : ATTENTE 5 MN [300 sec]
sleep 300

var=`curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1`

done

set -v
echo OK TIRAGE DIFFERENT
echo "$var" > RESULTATS.txt
iconv -f 'UTF-8' -t 'UTF-16' RESULTATS.txt > LOGTIRAGEDUJOUR.txt
```

Mais, le script n'arrive pas a remplir son role. Si les dates sont differentes / identiques, il ne fait pas la différence.

Ici se trouve mes fichiers LOGTIRAGEDUJOUR.txt & RESULTATS.txt avec lesquels je fais les tests 
https://workupload.com/file/pEDXfbx

Voila


----------



## symbol (4 Août 2018)

@ecatomb,

J'apprecie hautement ton aide, mais il ne faut pas que ce soit une corvée pour toi.
Je comprendrais très bien que tu ne souhaite intervenir sur le sujet


----------



## Membre supprimé 1129907 (4 Août 2018)

Désolé, mais mon script fait bien ça ...


----------



## symbol (4 Août 2018)

J'ai trouvé 

Je reencode le fichier RESULTATS.txt en UTF-8 (il etait en UTF-16), ce qui empechait un comparer les 2 entites correctement (LOGTIRAGEDUJOUR.txt etant en UTF-8 des le départ).

Il semblerait (ca reste a vérifier) bien que les 2 fichiers etaient en UTF-16 ca ne fonctionnait pas. La meme procedure en UTF-8 fonctionne.



```
# reencodage de /RESULTATS.txt en UTF-8 afin qu'il soit en meme format que LOGTIRAGEDUJOUR.txt
iconv -f 'UTF-16' -t 'UTF-8' "/Users/xxx/Desktop/KENODATA/RESULTATS.txt" > "/Users/xxx/Desktop/KENODATA/RESULTATSUTF_8.txt"


#curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt

var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`
echo $var

while   grep "$var" /Users/xxx/Desktop/KENODATA/RESULTATSUTF_8.txt

do

echo TIRAGE IDENTIQUE : ATTENTE 5 MN [300 sec]
sleep 300

#curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt

var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`

done

echo OK TIRAGE DIFFERENT
```


----------



## Membre supprimé 1129907 (4 Août 2018)

Bien joué


----------



## symbol (4 Août 2018)

Je verrais que ca donne en réel.
Si ca foire, je zapperai cette fonction.

Merci a tous.  




Fin du sujet.


----------



## symbol (6 Août 2018)

Ecatomb, je voudrais ton avis stp.

Le script en dessous fonctionne (on revient pas la dessus).

Mais (et je m'en suis apercu en l'utilisant) -> Quand le script se lance la toute premiere fois, il n'y a aucun fichier log, tirages, etc, ... le dossier est vide (sauf le fichier RESULTATS.txt présent mais vide).

Du coup, le script se lance, mais vu qu'il n'y aucune date précédente de stockée, aucune comparaison n'est possible, et semble t-il (si c'est le probleme), le script se met en boucle en m'affichant "TIRAGE IDENTIQUE : ATTENTE 5 MN [300 sec]".

Voudrais-tu ajouter la commande qui indique au script de continuer si le fichier ne contient aucune date.

merci




```
################################################################################################################################################################################
################ COMPARAISON DATE DU DERNIER TIRAGE AFFICHE A LA FDJ (LOGTIRAGEDUJOUR.txt) et le COMPARE AU DERNIER TIRAGE AFFICHE DANS LE FICHIER RESULTATS.txt #############
# en cas de retard d'affichage du nouveau tirage KENO sur le site de la FDJ, cette fonction s'assure que le script utilise bien un tirage jamais publié.
# Compare le tirage affiché sur le site de la FDJ au tirage deja présent dans le fichier RESULTATS.txt. Si le tirage est un nouveau tirage alors le script continu, sinon le script attends 5 mn (300 secondes) et recompare jusqu'a ce que le nouveau tirage soit mis a jour sur le site de la FDJ.
################################################################################################################################################################################

# vide le fichier texte RESULTATS.txt  afin d'y placer les tirages + calcul gains + exporte date & tirage dans ce fichier
> /Users/xxx/Desktop/KENODATA/RESULTATS.txt

echo   "">> /Users/xxx/Desktop/KENODATA/RESULTATS.txt
echo   "${affichagedate}" >> /Users/xxx/Desktop/KENODATA/RESULTATS.txt
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" >> /Users/xxx/Desktop/KENODATA/RESULTATS.txt
echo   "${winningNumbers}" >> /Users/xxx/Desktop/KENODATA/RESULTATS.txt
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" >> /Users/xxx/Desktop/KENODATA/RESULTATS.txt
echo "">> /Users/xxx/Desktop/KENODATA/RESULTATS.txt

# reencodage de /RESULTATS.txt en UTF-8 afin qu'il soit en meme format que LOGTIRAGEDUJOUR.txt
iconv -f 'UTF-16' -t 'UTF-8' "/Users/xxx/Desktop/KENODATA/RESULTATS.txt" > "/Users/xxx/Desktop/KENODATA/RESULTATSUTF_8.txt"

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt

var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`
echo $var

while   grep "$var" /Users/xxx/Desktop/KENODATA/RESULTATSUTF_8.txt

do

echo TIRAGE IDENTIQUE : ATTENTE 5 MN [300 sec]
sleep 300

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt

var=`cat /Users/xxx/Desktop/KENODATA/LOGTIRAGEDUJOUR.txt`

done

echo OK TIRAGE DIFFERENT. Lancement du script.

### -------------------------------------------------------------------------------------------------------------------------------------------------
```


----------



## Membre supprimé 1129907 (6 Août 2018)

Avec la fonction "test" ("man test" pour voir tout ce qu'elle offre) tu pourras vérifier que ton fichier n'est pas vide et agir en conséquence.

```
if [ -s mon_fichier ]
then
echo "Il existe et n'est pas vide"
fi
```


----------



## symbol (6 Août 2018)

Merci


----------



## symbol (11 Août 2018)

Bonjour Ecatomb,

Avec le recul, j'ai retiré la partie du script qui "empechait" de lancer le RECAP si tirage pas encore affiché a la FDJ.
trop complexe, y'avait de problemes de UTF8 et UTF16... bref ca ne fonctionnait.

Par contre il m'est venue une idée.

Avec la commande suivante qui c-va chercher la date affiché a la FDJ:

```
affichagedate=$(curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep -i '<div class="keno_numeros mb10 fl sprite-jeux-bg_resultat_keno">' | sed $'s/.*<h3 class="dateTirage mt20 fl">\(.*\)<span>&nbsp;-&nbsp;\(.*\)<\/span><\/h3>.*sprite-jeux-bg_resultat_keno">\(.*\)<\/div><br class="sp".*/\\1 - \\2 :\\\n\\3/' | sed 's/<p class="keno_num">/ /g' | sed 's/ \([0-9]\)<\/p>/ 0\1/g' | head -1)
```

Voudrais-tu m'ajouter les commandes qui vérifient la présence du mot "Midi" ou "Soir" en fonction de l"heure les commandes heures/minutes .


Plus précisement, quand le script se lance, a *13H45* et que le mot "Soir" figure encore a la page FDJ, celui indique que le nouveau tirage n'est pas affiché.
Plus précisement, quand le script se lance, a *20H45* et que le mot "Midi" figure encore a la page FDJ, celui indique que le nouveau tirage n'est pas affiché.

Voici les plages horaires et le mot qui doit y figurer :
de 13H45 a 20H45 = la FDJ affichera le mot "Midi"
de 20H45 a 13H30 (lendemain) = la FDJ affichera mot "Soir"

Si tu as le temps et l'envie, je suis preneur 






Merci


----------



## Membre supprimé 1129907 (12 Août 2018)

Pas trop dispo avant ce soir, mais j’ai déjà une idée. As-tu moyen de lancer ton script avec un paramètre ?
Exemple :
• à 13h45 tu le lances avec le paramètre « Midi »
• à 20h45 tu le lance avec le paramètre « Soir »

Ce paramètre sera dispobile dans la variable $1


----------



## symbol (12 Août 2018)

Merci de ta réponse.

J'imagine que ca ne posera pas de probleme pour lancer le script avec parametre(s).

Voici la procedure de lancement du script :
1) le mac s'allume tout seul grace aux preferences "economiseur energie" (demarrer ou reactiver a 14:13 / eteindre a 14:17). Je change 14h par 21h manuellement pour le soir.

2) le script se lance grace au fichier KENOCHECK.plist qui contient :


```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.local.kenocheck</string>
    <key>ProgramArguments</key>
    <array>
      <string>/Users/xxx/Desktop/KenoCheck5.1.sh</string>
    </array>
    <key>StartCalendarInterval</key>
    <array>
      <dict>
        <key>Hour</key>
        <integer>14</integer>
        <key>Minute</key>
        <integer>15</integer>
      </dict>
      <dict>
        <key>Hour</key>
        <integer>21</integer>
        <key>Minute</key>
        <integer>15</integer>
      </dict>
    </array>
  </dict>
</plist>
```



Merci


----------



## zeltron54 (12 Août 2018)

Bonjour, Symbol

je suis tes posts, et je me demandais si tu n'aurais pas plus facile de récupérer le numéro du tirage pour faire ta comparaison ?
sur la page il y a :   var listDayTirage       = {"2018446":{"day":"soir"},"2018445":{"day":"midi"},
Donc le tirage numéro 2018446 est le dernier !

Enfin cela n'est qu'une idée, à toi de voir...


----------



## symbol (12 Août 2018)

@zeltron54

Merci de ta réponse.

Je trouve l'idée très intéréssante, mais voir ligne N° 4, qui me semble pourrait rendre inutilisable cette idée.

En fait le probleme n'est pas si simple.
Quelques infos a connaitre :

1) Les pages du site de la FDJ sont encodés en iso-8859-15 (si j'ai raison). -> content="text/html; charset=iso-8859-15"
A force de re-encoder moults fois, ca rends difficile de comprendre ce que l'on fait (en tout cas pour moi) :-/

2) Pour poster (dans mon forum) une copie du tirage provenant du site de la FDJ, je dois convertir le texte en UTF-16 (sinon certaines parties ne sont pas affichés correctement), puis le sauvegarder dans un fichier texte que j'upload dans un FTP.

3) Pour comparer des données via une commande du terminal, il faut que tous fichiers textes soient encodés en UTF-8 (selon mes essais, en UTF-16 la commande ca ne fonctionne pas correctement)

4) Quand je lance le script la toute permiere fois (ou après avoir effacés tous les fichiers texte générés par le script), il n'y a plus aucun élément pour comparer avec un ancien tirage (il ne faut aucune comparaison en rapport avec un fichier texte, mais directement sur le site de la FDJ).

Voici le contenu du dossier "KENODATA" (après un lancement du script)




Chaque fichier contient des données, importées dans le forum (a partir du FTP), ou bien,  les données sont utilisées par le script pour ajouter/remplacer de nouvelles données sauvegardées elles-memes dans un fichier texte.

Je dois dire que sature grave. Je me noie dans un verre avec cette histoire de verification du tirage.

L'importance de faire ce controle :
Si le script effectue sa tache 2 fois sur un même tirage (suite a un retard de la FDJ), les gains sont comptés 2 fois et du coup tous les stats, comptes sont faux.

Voila pourquoi je pencherai plus sur un controle "Midi" "Soir" en fonction de l'heure, ce qui résouds le problème de comparaison avec un fichier texte.

MAJ : @zeltron54 je viens de repenser a ce que je viens d'ecrire, finalement, le N° du tirage ca pourrait fonctionner aussi, car si il n'y aucun fichier dans mon dossier "KENODATA", ca veut dire qu'il n'y aucun tirage, et par consequent, il ne peut pas y avoir de double tirage, puisque je repars de 0.
Pas facile a expliquer, j'espere me faire comprendre :-/


----------



## zeltron54 (12 Août 2018)

J'avais bien compris tes problèmes d'encodage pour afficher sur ton site.
Dans le cas du numéro de tirage , n'ayant pas besoin de l'afficher, tu le gardes tel que récupéré,sans réencodage, et tu compares chaque fois si supérieur ou si égal.

Enfin, je te proposais ça, mais bon , tu es le mieux placé pour voir si c'est réalisable.
Bonne continuation..


----------



## symbol (12 Août 2018)

La variable qui nous interesse est située dans la page du site FDJ :
var tabTirages          = {"2018447":


Ca me semble réalisable.

Ce test doit se faire dès le début du script avant tout autre évenement.

Lancement script :
COMPARAISON
- Si aucun N° de tirage présent ou inférieur pour comparer, alors continuer le script (effacer ancien N° de tirage, et sauvegarder dans fichier texte le dernier)

- Si N° identique présent (dans un fichier texte) alors mettre le script en attente 5 mn, puis recommencer le test.

Par contre pour extraire ce N° de tirage, il faut parfaitement maitriser les commandes GREP, SED, ou autres. Ce qui n'est pas mon cas :-(



Mains, attendons car il est possible qu'Ecatomb poste une solution au problème.


----------



## Membre supprimé 1129907 (12 Août 2018)

symbol a dit:


> Voici les plages horaires et le mot qui doit y figurer :
> de 13H45 a 20H45 = la FDJ affichera le mot "Midi"
> de 20H45 a 13H30 (lendemain) = la FDJ affichera mot "Soir"



Le mot Midi ou Soir sera stocké dans la variable "var_soir_midi". Je t'ai mis jusqu'à 13h44 pour le "Soir" (lt = less than, ge = greater or equal) 

```
heure=$(date "+%H%M")
var_soir_midi=""

if [ $heure -ge 1345 ] && [ $heure -lt 2045 ]; then var_soir_midi="Midi"; fi
if [ $heure -lt 1345 ] || [ $heure -ge 2045 ]; then var_soir_midi="Soir"; fi

echo $var_soir_midi
```


----------



## Membre supprimé 1129907 (12 Août 2018)

zeltron54 a dit:


> J'avais bien compris tes problèmes d'encodage pour afficher sur ton site.
> Dans le cas du numéro de tirage , n'ayant pas besoin de l'afficher, tu le gardes tel que récupéré,sans réencodage, et tu compares chaque fois si supérieur ou si égal.
> 
> Enfin, je te proposais ça, mais bon , tu es le mieux placé pour voir si c'est réalisable.
> Bonne continuation..



Oui, le plus simple serait de créer le fichier sans convertir l'encodage. Ensuite, faire la conversion uniquement pour la page à insérer/afficher sur ton site.


----------



## Membre supprimé 1129907 (12 Août 2018)

Quoi que avec un else c’est mieux pour cette version


```
heure=$(date "+%H%M")
var_soir_midi=""

if [ $heure -ge 1345 ] && [ $heure -lt 2045 ]
then
var_soir_midi="Midi"
else
var_soir_midi="Soir"
fi

echo $var_soir_midi
```


----------



## symbol (13 Août 2018)

Ecatomb + Zeltron54

Je suis impatient de tester la chose.
Une fois que j'aurais fini de nettoyer un bol de chocolat tomber sur mon clavier !

Merci.


----------



## symbol (13 Août 2018)

Ecatomb, Zeltron54

Voici ce que je propose comme code pour comparer MIDI/SOIR LOCAL a MIDI FDJ
Je sais pas si ca marche, le script se seulement dans 45 mn.

Je voudrais votre avis / modification / optimisation.

Merci


```
############################################################################################
########################### TEST POUR SAVOIR SI NOUVEAU TIRAGE A LA FDJ ###################
############################################################################################

heure=$(date "+%H%M")
var_soir_midi=""

if [ $heure -ge 1345 ] && [ $heure -lt 2045 ]
then
var_soir_midi="Midi"
else
var_soir_midi="Soir"
fi

echo $var_soir_midi > /Users/xxx/Desktop/KENODATA/MIDISOIR.txt

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/MIDISOIRFDJ.txt

var=`cat /Users/xxx/Desktop/KENODATA/MIDISOIR.txt`
echo $var




while   grep "$var" /Users/xxx/Desktop/KENODATA/MIDISOIRFDJ.txt

do

echo TIRAGE IDENTIQUE : ATTENTE 10 MN [600 sec] AVANT NOUVEAU TEST
sleep 600

curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/MIDISOIRFDJ.txt

var=`cat /Users/xxx/Desktop/KENODATA/MIDISOIR.txt`

done

echo OK TIRAGE DIFFERENT. Le script continu....

### -------------------------------------------------------------------------------------------------------------------------------------------------
```


----------



## Membre supprimé 1129907 (13 Août 2018)

Une version modifiée :

```
############################################################################################
########################### TEST POUR SAVOIR SI NOUVEAU TIRAGE A LA FDJ ####################
############################################################################################

var_soir_midi=""

function function_soir_midi () {
  heure=$(date "+%H%M")

  if [ $heure -ge 1345 ] && [ $heure -lt 2045 ]
  then
    var_soir_midi="Midi"
  else
    var_soir_midi="Soir"
  fi
}

function_soir_midi
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/MIDISOIRFDJ.txt

while ! grep -q "$var_soir_midi" /Users/xxx/Desktop/KENODATA/MIDISOIRFDJ.txt
do
  echo TIRAGE IDENTIQUE : ATTENTE 10 MN [600 sec] AVANT NOUVEAU TEST
  sleep 600

  function_soir_midi
  curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/MIDISOIRFDJ.txt
done

echo OK TIRAGE DIFFERENT. Le script continu....

### -------------------------------------------------------------------------------------------------------------------------------------------------
```

Ma version te permet de lancer ton script à 13h45 et d'attendre tranquillement la mise à jour.
Idem à partir de 20h45.

Les modifications sont les suivantes :

J'ai crée une fonction "function_soir_midi" pour mettre à jour la variable "var_soir_midi".
J'ai rajouté l'appel à la fonction "function_soir_midi" dans la boucle pour gérer les mises à jour de "var_soir_midi" qu'on pourrait éventuellement avoir. Si tu lances à 20:44:59, elle contiendra "Midi" puis 10min après "Soir". Cela évitera de boucler si le site est à mis à jour pile quand tu le télécharge la page.

Je n'écris pas le contenu de "var_soir_midi" dans un fichier, je me sers de cette variable dans le grep.
J'ai remplacé le "grep" par un "! grep -q". Le "-q" est pour éviter l'affichage du résultat du grep. Pour le "!" c'est à toi de voir, si on ne l'a pas et qu'il est 20h ... ben il va boucler jusqu'à dépasser 20h45 car il trouvera bien "Midi" dans ton fichier "MIDISOIRFDJ". A priori, c'est ce que tu cherchais à faire à l'origine.

A noter que je stockerais plutôt la page html avant de créer le "MIDISOIRFDJ". Exemple :

```
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' > /Users/xxx/Desktop/KENODATA/keno.html
iconv -f 'iso-8859-15' -t 'UTF-8' /Users/xxx/Desktop/KENODATA/keno.html | grep "dateTirage" | sed 's/.*dateTirage mt20 fl">//' | sed 's/<\/span>.*//' | sed 's/<span>//' | sed 's/&nbsp;/ /g' | head -1 > /Users/xxx/Desktop/KENODATA/MIDISOIRFDJ.txt
```

Cela te permettra d'être certain de ne pas récupérer une version différente lors du prochain "curl"


A toi de voir ce que tu souhaites avoir au final. A part l'utilisation d'un fichier pour stocker inutilement la date, ta version était déjà bien si tu comptes la lancer avant 13h45/20h45 et récupérer ce prochain tirage.


----------



## symbol (13 Août 2018)

J'ai testé ce soir le script.

Y'a une erreur.

Le script dit que LOCALEMENT :
si il est entre 13:45 et 20:45 c'est le Midi
si il est après 20:45 et avant 13:45 c'est le soir

ensuite la valeur (midi ou soir) est sauvegardée dans "echo $var_soir_midi > /Users/xxx/Desktop/KENODATA/MIDISOIR.txt""

A 21h15 le script se lance, va chercher la valeur (midi ou soir) sur le site FDJ, les valeurs sont comparées (SOIR localement et SOIR a la FDJ)

Sauf que le script, voit que les 2 valeurs sont identiques, et du coup arrête le script en attendant que les 2 valeurs soient differentes.

*Ps: au moment du post de ce message, je n'ai pas encore lu ton message Ecatomb.

MAJ : Ecatomb, j'ai pris ton code du dessus et l'ai intégré au script principal, j'ai lancé le tout a 21:31. Tout semble se passer normalement.

MAJ : A 21:32 j'ai relancé le script (manuellement), celui-ci s'est relancé en intégralité (du coup il recompte 2X les meme gains aux meme gagnants) (mais j ene suis pas censé le lancer a la main)*


----------



## Membre supprimé 1129907 (13 Août 2018)

Tant mieux, j’ai donc bien compris ce que tu voulais faire en modifiant ton grep


----------



## symbol (13 Août 2018)

juste une question :

cette commande

```
while   grep "$var" /Users/xxx/Desktop/KENODATA/MIDISOIRFDJ.txt
```
c'est bien pour "voir" si la variable "$var" se trouve dans le fichier  MIDISOIRFDJ.txt  ?

Alors quelle la commande pour qui fait l'inverse ? (si "$var" ne se trouve pas dans MIDISOIRFDJ.txt) ?


----------



## Membre supprimé 1129907 (13 Août 2018)

Ma version avec le ! juste avant le grep


----------



## symbol (13 Août 2018)

merci


----------



## symbol (13 Août 2018)

Je crois qu'on arrive a ce qu'on voulait.

Afin d'être bien sur d'avoir compris ta démarche, veux tu me confirmer :
"Pour le midi, je dois lancer le script (via KENOCHECK.plist) AVANT le tirage prévu a 13:45 , le script essaira jusqu'a ce que le nouveau tirage soit affiché a la FDJ".
"Pour le soir, je dois lancer le script (via KENOCHECK.plist) AVANT le tirage prévu a 20h45 , le script essaira jusqu'a ce que le nouveau tirage soit affiché a la FDJ".

Merci


----------



## symbol (13 Août 2018)

Ecatomb,
J'oubliais, y'a quelques semaines de ca, tu m'avais (encore toi) fais un script pour afficher le compte a rebours dans le forum.
dont voici le code

```
<!-- ########################################  -->
<!-- AFFICHAGE COMPTE A REBOURS pour RECAP  -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
p {
  text-align: center;
  font-size: 25px;
  margin-top:0px;
  color:black;
}
</style>


<center>
<font color="black"><U><b>PROCHAIN RECAP DANS</b></U>
<!--  <div style="overflow:hidden; overflow-x:hidden;  width:150px; height:40px; border:#909090 1px solid;">  -->
<p id="RECAP"></p>

<script>

function fonction_1() {
  // Get todays date and time
  var now = new Date();
  var secondes = now.getHours()*3600 + now.getMinutes()*60 + now.getSeconds();

  // Find the distance between now an the count down date
  var distance = 51300 - secondes;

  // Time calculations for days, hours, minutes and seconds
  var seconds = distance % 60;
  var minutes = (distance - seconds) / 60 % 60;
  var hours = (distance - seconds - minutes*60) / 3600;

  // Output the result in an element with id="RECAP"
  document.getElementById("RECAP").innerHTML = hours + "h " + minutes + "m " + seconds + "s ";

  // If the count down is over, write some text
  if (distance < 0) {
    clearInterval();
    document.getElementById("RECAP").innerHTML = "RECAP de 14h15 effectué";
  }
}

function fonction_2() {
  // Get todays date and time
  var now = new Date();
  var secondes = now.getHours()*3600 + now.getMinutes()*60 + now.getSeconds();

  // Find the distance between now an the count down date
  var distance = 76500 - secondes;

  // Time calculations for days, hours, minutes and seconds
  var seconds = distance % 60;
  var minutes = (distance - seconds) / 60 % 60;
  var hours = (distance - seconds - minutes*60) / 3600;

  // Output the result in an element with id="RECAP"
  document.getElementById("RECAP").innerHTML = hours + "h " + minutes + "m " + seconds + "s ";

  // If the count down is over, write some text
  if (distance < 0) {
    clearInterval();
    document.getElementById("RECAP").innerHTML = "RECAP de 21h15 effectué";
  }
}

function fonction_3() {
  // Get todays date and time
  var now = new Date();
  var secondes = now.getHours()*3600 + now.getMinutes()*60 + now.getSeconds();

  // Find the distance between now an the count down date
  if ( secondes > 76500 ) {
    var distance = 137700 - secondes;
  } else {
    var distance = 51300 - secondes;
  }

  // Time calculations for days, hours, minutes and seconds
  var seconds = distance % 60;
  var minutes = (distance - seconds) / 60 % 60;
  var hours = (distance - seconds - minutes*60) / 3600;

  // Output the result in an element with id="RECAP"
  document.getElementById("RECAP").innerHTML = hours + "h " + minutes + "m " + seconds + "s ";

  // If the count down is over, write some text
  if (distance < 0) {
    clearInterval();
    document.getElementById("RECAP").innerHTML = "RECAP de 14h15 effectué";
  }
}

// Avoir le nombre de secondes depuis 0h00 pour l'heure actuelle
var date = new Date();
var now = date.getHours()*3600 + date.getMinutes()*60 + date.getSeconds();

/*
Tes deux heures en secondes :
14h15 = 50400 + 900 = 51300 (le lendemain : 14h15 + 24h = 137700)
21h15 = 75600 + 900 = 76500
*/
if ( now < 51300 ) {
  // avant 14h15
  setInterval(fonction_1, 1000);
} else {
  if ( now < 76500 ) {
    // entre 14h15 et 21h15
    setInterval(fonction_2, 1000);
  } else {
    // après 21h15
    setInterval(fonction_3, 1000);
  }
}

</script>
```

Comme on vient de changer l'heure ou le RECAP se lance (il passe de 14H15 a 13H30   et     de 21H15 a 20H30, .....soit 45 mn plutot )
Y'a des valeurs a changer dans la script ci-dessus.
Vu que c'est toi qui l'a concu, te serait-il possible de mettre a jour les heures ?

Après c'est fini (croix de bois, croix de fer) 

Merci a tous


----------



## Membre supprimé 1129907 (13 Août 2018)

symbol a dit:


> Je crois qu'on arrive a ce qu'on voulait.
> 
> Afin d'être bien sur d'avoir compris ta démarche, veux tu me confirmer :
> "Pour le midi, je dois lancer le script (via KENOCHECK.plist) AVANT le tirage prévu a 13:45 , le script essaira jusqu'a ce que le nouveau tirage soit affiché a la FDJ".
> ...


Dans ma version, non

Tu peux donc simplement la lancer à 13h45/20h45 ou après
Tu peux modifier l’horaire pour mettre 13h30 et 20h30 si tu le souhaites. Dans ce cas, ça attendra le changement sur le site vers 45 si tu le lances un peu avant


----------



## Membre supprimé 1129907 (13 Août 2018)

symbol a dit:


> Ecatomb,
> J'oubliais, y'a quelques semaines de ca, tu m'avais (encore toi) fais un script pour afficher le compte a rebours dans le forum.
> dont voici le code
> 
> ...



Il y a ça d’indiqué dans ce script, je te laisse le mettre à jour

Tes deux heures en secondes :
14h15 = 50400 + 900 = 51300 (le lendemain : 14h15 + 24h = 137700)
21h15 = 75600 + 900 = 76500

Ps: peut-être que tu devrais mettre les deux scripts en relation. Lorsque le précédent récupère les numéros, passer une info pour que le deuxième indique qu’ils ont été mis à jour


----------



## symbol (14 Août 2018)

Il me semblait bien que ca se situait ici. Merci de me l'avoir confirmé.


----------



## Membre supprimé 1129907 (14 Août 2018)

C’est juste le commentaire pour savoir comment mettre à jour le reste


----------



## symbol (14 Août 2018)

Je ne vous cacherai pas que j'ai du m'y reprendre une dizaine de fois pour faire le changement (j'ai vraiment pas le cerveau connecté pour les maths).

En ce qui concerne le décompte pour le l'affichage "RECAP effectué" à 13H45, ca me semble pas trop mal, pour le soir a 20H45 je suis moins sur :-/


```
<!-- ########################################  -->
<!-- AFFICHAGE COMPTE A REBOURS pour RECAP  -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
p {
  text-align: center;
  font-size: 25px;
  margin-top:0px;
  color:black;
}
</style>


<center>
<font color="black"><U><b>PROCHAIN RECAP DANS</b></U>
<!--  <div style="overflow:hidden; overflow-x:hidden;  width:150px; height:40px; border:#909090 1px solid;">  -->
<p id="RECAP"></p>

<script>

function fonction_1() {
  // Get todays date and time
  var now = new Date();
  var secondes = now.getHours()*3600 + now.getMinutes()*60 + now.getSeconds();

  // Find the distance between now an the count down date
  var distance = 49500 - secondes;

  // Time calculations for days, hours, minutes and seconds
  var seconds = distance % 60;
  var minutes = (distance - seconds) / 60 % 60;
  var hours = (distance - seconds - minutes*60) / 3600;

  // Output the result in an element with id="RECAP"
  document.getElementById("RECAP").innerHTML = hours + "h " + minutes + "m " + seconds + "s ";

  // If the count down is over, write some text
  if (distance < 0) {
    clearInterval();
    document.getElementById("RECAP").innerHTML = "RECAP de 13h45 effectué";
  }
}

function fonction_2() {
  // Get todays date and time
  var now = new Date();
  var secondes = now.getHours()*3600 + now.getMinutes()*60 + now.getSeconds();

  // Find the distance between now an the count down date
  var distance = 74700 - secondes;

  // Time calculations for days, hours, minutes and seconds
  var seconds = distance % 60;
  var minutes = (distance - seconds) / 60 % 60;
  var hours = (distance - seconds - minutes*60) / 3600;

  // Output the result in an element with id="RECAP"
  document.getElementById("RECAP").innerHTML = hours + "h " + minutes + "m " + seconds + "s ";

  // If the count down is over, write some text
  if (distance < 0) {
    clearInterval();
    document.getElementById("RECAP").innerHTML = "RECAP de 20h45 effectué";
  }
}

function fonction_3() {
  // Get todays date and time
  var now = new Date();
  var secondes = now.getHours()*3600 + now.getMinutes()*60 + now.getSeconds();

  // Find the distance between now an the count down date
  if ( secondes > 74700 ) {
    var distance = 135900 - secondes;
  } else {
    var distance = 49500 - secondes;
  }

  // Time calculations for days, hours, minutes and seconds
  var seconds = distance % 60;
  var minutes = (distance - seconds) / 60 % 60;
  var hours = (distance - seconds - minutes*60) / 3600;

  // Output the result in an element with id="RECAP"
  document.getElementById("RECAP").innerHTML = hours + "h " + minutes + "m " + seconds + "s ";

  // If the count down is over, write some text
  if (distance < 0) {
    clearInterval();
    document.getElementById("RECAP").innerHTML = "RECAP de 13h45 effectué";
  }
}

// Avoir le nombre de secondes depuis 0h00 pour l'heure actuelle
var date = new Date();
var now = date.getHours()*3600 + date.getMinutes()*60 + date.getSeconds();

/*
Tes deux heures en secondes :
13h45 = 49500 (le lendemain : 13h45 + 24h = 135900)
20h45 = 74700
*/
if ( now < 49500 ) {
  // avant 13h45
  setInterval(fonction_1, 1000);
} else {
  if ( now < 74700 ) {
    // entre 13h45 et 20h45
    setInterval(fonction_2, 1000);
  } else {
    // après 20h45
    setInterval(fonction_3, 1000);
  }
}

</script>
```

Pour le midi 10:22:00 + 03H23:00 = 13H45


----------



## Membre supprimé 1129907 (14 Août 2018)

D’ici ce soir, je devrais avoir le temps de regarser en détail


----------



## symbol (14 Août 2018)

Ecatomb,

En ce qui concerne le decompte (compte a rebours), laissons tomber pour le moment, je prefere si tu es d'accord regler une bonne fois pour toutes le problème du RECAP.



Le lancement du script s'effectué a 13H30 (KENOCHECK.PLIST), et devait tourner en boucle jusqu'a nouvel affichage du dernier tirage de la FDJ (vers 13H45).

En realité, des 13H30 (au lancement) le script a pris le tirage affiché a la FDJ (celui d'hier).





donc, ca ne fonctionne pas....


Zeltron54 a évoqué une idée simple et efficace, j'aimerais ton avis.

Extraire seulement le N° du tirage (chaque tirage midi et soir on un N° différent) dans la page de la FDJ puis le sauvegarder dans un fichier NUMTIRAGE.txt.

L'une des 2 conditions est VRAIE alors le script s'execute :
- fichier NUMTIRAGE.txt n'existe pas
- le NUMTIRAGE.txt existe et le N° de TIRAGE est inférieur au N° tirage extrait

Si le fichier existe et que le N° de tirage est égal au N° tirage extrait alors le script se met en attente pour 10 mn puis, recommence la procédure.





C'est simplissime, évite les problemes de notion de MIDI ou SOIR, empêche de lancer 2 fois le script sur un meme tirage (même manuellement)

Le code (merci zeltron) pour extraire le N° de tirage est :

```
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | grep "listDayTirage" | cut -d'"' -f2  >  /Users/xxx/Desktop/KENODATA/NUMTIRAGE.txt
```

Reste plus que la condition a coder (pour que ce soit fait dans les règles de l'art). Je vais essayer de le faire, mais ....c'est pas gagné 

Qu'en penses-tu ?


----------



## symbol (14 Août 2018)

concernant l'idée de Zeltron54, voici ou j'en suis :


```
############################################################################################
########################### TEST POUR SAVOIR SI NOUVEAU TIRAGE A LA FDJ ####################
## Si fichier NUMTIRAGE.txt n'existe pas,  alors création du fichier NUMTIRAGE.txt  avec N° du dernier tirage + lancement direct du script
## Si fichier NUMTIRAGE.txt existe, alors comparaison des N° de tirage (Si Nouveau tirage supérieur ->  sauvegarde du N° du dernier tirage dans NUMTIRAGE.txt  + lancement script)
############################################################################################
############################################################################################


if [ -f /Users/xxx/Desktop/KENODATA/NUMTIRAGE.txt ]
then
   echo le fichier existe
   ## comparer si contenu du fichier inférieur au dernier tirage
  ## si oui, lancer le script
  ## si non attendre 10 , puis re-tester

else

## créé le fichier NUMTIRAGE.txt avec le N° du dernier tirage, puis execute le script
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | grep "listDayTirage" | cut -d'"' -f2  >  /Users/xxx/Desktop/KENODATA/NUMTIRAGE.txt

fi


### -------------------------------------------------------------------------------------------------------------------------------------------------
```


----------



## Membre supprimé 1129907 (14 Août 2018)

Concernant ton compte à rebours sur ton site, ça me semble bon 



> Le lancement du script s'effectué a 13H30 (KENOCHECK.PLIST), et devait tourner en boucle jusqu'a nouvel affichage du dernier tirage de la FDJ (vers 13H45).
> 
> En realité, des 13H30 (au lancement) le script a pris le tirage affiché a la FDJ (celui d'hier).


Si tu as laissé le 1345 dans le test, c'est normal.

Concernant l'extraction des informations utiles du tirage et son stockage dans un fichier, c'est la bonne pratique à avoir. Tu peux même stocker les x derniers tirages si tu le souhaites. 

Ton projet a bien évolué (ajout de diverses fonctionnalités) depuis ton sujet d'origine, c'est l'intérêt de mettre tout à plat au départ. 

Je regarde tout ça dans la soirée, ce n'est pas trop compliqué à faire. En plus, je connais tous les détails à avoir pour te faire quelque chose de bien.


----------



## symbol (14 Août 2018)

C'est formidable 

PS : "Je regarde tout ça dans la soirée, ce n'est pas trop compliqué à faire. En plus, je connais tous les détails à avoir pour te faire quelque chose de bien. "

On parle bien de la meme chose ? parce qu'avec tous les messages, croisés qu'on produit, on commence a s'y perdre !, il s'agit du code ci-dessous :


```
############################################################################################
########################### TEST POUR SAVOIR SI NOUVEAU TIRAGE A LA FDJ ####################
## Si fichier NUMTIRAGE.txt n'existe pas,  alors création du fichier NUMTIRAGE.txt  avec N° du dernier tirage + lancement direct du script
## Si fichier NUMTIRAGE.txt existe, alors comparaison des N° de tirage (Si Nouveau tirage supérieur ->  sauvegarde du N° du dernier tirage dans NUMTIRAGE.txt  + lancement script)
############################################################################################
############################################################################################


if [ -f /Users/xxx/Desktop/KENODATA/NUMTIRAGE.txt ]
then
   echo le fichier existe
   ## comparer si contenu du fichier inférieur au dernier tirage
  ## si oui, lancer le script
  ## si non attendre 10 , puis re-tester

else

## créé le fichier NUMTIRAGE.txt avec le N° du dernier tirage, puis execute le script
curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' | grep "listDayTirage" | cut -d'"' -f2  >  /Users/xxx/Desktop/KENODATA/NUMTIRAGE.txt

fi


### -------------------------------------------------------------------------------------------------------------------------------------------------
```


----------



## Membre supprimé 1129907 (14 Août 2018)

```
############################################################################################
########################### TEST POUR SAVOIR SI NOUVEAU TIRAGE A LA FDJ ####################
## Si fichier NUMTIRAGE.txt n'existe pas,  alors création du fichier NUMTIRAGE.txt  avec N° du dernier tirage + lancement direct du script
## Si fichier NUMTIRAGE.txt existe, alors comparaison des N° de tirage (Si Nouveau tirage supérieur ->  sauvegarde du N° du dernier tirage dans NUMTIRAGE.txt  + lancement script)
############################################################################################
############################################################################################
repertoire="/Users/xxx/Desktop/KENODATA"

function download_keno () {
  ## créé le fichier keno.html avec la page actuelle du site, sinon on garde l'ancienne
  curl -s 'https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats' -o "${repertoire}"/keno_tmp -D "${repertoire}"/keno_code_retour
  ## Gestion des erreurs 404 et autres ...
  code_http=$(head -1 "${repertoire}"/keno_code_retour | cut -d " " -f2)
  ## https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP
  if [ "${code_http}" == "200" ]
  then
    iconv -f 'iso-8859-15' -t 'UTF-8' "${repertoire}"/keno_tmp > "${repertoire}"/keno.html
    rm -f "${repertoire}"/keno_code_retour "${repertoire}"/keno_tmp
  fi
}

function attente_nouveau_tirage () {
  tirage_keno=$(grep "listDayTirage" "${repertoire}"/keno.html | cut -d'"' -f2)
  if [ -f "${repertoire}"/NUMTIRAGE.txt ]
  then
    echo le fichier existe
    tirage_fichier=$(cat "${repertoire}"/NUMTIRAGE.txt)

    ## tant que nouveau tirage identique/inférieur à celui du fichier
    while [ ${tirage_keno} -le ${tirage_fichier} ]
    do
      echo Pause de 10min
      sleep 600

      download_keno
      tirage_keno=$(grep "listDayTirage" "${repertoire}"/keno.html | cut -d'"' -f2)
    done
  fi

  ## créé le fichier NUMTIRAGE.txt avec le N° du dernier tirage
  echo ${tirage_keno} >  "${repertoire}"/NUMTIRAGE.txt
}

download_keno
attente_nouveau_tirage

## Extraction du résultat à partir de "${repertoire}"/keno.html
echo Extraction du résultat
```

Voici un truc un peu plus pro 
J'ai rajouter des fonctions pour séparer les différentes parties. Cela te permettra de faire des tests plus facilement en désactivant la fonction correspondante.


La fonction download_keno te télécharge la page html et gère les erreurs de téléchargement. Elle ne met à jour le fichier html que si tout est ok, sinon elle conserve les fichiers temporaires pour analyse si besoin de ton côté. C'est pour cela que le curl est un peu plus bizarre 
La fonction attente_nouveau_tirage vérifie que le dernier tirage est bien supérieur à celui de ton fichier NUMTIRAGE.txt s'il existe. Si ce n'est pas le cas, il se met en pause 10min et rappelle la fonction download_keno pour recommencer
J'utilise une variable repertoire pour définir ton répertoire (une seul ligne à changer pour tester sur n'importe quel mac)
Tu peux faire l'extraction à partir du fichier keno.html (qui est converti en UTF-8) pour la suite, pas besoin de re-télécharger la page html


----------



## symbol (15 Août 2018)

@ecatomb 

Effectivement c'est très pro ("et gère les erreurs de téléchargement") !
Je viens de tester en simulation (hors heures vrais tirages). 

1) j'ai vidé tous les fichiers de mon dossier KENODATA, puis lancer(a la main le script) --> OK, tout se déroule comme prévu
2) 1 mn après j'ai relancé le script (toujours manuellellement) --> OK, tout se déroule comme prévu, le script se met en attente 10 mn (normalement, jusqu'a detection nouveau tirage)

Reste pus qu'a voir dans la durée, si y'a pas quelquechose d'imprévu qui se produit.

De plus, maintenant je peux inserer le N° de tirage dans la page la ZONEHTML du forum 

Quel beau 15 Août 

X100 merci a tous les participants


----------



## symbol (16 Août 2018)

Tirage (SOIR) effectué sans problème.

Ca semble très bien parti


----------



## symbol (16 Août 2018)

Idem pour ce midi.


----------

