demande MAJ projet KENO

symbol

Membre actif
13 Octobre 2004
536
25
@ecatomb


Dans le script du KENO que tu m'as fait y'a quelque stemps, y'a une ligne qui extrait le N° du dernier tirage posté par la FDJ (sur le site de la FDJ).

Une mise a jour de la page html à la FDJ a été faites.

Depuis la ligne qui extrait ce N° de tirage ne fonctionne plus.
Du coup le script reste en carafe, et ne se lance plus. Il se met en attente 10 minutes (600 sec) sans fin, puisque c'est ce N° qui permet de savori si un nouveau tirage est disponible.

Serait possible de mettre a jour la partie du code qui gère cela ?

Merci


Bloc de code:
############################################################################################
########################### 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
 
Remplace le
Bloc de code:
tirage_keno=$(grep "listDayTirage" "${repertoire}"/keno.html | cut -d'"' -f2)

Par l'un des deux suivants (le deuxième est sans doute le mieux à utiliser) :
Bloc de code:
tirage_keno=$(grep "Dernier tirage" "${repertoire}"/keno.html | sed "s/.*Dernier tirage//" | cut -d'"' -f2)
tirage_keno=$(grep "Dernier tirage" "${repertoire}"/keno.html | sed 's/.*<option value="\([0-9]*\)">Dernier tirage<\/option>.*/\1/')
 
Je fais pour les changements, je verrais au tirage de 13h45 si tous se passe comme prévu.

Merci :)


MAJ : je viens de modifier (j'ai effacé tous les fichiers en local et sur le serveur).
- j'ai remplacé les 2 occurrences
Bloc de code:
tirage_keno=$(grep "listDayTirage" "${repertoire}"/keno.html | cut -d'"' -f2)

par

Bloc de code:
 tirage_keno=$(grep "Dernier tirage" "${repertoire}"/keno.html | sed 's/.*<option value="\([0-9]*\)">Dernier tirage<\/option>.*/\1/')

J'ai lancé le script, il va correctement chercher le tirage. Si je le relance une 2e fois aussitot, il se met en mode attente 10 min (normal).
Je vois si a 13h45 il reste en mode attente 10 minutes , ou s'il detecte bien le nouveau tirage.
 
Dernière édition:
@ecatomb

Le site FDJ a été mis plus a jour que ce que je pensais.

La modification réalisée hier concernant le numéro de tirage est ok, parfait.


Cependant, la FDJ a changée aussi le code html qui affiche les 20 N° du tirage + date
Du coup, le script ne ramene plus la date du tirage + les 20 N°

Ca se présente sous cette forme dans mon forum
Capture-d-e-cran-2018-11-08-a-09-24-24.png



Je poste ci-dessous les commandes qui tu m'avais donné pour récupérer : date tirage + les 20 N°



Bloc de code:
############################################################################################
############## RECUPERATION DES PRONOS POSTES DANS FORUM + TIRAGE A LA FDJ  ############
############################################################################################

# va chercher les pronos des joueurs dans le forum. les pseudos doicent etre precedé de "@" -> @pseudo 01-02-03-04-05-06-07-08-09-10    ou   @pseudo 01 02 03 04 05 06 07 08 09 10)
curl -s 'http://kenopronos.free-bb.eu/sujet-612110-792147-98059-1-Postez-Vos-Pronos-Pour-Le-Prochain-Tirage-Ici.html'  | sed 's/                    <div class="reply[0-9][0-9][0-9][0-9][0-9][0-9][0-9]">//' | sed 's/<\/div>//' | sed 's/<br \/>//' | grep -E '@' | grep -Ev '#|}|{'| sed $'s/\r$//'  >  /Users/xxx/Desktop/KENODATA/mygames.txt

# Change directory to the folder containing the script
cd "/Users/xxx/Desktop/KENODATA/"

# If no games file is found at the assigned filepath, try in the same folder as the script
[ ! -f "${gamesFile}" ] && gamesFile="/Users/xxx/Desktop/KENODATA/mygames.txt"

# affichage date du tirage
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)

# Si aucun N° indiqué, le script va chercher les N° du tirage chez la FDJ
if [ "${winningNumbers}" = "" ] ; then
winningNumbers=$(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/.*sprite-jeux-bg_resultat_keno">\(.*\)<\/div><br class="sp".*/\1/' | sed 's/<p class="keno_num">/ /g' | sed 's/ \([0-9]\)<\/p>/ 0\1/g' | sed 's/<\/p>//g' | sed 's/^ //g' | head -1)
fi

### -------------------------------------------------------------------------------------------------------------------------------------------------

Si tu le souhaite et a le temps, serait-il possible d'adapter la ligne qui s'occupe de cette tache ?

Merci
 
Je me mets ça dans un coin. Rappelle moi ça dimanche si je ne t'ai pas répondu d'ici-là.
 
@symbol

Je viens de tester les lignes existantes, et elles fonctionnent. j'ai bien en retour la date et les 20 numéros. ?
 
@symbol

Je viens de tester les lignes existantes, et elles fonctionnent. j'ai bien en retour la date et les 20 numéros. ?

Pas de numéro retourné par la commande habituelle sur la version du site suivante :
Capture d’écran 2018-11-11 à 13.15.51.png

Il doit donc s'agir d'une nouvelle version du site qu'ils sont en train de mettre en place.
 
@ecatomb

Peut être en cours ! car là ! j'ai bien le retour

Bloc de code:
Last login: Sun Nov 11 13:22:31 on ttys000
Imac:~ XXXXXXX$ 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/.*sprite-jeux-bg_resultat_keno">\(.*\)<\/div><br class="sp".*/\1/' | sed 's/<p class="keno_num">/ /g' | sed 's/ \([0-9]\)<\/p>/ 0\1/g' | sed 's/<\/p>//g' | sed 's/^ //g' | head -1
01 02 06 07 18 22 26 31 33 36 37 38 39 40 50 52 56 60 63 65
Imac:~ jXXXXXXXX$
 
A l'instant, cela remarche et la page qui s'affiche sur le site est à nouveau l'ancienne version. ;)
 
Hi ! Hi ! Hi ! tous mes tests tombent au moment où c'est bon...
Il y a ceux qu'on le pot ... et les autres :)
 
En tout cas, j'ai réussi à avoir le moment posant problème. On a donc l'explication du souci :D
 
De temps en temps, "https://www.fdj.fr/jeux/jeux-de-tirage/keno/resultats" doit renvoyer vers le "https://www2.fdj.fr/jeux-de-tirage/keno-gagnant-a-vie/resultats" dont l'affichage est différent.

La version suivante se base sur le deuxième site pour récupérer toutes les informations (date + numéro) en une seule fois.
Regarde si le résultat te convient.

Bloc de code:
date_tirage=$(curl -s 'https://www2.fdj.fr/jeux-de-tirage/keno-gagnant-a-vie/resultats' | iconv -f 'iso-8859-15' -t 'UTF-8' | awk 'BEGIN {
    date = ""
    matin_soir = ""
    numero = ""
  }
  /^.*<h1 class="drawing-infos_title">.*/ {
    field_start=index($0,"infos_title")+13
    field_end=index($0,"</h1>")
    date=substr($0,field_start,field_end-field_start)
  }
  /^ *Tirage du midi.*/ {
    matin_soir="Midi"
  }
  /^ *Tirage du soir.*/ {
    matin_soir="Soir"
  }
  /^.*<span class="numbers-item_num">.*/ {
    field_start=index($0,"item_num")+10
    field_end=index($0,"</span>")
    numero=numero""sprintf("%02d ",substr($0,field_start,field_end-field_start))
  }
  /^.*<div class="numbers-bonus">.*/ {
    printf "%s - %s : %s\n",date,matin_soir,numero
    numero = ""
  }' | tail -2)
affichagedate=$(echo $date_tirage | sed 's/ : .*//')
winningNumbers=$(echo $date_tirage | sed 's/.*: //')

echo $affichagedate
echo $winningNumbers
 
@ecatomb

Je réponds un peu en retard.

Coup de chance, tu es tombé pile poil sur le problème :dead:

Je ne sais pas plus comment faire.
Si je met le nouveau code, ca ne marchera pas avec l'ancienne page FDJ, si je garde l'ancien code, ca ne marchera pas avec la nouvelle :bigtears:

Pour le moment, j'attends que la FDJ bascule sur sa nouvelle page (surement lundi), puis que je changerai le code.


Merci de ton aide. :up:
 
PARTIE 1/3
ANCIEN CODE

Bloc de code:
##  ############################################################################################
##  ########################### 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 "Dernier tirage" "${repertoire}"/keno.html | sed 's/.*<option value="\([0-9]*\)">Dernier tirage<\/option>.*/\1/')
  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 5min
### ---------------------------------------- NOTIFICATION POP UP FINDER + SON -------------------------------------------------
osascript -e 'display notification "PAUSE 5 MN" with title "KENO"'; afplay /System/Library/Sounds/Pop.aiff
### ---------------------------------------------------------------------------------------------------------------------------------------------------
      sleep 300

      download_keno
     tirage_keno=$(grep "Dernier tirage" "${repertoire}"/keno.html | sed 's/.*<option value="\([0-9]*\)">Dernier tirage<\/option>.*/\1/')
    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
 
Dernière édition:
PARTIE 2/3
NOUVEAU CODE

Bloc de code:
##  ############################################################################################
##  ########################### 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 "Dernier tirage" "${repertoire}"/keno.html | sed 's/.*<option value="\([0-9]*\)">Dernier tirage<\/option>.*/\1/')
  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 5min
### ---------------------------------------- NOTIFICATION POP UP FINDER + SON -------------------------------------------------
osascript -e 'display notification "PAUSE 5 MN" with title "KENO"'; afplay /System/Library/Sounds/Pop.aiff
### ---------------------------------------------------------------------------------------------------------------------------------------------------
      sleep 300

      download_keno
     tirage_keno=$(grep "Dernier tirage" "${repertoire}"/keno.html | sed 's/.*<option value="\([0-9]*\)">Dernier tirage<\/option>.*/\1/')
    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
 
Dernière édition:
PARTIE 3/3
Bonjour

J'ai posté mon message en 3 parties ! vu que 'on peut pas poster plus de 5000 caractères en même temps.

La FDJ semble avoir finie ses chagements concernant sa page des tirages KENO.

Ecatomb, tu m'as donné le code corrigé (NOUVEAU CODE) pour s'adapter a la nouvelle page FDJ.

Par contre , je ne sais pas vraiment ce qu'il faut remplacer de l'ANCIEN CODE par le NOUVEAU CODE.
Avant ca vérifiait que
- le tirage était différent pour télécharger le nouveau
- ca mettait en attente de 5 mn avant de revérifier si le tirage avait changer

A partir de mes 2 postes ci-dessus, serait possible de changer les parties de l'ANCIEN CODE par celles du NOUVEAU CODE (afin de garder les memes fonctions) puis de poster le résultat ici ?

NOTE : avant il y'avait 2 urls differentes pour récupérer les tirages (l'une avec www. (dedié a lacien KENO) et l'autre www2. (dédié au nouveau KENO).
Désormais, c'est toujours https://www.fdj.fr/jeux-de-tirage/keno-gagnant-a-vie/resultats

Merci
 
Dernière édition: