Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


TCL Webradio - Radionomy
#1
Bonjour,

CrazyCat avait posté un code fait par ces soins pour radionomy pour récupérer le titre et l'artiste diffusé.
J'ai chercher et rechercher, mais je ne trouve pas une chose.. comment actualité le titre tout seul sans taper "!titre" ( Tout ceux que j'ai modifié sa me faisait planter le TCL. )

Le code :


tcl
bind pub - "!titre" radio:titre
 
set url "http://api.radionomy.com/currentsong.cfm?radiouid=6d854cc4-bb57-4339-b09f-2e5290a0bfda&apikey=6d854cc4-bb57-4339-b09f-2e5290a0bfda&type=xml"
 
package require http
proc radio:titre { nick uhost handle chan args } {
  set page [::http::geturl $::url -timeout 3000]
  set html [::http::data $page]
  regexp -all -- {<title>(.+)?</title>} $html null title
  regexp -all -- {<radioname>(.+)?</radioname} $html null radio
  regexp -all -- {<artists>(.+)?</artists>} $html null artist
  putserv "PRIVMSG $chan :En cours sur \002 .::. [htmlentities_decode $radio] .::. \002: \002[htmlentities_decode $title]\002 par \002[htmlentities_decode $artist]\002"
}


cordialement,[/b]
#2
Pour faire ça, il faut ajouter un timer (pour aller récupérer fréquement la page) et annoncer lorsque le titre lu n'est pas le titre mémorisé (donc déjà annoncé).

Voici un exemple (non testé) de script:

tcl
bind pub - "!titre" radio:go
 
set url "http://api.radionomy.com/currentsong.cfm?radiouid=6d854cc4-bb57-4339-b09f-2e5290a0bfda&apikey=6d854cc4-bb57-4339-b09f-2e5290a0bfda&type=xml"
# delay : temps en secondes entre 2 vérifications du titre
set delay 60
 
package require http
set radio "off"
set rchan ""
proc radio:go { nick uhost handle chan args } {
	if { [llength $args] != 1} {
		putserv "PRIVMSG $chan :Faites !titre [on|off] pour démarrer/arrêter l'annonce du titre"
		return 0
	}
	if {[string tolower [lindex $args 0]]=="on"} {
		if { $::radio == "on" } {
			putserv "PRIVMSG $chan :L'affichage automatique est déjà en cours"
			return 0
		}
		set ::radio "on"
		set ::rchan $chan
		radio:titre
		return 1
	} else {
		if { $::radio != "on" } {
			putserv "PRIVMSG $chan :L'affichage automatique n'est pas en cours"
			return 0
		}
		set ::rchan ""
		set ::radio "off"
		return 1
	}
}
set memo ""
 
proc radio:titre { } {
	if { $::radio == "off" } {
		return 0
	}
	set page [::http::geturl $::url -timeout 3000]
	set html [::http::data $page]
	regexp -all -- {<title>(.+)?</title>} $html null title
	regexp -all -- {<radioname>(.+)?</radioname} $html null radio
	regexp -all -- {<artists>(.+)?</artists>} $html null artist
	if { $title != $::memo } {
		set ::memo $title
		putserv "PRIVMSG $::rchan :En cours sur \002 .::. [htmlentities_decode $radio] .::. \002: \002[htmlentities_decode $title]\002 par \002[htmlentities_decode $artist]\002"
	}
	utimer $::delay radio:titre
}

Avec ce script, la commande devient donc !titre [on|off] pour activer ou arrêter l'affichage automatique.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#3
(20/04/2013, 18:49)CrazyCat Wrote: Pour faire ça, il faut ajouter un timer (pour aller récupérer fréquement la page) et annoncer lorsque le titre lu n'est pas le titre mémorisé (donc déjà annoncé).

Voici un exemple (non testé) de script:

tcl
bind pub - "!titre" radio:go
 
set url "http://api.radionomy.com/currentsong.cfm?radiouid=6d854cc4-bb57-4339-b09f-2e5290a0bfda&apikey=6d854cc4-bb57-4339-b09f-2e5290a0bfda&type=xml"
# delay : temps en secondes entre 2 vérifications du titre
set delay 60
 
package require http
set radio "off"
set rchan ""
proc radio:go { nick uhost handle chan args } {
	if { [llength $args] != 1} {
		putserv "PRIVMSG $chan :Faites !titre [on|off] pour démarrer/arrêter l'annonce du titre"
		return 0
	}
	if {[string tolower [lindex $args 0]]=="on"} {
		if { $::radio == "on" } {
			putserv "PRIVMSG $chan :L'affichage automatique est déjà en cours"
			return 0
		}
		set ::radio "on"
		set ::rchan $chan
		radio:titre
		return 1
	} else {
		if { $::radio != "on" } {
			putserv "PRIVMSG $chan :L'affichage automatique n'est pas en cours"
			return 0
		}
		set ::rchan ""
		set ::radio "off"
		return 1
	}
}
set memo ""
 
proc radio:titre { } {
	if { $::radio == "off" } {
		return 0
	}
	set page [::http::geturl $::url -timeout 3000]
	set html [::http::data $page]
	regexp -all -- {<title>(.+)?</title>} $html null title
	regexp -all -- {<radioname>(.+)?</radioname} $html null radio
	regexp -all -- {<artists>(.+)?</artists>} $html null artist
	if { $title != $::memo } {
		set ::memo $title
		putserv "PRIVMSG $::rchan :En cours sur \002 .::. [htmlentities_decode $radio] .::. \002: \002[htmlentities_decode $title]\002 par \002[htmlentities_decode $artist]\002"
	}
	utimer $::delay radio:titre
}

Avec ce script, la commande devient donc !titre [on|off] pour activer ou arrêter l'affichage automatique.

Bonsoir CrazyCat,

Le code fonctionne bien Merci :)
Raiding.
#4
Bonjour, j'ai teste votre script mais j'ai ceci en ddc cl error [radio:go]: can't read "title": no such variable
#5
Si tu as cette erreur, c'est peut-être qu'il n'y a pas de musique en cours de diffusion, ou bien que ton url n'est pas bonne (api key et radio id)
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#6
Bonjour ou bonsoir (selon l'heure a laquelle vous lirez ce message), étant un nouveau propriétaire d'une webradio chez radionomy et venant de créer mon propre salon, je cherche a mettre un eggdrop sur mon salon afin qu'il dise ce que ma radio diffuse, mais le soucis c'est que je n'y connais absolument rien du tout dans ce domaine, quel eggdrop installer, comment le configurer, ou mettre le ou les codes nécessaire afin qu'il fonctionne, etc.... en un mot comme en cent je suis tout ce qu'il y a de plus nul (je le reconnais et l'avoue sans honte)....donc si une âme charitable voulais bien avoir l’extrême gentillesse de me venir en aide je lui en serais extrêmement reconnaissant..... merci d'avance pour votre ou vos réponses....cordialement PapyPhil
#7
Pour faire simple, il faut suivre les étapes suivantes:
- installer un eggdrop selon ce qui est indiqué sur cette page
- le configurer soit à la main soit avec cet outil
- télécharger le script, ou du moins le copier (il doit être à http://forum.eggdrop.fr/TCL-Webradio-Rad...-1335.html)
- le charger dans l'eggdrop (lire la doc sur les commandes de base)
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#8
merci beaucoup pour ta réponse CrazyCat ça va énormément m'aider en effet ;)
#9
On m'a demandé tout à l'heure s'il était possible d'avoir le nombre d'auditeurs sur une radio, voici le script modifié en conséquence:

tcl
set radiouid "your-radio-uid-to-use"
set apikey "apikeyforuser"
 
# delay : temps en secondes entre 2 vérifications du titre
set delay 60
 
package require http
set radio "off"
set rchan ""
 
bind pub - "!titre" radio:go
proc radio:go { nick uhost handle chan args } {
   if { [llength $args] != 1} {
      putserv "PRIVMSG $chan :Faites !titre [on|off] pour démarrer/arrêter l'annonce du titre"
      return 0
   }
   if {[string tolower [lindex $args 0]]=="on"} {
      if { $::radio == "on" } {
         putserv "PRIVMSG $chan :L'affichage automatique est déjà en cours"
         return 0
      }
      set ::radio "on"
      set ::rchan $chan
      radio:titre
      return 1
   } else {
      if { $::radio != "on" } {
         putserv "PRIVMSG $chan :L'affichage automatique n'est pas en cours"
         return 0
      }
      set ::rchan ""
      set ::radio "off"
      return 1
   }
}
set memo ""
 
proc radio:titre { } {
   if { $::radio == "off" } { return 0; }
   set url "http://api.radionomy.com/currentsong.cfm?type=xml&radiouid=$::radiouid&apikey=$::apikey"
   set page [::http::geturl $url -timeout 3000]
   set html [::http::data $page]
   regexp -all -- {<title>(.+)?</title>} $html null title
   regexp -all -- {<radioname>(.+)?</radioname} $html null radio
   regexp -all -- {<artists>(.+)?</artists>} $html null artist
   if { $title != $::memo } {
      set ::memo $title
      putserv "PRIVMSG $::rchan :En cours sur \002 .::. [htmlentities_decode $radio] .::. \002: \002[htmlentities_decode $title]\002 par \002[htmlentities_decode $artist]\002"
   }
   utimer $::delay radio:titre
}
 
bind pub - "!public" radio:audience
proc radio:audience {user host handle chan args} {
   if { $::radio == "off" } { return 0; }
   set url "http://api.radionomy.com/currentaudience.cfm?radiouid=$::radiouid&apikey=$::apikey"
   set page [::http::geturl $url -timeout 3000]
   set html [::http::data $page]
   putserv "PRIVMSG $::rchan :$html auditeurs actuellement"
}

zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#10
Bonjour,

Je viens de tester ce tcl il fonctionne parfaitement sauf quand j'anime en live le tcl ne dit plus les titres est ce normal ?

Coridalement
#11
Aucune idée. Est-ce que les titres sont toujours présent dans le flux de ta radio ?
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#12
Bonjour,

Je viens vous demander pourquoi quand je tap !titre on j'ai ce message en ctcp Tcl error [radio:go]: invalid command name "htmlentities_decode"

Avant tout fonctionner normal mais maintenant..

Merci

Bonjour,

j'ai aussi un soucis dès que j'anime le tcl n'affiche pas les titres est-ce normal ?
#13
(08/11/2013, 21:16)Lavoi Wrote: Je viens vous demander pourquoi quand je tap !titre on j'ai ce message en ctcp Tcl error [radio:go]: invalid command name "htmlentities_decode"
Avant tout fonctionner normal mais maintenant..
Etrange que ça ait fonctionné avant, à moins que tu n'aies eu une ancienne version du script dans laquelle j'avais pensé à inclure cette procédure.
Tu trouveras une version (pas optimisée du tout) de htmlentities_decode à http://tools.eggdrop.fr/pasteme/view/a2754e90

(08/11/2013, 21:16)Lavoi Wrote: j'ai aussi un soucis dès que j'anime le tcl n'affiche pas les titres est-ce normal ?
Réponds donc à ma question précédente à ce sujet:
(20/10/2013, 15:34)CrazyCat Wrote: Aucune idée. Est-ce que les titres sont toujours présent dans le flux de ta radio ?
Pour être plus explicite, est-ce que lorsque tu passes en animation live, le flux fourni par radionomy contient toujours les titres ? Est-ce qu'il ne contient pas juste quelque chose comme "emission live en cours" ?
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#14
Quote:Tu trouveras une version (pas optimisée du tout) de htmlentities_decode à http://tools.eggdrop.fr/pasteme/view/a2754e90
Je dois le placer en plus ce codage ou en remplacement ?
#15
En plus, à la fin du script.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away


Possibly Related Threads…
Thread Author Replies Views Last Post
  Existe t'il un tcl pour programme de diffusion webradio KeeViiNou 4 5,109 22/09/2012, 09:21
Last Post: KeeViiNou
  Besoin d'aide pour TCL radionomy JulienRoad 9 9,040 30/05/2012, 21:59
Last Post: CrazyCat
  tcl pour radionomy cecile155 14 8,601 10/01/2012, 13:14
Last Post: CrazyCat
  TCL WebRadio python33 20 13,037 19/07/2011, 21:31
Last Post: CrazyCat
  aide création script tcl webradio et divers cecile155 12 8,143 29/12/2010, 17:11
Last Post: CrazyCat

Forum Jump:


Users browsing this thread: 1 Guest(s)