Tout pour les mp3 !!

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

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.