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
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.