Lire et ecrire les tags des fichiers mp3
Re: Lire et ecrire les tags des fichiers mp3
....................
Dernière modification par Backup le dim. 20/mars/2011 13:30, modifié 1 fois.
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: Lire et ecrire les tags des fichiers mp3
en fait, une fois j'ai essaye une procedure qui coupe les tags, les efface et les reecrits
le probleme est que je perdais l'image
le probleme est que je perdais l'image
Re: Lire et ecrire les tags des fichiers mp3
je bosse justement la dessus 
ma procedure d'ecriture ID3v2
fait appel a une procedure qui coupe l'entete
et reconstruit a partir de Zero
je ne gere pas encore l'image
je suis sur un petit bug d'un décalage.... pas grand chose
mais il faut que je prenne le temps de m'y interresser ..
j'ai refait une bonne partie du code
je vais retirer celui qui est ici, car, il est obsolette

ma procedure d'ecriture ID3v2
fait appel a une procedure qui coupe l'entete
et reconstruit a partir de Zero
je ne gere pas encore l'image
je suis sur un petit bug d'un décalage.... pas grand chose
mais il faut que je prenne le temps de m'y interresser ..
j'ai refait une bonne partie du code
je vais retirer celui qui est ici, car, il est obsolette

Re: Lire et ecrire les tags des fichiers mp3
Code modifié en page 1 de ce topic
je propose 6 procedures :
procedure read_tag_mp3(file$); lit le tag ID3 V1 (celui qui est en fin de fichier)
procedure read_tag_mp3v2(file$); lit le tag ID3 V2 (celui qui est en debut de fichier)
je conseille de les utiliser toutes les 2...
car le plus courant reste le ID3 V1
Le tag ID3V2 peut contenir une image,(pochette de disque) ;si c'est le cas
l'image est sauvé avec comme nom "temp.jpg" a coté de l'emplacement du prg
(sauvegarder avant de lancer la première fois) , sinon l'image risque de s'écrire dans le dossier compiler
procedure write_tag_mp3(file$,titre$,interprete$,album$,annee$,commentaire$,numero_piste$,genre_musical$)
;Ecrit le Tag format ID3V1 (celui de fin de fichier)
procedure write_tag_mp3v2(file$,album$,composeur$,interprete$,titre$,copyright$,annee$,numero_piste$,lien$,commentaire$, genre$, longueur$) ;
;Ecrit le Tag format ID3V2 (celui du debut de fichier)
cette procedure supprime automatiquement tout tag ID3V2 , et en refait un a neuf !
elle ne gere pas l'incorporation d'image...pour le moment....
procedure delete_tagV1(file$) ; supprime le Tag ID3V1
procedure delete_tagV2(file$) ; supprime le tag ID3V2 ; cette procedure est appelé
par la procedure d'ecriture de tag ID3V2 , si un tel tag existe dans le fichier..
je propose 6 procedures :
procedure read_tag_mp3(file$); lit le tag ID3 V1 (celui qui est en fin de fichier)
procedure read_tag_mp3v2(file$); lit le tag ID3 V2 (celui qui est en debut de fichier)
je conseille de les utiliser toutes les 2...
car le plus courant reste le ID3 V1
Le tag ID3V2 peut contenir une image,(pochette de disque) ;si c'est le cas
l'image est sauvé avec comme nom "temp.jpg" a coté de l'emplacement du prg
(sauvegarder avant de lancer la première fois) , sinon l'image risque de s'écrire dans le dossier compiler
procedure write_tag_mp3(file$,titre$,interprete$,album$,annee$,commentaire$,numero_piste$,genre_musical$)
;Ecrit le Tag format ID3V1 (celui de fin de fichier)
procedure write_tag_mp3v2(file$,album$,composeur$,interprete$,titre$,copyright$,annee$,numero_piste$,lien$,commentaire$, genre$, longueur$) ;
;Ecrit le Tag format ID3V2 (celui du debut de fichier)
cette procedure supprime automatiquement tout tag ID3V2 , et en refait un a neuf !
elle ne gere pas l'incorporation d'image...pour le moment....

procedure delete_tagV1(file$) ; supprime le Tag ID3V1
procedure delete_tagV2(file$) ; supprime le tag ID3V2 ; cette procedure est appelé
par la procedure d'ecriture de tag ID3V2 , si un tel tag existe dans le fichier..
Re: Lire et ecrire les tags des fichiers mp3
j'ai modifié les procedures
delete_tagV1(file$)
et
delete_tagV2(file$)
pour qu'elle vérifie si le tag existe avant d'éffacer une partie du fichier !!
et modification de la procedure de Lecture du Tag ID3V2
sur les Commentaire , qui ne s'affichaient pas en entier ..
delete_tagV1(file$)
et
delete_tagV2(file$)
pour qu'elle vérifie si le tag existe avant d'éffacer une partie du fichier !!

et modification de la procedure de Lecture du Tag ID3V2
sur les Commentaire , qui ne s'affichaient pas en entier ..

Re: Lire et ecrire les tags des fichiers mp3
pffff ! re corrections !! 
là ça devrai etre stable !
je vais attaquer l'insertion d'image

là ça devrai etre stable !
je vais attaquer l'insertion d'image
Re: Lire et ecrire les tags des fichiers mp3
Merci pour se super taf Dobro tu assure
Ont ne l'arête plus
@++


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: Lire et ecrire les tags des fichiers mp3
Un petit coup de main pour l'écriture de l'image...
Code : Tout sélectionner
EnableExplicit
Define.s FichierImage
Define.i TailleFichierImage
Define.b Processeur
Define *Image
Procedure.b Fc_TestProcesseur() ; Retourne le type de processeur utilisé
; #True = Motorola - #False = Intel
Define.w Valeur
Valeur=1
If PeekB(@Valeur)=Valeur:ProcedureReturn #True:EndIf
EndProcedure
Procedure.u Fc_AlignementValeurW(ArgValeur.u,ArgAlignement.u,ArgProcIntel.b) ; Inverse l'alignement d'un Word selon le type de processeur
If (ArgAlignement='II' And Not ArgProcIntel) Or (ArgAlignement='MM' And ArgProcIntel)
ArgValeur=(ArgValeur&$FF)<<8+ArgValeur>>8
EndIf
ProcedureReturn ArgValeur
EndProcedure
Procedure.q Fc_AlignementValeurL(ArgValeur.q,ArgAlignement.u,ArgProcIntel.b) ; Inverse l'alignement d'un Long selon le type de processeur
If (ArgAlignement='II' And Not ArgProcIntel) Or (ArgAlignement='MM' And ArgProcIntel)
ArgValeur=(ArgValeur&$FF)<<24+((ArgValeur>>8)&$FF)<<16+((ArgValeur>>16)&$FF)<<8+(ArgValeur>>24)&$FF
EndIf
ProcedureReturn ArgValeur
EndProcedure
FichierImage="d:\folder.jpg"
TailleFichierImage=FileSize(FichierImage)
Processeur=Fc_TestProcesseur()
If TailleFichierImage>0
If CreateFile(1,"d:\temp.mp3")
; Octest 0 à 3 : Tag ID3 => 'APIC'
; Octets 4 à 7 : Taille du tag
; Octets 8 à 9 : Flag du tag
; Octet 10 : Description image qui suit en Unicode (BOM) ou non => Là dans notre exemple, non donc $0
; Octets 11 à 21 : Description image ('image/jpeg' pour une une image JPG ;)) + $0
; Octet 22 : Type image => Jaquette avant = $3
; Octet 23 : Texte de description => Ici, chaine vide donc $0
;
; On créé l'en-tête APIC
WriteString(1,"APIC",#PB_Ascii)
WriteLong(1,Fc_AlignementValeurL(TailleFichierImage+13,'MM',Processeur)); => +13 correspond aux octets 10 à 23 ci-dessus : On ne doit pas prendre en compte les 10 premiers
WriteWord(1,0) ; Octets 8 à 9
WriteByte(1,0) ; Octet 10
WriteString(1,"image/jpeg",#PB_Ascii) ; Octets 11 à 20
WriteByte(1,0) ; Octet 21
WriteByte(1,3) ; Octet 22
WriteByte(1,0) ; Octet 10
; On charge l'image JPEG qu'on souhaite insérer
If ReadFile(0,FichierImage)
*Image=AllocateMemory(TailleFichierImage)
If ReadData(0,*Image,TailleFichierImage)
CloseFile(0)
; On insère l'image
WriteData(1,*Image,TailleFichierImage)
EndIf
EndIf
CloseFile(1)
EndIf
EndIf
Re: Lire et ecrire les tags des fichiers mp3
.....................
Dernière modification par Backup le dim. 20/mars/2011 13:31, modifié 1 fois.
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: Lire et ecrire les tags des fichiers mp3
Je crois que c'est selon l'ordre dans lequel tu sauvegardes les données sous MP3Tag...Dobro a écrit :[MP3Tag] colle le tag "APIC" en premiere position , alors que mes fonctions permettent
de lire les tag, quelque soit leur position !!
J'ai la version 2.46a et mes images sont en fin de bloc ID3.
J'ai toujours pour habitude de modifier les champs album, titre, etc... d'abord, de sauvegarder cette première étape puis ensuite de traiter les images avant une nouvelle sauvegarde. D'où j'en tire cette conclusion...
Re: Lire et ecrire les tags des fichiers mp3
Merci Dobro je testerais des que j'ai 5min.
ps: tous mes audio ont étaient éditer avec songbird.
@++

ps: tous mes audio ont étaient éditer avec songbird.
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: Lire et ecrire les tags des fichiers mp3
@Dobro
Attention : Pour info, sous processeur Motorola, ton code ne fonctionnera pas à cause de tes procédures to_little_indian (NB : normalement c'est endian
rien à voir avec les indiens
) qui ne sont écrites que pour du Intel...
Alors que le mien...
Attention : Pour info, sous processeur Motorola, ton code ne fonctionnera pas à cause de tes procédures to_little_indian (NB : normalement c'est endian


Alors que le mien...

Re: Lire et ecrire les tags des fichiers mp3
boddhi a écrit :@Dobro
Attention : Pour info, sous processeur Motorola, ton code ne fonctionnera pas à cause de tes procédures to_little_indian (NB : normalement c'est endianrien à voir avec les indiens
) qui ne sont écrites que pour du Intel...
Alors que le mien...
oui je sais , mais j'men fou

Purebasic ne fonctionne pas sur mon Falcon 030

ps : Petit indien, c'est plus cool hug !
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: Lire et ecrire les tags des fichiers mp3
Mouais, mais fonctionnera pas sous mon vieil A4030
PS : Toi, être petit cheval fou sous ton scalp

PS : Toi, être petit cheval fou sous ton scalp

-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: Lire et ecrire les tags des fichiers mp3
ou la la
je suis perdu...
bon je vais voir ca trankillement ce soir
merci dobro, boddhi, et tout le monde
je suis perdu...
bon je vais voir ca trankillement ce soir
merci dobro, boddhi, et tout le monde