(22/07/2014, 10:05)FleuryK Wrote: 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.
Toute l'actualité de mes scripts ici (dernière mise à jour le 22/04/2020)
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
22/07/2014, 16:15
(This post was last modified: 22/07/2014, 16:30 by FleuryK.)
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 é sont remplacés par ce caractère é
Code source :
Code: <title>Télé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/
(22/07/2014, 16:15)FleuryK Wrote: 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
Bonjour,
Eh bien, j'aurais appris quelque chose.
J'ai ajouté les nouvelles balises comme é dans le script et pour le moment, ça à l'air de fonctionner correctement.
Toi qui semble être un puriste du html et consorts, ce sont des entités, pas des balises :)
22/07/2014, 19:04
(This post was last modified: 22/07/2014, 20:16 by FleuryK.)
22/07/2014, 19:40
(This post was last modified: 22/07/2014, 19:47 by MenzAgitat.)
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).
Toute l'actualité de mes scripts ici (dernière mise à jour le 22/04/2020)
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
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"
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
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
Au moment de l'erreur aucune balise ne change sur la page XML, je viens de vérifier de nouveau.
Tu devrais essayer:
après le
Je pense que ton xml vu par l'eggdrop n'est pas celui que toi tu vois par ton navigateur.
ça me fais toujours la même erreur.
Oui, mais tu as quoi en partyline ?
Le putlog devrait te montrer le contenu de la page que tu ouvres, donc le xml.
25/03/2016, 01:42
(This post was last modified: 25/03/2016, 01:44 by AyRh0nS.)
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 !
|