Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 14 Oct 2014 - 13:11 | |
| Après tous ces jours de recherches et de discussions très instructives, je vous livre mon petit programme pour analyser un fichier *.mp3. Il utilise la dll de klaus pour un seul marqueur qui pourrait être long,très long à retrouver sans elle. voilà le code : - Code:
-
dim f$,kgf$,no%,tf%,Tag2$,Tag1$,Tag3$,Audio1%,Tag3%,Tag1%,Marq$(300,2),i% ,Genre$(125) dim mem% f$="C:\Users\Yannick\Music\- Daniel Guichard\Finalement on s'habitue.mp3" kgf$="C:\PROGRA~2\PANORA~1\Mes_Dlls\KGF\KGF.dll" dll_on kgf$
no%=no%+1 : mem%=no% memo no% full_space no% bar_both no% font_name no%,"Courier"
' Création du tableau des genres Create_Tab_Genre() ' Récupération de la taille du fichier File_infos(f$) item_add mem%, "Taille fichier : "+str$(tf%)+" octets" item_add mem%,"" ' Recherche de la présence de Tag id3v2 Find_id3v2(f$) if Tag2$="ID3" : item_add mem%, "id3v2 : yes | 0":else :item_add mem%,"id3v2 : no | ":end_if ' Recherche du départ de la bande son Find_Audio(f$) if Audio1%<>0 :item_add mem%, "Audio : yes | "+str$(audio1%) : else : item_add mem%,"Audio : no | ":end_if ' Recherche de la présence de Tag id3v1 Find_id3v1(f$) if Tag1$="TAG" : item_add mem%, "id3v1 : yes | "+str$(Tag1%):else : item_add mem%,"id3v1 : no | ":end_if ' Recherche de la présence de Tag APE Find_APE(f$) If Tag3$="APETAGEX" : item_add mem%, "APE : yes | "+str$(Tag3%):else:item_add mem%,"APE : no | ":end_if item_add mem%,"" ' Recherche de tous les marqueurs id3v2 si présence d' id3v2 if Tag2$="ID3" Find_marqueurs_id3v2(f$) end_if item_add mem%,"" ' Extraction des données des marqueurs id3v2 if Tag2$="ID3" Extract_Marqueur_infos(f$) item_add mem%,"" end_if ' Extraction des données du Tag idv1 if Tag1$="TAG" item_add mem%,"" Extract_id3v1(f$) end_if ' Extraction du tag APE if Tag3$="APETAGEX" item_add mem%,"" Extract_APE(f$) End_if End ' ------------------------------------------------------------------------------ Sub Create_Tab_Genre() dim_local a$,x% restore while a$<>"Genres" : read a$ : end_while x%=x%-1 while a$<>"Dance Hall" read a$ x%=x%+1 Genre$(x%)=a$ end_while End_sub
Sub File_infos(f$) no%=no%+1 filebin_open_read no%,f$ tf%=filebin_size(no%) filebin_close no% no%=no%-1 End_sub
Sub Find_id3v2(f$) dim_local x%,bloc%(3) no%=no%+1 filebin_open_read no%,f$ filebin_block_read no%,3,bloc%(0) for x%=0 to 2 Tag2$=Tag2$+chr$(bloc%(x%)) next x% filebin_close no% no%=no%-1 End_sub
Sub Find_Audio(f$) dim_local x%,bloc%(2) no%=no%+1 filebin_open_read no%,f$ for x%=0 to tf% filebin_position no%,x% filebin_block_read no%,2,bloc%(0) if hex$(bloc%(0))+hex$(bloc%(1))="FFFB" audio1%=x% exit_for end_if next x% filebin_close no% no%=no%-1 End_sub
Sub Find_id3v1(f$) dim_local x%,bloc%(128) no%=no%+1 filebin_open_read no%,f$ filebin_position no%,tf%-128 filebin_block_read no%,128,bloc%(0) for x%=0 to 2 Tag1$=Tag1$+chr$(bloc%(x%)) next x% Tag1%=tf%-128 filebin_close no% no%=no%-1 End_sub
Sub Find_APE(f$) dim_local res%,pattern$,nom$ nom$=f$ pattern$="APETAGEX" res% = dll_call3("SearchPatternInBinaryFile",adr(nom$),adr(pattern$),0) if res%<>0 : Tag3$="APETAGEX" : Tag3%=res% :end_if End_sub
Sub Find_marqueurs_id3v2(f$) dim_local x%,bloc%(Audio1%),m$,liste_m$,a$,nbm% restore while a$<>"TAG" : read a$ : end_while read a$ while a$<>"F" : read a$ : Liste_m$=Liste_m$+a$+"," : end_while no%=no%+1 filebin_open_read no%,f$ filebin_block_read no%,Audio1%,bloc%(0) for x%=0 to Audio1%-4 m$=chr$(bloc%(x%))+chr$(bloc%(x%+1))+chr$(bloc%(x%+2))+chr$(bloc%(x%+3)) if instr(liste_m$,m$)>0 nbm%=nbm%+1 if nbm%=1 marq$(nbm%,0)=m$ marq$(nbm%,1)=str$(x%) else marq$(nbm%,0)=m$ marq$(nbm%,1)=str$(x%) marq$(nbm%-1,2)=str$(x%) end_if end_if next x% filebin_close no% no%=no%-1 End_sub
Sub Extract_Marqueur_infos(f$) dim_local x%,noctet%,info$,bloc%(100000),y% no%=no%+1 filebin_open_read no%,f$ for x%=1 to 300 if marq$(x%,0)<>"" and marq$(x%,0)<>"APIC" if Marq$(x%,2)="" noctet%=(Audio1%-1)-(val(Marq$(x%,1))+4) else noctet%=val(Marq$(x%,2))-(val(Marq$(x%,1))+4) end_if filebin_position no%,(val(Marq$(x%,1))+4) filebin_block_read no%,noctet%,Bloc%(0) info$="" for y%=0 to noctet%-1 if bloc%(y%)<>0 and bloc%(y%)<253 info$=info$+chr$(bloc%(y%)) end_if next y% info$=trim$(info$) item_add mem%, Marq$(x%,0)+" | "+Marq$(x%,1)+" | "+marq$(x%,2)+" | "+info$ else if marq$(x%,0)="APIC" item_add mem%, Marq$(x%,0)+" | "+Marq$(x%,1)+" | "+marq$(x%,2)+" | Pochette CD" else exit_for end_if end_if next x% filebin_close no% no%=no%-1 End_sub
Sub Extract_id3v1(f$) dim_local x%,bloc%(128),a$ no%=no%+1 filebin_open_read no%,f$ filebin_position no%,Tag1% filebin_block_read no%,128,bloc%(0) for x%=3 to 32 : a$=a$+chr$(bloc%(x%)): next x% a$=trim$(a$) item_add mem%,"Titre | "+a$ a$="" for x%=33 to 62 : a$=a$+chr$(bloc%(x%)): next x% a$=trim$(a$) item_add mem%,"Interprète | "+a$ a$="" for x%=63 to 92 : a$=a$+chr$(bloc%(x%)): next x% a$=trim$(a$) item_add mem%,"Album | "+a$ a$="" for x%=93 to 96 : a$=a$+chr$(bloc%(x%)): next x% a$=trim$(a$) item_add mem%,"Année | "+a$ a$="" for x%=97 to 125 : a$=a$+chr$(bloc%(x%)): next x% a$=trim$(a$) item_add mem%,"Comm | "+a$ a$="" a$=chr$(bloc%(127)) item_add mem%,"Piste | "+a$ a$="" a$=str$(bloc%(128)) if val(a$)<126 for x%=0 to 125 if val(a$)=x% a$=Genre$(x%) exit_for end_if next x% else a$="" end_if item_add mem%,"Genre | "+a$ a$="" filebin_close no% no%=no%-1 End_sub
Sub Extract_APE(f$) dim_local x%,bloc%(1000000),info$ filebin_open_read no%,f$ filebin_position no%,Tag3%+3 filebin_block_read no%,(tag1%-tag3%),bloc%(0) for x%=0 to (tag1%-tag3%): info$=info$+chr$(bloc%(x%)): next x% item_add mem%,"APE | "+info$ filebin_close no% End_sub
DATA "TAG" DATA "AENC","APIC","COMM","COMR","ENCR","EQUA","ETCO","GEOB","GRID","IPLS","LINK" DATA "MCDI","MLLT","OWNE","PRIV","PCNT","POPM","POSS","RBUF","RVAD","RVRB","SYLT" DATA "SYTC","TALB","TBPM","TCOM","TCON","TCOP","TDAT","TDLY","TENC","TEXT","TFLT" DATA "TIME","TIT1","TIT2","TIT3","TKEY","TLAN","TLEN","TMED","TOAL","TOFN","TOLY" DATA "TOPE","TORY","TOWN","TPE1","TPE2","TPE3","TPE4","TPOS","TPUB","TRCK","TRDA" DATA "TRSN","TRSO","TSIZ","TSRC","TSSE","TYER","TXXX","UFID","USER","USLT","WCOM" DATA "WCOP","WOAF","WOAR","WOAS","WORS","WPAY","WPUB","WXXX" ' nouveaux tags (v2.4): DATA "ASPI","EQU2","TMCL","TIPL","RVA2","TDRC","TDOR","SEEK","SIGN","TDEN","TDRL" DATA "TDTG","TMCL","TMOO","TPRO","TSOA","TSOP","TSOT","TSST" DATA "F"
Data "Genres" Data "Blues" Data "Classic Rock" Data "Country" Data "Dance" Data "Disco" Data "Funk" Data "Grunge" Data "Hip-Hop" Data "Jazz" Data "Metal" Data "New Age" Data "Oldies" Data "Other" Data "Pop" Data "R&B" Data "Rap" Data "Reggae" Data "Rock" Data "Techno" Data "Industrial" Data "Alternative" Data "Ska" Data "Death Metal" Data "Pranks" Data "Soundtrack" Data "Euro-Techno" Data "Ambient" Data "Trip-Hop" Data "Vocal" Data "Jazz+Funk" Data "Fusion" Data "Trance" Data "Classical" Data "Instrumental" Data "Acid" Data "House" Data "Game" Data "Sound Clip" Data "Gospel" Data "Noise" Data "AlternRock" Data "Bass" Data "Soul" Data "Punk" Data "Space" Data "Meditative" Data "Instrumental Pop" Data "Instrumental Rock" Data "Ethnic" Data "Gothic" Data "Darkwave" Data "Techno-Industrial" Data "Electronic" Data "Pop-Folk" Data "Eurodance" Data "Dream" Data "Southern Rock" Data "Comedy" Data "Cult" Data "Gangsta" Data "Top 40" Data "Christian Rap" Data "Pop/Funk" Data "Jungle" Data "Native American" Data "Cabaret" Data "New Wave" Data "Psychadelic" Data "Rave" Data "Showtunes" Data "Trailer" Data "Lo-Fi" Data "Tribal" Data "Acid Punk" Data "Acid Jazz" Data "Polka" Data "Retro" Data "Musical" Data "Rock & Roll" Data "Hard Rock" Data "Folk" Data "Folk-Rock" Data "National Folk" Data "Swing" Data "Fast Fusion" Data "Bebob" Data "Latin" Data "Revival" Data "Celtic" Data "Bluegrass" Data "Avantgarde" Data "Gothic Rock" Data "Progressive Rock" Data "Psychedelic Rock" Data "Symphonic Rock" Data "Slow Rock" Data "Big Band" Data "Chorus" Data "Easy Listening" Data "Acoustic" Data "Humour" Data "Speech" Data "Chanson" Data "Opera" Data "Chamber Music" Data "Sonata" Data "Symphony" Data "Booty Bass" Data "Primus" Data "Porn Groove" Data "Satire" Data "Slow Jam" Data "Club" Data "Tango" Data "Samba" Data "Folklore" Data "Ballad" Data "Power Ballad" Data "Rhythmic Soul" Data "Freestyle" Data "Duet" Data "Punk Rock" Data "Drum Solo" Data "A capella" Data "Euro-House" Data "Dance Hall" | |
|