Meteo en picwin (france et dom-tom)

Soyez le premier à donner votre avis sur cette source.

Vue 10 138 fois - Téléchargée 207 fois

Description

Ce code présente la météo française ainsi que celle des DOM-TOM dans une PicWin interactive.
Il dispose d'une champ de recherche et peut donner des prévisions au niveau régional, en plus de donner des éphémérides et températures d'une ville.
Il donne également la carte de vigilance au niveau de la France.

Il tire ses informations du site www.lachainemeteo.com qui donne Matin + Aprem de 0 à 3 jours, Journée au-delà.
Visitez ce site pour comprendre comment fonctionnent les prévisions et comment elles sont présentées.

C'est assez simple, et étant donné qu'une aide est incluse, je ne vais pas tout expliquer ici.

Pour l'installer, vous devez avoir les deux .mrc chargés, GUI-ArKanis est indispensable.
Mettez les deux fichiers directement dans le dossier mIRC et tapez /load -rs Meteo-By-ArKanis.mrc (le deuxième devrait se charger automatiquement)
Tapez ensuite /meteo pour lncer la PicWin

Source / Exemple :


;************************
;         Meteo
;      By  ArKanis
; http://www.arkanis.eu
;************************
; Version 1.3

;      Powered  by
; www.lachainemeteo.com

alias meteo {
  if (($exists(GUI-ArKanis.mrc)) && (!$script(GUI-ArKanis.mrc))) {
    .load -rs GUI-ArKanis.mrc
    echo 2 -a * Chargement du fichier GUI-ArKanis.mrc effectué
  }
  if (!$isalias(²picwin)) {
    echo 2 -a * Erreur : il faut avoir chargé le fichier GUI-ArKanis.mrc
    if ($isalias(pw.dl)) {
      if ($input.request.y.n(Voulez-vous télécharger le fichier GUI-ArKanis.mrc ?)) pw.dl
    }
    return
  }
  ²picwin @Meteo 500 500 "Meteo"
  titlebar @Meteo By ArKanis
  ²newmenu @Meteo Consulter la météo
  ²newitem @Meteo En France:²meteo.sel France,DOM TOM:²meteo.sel,$chr(9),Changer le jour:²meteo.selday,$chr(9),Fermer:²close @Meteo
  ²newmenu @Meteo Autres écrans
  ²newitem @Meteo Vigilance:²meteo.vigilance,Recherche:²meteo.rech
  ²newmenu @Meteo ?
  ²newitem @Meteo Aide:²meteo.aide,Crédits:²meteo.credits,Désinstaller:²meteo.delete
  ²drawmenu @Meteo $iif($isdir(Meteo),1 1,3 1)
  ²description @Meteo Temps 400
  ²ref @Meteo
}

alias ²meteo.sel {
  if (!$window(@Meteo)) return
  if ($hget(Meteo,Jour) !isnum 0-9) hadd -m Meteo Jour 0
  if ($1) {
    hadd -m Meteo Link $+(index.php?langue=fr&echeance=,$hget(Meteo,Jour))
    ²meteoopen France
  }
  else {
    ²centre @Meteo -b 40 Sélection d'un DOM-TOM
    ²centre @Meteo 225 Sélectionnez votre DOM-TOM
    ²select @Meteo 100 150 245 200 30 Guadeloupe¥Martinique¥Guyane¥La Réunion¥St Pierre et Miquelon¥Mayotte¥Polynésie Française¥Nouvelle Calédonie¥Wallis et Futuna
    ²button @Meteo 101 200 280 100 20 Sélectionner
    ²description @Meteo 100 Change la région sélectionnée dans une permutation circulaire
    ²description @Meteo 101 Affiche la météo de la région choisie
  }
}

alias ²meteo.selday {
  if (!$window(@Meteo)) return
  ²centre @Meteo -b 40 Sélection du jour
  var %l = 0¥1¥2¥3¥4¥5¥6
  if ($hget(Meteo,Jour) isnum 0-6) {
    while ($left(%l,1) != $hget(Meteo,Jour)) var %l = $addtok($deltok(%l,1,165),$left(%l,1),165)
  }
  ²select @Meteo 102 200 245 100 30 %l
  ²button @Meteo 103 200 280 100 20 Sélectionner
  ²description @Meteo 103 Donne la météo prévue pour dans X jours pour toutes les demandes à venir
}
alias ²meteo.rech {
  ²centre @Meteo -b 40 Recherche
  ²centre @Meteo 70 Entrez le nom de la ville ou son code postal
  ²edit @Meteo 8 200 110 100 20
  ²button @Meteo 9 200 135 100 20 Rechercher
  ²description @Meteo 9 Etablie une liste des résultats trouvés pour sélectionner rapidement une ville
}
alias meteo.answer if ($1 == ²meteo.rech) meteo.sclick 9 $2
alias ²meteo.delete {
  noop $findfile(Meteo/,*,0,.remove $qt($1-))
  .rmdir Meteo
  ²close @Meteo
  window -a "Status Window"
  if ($?!="Souhaitez-vous décharger le fichier $script (contient la Météo) ?") {
    if (!$?!="Voulez-vous GARDER le fichier ?") .timer 1 1 .remove $qt($script)
    .timer 1 1 .unload -rs $qt($script)
  }
}
;**************
;Données du GUI
;**************
alias meteo.menu {
  sockclose meteo*
  if (($1) && ($hget(MeteoLocation))) hfree MeteoLocation
}
alias meteo.close {
  hfree -w Meteo*
  if ($window(@Meteo.copyVilles)) window -c @Meteo.copyVilles
}
on *:close:@Meteo:meteo.close

alias meteo.mouse {
  if (!$window(@Meteo)) return
  var %x = $1, %y = $2, %g
  var %f = $hget(Meteo,Origin), %ox = $gettok(%f,1,32), %oy = $gettok(%f,2,32), %dx = $gettok(%f,3,32), %dy = $gettok(%f,4,32)
  if (($inrect(%x,%y,%ox,%oy,%dx,%dy)) && ($hget(MeteoLocation)) && ($hget(Meteo,Ready))) {
    var %t = 1, %l = MeteoLocation
    while $hget(%l,%t).item {
      var %i = $ifmatch, %d = $hget(%l,%i)
      tokenize 32 %d
      if ($inrect(%x,%y,$1,$2,35,28)) {
        var %g = 1
        if ($hget(MeteoTemp,Loc) == %i) break
        hadd -m MeteoTemp Loc %i
        .²backup @Meteo Villes
        if (!$window(@Meteo.copyVilles)) ²svg @Meteo Villes
        var %ht = $+(MeteoVille,$hget(Meteo,Period))
        var %t1 = $replace(%i,$chr(165),$chr(32)), %t2 = T° : $gettok($hget(%ht,%i),3,32), %dy = 32
        if (%t2 == T° : ø) var %t2, %dy = $calc(%dy - 14)
        var %w = $max($width(%t1,Tahoma,10),$width(%t2,Tahoma,10)), %ox = $calc($1 -4 - %w / 2), %oy = $calc($2 -26)
        drawrect -nr @Meteo 0 1 $calc($1 - %w) %oy $calc(%w +6) %dy
        drawrect -fnr @Meteo 16761024 1 $calc($1 - %w +1) $calc(%oy +1) $calc(%w +4) $calc(%dy -2)
        drawtext -nr @Meteo 0 Tahoma 10 $calc($1 -%w + (%w +6- $width(%t1,Tahoma,10)) /2) $calc(%oy + 2) %t1
        if (%t2) drawtext -nr @Meteo 0 Tahoma 10 $calc($1 -%w + (%w +6- $width(%t2,Tahoma,10)) /2) $calc(%oy +17) %t2
        ²ref @Meteo
        break
      }
      inc %t
    }
    if (%g) return
  }
  if ((!%g) && ($hget(MeteoTemp,Loc))) {
    hdel MeteoTemp Loc
    ²backup @Meteo Villes
  }
  if ((!$hget(MeteoVille,Vigilance)) && ($hget(Meteo,Jour) <= 2) && ($hget(Meteo,Ready)) && (!$hget(@Meteo,Main))) {
    if (($inrect(%x,%y,49,471,56,23)) && ($hget(Meteo,Period) != 0)) {
      hadd -m Meteo Period 0
      ²efface @Meteo 25 60 450 410
      .meteo.fond.apply Meteo/Backup.png
      meteo.fond.apply
    }
    elseif (($inrect(%x,%y,371,471,79,23)) && ($hget(Meteo,Period) != 1)) {
      hadd -m Meteo Period 1
      ²efface @Meteo 25 60 450 410
      .meteo.fond.apply Meteo/Backup.png
      meteo.fond.apply
    }
  }
}

alias meteo.sclick {
  if (!$window(@Meteo)) return
  if ($1 == 101) {
    var %g = $calc(96 + $findtok(Guadeloupe¥Martinique¥Guyane¥La Réunion¥St Pierre et Miquelon¥Mayotte¥Polynésie Française¥Nouvelle Calédonie¥Wallis et Futuna,$²did(@Meteo,100),1,165))
    hadd -m Meteo Link $+(index.php?langue=fr&echeance=,$hget(Meteo,Jour),&domtom=,%g)
    ²meteoopen $²did(@Meteo,100)
  }
  elseif ($1 == 103) {
    hadd -m Meteo Jour $²did(@Meteo,102)
    ²drawmenu @Meteo 1 1
  }
  elseif ($hget(MeteoTemp,Loc)) {
    hadd -m Meteo Link $+(index_detail.php?langue=fr&echeance=,$hget(Meteo,Jour),&num_ville=,$gettok($hget($+(MeteoVille,$hget(Meteo,Period)),$ifmatch),5,32))
    ²meteoopen $hget(MeteoTemp,Loc)
  }
  elseif ($1 == 9) {
    if ($²did(@Meteo,8)) {
      hadd -m Meteo Link $+(moteur_recherche.php?langue=fr&txt_search=,$ifmatch)
      .meteo.wait
      .²meteoopen
    }
  }
  elseif ($1 == 11) {
    var %v = $replace($²did(@Meteo,10),$chr(32),$chr(165))
    hadd -m Meteo Link $+(index_detail.php?langue=fr&echeance=,$hget(Meteo,Jour),&num_ville=,$hget(MeteoVille,%v))
    ²meteoopen $deltok(%v,-1,165)
  }
}
;*******
;Sockets
;*******
alias ²meteoopen {
  if (!$window(@Meteo)) return
  if ($window(@Meteo.copyVilles)) window -c $ifmatch
  if ($show) {
    meteo.wait
    ²centre @Meteo -b 40 $1- $meteo.date($hget(Meteo,Jour))
    if ($hget(Meteo,Jour) <= 2) {
      var %p = 51
      while %p < 451 {
        drawline -nr @Meteo $rgb($calc(30 + %p /2),250,$calc(255 - %p /2)) 2 %p 471 %p 494
        inc %p 2
      }
      drawrect -nr @Meteo 0 1 49 470 402 26
      drawtext -nr @Meteo 8388608 Tahoma 12 60 475 MATIN
      drawtext -nr @Meteo 8388608 Tahoma 12 376 475 APRES-MIDI
    }
  }
  sockclose meteo
  sockopen meteo www.lachainemeteo.com 80
}
alias -l meteo.date {
  var %d = $+($chr(40),$date($calc($ctime + 86400 * $1)),$chr(41))
  if ($1 == 0) return aujourd'hui %d
  if ($1 == 1) return demain %d
  if ($1 == 2) return après-demain %d
  else return dans $1 jours %d
}
on *:sockopen:meteo:{
  if ($hget(MeteoQueue)) hfree MeteoQueue
  hfree -w MeteoVille*
  hfree -w MeteoTemp
  hadd -m Meteo Period 0
  sockwrite -n $sockname GET $+(http://www.lachainemeteo.com/,$$hget(Meteo,Link)) HTTP/1.0
  sockwrite -n $sockname $+(Host: lachainemeteo.com,$str($crlf,2)))
}

on *:sockread:meteo:{
  var %a
  sockread %a
  if ($gettok(%a,1,9) == .Fond_Carte) sockmark $sockname FOND
  elseif (($regex(%a,/background-image:url\('(.+)'\)/gi)) && ($sock($sockname).mark == FOND)) {
    fond.meteo $regml(1)
    sockmark $sockname 0
  }
  elseif ($regex(%a,Menu_Periode_200_([0-9])_J([0-9]))) {
    if ($regml(2) != $hget(Meteo,Jour)) sockmark $sockname 0
    else {
      hadd -m MeteoTemp Heure $regml(1)
      sockmark $sockname VILLES
      if ($exists(Meteo/Backup.png)) drawpic -n @Meteo 50 70 Meteo/Backup.png
      drawrect -nr @Meteo 0 1 49 69 402 402
      ²centre @Meteo 240 Chargement en cours ...
    }
  }
  elseif ($regex(%a,bloc_ephem_j([0-9]))) {
    if ($regml(1) == $hget(Meteo,Jour)) sockmark $sockname Ephemerides
  }
  elseif ($sock($sockname).mark == Ephemerides) {
    if ($regex(%a,/height: 30px;.+>([^>]+)</div>$/i)) hadd -m MeteoVille Eph $hget(MeteoVille,Eph) $replace($regml(1),$chr(32),$chr(165))
    elseif ($regex(%a,(-?[0-9]+)°C)) hadd -m MeteoVille Eph $hget(MeteoVille,Eph) $replace($+($regml(1),°C),$chr(32),$chr(165))
    elseif ($regex(%a,/height: 13px;.+">(.+)</div>/U)) hadd -m MeteoVille Eph $hget(MeteoVille,Eph) $replace($regml(1),<br>,$chr(165),$chr(32),$chr(165))
    elseif ($regex(%a,/(Lever|Coucher) : <[^>]+>([^<]+)</span></div>/i)) hadd -m MeteoVille Eph $hget(MeteoVille,Eph) $replace($regml(2),$chr(32),$chr(165))
    elseif ($regex(%a,/info([0-9])_ephem/i)) {
      if (($regml(1) isnum 2-) && ($regex(H,%a,/>([^>]+)</div>/i))) hadd -m MeteoVille Eph $hget(MeteoVille,Eph) $replace($regml(H,1),$chr(32),$chr(165))
    }
  }
  elseif ($regex(%a,/num_ville=([0-9]+)".+class="Liste_Elt_href">(.+)</a>/gU)) {
    hadd -m MeteoVille Rech $addtok($hget(MeteoVille,Rech),$regml(2),165)
    hadd -m MeteoVille $replace($regml(2),$chr(32),$chr(165)) $regml(1)
  }
  elseif ($regex(%a,/src="/image/logo/lachainemeteo/lcm_60x40.gif"/i)) sockmark $sockname VILLES
  elseif ($sock($sockname).mark == VILLES) {
    if ($regex(%a,/Periode_Temps_([0-1])/i)) hadd -m MeteoTemp Heure $regml(1)
    if ($regex(%a,(-?[0-9]+) &\#176;)) hadd -m $+(MeteoVille,$hget(MeteoTemp,Heure)) $hget(MeteoTemp,Ville) $regml(1) $hget(MeteoTemp,Pic) $hget(MeteoTemp,CP)
    elseif ($regex(%a,num_ville=([0-9]+))) hadd -m MeteoTemp CP $regml(1)
    else {
      if ($regex(%a,src="(.+)" class='Lien_Icone')) {
        var %i = $regml(1), %f = $gettok(%i,-1,47)
        if (!$exists($+(Meteo/,%f))) dl.meteo %i 1
        hadd -m MeteoTemp Pic %f
      }
      var %r = /left\:([0-9]+\.?[0-9]?)px\;top\:([0-9]+\.?[0-9]?)px.+'(.+)'/ig
      if ($regex(%a,%r)) hadd -m MeteoTemp Ville $remove($replace($regml(3),é,é,è,è,ç,ç,$chr(32),$chr(165),#039;,',ï,ï),&amp;) $regml(1) $regml(2)
    }
  }
}
on *:sockclose:meteo:{
  if ($hget(Meteo,Link)) hdel Meteo Link
  if ($hget(MeteoVille,Rech)) {
    ²list @Meteo 10 150 200 200 200 $hget(MeteoVille,Rech)
    ²button @Meteo 11 150 405 200 20 Sélectionner
  }
}

alias -l fond.meteo {
  if (!$isdir(Meteo)) mkdir Meteo
  var %f = $+(Meteo/fond.,$extension($1-))
  if ($exists(%f)) .remove %f
  hadd -m Meteo Fond $1-
  hadd -m Meteo Fond2 %f
  sockclose MeteoFond
  sockopen MeteoFond www.lachainemeteo.com 80
}
on *:sockopen:MeteoFond:{
  sockwrite -n $sockname GET $$hget(Meteo,Fond) HTTP/1.0
  sockwrite -n $sockname $+(Host: lachainemeteo.com,$str($crlf,2)))
}

on *:sockread:MeteoFond:{
  var %a
  sockread &a
  if ((!$sock($sockname).mark) && ($bfind(&a, 1,$str($crlf,2)))) {
    bcopy &b 1 &a $calc($ifmatch +4) -1
    if ($bvar(&b,0)) bwrite $hget(Meteo,Fond2) -1 -1 &b
    sockmark $sockname 1
  }
  elseif ($bvar(&a,0)) bwrite $hget(Meteo,Fond2) -1 -1 &a
}
on *:sockclose:MeteoFond:meteo.fond.apply
alias -l meteo.fond.apply {
  if (!$window(@Meteo)) return
  var %f = $hget(Meteo,Fond2)
  if ($1-) var %f = $1-
  elseif (!%f) var %f = Meteo/fond.png
  if (!$exists(%f)) return
  var %x = $pic(%f).width, %y = $pic(%f).height, %ox = $calc(250 - %x / 2), %oy = $calc(270 - %y /2)
  drawrect -nr @Meteo 0 1 $calc(%ox -1) $calc(%oy -1) $calc(%x +2) $calc(%y +2)
  drawpic -n @Meteo %ox %oy $shortfn(%f)
  if ($show) {
    hdel -w Meteo Fond*
    hadd -m Meteo Origin %ox %oy %x %y
    if ((!$sock(Meteo.dl)) && (!$hget(MeteoQueue,0).item)) meteo.generate
  }
}

alias -l dl.meteo {
  hadd -m MeteoQueue $1-
  if ($exists($+(Meteo/,$gettok($1,-1,47)))) .remove $+(Meteo/,$gettok($1,-1,47))
  if ($sock(dl.meteo)) return
  .timer -h 1 500 dl.meteo.do
}
alias -l dl.meteo.do {
  var %f = $hget(MeteoQueue,1).item
  if (!%f) {
    if (!$sock(MeteoFond)) meteo.generate
    return
  }
  hadd -m MeteoTemp DL %f
  hadd -m MeteoTemp DLName $+(Meteo/,$gettok(%f,-1,47))
  sockclose Meteo.dl
  sockopen Meteo.dl www.lachainemeteo.com 80
}
on *:sockopen:Meteo.dl:{
  sockwrite -n $sockname GET $$hget(MeteoTemp,DL) HTTP/1.0
  sockwrite -n $sockname $+(Host: lachainemeteo.com,$str($crlf,2)))
}
on *:sockread:Meteo.dl:{
  sockread &a
  if ((!$sock($sockname).mark) && ($bfind(&a, 1,$str($crlf,2)))) {
    bcopy &b 1 &a $calc($ifmatch +4) -1
    if ($bvar(&b,0)) bwrite $$hget(MeteoTemp,DLName) -1 -1 &b
    sockmark $sockname 1
  }
  elseif ($bvar(&a,0)) bwrite $$hget(MeteoTemp,DLName) -1 -1 &a
}
on *:sockclose:Meteo.dl:{
  hdel MeteoQueue $hget(MeteoTemp,DL)
  hdel -w MeteoTemp DL*
  dl.meteo.do
}

alias -l meteo.generate {
  if (!$window(@Meteo)) return
  if ($window(@Meteo.copyVilles)) window -c @Meteo.copyVilles
  var %t = 1, %p = MeteoLocation
  if ($hget(%p)) hfree %p
  var %ht = $+(MeteoVille,$hget(Meteo,Period)), %f = $hget(Meteo,Origin), %ox = $gettok(%f,1,32), %oy = $gettok(%f,2,32), %x = $gettok(%f,3,32)
  if ($pic(Meteo/fond.png).width > 350) .copy -o $qt(Meteo/fond.png) "Meteo/Backup.png"
  while $hget(%ht,%t).item {
    var %i = $ifmatch, %d = $hget(%ht,%i)
    tokenize 32 %d
    if (anim !isin $4) drawpic -tn @Meteo 0 $calc($1 + %ox) $calc($2 + %oy) $shortfn($+(Meteo/,$4))
    else drawpic -ctn @Meteo 16777215 $calc($1 + %ox) $calc($2 + %oy) $shortfn($+(Meteo/,$4))
    if ($3 != ø) drawtext -nr @Meteo 0 Tahoma 10 $calc($1 + %ox + 15) $calc($2 + %oy + 25) $+($3,°)
    hadd -m %p %i $calc($1 + %ox) $calc($2 + %oy)
    inc %t
  }
  if (!$hget(MeteoVille,Vigilance)) {
    var %te = $meteo.translate($puttok($asctime(dd mm yyyy),$calc($asctime(dd) + $hget(Meteo,Jour)),1,32)) $iif($hget(Meteo,Jour) <= 2,$iif(!$hget(Meteo,Period),Matin,Après-Midi))
    ²surligne @Meteo 10 $calc(%ox +2) $calc(%oy +2) %te
  }
  if ($hget(MeteoVille,Eph)) {
    tokenize 32 $replace($gettok($ifmatch,$+($calc($hget(Meteo,Period) +1),-),32),&nbsp;,$chr(165))
    ²surligne @Meteo 12 70 375 $replace($1,$chr(165),$chr(32))
    ²surligne @Meteo -l 12 430 375 $replace($3,$chr(165),$chr(32))
    ²surligne @Meteo 12 70 395 $replace($5,$chr(165),$chr(32))
    ²surligne @Meteo 12 70 415 Lever du soleil : $replace($gettok($1-,-3,32),$chr(165),$chr(32))
    ²surligne @Meteo 12 70 435 Coucher du soleil : $replace($gettok($1-,-2,32),$chr(165),$chr(32))
    ²surligne @Meteo -l 12 430 395 Lune : $replace($gettok($1-,-1,32),$chr(165),$chr(32))
  }
  hadd -m Meteo Ready 1
  ²ref @Meteo
}

;*************
;Autres écrans
;*************
alias ²meteo.vigilance {
  if (!$window(@Meteo)) return
  ²centre @Meteo -b 40 Carte de vigilance
  meteo.wait
  if ($hget(MeteoLocation)) hfree MeteoLocation
  if ($hget(Meteo,Period) != $null) hdel Meteo Period
  hfree -w MeteoVille*
  hadd -m MeteoVille Vigilance 0 0 ø vigilance.gif
  fond.meteo /image/carte/vigilance/vigilance_fond.gif
  dl.meteo /image/carte/vigilance/vigilance.gif
  hadd -m MeteoTemp Carte Vigilance
}

alias ²meteo.aide {
  if (!$window(@Meteo)) return
  ²centre @Meteo -b 40 Aide
  var %d = drawtext -nr @Meteo 0 Tahoma 12 30
  %d 120 Bienvenue sur l'aide de Meteo (codé par ArKanis)
  %d 140 Cette version très simple permet de connaître la météo en France
  %d 160 ou ses DOM-TOMs et ce de un à six jours.
  %d 180 Pour commencer, choisissez où regarder la météo.
  %d 220 Vous obtiendrez plus d'informations et passant la souris sur une ville
  %d 240 et en cliquant dessus
}
alias ²meteo.credits {
  if (!$window(@Meteo)) return
  ²centre @Meteo -b 40 Crédits
  var %d = drawtext -pnr @Meteo 0 Tahoma 12 40 
  %d 105 Utilitaire codé par ArKanis
  %d 125 Mon Site :
  ²link @Meteo 96 213 125 "www.arkanis.eu" www.arkanis.eu
  %d 145 Météo, images provenant de :
  ²link @Meteo 97 213 145 "www.lachainemeteo.com" www.lachainemeteo.com
  drawtext -onr @Meteo 0 Tahoma 12 40 220 Remerciements :
  %d 240 A mes testeurs, NeoBlaster et Panthouffle
  %d 260 A mes amis (non cités car trop nombreux pour l'être sans oubli :D)
  %d 280 A ma famille
  %d 325 Deux sites de scripting mIRC :
  ²link @Meteo 98 204 325 "www.ircfr.com" IRCfr
  drawtext -nr @Meteo 0 Tahoma 12 233 325 et
  ²link @Meteo 99 247 325 "www.scriptsdb.org" ScriptsDB
  ²centre @Meteo 355 Codé le 03/02/07 et 04/02/07
}

;******
;Divers
;******
alias -l meteo.wait {
  if ($show) ²clear @Meteo
  hadd -m Meteo Ready 0
  ²centre @Meteo 240 Chargement en cours ...
  ²ref @Meteo
}

;**************
;Aliases utiles
;**************
alias -l min return $calc(($1 + $2 - $abs($calc($1 - $2)))/2)
alias -l max return $calc(($1 + $2 + $abs($calc($1 - $2)))/2)
alias -l extension return $regsubex($1,(.+)\.([^\.]+)$,\2)
alias -l meteo.translate {
  tokenize 32 $1-
  if (!$3) return
  var %j = $1, %m = $2, %a = $3
  if (%m < 3) var %n = $calc($int($calc(365.25*(%a - 1))) + $int($calc(30.6*(%m + 13))) + %j - 621049)
  else var %n = $calc($int($calc(365.25 * %a)) + $int($calc(30.6*(%m +1))) + %j - 621049)
  var %d = $iif($calc(%n % 7),$ifmatch,7)
  return $gettok(Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche,%d,32)
}
;End Of File

Conclusion :


J'ai fait ce code car le site www.lachainemeteo.com avait changé la méthode de travail, et celle-ci permet un résultat bien plus beau je trouve :)

Merci à NeoBlaster et Panthouffle pour leur test
Merci à Wims pour son débogage

Le GUI n'est pas tout à fait fini, mais il suffit très largement pour cette Meteo

Il est nécessaire d'avoir AU MOINS mIRC 6.17 , 6.21 est conseillée

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1287
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
21 février 2009

Hum, quoi comme couleurs ? Tu as des idées ?
J'suis codeur, pas designer, j'ai beaucoup de mal à faire de belles PicWins (esthétiquement quoi) :(
Messages postés
3
Date d'inscription
vendredi 10 novembre 2006
Statut
Membre
Dernière intervention
11 mai 2007

Je trouve sa bien mes un peu de couleur sa seré mieu :-) bye
Messages postés
1287
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
21 février 2009

"tu n'avais pas déja fais ce genre de code ?"
si, mais disons que l'ancien ne fonctionne plus étant donné qu'ils ont changé leur méthode de présentation. Il s'agissait avant d'une simple image représentant la France, mais désormais il s'agit de l'arrière plan, sur lequel on y superpose des images à certaines coordonnées (cf www.lachainemeteo.com pour comprendre un peu mieux)

"aucune difference entre la carte qu'on recois avec la premiere correspondance pour "paris" et la deuxieme."
ça j'pense bien, mais à mon avis il devrait y avoir une différence entre les températures, peut-être même entre les heures de lever/coucher de soleil (à quelques minutes)

"Les tooltip correpondant au nom de ville, ils ne commencent pas au pointeur de la souris ( petit detail mais ca serait mieux ) et surtout, il servent a quoi ?"
je préfère mettre le tooltip à côté, histoire qu'il ne cache pas l'icone de météo. En plus si tu bouges la souris, au moins il ne sera pas obligé de redessiner le rectangle. Il sert à donner le nom de la ville, et du coup, tu sais vraiment où tu cliques.

"Quand on charge une page apres avoir recherché, ca n'efface pas la carte d'avant ( celle de la meteo general )"
Tu parles du fond que je fais rajouter pour rendre la picwin plus jolie ? :)

"troisieme truc : le compteur ( celui du haut ) pour changer les jours, devrait incrémenter la valeur mais il décremente comme celui du bas"
si tu cliques sur l'ascenseur, effectivement ça décroit (y'a des flêches vers le haut), mais si tu cliques à gauche (dans le rectangle où y'a le texte), ça croît

je vais corriger le sockread %a

merci pour ce commentaire :)
dommage d'ailleurs qu'il n'y en ait pas un peu plus :(
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
L'option de mirc qui affiche une erreur lorsque l'on essaye d'utiliser un $identifieur qui existe pas est une tres bonne option, la preuve : dans ton code ( inconnu pour moi ) je sais direct d'ou viens l'erreur avec la ligne sans avoir cherché une seconde et c'est la même pour le codeur, pas besoin de galéré 20 ans a debut le code :)

c'est beaucoup mieux avec $sock :]
je n'avais donc pas vu que ça écrivait le jour et la periode de la journée

L'animation, bah tant pis, j'aime pas ;(

J'aime tjs les menus, mais je n'aime pas le gui en general ( ou du moins pas ces couleurs la )

tu n'avais pas déja fais ce genre de code ?

un truc : dans le menu, les premieres lettres sont soulignées mais le raccourci, c'est quoi :\ ?

un deuxieme truc ( je m'en rend compte au fur et a mesure que j'test ) : il n'y a aucune difference entre la carte qu'on recois avec la premiere correspondance pour "paris" et la deuxieme.
Les tooltip correpondant au nom de ville, ils ne commencent pas au pointeur de la souris ( petit detail mais ca serait mieux ) et surtout, il servent a quoi ?
Quand on charge une page apres avoir recherché, ca n'efface pas la carte d'avant ( celle de la meteo general )

troisieme truc : le compteur ( celui du haut ) pour changer les jours, devrait incrémenter la valeur mais il décremente comme celui du bas

dernier : dans tes event on sockread, parfois, tu sockread %a sans déclaré la var, ce qui te donne une var globale %a, sinon, super bien codé :]

Le code n'a que tres peu d'interet pour moi étant donné qu'il me servira pas mais s'il peux servir, je prefere ca qu'autre chose
Messages postés
1287
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
21 février 2009

Mouais bon pour le bug obtenu, c'est pas catastrophique ... Le bug avec la 6.17 est bien plus grave : on est obligé d'assigner un fond dès qu'on met le -p alors qu'il devrait apparaître qu'avec le -b

Pour l'erreur, c'est ta protection de mIRC (moisie au passage) qui fait arrêter le code. Effectivement, $sockopen n'existe pas, remplace $sockopen par $sock, ça devrait marcher. C'est ça de ne pas coder pendant plusieurs mois :) Je corrigerai Samedi

La différence entre les plusieurs possibilités pour Paris, j'pense que ça dépend de la station de mesures. Il doit y en avoir plusieurs. Si tu veux connaître la météo de chez toi, il faut choisir la plus proche. C'est en tout cas ce que je pense :)

"faudrait demandé le nombre de jour si il n'existe pas."
Quand il n'existe pas, il est automatiquement assigné à 0 (jour d'aujourd'hui, quoi), et ça parraît normal

Le coup du "France dans 0 jour", tu remarqueras que sur la carte en haut à gauche j'ai fait écrire le jour de la météo (en plus de la période de la journée).
C'est vrai que c'est pas super beau, mais bon ... Quand je serai de retour chez moi je mettrai "demain", "après-demain", ...

L'animation de fermeture est un choix personnel. Ce n'est pas la seconde de plus où l'on voit "ArKanis" qui est la plus importante :p

Puis, pour le curseur à droite dans l'édit, je trouve ça original, et ça m'a été plus simple à coder, donc pourquoi pas ?

Sinon tu n'as même pas dit ce que t'en pensais :(
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.