LUA : Horoscope du jour pour un signe donné

Vous avez crée un script lua dont vous êtes fier, un .sh génial, un programme python hors du commun, un tuto , c'est ici que vous pouvez les partager.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
Doudy
Messages : 182
Enregistré le : 07 mai 2016, 17:23

Re: LUA : Horoscope du jour pour un signe donné

Message par Doudy » 04 sept. 2016, 11:17

Non j'utilise la version Windows.
Enfin pas grave, c'était simplement pour faire avancer le schmilblick... :D

erreur : Tourne sous mon Raspberry-Pi3-Jessie
PI 3 = RFXCOM
PI 3 + Touchscreen 7" affichage Domoticz
RFXCOM 433
Domoticz Version: 4.10717 - Python Version: 3.5.3

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


papoo
Messages : 1882
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: LUA : Horoscope du jour pour un signe donné

Message par papoo » 04 sept. 2016, 11:26

GCM : google cloud messaging
lorsque le script déclenche une notification, une de tes options de notifications renvoi ce message
NMA (Android) ou Pushover (Android) ou HTTP personnalisé
verifie dans reglages=> notifications en les desactivant toutes et en les réactivant une par une.
pour moi cela ne provient pas du script mais de tes notifications activées
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

Nemesis24
Messages : 125
Enregistré le : 14 févr. 2017, 16:10

Re: LUA : Horoscope du jour pour un signe donné

Message par Nemesis24 » 16 févr. 2017, 10:13

Bonjour,
Tout d'abord merci à l'auteur de ce script.

je rencontre deux problèmes avec ce script, tout d'abord il semblerait que le site est fait des modifications:

J'ai donc changé ces deux lignes , et j'arrive au résultat escompté.

Code : Tout sélectionner

for instance in testHtml:gmatch("<body(.-)</body>") do
div, horoscope=instance:match('horoscope du jour(.-)<p>(.-)<br />')
dans les logs: j'ai bien l'horoscope du jour qui s'affiche

par contre ça me supprime le dispositif texte associé.

Il semblerait que ce soit dû à la longueur du texte... mais je n'ai rien trouvé à ce sujet, si il y a une limitation.

Merci
Nemesis: déesse de la vengeance, de l'équilibre, de la juste colère et de la rétribution céleste, messager de mort envoyé par les dieux comme punition...

Nemesis24
Messages : 125
Enregistré le : 14 févr. 2017, 16:10

Re: LUA : Horoscope du jour pour un signe donné

Message par Nemesis24 » 17 févr. 2017, 00:11

J'ai finalement integré le script en utilisant un site adtro qui fournit un horoscope plus concis.
Il doit bien y avoir une limitation du nombre de caractères..

Merci
Nemesis: déesse de la vengeance, de l'équilibre, de la juste colère et de la rétribution céleste, messager de mort envoyé par les dieux comme punition...

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


minicupi
Messages : 34
Enregistré le : 27 janv. 2017, 03:52

Re: LUA : Horoscope du jour pour un signe donné

Message par minicupi » 18 févr. 2017, 21:42

tu as le code Nemesis? ou a défaut le site ou tu requete.

Nemesis24
Messages : 125
Enregistré le : 14 févr. 2017, 16:10

Re: LUA : Horoscope du jour pour un signe donné

Message par Nemesis24 » 18 févr. 2017, 21:50

Voilà voilà :)

Code : Tout sélectionner

     --local fname ="horoscope.xml"-- linux
	  local fname ="c:\\Domoticz\\horoscope.xml" --windows
      --os.execute("wget -q -O " .. fname .. " http://astro.idf1.fr/horoscope/horoscope-du-jour/horoscope-"..signe.."/horoscope.html")-- linux 
	  os.execute("c:\\Domoticz\\wget -q -O " .. fname .. " http://astro.idf1.fr/horoscope/horoscope-du-jour/horoscope-"..signe.."/horoscope.html")
	  
	  
            local f = io.open(fname, "r")

          if f == nil then
          print("Error opening file '" .. fname .. "'.")
          os.exit(1)
          end
		  
      local testHtml = f:read("*all")
               f:close()
			
--print_r(testHtml)
for instance in testHtml:gmatch("<body>(.-)</body>") do
horoscope=instance:match('<p>(.-)</p>')
end   

   if horoscope ~= nil  and signe ~= nil then
   
      voir_les_logs("--- --- --- ".. signe .." : ".. horoscope,debugging)
      
   commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_text..'|0|'.. horoscope}
   indexArray=indexArray+1
               if send_notification > 0 then
   commandArray[indexArray] = {['SendNotification'] = 'horoscope pour le signe du '.. signe ..'#'.. horoscope}
   indexArray=indexArray+1
               end
   end
   
end -- if time
return commandArray
Nemesis: déesse de la vengeance, de l'équilibre, de la juste colère et de la rétribution céleste, messager de mort envoyé par les dieux comme punition...

minicupi
Messages : 34
Enregistré le : 27 janv. 2017, 03:52

Re: LUA : Horoscope du jour pour un signe donné

Message par minicupi » 19 févr. 2017, 00:47

tu a toute ma gratitude ^^ marche nickel je confirme.

Nemesis24
Messages : 125
Enregistré le : 14 févr. 2017, 16:10

Re: LUA : Horoscope du jour pour un signe donné

Message par Nemesis24 » 19 févr. 2017, 01:29

Merci, :D
Nemesis: déesse de la vengeance, de l'équilibre, de la juste colère et de la rétribution céleste, messager de mort envoyé par les dieux comme punition...

minicupi
Messages : 34
Enregistré le : 27 janv. 2017, 03:52

Re: LUA : Horoscope du jour pour un signe donné

Message par minicupi » 19 févr. 2017, 05:59

J'en ai profité pour le tweek un peu, désormais il prend également les catégorie amour santé travail et remplace les accent grave accent aigue ect qui seraient dans un format bizarre.horoscope général, amour,travail et sante se stockent tous dans un dummy idx différent, bien que la valeur amour soit récupérée je n'arrive pas encore a l'afficher cela dit. Je finirais bien par trouver ce qui cause ça, mais pour le reste c'est bon ^^

C'est codé de façon dégueulasse et j'imagine que mes 40 000 ligne de code peuvent s'ecrire en 2 mais... au moins ca marche :)

résultat ci dessous
Image

Code : Tout sélectionner

--[[
name : script_time_horoscope.lua
auteur : papoo
version : 1.10
Mise à jour : 27/06/2016 Changement de site
date : 26/06/2016
Principe :
 Ce script a pour but de remonter les informations du site http://mon.astrocenter.fr/ dans un device texte 
 sur domoticz pour un signe donné et de nous alerter le cas écheant selon le niveau de notification choisi
]]--
-- ========================================================================
-- Variables à éditer
-- ========================================================================
local signe = "cancer" --[[ renseigner le signe choisi en minuscule sans accent : belier, taureau, gemeaux, cancer, lion, vierge, 
balance, scorpion, sagittaire, capricorne, verseau, poissons ]]--
local dz_horoscope_general = 180 -- idx pour le texte general
local dz_horoscope_amour = 184 -- idx pour le texte d'amour
local dz_horoscope_travail = 182 -- idx pour le texte sur le travail
local dz_horoscope_sante = 183   -- idx pour le texte de santé
local send_notification = 0 -- 0: notifications désactivées, 1: notifications actives
local debugging = false     -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
-- ========================================================================
-- Fin Variables à éditer
-- ========================================================================
local indexArray=0   
-- ======================================================================== 
-- Fonctions
-- ========================================================================
function voir_les_logs (s)
    if (debugging) then 
        print ("<font color='#f3031d'>".. s .."</font>");
    end
end   




function string:split( inSplitPattern, outResults )
  if not outResults then
    outResults = { }
  end
  local theStart = 1
  local theSplitStart, theSplitEnd = string.find( self, inSplitPattern, theStart )
  while theSplitStart do
    table.insert( outResults, string.sub( self, theStart, theSplitStart-1 ) )
    theStart = theSplitEnd + 1
    theSplitStart, theSplitEnd = string.find( self, inSplitPattern, theStart )
  end
  table.insert( outResults, string.sub( self, theStart ) )
  return outResults
end







-- ======================================================================== 
-- Fin Fonctions
-- ========================================================================

commandArray = {}
time = os.date("*t")

--if (time.hour == 00 and time.min == 20) then -- tout les matins à 00h20
if (time.min == 20 and ((time.hour == 7) or (time.hour == 13) or (time.hour == 18))) then -- 3 éxecutions du script par jour à 7H20, 13h20 et 18H20
-- if time.hour % 2 == 0 then -- toutes les deux heures
-- if (time.hour%1 == 0 and time.min == 10)  then -- Toutes les heures et 10 minutes
 -- if time.min % 2 == 0 then 
print('script_time_horoscope.lua')

      local fname ="horoscope.xml"
      os.execute("wget -q -O " .. fname .. " http://astro.idf1.fr/horoscope/horoscope-du-jour/horoscope-"..signe.."/horoscope.html") 
            local f = io.open(fname, "r")

          if f == nil then
          print("Error opening file '" .. fname .. "'.")
          os.exit(1)
          end
 
      local testHtml = f:read("*all")
               f:close()

for instance in testHtml:gmatch("<body>(.-)</body>") do
horoscope=instance:match('Général</h2>(.-)</p>')
Amour=instance:match('Amour</h2>(.-)</p>')
Travail=instance:match('Travail</h2>(.-)</p>')
Sante=instance:match('/>Sant%é(.-)</p>')

horoscope=string.gsub(horoscope, "<p>", "Général : ")
horoscope=string.gsub(horoscope, "%'", " ")
horoscope=string.gsub(horoscope, "&eacute;", "é")
horoscope=string.gsub(horoscope, "&ecirc;", "ê")
horoscope=string.gsub(horoscope, "&agrave;", "à")
horoscope=string.gsub(horoscope, "&nbsp;", " ")
horoscope=string.gsub(horoscope, "V", "v")

Amour=string.gsub(Amour, "<p>", "Amour : ")
Amour=string.gsub(Amour, "%'", " ")
Amour=string.gsub(Amour, "&eacute;", "é")
Amour=string.gsub(Amour, "&ecirc;", "ê")
Amour=string.gsub(Amour, "&agrave;", "à")
Amour=string.gsub(Amour, "&nbsp;", " ")
Amour=string.gsub(Amour, "V", "v")
Amour=string.gsub(Amour, "A", "a")

Travail=string.gsub(Travail, "<p>", "Travail : ")
Travail=string.gsub(Travail, "%'", " ")
Travail=string.gsub(Travail, "&eacute;", "é")
Travail=string.gsub(Travail, "&ecirc;", "ê")
Travail=string.gsub(Travail, "&agrave;", "à")
Travail=string.gsub(Travail, "&nbsp;", " ")
Travail=string.gsub(Travail, "V", "v")

Sante=string.gsub(Sante, "<p>", "Santé : ")
Sante=string.gsub(Sante, "%'", " ")
Sante=string.gsub(Sante, "&eacute;", "é")
Sante=string.gsub(Sante, "&ecirc;", "ê")
Sante=string.gsub(Sante, "&agrave;", "à")
Sante=string.gsub(Sante, "&nbsp;", " ")
Sante=string.gsub(Sante, "V", "v")



end   


  if horoscope ~= nil  and signe ~= nil then
      voir_les_logs("--- --- --- ".. signe .." : ".. horoscope,debugging)
   commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_general..'|0|'..horoscope}
 indexArray=indexArray+1
   commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_travail..'|0|'..Travail}
indexArray=indexArray+1
   commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_sante..'|0|'..Sante}
   indexArray=indexArray+1
   commandArray[indexArray] = {['UpdateDevice'] = dz_horoscope_amour..'|0|'..Amour}
 indexArray=indexArray+1
             
   end
end -- if time
return commandArray
bon, mon cerveau fume, je vais laisser le ventilo refroidir ;p

Nemesis24
Messages : 125
Enregistré le : 14 févr. 2017, 16:10

Re: LUA : Horoscope du jour pour un signe donné

Message par Nemesis24 » 19 févr. 2017, 11:06

Super

Je m'étais arrêter au minimum parce que je voulais vraiment quelque chose de concis, mais c'est super pour ceux qui veulent récupérer plus d'infos.

Bravo !
Nemesis: déesse de la vengeance, de l'équilibre, de la juste colère et de la rétribution céleste, messager de mort envoyé par les dieux comme punition...

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre