Meteoconsult

Soyez le premier à donner votre avis sur cette source.

Vue 12 568 fois - Téléchargée 425 fois

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

Ajouter un commentaire Commentaires
Messages postés
142
Date d'inscription
lundi 18 octobre 2004
Statut
Membre
Dernière intervention
8 juin 2006

j'arrive pas a avoir les images ca me met un carér blanc avec un petite croix rouge ^^
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1
bah c'est la politique du site, de laisser faire, donc on y peut pas grand choses..
si les gens se remettent pas eux même en question avant de poster leur trucs en se disant "mais attends, c'est de la merde ce que jss en trin de poster, même dans le mirc.hlp ils font mieux !§" bah ça ira pas ;)
Messages postés
708
Date d'inscription
lundi 15 juillet 2002
Statut
Membre
Dernière intervention
17 mars 2005

punaise une belle source ! ça fait tout bizare, le niveau du site est vraiment tombé. C'est dommage , je sais pas si on peut faire quelque chose contre ça mais ça devient triste de voir que le site ne releve pas la barre.
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1
" var %n 1
while (%n <= $lines($scriptdirlist.txt)) { did -a $dname 3 $read($scriptdirlist.txt,%n) | inc %n }"

var %n 1, %x $lines($scriptdirlist.txt)
while %n <= %x { did -a $dname 3 $read($scriptdirlist.txt,%n) | inc %n }

ça va plus vite jcrois qd tu mets une var pr le nb de ligne d'un fichier.
Messages postés
343
Date d'inscription
dimanche 30 novembre 2003
Statut
Membre
Dernière intervention
19 août 2006
1
Rien à dire . trés bon travail Seregon ça change des tipiques away system répondeur autojoin etc
9/10
Afficher les 7 commentaires

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.