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]
Répondre Avertir
#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.
Répondre
#3
(20/04/2013, 18:49)CrazyCat a écrit : 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.
Répondre Avertir
#4
Bonjour, j'ai teste votre script mais j'ai ceci en ddc cl error [radio:go]: can't read "title": no such variable
Répondre Avertir
#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)
Répondre
#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
Répondre
#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)
Répondre
#8
merci beaucoup pour ta réponse CrazyCat ça va énormément m'aider en effet ;)
Répondre
#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"
}


Répondre
#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
Répondre Avertir
#11
Aucune idée. Est-ce que les titres sont toujours présent dans le flux de ta radio ?
Répondre
#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 ?
Répondre Avertir
#13
(08/11/2013, 21:16)Lavoi a écrit : 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 a écrit : 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 a écrit : 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" ?
Répondre
#14
Citation :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 ?
Répondre Avertir
#15
En plus, à la fin du script.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté