Tout pour les mp3 !!

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 872 fois - Téléchargée 87 fois

Contenu du snippet

Ce code à inserer dans un module vous permettra de tagger un MP3 et de lire son tag

Source / Exemple :


Global ReadOnly As Boolean
Dim FF
Dim txt1 As String * 30
Dim txt2 As String * 4
Global sngG As Byte
Public Enum Mp3GenreConv
  VersTexte = 0
  VersByte = 1
End Enum
Option Explicit

Public Function GetTitre(fichier As String) As String
If CheckTag(fichier, False) = False Then
  MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
  Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 124, txt1
Close FF
GetTitre = Trim$(txt1)
End Function

Public Function GetAuteur(fichier As String) As String
If CheckTag(fichier, False) = False Then
  MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
  Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 94, txt1
Close FF
GetAuteur = Trim$(txt1)
End Function

Public Function GetAlbum(fichier As String) As String
If CheckTag(fichier, False) = False Then
  MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
  Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 64, txt1
Close FF
GetAlbum = Trim$(txt1)
End Function

Public Function GetCommentaire(fichier As String) As String
If CheckTag(fichier, False) = False Then
  MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
  Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 30, txt1
Close FF
GetCommentaire = Trim$(txt1)
End Function

Public Function GetAnnee(fichier As String) As String
If CheckTag(fichier, False) = False Then
  MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
  Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 34, txt2
Close FF
GetAnnee = Trim$(txt2)
End Function

Public Function GetGenre(fichier As String) As String
If CheckTag(fichier, False) = False Then
  MsgBox "Le fichier n'est pas taggé !", vbInformation + vbOKOnly, "Tag"
  Exit Function
End If
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier), sngG
Close FF
If sngG > 79 Then sngG = 12
GetGenre = GenreConv(VersTexte, sngG)
End Function

Public Function PutTitre(fichier As String, Titre As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
txt1 = Titre
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier) - 124, txt1
Close FF
End Function

Public Function PutAuteur(fichier As String, Auteur As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
txt1 = Auteur
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier) - 94, txt1
Close FF
End Function

Public Function PutAlbum(fichier As String, Album As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
txt1 = Album
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier) - 64, txt1
Close FF
End Function

Public Function PutCommentaire(fichier As String, Commentaire As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
txt1 = Commentaire
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier) - 30, txt1
Close FF
End Function

Public Function PutAnnee(fichier As String, Annee As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
txt2 = Annee
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier) - 34, txt2
Close FF
End Function

Public Function PutGenre(fichier As String, Genre As String)
CheckTag fichier, True
If ReadOnly = True Then Exit Function
sngG = GenreConv(VersByte, Genre)
FF = FreeFile
Open fichier For Binary As FF
Put FF, FileLen(fichier), sngG
Close FF
End Function

Public Function GenreConv(Sens As Mp3GenreConv, Genre As Variant) As Variant
Dim G As Variant
If Sens = VersByte Then
  If VarType(Genre) <> vbString Then
    MsgBox "Le genre doit être du texte !", vbExclamation + vbOKOnly
    GenreConv = -1
    Exit Function
  End If
  Select Case Genre
    Case "Blues"
      G = 0
    Case "Classic Rock"
      G = 1
    Case "Country"
      G = 2
    Case "Dance"
      G = 3
    Case "Disco"
      G = 4
    Case "Funk"
      G = 5
    Case "Grunge"
      G = 6
    Case "Hip-Hop"
      G = 7
    Case "Jazz"
      G = 8
    Case "Metal"
      G = 9
    Case "New Age"
      G = 10
    Case "Oldies"
      G = 11
    Case "Other"
      G = 12
    Case "Pop"
      G = 13
    Case "R&B"
      G = 14
    Case "Rap"
      G = 15
    Case "Reggae"
      G = 16
    Case "Rock"
      G = 17
    Case "Techno"
      G = 18
    Case "Industrial"
      G = 19
    Case "Alternative"
      G = 20
    Case "Ska"
      G = 21
    Case "Death Metal"
      G = 22
    Case "Pranks"
      G = 23
    Case "Soundtrack"
      G = 24
    Case "Euro-Techno"
      G = 25
    Case "Ambient"
      G = 26
    Case "Trip-Hop"
      G = 27
    Case "Vocal"
      G = 28
    Case "Jazz+Funk"
      G = 29
    Case "Fusion"
      G = 30
    Case "Trance"
      G = 31
    Case "Classical"
      G = 32
    Case "Instrumental"
      G = 33
    Case "Acid"
      G = 34
    Case "House"
      G = 35
    Case "Game"
      G = 36
    Case "Sound Clip"
      G = 37
    Case "Gospel"
      G = 38
    Case "Noise"
      G = 39
    Case "AlternRock"
      G = 40
    Case "Bass"
      G = 41
    Case "Soul"
      G = 42
    Case "Punk"
      G = 43
    Case "Space"
      G = 44
    Case "Meditative"
      G = 45
    Case "Instrumental Pop"
      G = 46
    Case "Instrumental Rock"
      G = 47
    Case "Ethnic"
      G = 48
    Case "Gothic"
      G = 49
    Case "Darkwave"
      G = 50
    Case "Techno-Industrial"
      G = 51
    Case "Electronic"
      G = 52
    Case "Pop-Folk"
      G = 53
    Case "Eurodance"
      G = 54
    Case "Dream"
      G = 55
    Case "Southern Rock"
      G = 56
    Case "Comedy"
      G = 57
    Case "Cult"
      G = 58
    Case "Gangsta"
      G = 59
    Case "Top 40"
      G = 60
    Case "Christian Rap"
      G = 61
    Case "Pop/Funk"
      G = 62
    Case "Jungle"
      G = 63
    Case "Native American"
      G = 64
    Case "Cabaret"
      G = 65
    Case "New Wave"
      G = 66
    Case "Psychadelic"
      G = 67
    Case "Rave"
      G = 68
    Case "Showtunes"
      G = 69
    Case "Trailer"
      G = 70
    Case "Lo-Fi"
      G = 71
    Case "Tribal"
      G = 72
    Case "Acid Punk"
      G = 73
    Case "Acid Jazz"
      G = 74
    Case "Polka"
      G = 75
    Case "Retro"
      G = 76
    Case "Musical"
      G = 77
    Case "Rock & Roll"
      G = 78
    Case "Hard Rock"
      G = 79
  End Select
End If
If Sens = VersTexte Then
  If VarType(Genre) <> vbByte Then
    MsgBox "Le genre doit être de type Byte !", vbExclamation + vbOKOnly
    GenreConv = -1
    Exit Function
  End If
  Select Case Genre
    Case 0
      G = "Blues"
    Case 1
      G = "Classic Rock"
    Case 2
      G = "Country"
    Case 3
      G = "Dance"
    Case 4
      G = "Disco"
    Case 5
      G = "Funk"
    Case 6
      G = "Grunge"
    Case 7
      G = "Hip-Hop"
    Case 8
      G = "Jazz"
    Case 9
      G = "Metal"
    Case 10
      G = "New Age"
    Case 11
      G = "Oldies"
    Case 12
      G = "Other"
    Case 13
      G = "Pop"
    Case 14
      G = "R&B"
    Case 15
      G = "Rap"
    Case 16
      G = "Reggae"
    Case 17
      G = "Rock"
    Case 18
      G = "Techno"
    Case 19
      G = "Industrial"
    Case 20
      G = "Alternative"
    Case 21
      G = "Ska"
    Case 22
      G = "Death Metal"
    Case 23
      G = "Pranks"
    Case 24
      G = "Soundtrack"
    Case 25
      G = "Euro-Techno"
    Case 26
      G = "Ambient"
    Case 27
      G = "Trip-Hop"
    Case 28
      G = "Vocal"
    Case 29
      G = "Jazz+Funk"
    Case 30
      G = "Fusion"
    Case 31
      G = "Trance"
    Case 32
      G = "Classical"
    Case 33
      G = "Instrumental"
    Case 34
      G = "Acid"
    Case 35
      G = "House"
    Case 36
      G = "Game"
    Case 37
      G = "Sound Clip"
    Case 38
      G = "Gospel"
    Case 39
      G = "Noise"
    Case 40
      G = "AlternRock"
    Case 41
      G = "Bass"
    Case 42
      G = "Soul"
    Case 43
      G = "Punk"
    Case 44
      G = "Space"
    Case 45
      G = "Meditative"
    Case 46
      G = "Instrumental Pop"
    Case 47
      G = "Instrumental Rock"
    Case 48
      G = "Ethnic"
    Case 49
      G = "Gothic"
    Case 50
      G = "Darkwave"
    Case 51
      G = "Techno-Industrial"
    Case 52
      G = "Electronic"
    Case 53
      G = "Pop-Folk"
    Case 54
      G = "Eurodance"
    Case 55
      G = "Dream"
    Case 56
      G = "Southern Rock"
    Case 57
      G = "Comedy"
    Case 58
      G = "Cult"
    Case 59
      G = "Gangsta"
    Case 60
      G = "Top 40"
    Case 61
      G = "Christian Rap"
    Case 62
      G = "Pop/Funk"
    Case 63
      G = "Jungle"
    Case 64
      G = "Native American"
    Case 65
      G = "Cabaret"
    Case 66
      G = "New Wave"
    Case 67
      G = "Psychadelic"
    Case 68
      G = "Rave"
    Case 69
      G = "Showtunes"
    Case 70
      G = "Trailer"
    Case 71
      G = "Lo-Fi"
    Case 72
      G = "Tribal"
    Case 73
      G = "Acid Punk"
    Case 74
      G = "Acid Jazz"
    Case 75
      G = "Polka"
    Case 76
      G = "Retro"
    Case 77
      G = "Musical"
    Case 78
      G = "Rock & Roll"
    Case 79
      G = "Hard Rock"
  End Select
End If
GenreConv = G
End Function

Private Function CheckTag(fichier As String, Ecrire As Boolean) As Boolean
ReadOnly = False
If (GetAttr(fichier) = 1 Or GetAttr(fichier) = 33) And Ecrire = True Then
  MsgBox "Le fichier est en lecture seule !", vbExclamation + vbOKOnly, "Tag"
  ReadOnly = True
  Exit Function
End If
CheckTag = True
Dim Tag As String * 3
FF = FreeFile
Open fichier For Binary As FF
Get FF, FileLen(fichier) - 127, Tag
If Tag <> "TAG" Then CheckTag = False
If Ecrire = True And CheckTag = False Then
  Dim TagSpace As String * 128
  TagSpace = "TAG"
  Put FF, FileLen(fichier), TagSpace
End If
Close FF
End Function

A voir également

Ajouter un commentaire

Commentaires

Attention! Cet exemple ne gère pas les tags ID3, mais les tags créés par Winamp.
Les tags ID3 sont placé au début du MP3 et non à la fin.
tes content? ta vue le bordelle là?, connard va les zips c pas pour les chiens!
Trop lourd ton code la, fo que j'up les miens un de ces 4 ...

Proger>tout faux ! Les tags sont a la "taille_fu_fichier - 130"
C les tag 2.0 > qui sont au début
J'hallucinerais tjs, ya des gens ki prennent la peine et le tps de mettre des sources ici, et ya tjs des petits merdeux ki st jms contents ...
wared si t pa content tu peu aller voir une otre source ailleurs
cs_olivier42
Messages postés
22
Date d'inscription
jeudi 17 octobre 2002
Statut
Membre
Dernière intervention
3 juillet 2003
-
C pas mal mais je te suggererais de créer deux tableaux: liste_genre_lib et liste_genre_code... Tu les parcours et tu gagnes 200 lignes :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.