Page 2 sur 3

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : mar. 07/mai/2013 17:46
par John
Super
Merci

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : mar. 07/mai/2013 18:04
par John
oui mais la ça marche plus avec mon logiciel pour mon encodeur RDS
je pense que lorsque le ficher est supprimer ça lui plais pas!

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : mar. 07/mai/2013 18:28
par Backup
arf !
pas de probleme on va simuler un effacement, sans le faire :)
grace a la fonction

Code : Tout sélectionner

TruncateFile(#File)
qui permet de couper le fichier a l'endroit on l'on se trouve
si on utilise cette fonction juste apres son ouverture/creation
ben ça reviens a effacer le fichier :) ( en fait a le couper des le debut ..mais sans effacer physiquement le fichier l'entete existe toujours :) )
du coup ton prg devrai etre Blousé :)

j'ai changé mon code dans ce sens , essaye :)

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : mar. 07/mai/2013 18:44
par John
Apparemment ça marche pas j'ai le même pb le rds texte se met plus a jour.

le logiciel RDS effectue une lecture si le fichier change et met a jour les champs RDS texte.

ça marcher mieux au début quand on n'effacer pas le fichier.

la commande truncate n'arrive pas a gruge le soft RDS

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : mar. 07/mai/2013 19:14
par Backup
bon , ben j'utilise

Code : Tout sélectionner

+space(300)
c'est a dire que j'ajoute systematiquement 300 espaces apres la fin de la ligne
du coup ça devrai effacer ce qui suit ...

code changé , toutjours au meme endroit :)

bon test

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : mar. 07/mai/2013 19:23
par John
J'ai fait une bêtise.

c'est ma faute je m'excuse j'avais pas modifier un paramètre du soft RDS maintenant ça fonctionne parfaitement avec le code précédent et le truncate!

merci encore c'est super.

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : mar. 07/mai/2013 19:31
par Backup
pourquoi n'utilises tu pas Winamp par exemple pour ecouter tes morceaux
le titre s'affiche automatiquement avec Winamp ... :)

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : mer. 08/mai/2013 6:12
par John
salut
oui je sait le problème c'est que je module un émetteur fm avec la source radio internet et que cet émetteur possède un encodeur RDS.

Comme ça le titre et l’interprète s'affiche sur mon récepteur FM RDS.

Et ça fonctionne vraiment bien maintenant, seul petit pb de temps en temps il passe des caractères erronés mais la fenêtre de pure basic indique la même chose donc je pense que ça vient de la page web qui doit contenir de temps en temps des caractères bizarres.

Merci pour ton aide précieuse.

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : mer. 08/mai/2013 8:57
par Backup
oui pour les caracteres, on peut toujours ajouter un filtre ...

c'est tres simple a mettre en place
je viens de modifier mon code dans ce sens en ajoutant une procedure "Filtre()"
je remplace tout caracteres autre que "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
par un espace ...
c'est un filtre basique ;)

ça devrai arranger le truc quand meme :)

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : mer. 08/mai/2013 10:14
par Backup
je viens de faire une autre procedure de filtre plus efficace et plus courte

voici un exemple comparant les 2 filtres l'ancien et le nouveau

Code : Tout sélectionner


Declare.s filtre2(Var.s)
Declare.s filtre1(Var.s)

var.s="é(é('-é-'(é(yé(ç_é(çé(éç(-)çé-_()çé_(èàéè'68456512 Totoé(ééçà'ç_é "


debug filtre1(Var.s)
debug filtre2(Var.s)




Procedure.s filtre2(Var.s)
;By Dobro
; Nouveau Filtre
	ref.s="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- "
	For i=1 to len(var.s)
		ex.s=mid(var.s,i,1)
		If findstring(ref.s,ex.s)>0
			sort.s=sort.s+ex.s
		Endif
	Next i
	ProcedureReturn Sort.s
Endprocedure


Procedure.s filtre1(Var.s)
	; By Dobro
	; exemple de filtre
	For i=1 to len(var.s)
		extr.s=mid(var.s,i,1)
		If( asc(extr.s)>47 and asc(extr.s)<58) or (asc(extr.s)>64 and asc(extr.s)<91) or (asc(extr.s)>96 and asc(extr.s)<123) or asc(extr.s)=45
			sort.s=sort.s+extr.s
			Else
			sort.s=sort.s+""
		Endif
	Next i
	ProcedureReturn Sort.s
	
Endprocedure; EPB
	
Endprocedure
; EPB

voici 2 façon de filtrer ...
pour te montrer qu'en programmation , il existe plusieurs façon d'arriver au meme résultat :)


l'avantage de la nouvelle version de filtre c'est d'avoir en clair les caracteres autorisés :)
ça permet d'ajouter a la volée les caracteres permis :)
(attention le dernier caractere est un espace ;) )

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : mer. 08/mai/2013 11:32
par Ar-S
Pour ne pas remplacer une lettre accentuée par un espace

Code : Tout sélectionner

	
    Procedure.s ReplaceAccents(Chaine$)
      ; Falsam
      ; Modif : Ar-S
      
      Chaine$=LCase(Chaine$) ; On passe tout en min histoire que ce soit propre et que le ReplaceString() dure 2 x moins longtemps
      Protected i
      Protected CharToFind.s="àáâãäåçèéêëìíîïñòóôõöÞùúûüýÿ"
      Protected CharToReplace.s="aaaaaaceeeeiiiinooooopuuuuyy"
      
      For i=1 To Len(CharToFind) 
        ReplaceString(Chaine$, Mid(CharToFind,i,1), Mid(CharToReplace,i,1),#PB_String_InPlace, 1)

      Next
			; vérif pour les caractères spéciaux passant de 1 à 2 caractères
      Chaine$ = ReplaceString(Chaine$, "œ", "oe")
      Chaine$ = ReplaceString(Chaine$, "æ", "ae")
      Chaine$ = ReplaceString(Chaine$, "ß", "ss")

      ProcedureReturn Chaine$
    EndProcedure
    
Liste des caractères spéciaux : http://www.toutimages.com/codes_caracteres.htm

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : ven. 10/mai/2013 9:07
par John
Bonjour

OK je vais essayer ça merci pour votre aide.

a+

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : ven. 10/mai/2013 9:15
par John
il semble que le pb persiste c'est le ' qui passe pas on dirait:

Artist: Edgar Wallace Jr
Titre : I Can039t Go For That

ça devrait donner:

Artist: Edgar Wallace Jr
Titre : I Can't Go For That

ya ce 039 qui passe a chaque fois.

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : ven. 10/mai/2013 9:18
par Backup
a mais c'est parceque dans la page Html , ils utilisent les codes caractere au lieu du caractere
je regarderai ça ... pour l'instant je petit Dejeune :lol:

il te faut utiliser ReplaceString ()

et remplacer tout les codes genre pour ton exemple 039 par ' etc ...

Re: Enregistre le titre en cour sur radio dans un fichier te

Publié : ven. 10/mai/2013 9:43
par Backup
remplace la procedure Filtre par celle-ci ça devrai etre bon

Code : Tout sélectionner


Procedure.s filtre(Var.s)
	for i=32 to 255
		if i<100
			Var.s = ReplaceString(Var.s,"&#"+"0"+str(i),chr(i) )
			Else
			Var.s = ReplaceString(Var.s,"&#"+str(i),chr(i) )
		Endif
	Next i
	
	; By Dobro
	; autre exemple de filtre qui a l'avantage que nous voyons directement les caracteres que nous désirons garder , il suffit de les ajouter dans la chaine Ref.s
	ref.s="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&()/éèê.:-' " ; << derniere caractere est un espace
	For i=1 to len(var.s)
		ex.s=mid(var.s,i,1)
		If findstring(ref.s,ex.s)>0
			sort.s=sort.s+ex.s
		Endif
	Next i
	ProcedureReturn Sort.s
Endprocedure

; EPB
ps : n'oublie pas que pour autorisé l'affichage d'un caractere , il te faut l'ajouter dans la Chaine "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&()/éèê.:-' "

ici j'ai ajouté >>>> '

par contre il y a une exception , si tu veux ajouter le caractere >>> "
il te faudra faire
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&()/éèê.:-' "+chr(34)
mais en principe tu n'as pas a ajouter ce code :)

j'ai donc ajouté ceci a la procedure

Code : Tout sélectionner

for i=32 to 255
	if i<100
		Var.s = ReplaceString(Var.s,"&#"+"0"+str(i),chr(i) )
		Else
		Var.s = ReplaceString(Var.s,"&#"+str(i),chr(i) )
	Endif
Next i; EPB
ça va chercher dans la variable extraite de la page Html, si un code ayant la forme "&#039" existe
si c'est le cas ça va remplacer ce code par son equivalent Caractere ici " ' "
si toutefois cela ne marchais pas , vire le "&#"

ça donnerai :

Code : Tout sélectionner

For i=32 to 255
	if i<100
		Var.s = ReplaceString(Var.s,"0"+str(i),chr(i) )
		Else
		Var.s = ReplaceString(Var.s,str(i),chr(i) )
	Endif
Next i