TCL Webradio - Radionomy
#31
 
(22/07/2014, 10:05)FleuryK a écrit : Ligne 45 :
Code :
regexp -all -- {<radioname>(.+)?</radioname} $html null radioname
La balise est mal fermé.
Code :
regexp -all -- {<radioname>(.+)?</radioname>} $html null radioname
Ici, la balise radioname est bien fermé.

Ca ne change rien : il ne s'agit pas d'une balise qui doit être équilibrée mais d'une expression régulière. Le résultat sera le même, sauf dans le cas peu probable où il existerait une autre balise dont le nom commencerait aussi par </radioname.
 
Répondre Avertir
#32
Bonjour MenzAgitat,

En HTML (la on est en dehors du TCL), une balise doit être toujours fermée. Exemple : <head></head>.
Donc en TCL, on doit avoir la même chose, une balise ouvrante, ici c'est <radioname> et une balise fermante, ici c'est </radioname>.

En version HTML, si on oublie de refermer une balise, on a pas le résultat attendu. Et une balise non fermée est considérée comme une faute sur le W3C.

Certaines balises HTML sont orphelines, c'est à dire qu'ils n'ont pas de balise fermante. Exemple : <br />.

Je ne dis pas ça par méchanceté (au contraire je suis calme) ni pour autre raison, mais quand je vois une balise mal fermé, je corrige aussitôt.

Cordialement.

-----

EDIT : Pour revenir au sujet, ça doit être nouveau chez radionomy les &eacute; sont remplacés par ce caractère &#xe9;

Code source :
Code :
<title>T&#xe9;l&#xe9;phone 3</title>

Visuellement :
Code :
<title>Téléphone 3</title>

J'ai trouvé une page qui explique ceci : http://www.princexml.com/doc/8.1/characters/
Répondre Avertir
#33
(22/07/2014, 16:15)FleuryK a écrit : Donc en TCL, on doit avoir la même chose, une balise ouvrante, ici c'est <radioname> et une balise fermante, ici c'est </radioname>.
Sauf que là ce n'est pas du TCL mais une expression régulière.
Elle marcherait tout aussi bien avec:
Code :
regexp -all -- {name>(.+)?</radio} $html null radioname
Ou même, pour jouer:
Code :
regexp -all -- {<radioname>([^<]+)?<} $html null radioname
Répondre
#34
Bonjour,

Eh bien, j'aurais appris quelque chose.

J'ai ajouté les nouvelles balises comme &#xe9; dans le script et pour le moment, ça à l'air de fonctionner correctement.
Répondre Avertir
#35
Toi qui semble être un puriste du html et consorts, ce sont des entités, pas des balises :)
Répondre
#36
Bonsoir,

Exactement. Le HTML c'est mon dada ;)

http://tools.eggdrop.fr/pasteme/view/79c872cc => Ajout de nouveaux caractères HTML comme &#xe9;, ...
Répondre Avertir
#37
 
Plutôt qu'ajouter une par une toutes les entités html au format hexadécimal, tu pourrais faire comme ça pour les convertir toutes d'un seul coup :

tcl
while {
	[regexp {&#x([[:alnum:]]{2});} $TAVARIABLE {} value]
} {
	regsub {&#x([[:alnum:]]{2});} $TAVARIABLE [binary format H* $value] TAVARIABLE
}



Il faudra évidemment remplacer TAVARIABLE par le nom de la variable qui contient le texte à convertir (et n'ajoute pas un $ devant le dernier TAVARIABLE, il n'en comporte pas volontairement).
 
Répondre Avertir
#38
Bonjour,

J'ai le Tcl que CrazyCat à publié mais j'ai un erreur.

La diffusion des messages s'arrête et je suis obligé de faire !titre off et !titre on pour relancer.

voici le retour d'erreur que j'ai :


Code :
-----> can not find channel named "sock10"
----->     while executing
-----> "eof $sock"
Tcl error in script for 'timer2548':
can't read "title": no such variable
-----> can't read "title": no such variable
----->     while executing
-----> "if { $title != $::memo } {
-----> set ::memo $title
-----> putserv "PRIVMSG $::rchan :En cours sur \002 .::. Etoile-Fm .::. \002: \002[htmlentities_decode $title]\0..."
----->     (procedure "radio:titre" line 9)
-----> invoked from within
-----> "radio:titre"
Répondre Avertir
#39
C'est que la balise title n'est pas dans le XML ou bien pas là où le script l'attend.
Peut-être que le flux est changé. Il faudrait que tu ouvres l'URL appelée dans un navigateur pour vérifier la structure

Envoyé de mon SM-G928F en utilisant Tapatalk
Répondre
#40
Code :
<tracks>
<radioname>nom de radio</radioname>
<rank>0</rank>
<isradionomy>1</isradionomy>
<radurl>Url</radurl>
<track>
<uniqueid>info</uniqueid>
<title>Funky Town1980</title>
<artists>LIPPS INC</artists>
<starttime>2016-03-19 19:56:27.667</starttime>
<playduration>231531</playduration>
<current>1</current>
</track>
</tracks>

Voila ce que ça me donne
Répondre Avertir
#41
Au moment de l'erreur aucune balise ne change sur la page XML, je viens de vérifier de nouveau.
Répondre Avertir
#42
Tu devrais essayer:
tcl
putlog $html


après le
tcl
set html [::http::data $page]



Je pense que ton xml vu par l'eggdrop n'est pas celui que toi tu vois par ton navigateur.
Répondre
#43
ça me fais toujours la même erreur.
Répondre Avertir
#44
Oui, mais tu as quoi en partyline ?
Le putlog devrait te montrer le contenu de la page que tu ouvres, donc le xml.
Répondre
#45
Code :
    <tracks>
    <radioname>nom de la radio</radioname>
        <rank>0</rank>
    <isradionomy>1</isradionomy>
        <radurl>URL</radurl>
        <track>
        <uniqueid>Chiffre</uniqueid>
        <title>Strike It Up (1990)</title>
            <artists>Black Box</artists>
            <starttime>2016-03-24 14:09:56.763</starttime>
            <playduration>311492</playduration>
            <current>1</current>
</track>

Tcl error in script for 'timer4509':
can't read "title": no such variable
-----> can't read "title": no such variable
----->     while executing
-----> "if { $title != $::memo } {
-----> set ::memo $title
-----> putserv "PRIVMSG $::rchan :En cours sur \002 .::. Etoile-Fm .::. \002: \002[htmlentities_decode $title]\0..."
----->     (procedure "radio:titre" line 10)
----->     invoked from within
-----> "radio:titre"


Voilà le retour que ça me donne !
Répondre Avertir


Atteindre :


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