Hello tout le monde..

Voilà, j'ai recemment appris plusieurs choses sur les socket, bien evidement, je ne maitrise pas totalement tout.

Je vais simplement vous proposer un petit code expliquer qui fait parti de ce que je comprends bien.

Ici, je vais presenter un code qui sert à rien, il servira juste d'exemple, pour le reste après, faites travailler votre imagination ^^
je vais tenter d'expliquer le code et après le mettre sans commentaire.
Donc comment recuperer la date sur le site TF1.fr

Tout d'abord, un petit alias qui est souvent pratique, il sert à couper tous les tags presents dans la page web par exemple :
bgcolor="#FFFFFF"tdimg src="imgstrx.gif" width="468" height="1"tdtrtable Blc=47772,11,CL,cache1 Zon=10002 tdtd width="194" valign="top" Zon=10003 Blc=51175,"GeneralEphemeride" div

voici donc l'alias, gardez le il peut je pense toujours servir

CODE
alias vhtm { var %i,%a = $1-,%b = $regsub(%a,/<[^>]+>/g,,%i) | return %i }


Passons aux socket ..



;ici, on commence par fermer le socket au cas où il soit ouvert
;ensuite on l'ouvre en indiquant le site, et au port 80

CODE
  alias sock.date {
  sockclose sock.date
  sockopen sock.date tf1.fr 80
}


; Ici, à l'ouverture du socket "sock.date" .. if ($sockerr) au cas où le socket ne s'ouvre pas ou a un soucis, je met un echo, (pour savoir si il y a erreur) et halt
;Après Utiliser la commande /sockwrite :" La commande /sockwrite permet d'enchaîner l'information à envoyer sur une connexion (aide mirc fr)", l'info envoyé est GET plus ajout d'url pour savoir ce qu'il doit prendre .
;pour info : ($sockname == sock.date)
;ensuite je mets deux sauts de ligne qui aurait pu être deux fois : sockwrite -nt $sockname $crlf mais sockwrite -nt $sockname $str($crlf,2) fais economiser une ligne (oui ça sert à rien dans ce cas lol)

CODE
on *:sockopen:sock.date: {
  if ($sockerr) { echo -a -Connexion Impossible. | halt }
  echo -a connecté
  sockwrite -nt $sockname GET http://www.tf1.fr  
  sockwrite -nt $sockname $str($crlf,2)

}

; on sockread, donc " à la lecture du socket" , je mets la condition que si class="S1742" est dans %q (c'est à dire les info prise precedement )
; un msg poiur retourner l'info, ici on utilise l'alias vhtm pour enlever les tag, on utilise le $remove sur le chr(9) (les tabulations), pour eviter que le script fasse des petits carrés. Ici j'ai rajouté sur le $remove,
;d'autres caracteres car ils étaient present dans le mot retour.
;Pour savoir ce qu'il faut mettre dans la condition, regarder la source du site (testé avec ce code, aller sur le site et prenez la source)

CODE
on *:sockread:sock.date: {  
  if (class="S1742" isin %q) { timer 1 1 msg $!msn.get($cid,fullroom) S dTrebuchet\bMS;0 (co) Nous sommes le $remove($vhtm(%q),$chr(9),-,/,<,>,!)  }    
  sockread %q
}

; ici petit echo sur le on sockclose pour controler que le socket est bien fermé.
on *:sockclose:sock.date: {

echo -a 4Déconnexion de Tf1.fr
}
on *:text:*@date:#:sock.date

Donc grosso modo :


CODE
alias sock.date {
  sockclose sock.date
  sockopen sock.date tf1.fr 80
}
on *:sockopen:sock.date: {
  if ($sockerr) { echo -a -Connexion Impossible. | halt }
  echo -a 4Connexion sur Tf1.fr établie 
  sockwrite -nt $sockname GET http://www.tf1.fr  
  sockwrite -nt $sockname $str($crlf,2)

}
on *:sockread:sock.date: {  
  if (class="S1742" isin %q) { timer 1 1 msg $!msn.get($cid,fullroom) S dTrebuchet\bMS;0 (co) Nous sommes le $remove($vhtm(%q),$chr(9),-,/,<,>,!) 
 (co) il est $time  }    
  sockread %q
}
on *:sockclose:sock.date: {

  echo -a 4Déconnexion de Tf1.fr
}
on *:text:*@date:#:sock.date



voilà, j'espere que ça vous donnera un peu plus de clarté sur les socket, ceci represente juste une infime partie des socket, il y a bon nombre de possibilité avec ceci, a vous de faire travailler votre imagination.

Je rappelle que ce code est juste à titre d'exemple, il ne sert à rien, il y a des moyens plus rapide et efficaces d'avoir la date (genre %ccsjour sur ccs heu enfin je crois, que c'est ça ..tongue.gif))


Si il y a des truc que j'explique mal, n'hesiter pas à le dire.