Page 2 sur 9

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

Publié : 04 sept. 2016, 11:17
par Doudy
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

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

Publié : 04 sept. 2016, 11:26
par papoo
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

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

Publié : 16 févr. 2017, 10:13
par Nemesis24
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

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

Publié : 17 févr. 2017, 00:11
par Nemesis24
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

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

Publié : 18 févr. 2017, 21:42
par minicupi
tu as le code Nemesis? ou a défaut le site ou tu requete.

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

Publié : 18 févr. 2017, 21:50
par Nemesis24
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

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

Publié : 19 févr. 2017, 00:47
par minicupi
tu a toute ma gratitude ^^ marche nickel je confirme.

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

Publié : 19 févr. 2017, 01:29
par Nemesis24
Merci, :D

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

Publié : 19 févr. 2017, 05:59
par minicupi
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

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

Publié : 19 févr. 2017, 11:06
par Nemesis24
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 !