Page 2 sur 3

Re: Lire et ecrire les tags des fichiers mp3

Publié : mer. 01/déc./2010 0:27
par Backup
....................

Re: Lire et ecrire les tags des fichiers mp3

Publié : mer. 01/déc./2010 11:57
par Parole De JOJO
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

Re: Lire et ecrire les tags des fichiers mp3

Publié : mer. 01/déc./2010 19:07
par Backup
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 ;)

Re: Lire et ecrire les tags des fichiers mp3

Publié : jeu. 02/déc./2010 3:38
par Backup
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..

Re: Lire et ecrire les tags des fichiers mp3

Publié : jeu. 02/déc./2010 12:27
par Backup
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 !! :lol:

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

Publié : jeu. 02/déc./2010 13:39
par Backup
pffff ! re corrections !! ;)

là ça devrai etre stable !

je vais attaquer l'insertion d'image

Re: Lire et ecrire les tags des fichiers mp3

Publié : jeu. 02/déc./2010 18:38
par venom
Merci pour se super taf Dobro tu assure :wink: Ont ne l'arête plus :D







@++

Re: Lire et ecrire les tags des fichiers mp3

Publié : jeu. 02/déc./2010 20:39
par boddhi
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

Publié : jeu. 02/déc./2010 21:14
par Backup
.....................

Re: Lire et ecrire les tags des fichiers mp3

Publié : jeu. 02/déc./2010 21:24
par boddhi
Dobro a écrit :[MP3Tag] colle le tag "APIC" en premiere position , alors que mes fonctions permettent
de lire les tag, quelque soit leur position !! :)
Je crois que c'est selon l'ordre dans lequel tu sauvegardes les données sous MP3Tag...
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

Publié : jeu. 02/déc./2010 21:27
par venom
Merci Dobro je testerais des que j'ai 5min. :wink:

ps: tous mes audio ont étaient éditer avec songbird.






@++

Re: Lire et ecrire les tags des fichiers mp3

Publié : jeu. 02/déc./2010 21:48
par boddhi
@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 :wink: rien à voir avec les indiens :D ) qui ne sont écrites que pour du Intel...
Alors que le mien... :mrgreen:

Re: Lire et ecrire les tags des fichiers mp3

Publié : jeu. 02/déc./2010 22:37
par Backup
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 endian :wink: rien à voir avec les indiens :D ) qui ne sont écrites que pour du Intel...
Alors que le mien... :mrgreen:

oui je sais , mais j'men fou :lol:
Purebasic ne fonctionne pas sur mon Falcon 030 :)

ps : Petit indien, c'est plus cool hug !

Re: Lire et ecrire les tags des fichiers mp3

Publié : jeu. 02/déc./2010 22:43
par boddhi
Mouais, mais fonctionnera pas sous mon vieil A4030 :wink:

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

Re: Lire et ecrire les tags des fichiers mp3

Publié : dim. 05/déc./2010 11:31
par Parole De JOJO
ou la la
je suis perdu...
bon je vais voir ca trankillement ce soir
merci dobro, boddhi, et tout le monde