Empecher RECAP si tirage FDJ non effectué.

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
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
 
  • J’aime
Réactions: symbol
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
Bloc de 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

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
 
  • J’aime
Réactions: symbol
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 :-/

Bloc de 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 = 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
Capture_d_e_cran_2018_08_14_a_10_21_58.png
 
Dernière édition:
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).
Capture_d_e_cran_2018_08_14_a_15_31_30.png


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 :
Bloc de code:
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 ?
 
Dernière édition:
concernant l'idée de Zeltron54, voici ou j'en suis :

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)
############################################################################################
############################################################################################


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


### -------------------------------------------------------------------------------------------------------------------------------------------------
 
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. :D

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. :coucou:
 
  • J’aime
Réactions: symbol
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. :coucou:"

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 :

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)
############################################################################################
############################################################################################


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


### -------------------------------------------------------------------------------------------------------------------------------------------------
 
Dernière édition:
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

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.

  1. 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 :D
  2. 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
  3. J'utilise une variable repertoire pour définir ton répertoire (une seul ligne à changer pour tester sur n'importe quel mac)
  4. 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 ;)

:cool:
 
  • J’aime
Réactions: symbol
@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 :up: