Enregistre le titre en cour sur radio dans un fichier texte

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
John
Messages : 16
Inscription : mar. 07/mai/2013 9:29

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

Message par John »

Super
Merci
John
Messages : 16
Inscription : mar. 07/mai/2013 9:29

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

Message 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!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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 :)
John
Messages : 16
Inscription : mar. 07/mai/2013 9:29

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

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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
John
Messages : 16
Inscription : mar. 07/mai/2013 9:29

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

Message 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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message par Backup »

pourquoi n'utilises tu pas Winamp par exemple pour ecouter tes morceaux
le titre s'affiche automatiquement avec Winamp ... :)
John
Messages : 16
Inscription : mar. 07/mai/2013 9:29

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

Message 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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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 :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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 ;) )
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message 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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
John
Messages : 16
Inscription : mar. 07/mai/2013 9:29

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

Message par John »

Bonjour

OK je vais essayer ça merci pour votre aide.

a+
John
Messages : 16
Inscription : mar. 07/mai/2013 9:29

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

Message 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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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 ...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

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

Message 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

Dernière modification par Backup le ven. 10/mai/2013 14:47, modifié 5 fois.
Répondre