Recherche de paroles [chansons internationales]

Contenu du snippet

Voilà, code sympa (et c'est mon premier) :). Il doit être trés mal scripté, alors aidez moi dans les commentaires plz ;) ...
!find [chanson] : recherche la chanson (pour l'instant ya que une base anglaise). Renvoi un numéro
!paroles [numéro] : envoie les paroles en PV au nick :)

Source / Exemple :


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Voilà, vous avez devant vous le système de recherche de paroles par moi même. Pour le tester, allez sur irc.epiknet.org, canal #PhoeniXX
;;; Si vous l'implantez dans votre bot ou script, veuillez s'il vous plait m'inclure dans les remerciements ;)
;;;
;;; COMMANDES :
;;;
;;; !find [nom-d'une-chanson] va ouvrir un socket qui va chercher un numéro contenant les paroles de la chanson. Espaces autorisés mais caractères accentués pas encore pris en compte.
;;; !paroles [tag-trouvé-grâce-à-!find] va ouvrir le socket sur le numéro trouvé grâce à la recherche !find. Ensuite, un message PV contenant les paroles sera envoyé au nick ayant fais la demande.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;; LES ALIAS
alias direparoles {
  timers off
  $read(paroles.txt, s, %phraseparole)
  /set %lineparole $readn
  $read(paroles.txt,$lines(paroles.txt))
  /set %lineall $readn
  msg %parolechan  $+ %tn $+ Merci  $+ %ta $+ $nick  $+ %tn $+ d'utiliser le système de recherche de paroles de $me ! Regardez le message privé pour avoir les paroles !
  :debut
  /set %ephemere $read(paroles.txt, %lineparole)
  /set %ephemere2 $remove(%ephemere,</TABLE>,<TABLE BORDER=0 WIDTH=508 CELLPADDING=2 CELLSPACING=0>,<TR CLASS=txtTX>,<TD CLASS=txtTX>,&nbsp;)
  /set %ephemere3 $replace(%ephemere2,<br>,-)
  msg %parolenick %ephemere3
  var %lineparole = %lineparole + 1
  if (<BR>&nbsp; !isin %ephemere) { goto debut }
  if (<BR>&nbsp; isin %ephemere) { msg %parolefin FIN ! | /remove paroles.txt }
}

alias direfind {
  $read(finds.txt, s, %phrasefind)
  /set %linefind $readn
  $read(finds.txt,$lines(finds.txt))
  /set %lineall $readn
  set %secure 0
  :debut
  var %secure = %secure + 1
  if (%secure == 6) { timers off | remove finds.txt | break | stop | halt }
  /set %ephemere $read(finds.txt, %linefind)
  if (</TD></TR> isin %ephemere) { msg %findchan 6Fin de la recherche | /remove finds.txt | timers off | halt }
  set %remove $remove(%ephemere,<SPAN CLASS=bloc>,<BR>,<SPAN CLASS=bloc>,</SPAN>,<BR>,</a>,Recherche d'un Titre,&nbsp;,<tr>,<TR CLASS=odd><TD ALIGN=right>,<TABLE CELLSPACING=0 CELLPADDING=0 WIDTH="100%">,</TD><TD ALIGN=Right WIDTH=18>,</TABLE>,</body>)
  set %redit $replace(%remove,<i>,,</i>,,<hr>,-,<TABLE ALIGN=CENTER CELLSPACING=0 CELLPADDING=0 WIDTH="100%">, $+ %tn $+ Pour avoir les paroles il faut taper :  $+ %ta !paroles numéro14 [exemple : !paroles 51052] ,<TR CLASS=even><TD>, $+ %tn $+ Le numéro à taper est le suivant :,<A HREF="/texte/, $+ %tn $+ >> $+ %ta $+    ," TARGET=page CLASS=titLT>,  $+ %tn $+ << : $chr(32) ,</td></tr>,Fin de la recherche., propositions, 6Titre trouvé, résultats, -) 
  set %redit 6 $+ %redit
  if (attention isin %redit) { goto stop }
  msg %findchan %redit
  var %linefind = %linefind + 1
  if (<TR CLASS=odd><TD ALIGN=right> !isin %ephemere) { goto debut }
  :stop
  msg %findchan 6Fin de la recherche
  remove finds.txt
  timerfind off
  :end
  remove finds.txt
  timerfind off
}

;;; LES ON TEXT

On 1:TEXT:*:*:{
  if ($1 == !paroles) {
    set %parolenick $nick
    msg $chan  $+ %tn $+ Veuillez patienter,  $+ %ta $+ $nick  $+ %tn $+, je recherche les paroles associées au numéro...
    timer 0 5 direparoles
    UNSET %paroleread
    SET %parolechan $chan
    set %parolenum $2
    SOCKCLOSE parole
    SOCKOPEN parole www.keskidi.net 80
  }

  if ($1 == !find) {
    msg $chan  $+ %tn $+ Veuillez patienter,  $+ %ta $+ $nick  $+ %tn $+, je recherche les paroles associées au titre  $+ %ta $+ $2-
    timerfind 0 5 direfind  
    timerremove 0 8 remove finds.txt
    UNSET %findread
    SET %findchan $chan
    set %findnum $replace($2-, $chr(32), $chr(37) $+ 20)
    SOCKCLOSE find
    SOCKOPEN find www.keskidi.net 80
  }
}

;;; LES SOCKETS
; PAROLES
on *:sockopen:parole: { sockwrite -nt $sockname GET /texte/ $+ %parolenum HTTP/1.0 | sockwrite -nt $sockname Host: keskidi.net $+ :80 | sockwrite -nt $sockname $lf }

ON *:SOCKREAD:parole:{
  SOCKREAD %paroleread
  write paroles.txt %paroleread
}

; RECHERCHE
on *:sockopen:find: { sockwrite -nt $sockname GET /page/moteurTitre&titreK= $+ %findnum HTTP/1.0 | sockwrite -nt $sockname Host: keskidi.net $+ :80 | sockwrite -nt $sockname $lf }

ON *:SOCKREAD:find:{
  SOCKREAD %findread
  write finds.txt %findread
}

;;; DIVERS :
; %ta ET %tn SONT LES COULEURS A PERSONNALISER. EXEMPLE : SI ON VEUX QUE LA COULEUR DU TEXTE ACTIF (%ta) SOIT LE ROUGE, ON METS DANS LES VARIABLES "%ta 4" (SANS LES GUILLEMETS). %tn EST LE TEXTE NORMAL.

Conclusion :


Lire les commentaires de la source, et svp ne me fightez pas trop dans les commentaires c'est mon tout premier script alors je débute...

> Mise à jour du 01/06/2004 : bug de connection corrigé
/!\ le site utilisé peut planter, durant mes phases de tests, j'ai eu plusieurs messages d'erreur, comme TOO MANY CONNECTIONS. Le site est trés souvent mis à jour :).

A voir également

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.