Meteoconsult

Description

Bon ben vala ce que je suis ammené a faire quand l'ennui me prend
Voici un pti addon pour consulter la météo a 5 jours partout en France
Je me base sur le site de wanadoo qui lui meme tire ses infos du site de MeteoConsult.
Le code est en socket based et l'interface utilise mdx.dll et nhtml.dll

Source / Exemple :


dialog meteo {
  title "MeteoConsult v1.0"
  size -1 -1 360 446
  option pixels
  button "", 1, 3 29 355 415
  text "Selectionnez une zone:", 2, 4 8 117 17
  combo 3, 125 6 153 70, drop
  button "Afficher", 4, 286 7 71 17
}
on 1:dialog:meteo:init:0: {
  if ($exists($scriptdirmeteo) == $false) .mkdir $+(",$scriptdirmeteo,")
  $iif($findfile(meteo,*.gif,0,0,.remove $+(",$1-,")),)
  $iif($findfile(meteo,*.meteo,0,0,.remove $+(",$1-,")),)
  did -ac $dname 3 France
  var %n 1
  while (%n <= $lines($scriptdirlist.txt)) { did -a $dname 3 $read($scriptdirlist.txt,%n) | inc %n }
  if ($window(@meteo)) close -@ @meteo
  mdx SetMircVersion $version
  mdx MarkDialog $dname
  mdx SetControlMDX $dname 1 Window > $scriptdirdialog.mdx
  window -ahk0 +dL @meteo 0 0 320 320
  did -i $dname 1 1 grab $window(@meteo).hwnd @meteo
  if ($exists($scriptdirmeteo\load.meteo) == $true) .remove $+(",$scriptdirmeteo\load.meteo,")
  if ($exists($scriptdirmeteo\select.meteo) == $true) .remove $+(",$scriptdirmeteo\select.meteo,")
  write $+(",$scriptdirmeteo\load.meteo,") <html><head></head><body><p valign="center" align="center"><font face="Tahoma" size="3">Loading...</font></p></body></html>
  write $+(",$scriptdirmeteo\select.meteo,") <html><head></head><body><p valign="center" align="center"><font face="Tahoma" size="3">MeteoConsult v1.0<br><br>by Seregon</font></p></body></html>
  nhtml attach $window(@meteo).hwnd
  nhtml select $window(@meteo).hwnd
  nhtml navigate $scriptdirmeteo\select.meteo
}
alias -l nhtml dll $+(",$scriptdirnHTMLn_2.93.dll,") $1-
alias -l mdx dll $+(",$scriptdirmdx.dll,") $1-
on 1:dialog:meteo:sclick:4: {
  meteo $iif($calc(128 + $did($dname,3).sel) == 129,map1,city $calc(128 + $did($dname,3).sel))
  did -b $dname 4
}
alias -l meteo {
  if ($1 != getimg) {
    if (!$sock(meteo)) { sockopen meteo meteo.wanadoo.fr 80 | sockmark meteo $1- }
    else { sockmark meteo $1- | .signal meteo }
  }
  else {
    var %n = 4
    while (%n >= 0) {
      set $+($eval(%meteo.getst.,0),%n) 1
      if ($exists($+($scriptdirmeteo\icn,%n,.gif)) == $true) .remove $+(",$scriptdirmeteo\icn,%n,.gif")
      sockopen meteoget. $+ %n meteo.wanadoo.fr 80 
      dec %n
    }
  }
  nhtml navigate $scriptdirmeteo\load.meteo
}
on 1:sockopen:meteo: {
  if (map? iswm $sock($sockname).mark) {
    if ($exists($scriptdirmeteo\mapfr.gif) == $true) .remove $+(",$scriptdirmeteo\mapfr.gif")
    sockwrite -n $sockname GET /Images/france0.gif HTTP/ 1.1
  }
  elseif (city ??? iswm $sock($sockname).mark) sockwrite -n $sockname GET $+(/data/city/FR/,$gettok($sock($sockname).mark,2,32),.html) HTTP/ 1.1
  elseif (4days ??? iswm $sock($sockname).mark) sockwrite -n $sockname GET $+(/data/city/FR/,$gettok($sock($sockname).mark,2,32),_4d.html) HTTP/ 1.1
  sockwrite -n $sockname Host: meteo.wanadoo.fr
  sockwrite -n $sockname Connection: Keep-Alive
  sockwrite -n $sockname
}
on 1:signal:meteo: {
  if (map? iswm $sock(meteo).mark) {
    if ($exists($scriptdirmeteo\mapfr.gif) == $true) .remove $+(",$scriptdirmeteo\mapfr.gif")
    sockwrite -n meteo GET /Images/france0.gif HTTP/ 1.1
  }
  elseif (city ??? iswm $sock(meteo).mark) sockwrite -n meteo GET $+(/data/city/FR/,$gettok($sock(meteo).mark,2,32),.html) HTTP/ 1.1
  elseif (4days ??? iswm $sock(meteo).mark) sockwrite -n meteo GET $+(/data/city/FR/,$gettok($sock(meteo).mark,2,32),_4d.html) HTTP/ 1.1
  sockwrite -n meteo Host: meteo.wanadoo.fr
  sockwrite -n meteo Connection: Keep-Alive
  sockwrite -n meteo
}
on 1:sockopen:meteoget.?: {
  set %meteo.getst 1
  sockwrite -n $sockname GET $eval($+($eval(%meteo.icn,0),$gettok($sockname,2,46)),2) HTTP/ 1.1
  sockwrite -n $sockname Host: meteo.wanadoo.fr
  sockwrite -n $sockname Connection: Close
  sockwrite -n $sockname
  inc %meteo.n 1
}
on 1:sockread:meteo: {
  if ($sockerr > 0) || (!$sock($sockname)) { unset %meteo | halt }
  :meteo
  if (map? iswm $sock($sockname).mark) {
    if (map1 == $sock($sockname).mark) { unset %meteomapf | sockread %meteo | if ($gettok(%meteo,1,32) == Content-Length:) { set %meteo.mapfrl $gettok(%meteo,2,32) } | if (!%meteo) { sockmark meteo map2 } | if ($exists($scriptdirmeteo\mapfr.gif) == $true) { .remove $+(",$scriptdirmeteo\mapfr.gif,") } }
    elseif (map2 == $sock($sockname).mark) { sockread &meteo | bwrite $+(",$scriptdirmeteo\mapfr.gif") -1 &meteo | if ($file($scriptdirmeteo\mapfr.gif).size == %meteo.mapfrl) { inc %meteomapf 1 | if (%meteomapf == 2) { if ($exists($scriptdirmeteo\rapport.meteo) == $true) { .remove $+(",$scriptdirmeteo\rapport.meteo,") } | write $+(",$scriptdirmeteo\rapport.meteo,") <html><head></head><body><img src="mapfr.gif"></body></html> | nhtml navigate $scriptdirmeteo\rapport.meteo | did -e meteo 4 | unset %meteo* | dialog -t meteo MeteoConsult v1.0 } } }
  }
  elseif (city ??? iswm $sock($sockname).mark) {
    sockread %meteo
    if ($left($gettok(%meteo,1,32),5) == $str($chr(9),5)) {
      tokenize 32 %meteo
      if (<td class=titlecity isin $1-) set %meteo.city $gettok($gettok($1-,3,62),1,60)
      elseif (<td class=subtitlecity isin $1-) set %meteo.date0 $gettok($gettok($1-,3,62),1,60)
      elseif (<td class=cityprev isin $1-) { set %meteo.icn0 $+(/,$deltok($gettok($gettok($gettok($1-,3,62),1,60),2-,47),-1,32)) | set %meteo.weather0 $gettok($gettok($1-,5,62),1,60) | set %meteo.pm0 $gettok($gettok($1-,7,62),1,32) | set %meteo.am0 $gettok($gettok($1-,8,62),1,32) }
    }
    elseif (%meteo == 0) { %meteo.end = 1 }
    if (%meteo.end) inc %meteo.end 1
    if (%meteo.end >= 3) { unset %meteo.end | set %meteo.day 0 | .timer 1 5 meteo 4days $gettok($sock($sockname).mark,2,32) }
  }
  elseif (4days ??? iswm $sock($sockname).mark) {
    sockread %meteo
    if ($left(%meteo,11) == $str($chr(9),11)) {
      tokenize 32 %meteo
      if (<td class=subtitlecity4d isin $1-) { inc %meteo.day 1 | set $+($eval(%meteo.date,0),%meteo.day) $gettok($gettok($1-,2,62),1,60) }
      elseif (<td class=cityprev isin $1-) { set $+($eval(%meteo.icn,0),%meteo.day) $gettok($gettok($gettok($1-,2,62),2,32),2,61) | set $+($eval(%meteo.weather,0),%meteo.day) $gettok($gettok($1-,-1,62),1,60) }
      elseif (<td class=citytemp isin $1-) { 
        set $+($eval(%meteo.am,0),%meteo.day) $+($gettok($gettok($1-,2,38),-1,62),°C)
        set $+($eval(%meteo.pm,0),%meteo.day) $+($gettok($gettok($1-,1,38),-1,62),°C)
        if (%meteo.day == 4) { unset %meteo.day | set %meteo.n 0 | meteo getimg }
      }
    }
  }
  if ($sockbr > 0) goto meteo
  unset %meteo
}
on 1:sockread:meteoget.?: {
  :meteoget
  if ($eval($+($eval(%meteo.getst.,0),$gettok($sockname,2,46)),2)) { 
    sockread %meteoget
    if (!%meteoget) unset $+($eval(%meteo.getst.,0),$gettok($sockname,2,46))
  }
  else { sockread &meteoget | bwrite $+(",$scriptdirmeteo\icn,$gettok($sockname,2,46),.gif") -1 &meteoget }
  if ($sockbr > 0) goto meteoget
}
on 1:sockclose:meteoget.?: {
  inc %meteoget.end 1
  if (%meteoget.end == 4) { 
    var %rp = $scriptdirmeteo\rapport.meteo
    if ($exists(%rp) == $true) .remove $+(",%rp,")
    write $+(",%rp,") <html><head></head><body><table border="1" cellpading="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#000000" width="320" height="320">
    var %i = 0
    while (%i <= 4) {
      write $+(",%rp,") $+(<tr width="100%" height="64"><td width="75" height="64"><img border="0" src="icn,%i,.gif"></td>)
      write $+(",%rp,") $+(<td width="245" height="64"><p align="center" valign="top"><font face="Tahoma" style="font-size: 11"><b>,$eval($+($eval(%meteo.date,0),%i),2),</b></p>)
      write $+(",%rp,") $+(<p align="center" valign="top"><font face="Tahoma" style="font-size: 11">,$eval($+($eval(%meteo.weather,0),%i),2),</p>)
      write $+(",%rp,") $+(<p align="center" valign="top"><b>AM:</b> $eval($+($eval(%meteo.am,0),%i),2) <b>-</b> <b>PM:</b> $eval($+($eval(%meteo.pm,0),%i),2),</p></font>)
      write $+(",%rp,") </td></tr>
      inc %i
    }
    write $+(",%rp,") </table></body></html>
    did -e meteo 4
    dialog -t meteo MeteoConsult v1.0 - %meteo.city
    unset %meteo*
    nhtml navigate $scriptdirmeteo\rapport.meteo
  }
}
on 1:exit:$iif($findfile(meteo,*.gif,0,0,.remove $+(",$1-,")),)

Conclusion :


Zinkietez pas okune update n'est prévue lol jvais me concentrer sur des projets un peu plus intéressants

Codes Sources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.