Communauté sur les Eggdrops - Community about Eggdrops
erreur script youtube - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (https://forum.eggdrop.fr)
+-- Forum: Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum: Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Thread: erreur script youtube (/showthread.php?tid=993)

Pages: 1 2


erreur script youtube - zyrte - 25/07/2011

voilà,j'ai trouvé ce script, mais y'a un beug

commande : !youtube un titre et ca renvoi le lien youtube

le script :


tcl
### YouTube Searching script. v0.1
### Made by Mookie		
### Contact me at Efnet for more information or suggestions
### V0.3 Fixed + added spam protection
 
package require http
 
### Settings ###
 
set youtube(timeout) "600000"		;# Youtube geturl timeout. (better leave this default)
set youtube(results) "5"		;# Results to display
set youtube(trigger) "!youtube"		;# Search trigger
set youtube(spam) "10"			;# Spam protection in seconds
 
#########################################################
## Don't edit below unless you know what you're doing. ##
#########################################################
 
 
bind pub - $::youtube(trigger) youtube
 
proc youtube {nick uhost hand chan arg} {
	if {[info exists ::checks($nick)] && ([clock seconds] - $::checks($nick)) < $::youtube(spam)} { sendmsg $chan "Fk off spammer.."; return }
	set ::checks($nick) [clock seconds]
	if {$arg == ""} { putmsg $nick "Please use: $::youtube(trigger) KEYWORD"; return }
	set form [http::formatQuery search_query $arg search search]
	set tok [http::geturl http://www.youtube.com/results?search_type=&$form -timeout $::youtube(timeout)]
	set data [http::data $tok]
	http::cleanup $tok
	set a "0"
	while {[regexp -- {<a id="video-short-title.*?" href="(.*?)"  title="(.*?)" rel="nofollow">(.*)$} $data -> number title data]} {
		if {$a == $::youtube(results)} { break }
		sendmsg $chan "\[Title: $title Link:http://youtube.com$number\]"
		incr a
	}
	if {![info exists title]} { sendmsg $chan "\002Error:\002 Nothing found for '$arg'" }
}
proc "sendmsg" { target message } {
	sputraw "PRIVMSG [string tolower $target] :$message"
}
proc "sputraw" { text } {
	set text [string trim $text]
	putdccraw 0 [string length $text\n] $text\n
}



En Erreur , j'ai :

Quote:.set errorInfo
[08:16:46] ‹YouTube› [08:17] #Zyrte# set errorInfo
[08:16:47] ‹YouTube› Currently: can't read "state(after)": no such element in array
[08:16:47] ‹YouTube› Currently: while executing
[08:16:47] ‹YouTube› Currently: "after cancel $state(after)"


merci d'avance


RE: erreur script youtube - fedora - 25/07/2011

bonjour,

est tu sur que ton erreur vienne du script youtube ? a tu bien le package require http comme indiquer dans le tcl ?


tcl
package require http


j'ai tester le TCL est je n'ai pas d'erreur.


RE: erreur script youtube - zyrte - 25/07/2011

ba j'ai un http.tcl d'installer oui ....


RE: erreur script youtube - djkenny - 25/07/2011

salut,

zyrte Wrote:En Erreur , j'ai :

Quote:.set errorInfo
[08:16:46] ‹YouTube› [08:17] #Zyrte# set errorInfo
[08:16:47] ‹YouTube› Currently: can't read "state(after)": no such element in array
[08:16:47] ‹YouTube› Currently: while executing
[08:16:47] ‹YouTube› Currently: "after cancel $state(after)"

c est une erreur dans le package http, mais elle n'influe en rien sien sur le fonctionnement du tcl.
je dirais que le problème vient de cette ligne la:

tcl
set tok [http::geturl <a href="http://www.youtube.com/results?search_type=&$form" target="_blank">http://www.youtube.com/results?search_type=&$form</a> -timeout $::youtube(timeout)]

essais de la remplacer par

Code:
set tok [http::geturl http://www.youtube.com/results?search_type=&$form -timeout $::youtube(timeout)]



RE: erreur script youtube - zyrte - 25/07/2011

j'ai remplacer, mais, j'ai une erreur :

Quote:[09:44:06] ‹YouTube› [09:44] Tcl error [youtube]: wrong # args: should be "http::geturl url ..."

Quote:.set errorInfo
[09:46:02] ‹YouTube› [09:46] #Zyrte# set errorInfo
[09:46:02] ‹YouTube› Currently: wrong # args: should be "http::geturl url ..."
[09:46:02] ‹YouTube› Currently: while executing
[09:46:02] ‹YouTube› Currently: "http::geturl"
[09:46:02] ‹YouTube› Currently: (procedure "youtube" line 6)
[09:46:02] ‹YouTube› Currently: invoked from within
[09:46:02] ‹YouTube› Currently: "youtube $_pub1 $_pub2 $_pub3 $_pub4 $_pub5"



RE: erreur script youtube - zyrte - 25/07/2011

djkenny Wrote:étrange, la modification ne passe pas et le site affiche 2 fois la même ligne :x

essais de la remplacer par
Code:
set tok [http::geturl http://www.youtube.com/results?search_type=&$form -timeout $::youtube(timeout)]

J'ai remplacé, mais, ca ne marche pâs non plus, ca me donne sur le canal irc :

Quote:[09:48:05] ‹@Zyrte› !youtube chat
[09:48:06] ‹@YouTube› Error: Nothing found for 'chat'

avec :

Quote:[09:48:26] ‹Zyrte› .set errorInfo
[09:48:26] ‹YouTube› [09:48] #Zyrte# set errorInfo
[09:48:26] ‹YouTube› Currently: can't read "state(after)": no such element in array
[09:48:26] ‹YouTube› Currently: while executing
[09:48:26] ‹YouTube› Currently: "after cancel $state(after)"



RE: erreur script youtube - djkenny - 25/07/2011


Code:
proc youtube {nick uhost hand chan arg} {
   if {[info exists ::checks($nick)] && ([clock seconds] - $::checks($nick)) < $::youtube(spam)} { sendmsg $chan "Fk off spammer.."; return }
   set ::checks($nick) [clock seconds]
   if {$arg == ""} { putmsg $nick "Please use: $::youtube(trigger) KEYWORD"; return }
   set form [http::formatQuery search_query $arg search search]
   set tok [http::geturl http://www.youtube.com/results?search_type=&$form -timeout $::youtube(timeout)]
   set data [http::data $tok]
   http::cleanup $tok
   set a "0"
   while {[regexp -- {<h3><a href="(.*?)" dir="ltr" title="(.*?)" >(.*)$} $data -> number title]} {
      if {$a == $::youtube(results)} { break }
      sendmsg $chan "\[Title: $title Link:http://youtube.com$number\]"
      incr a
   }
   if {![info exists title]} { sendmsg $chan "\002Error:\002 Nothing found for '$arg'" }
}



RE: erreur script youtube - djkenny - 25/07/2011

voila le script complet et complétement débogué


RE: erreur script youtube - zyrte - 11/01/2012

que dois je modifier pour avoir qu'un titre a la place de 5 titres ? et aussi j'ai des erreur d'accent :

[15:21:06] ‹+Zyrte› !youtube diams
[15:21:08] ‹Youtube› [ Diam's ( Diam's Dieze#39;s)- Enfants Du Désert Link: http://youtube.com/watch?v=YXdfgKjvl4c" class="yt-uix-tile-link]


RE: erreur script youtube - CrazyCat - 11/01/2012

Tu fais de l'humour ou tu te fous de nous ?
Dans ton premier post, je vois:

tcl
set youtube(results) "5"      ;# Results to display


Pour les accents, il y a une solution dans http://www.eggdrop.fr/board/tcl-pour-radionomy-t-1111.html


RE: erreur script youtube - zyrte - 11/01/2012

non, j'ai trouvé mais j'ai ce beug là, quand j'tape la commande :

‹+Youtube|Youtube› [ Merzhin-Les Nains de Jardins Link: http://youtube.com/watch?v=kmmWUEq4c3I" class="yt-uix-tile-link]


RE: erreur script youtube - CrazyCat - 01/02/2012

Il faut remplacer la regexp:

tcl
if {[regexp -- {<h3 id="video-long-title-(.*?)"><a href="(.*?)" class="yt-uix-tile-link" dir="ltr" title="(.*?)" >.*$} $d -> longtitle number title]} {




RE: erreur script youtube - zyrte - 04/02/2012

merci Crazycat, ca marche mieux comme ca.


RE: erreur script youtube - zyrte - 17/11/2012

bonjour ,le script ne marche plus :(

-14:44:08- ‹(Zyrte)› !y benabar
-14:44:09- ‹(+Youtube)› Error: Nothing found for 'benabar'


RE: erreur script youtube - CrazyCat - 17/11/2012

Le code html de youtube a changé:

tcl
if {[regexp -- {<div class="yt-lockup-content"><h3 ><a yt-uix-contextlink yt-uix-sessionlink yt-uix-tile-link result-item-translation-title"dir="ltr"title="(.*?)"data-sessionlink="(.*?)"href="(.*?)">(.*)</a>} $d -> longtitle number title]} {


A tester