Accueil > > > CLASSE MP3 (TAGS, IMAGE)
CLASSE MP3 (TAGS, IMAGE)
Information sur la source
Description
Cette classe permet de: - lire les tags mp3 (v1 uniquement) - récupérer sur fnac.com l'image correspondant (en fonction des tags)
Source
- Imports System.IO
- Imports System.Net
-
- <Serializable()> Public Class cls_mp3tag
-
- Public path As String
- Public directory As String
- Public filename As String
- Public artist As String
- Public title As String
- Public album As String
- Public genre As String = 255
- Public comments As String
- Public track As String
- Public tagged As Boolean
- Public num As Integer
-
- ' Genres
- Public Enum enum_genres As Byte
- Blues = 0
- ClassicRock = 1
- Country = 2
- Dance = 3
- Disco = 4
- Funk = 5
- Grunge = 6
- HipHop = 7
- Jazz = 8
- Metal = 9
- NewAge = 10
- Oldies = 11
- Other = 12
- Pop = 13
- RnB = 14
- Rap = 15
- Reggae = 16
- Rock = 17
- Techno = 18
- Industrial = 19
- Alternative = 20
- Ska = 21
- DeathMetal = 22
- Pranks = 23
- Soundtrack = 24
- EuroTechno = 25
- Ambient = 26
- TripHop = 27
- Vocal = 28
- JazzFunk = 29
- Fusion = 30
- Trance = 31
- Classical = 32
- Instrumental = 33
- Acid = 34
- House = 35
- Game = 36
- SoundClip = 37
- Gospel = 38
- Noise = 39
- AlternRock = 40
- Bass = 41
- Soul = 42
- Punk = 43
- Space = 44
- Meditative = 45
- InstrumentalPop = 46
- InstrumentalRock = 47
- Ethnic = 48
- Gothic = 49
- Darkwave = 50
- TechnoIndustrial = 51
- Electronic = 52
- PopFolk = 53
- Eurodance = 54
- Dream = 55
- SouthernRock = 56
- Comedy = 57
- Cult = 58
- Gangsta = 59
- Top40 = 60
- ChristianRap = 61
- PopFunk = 62
- Jungle = 63
- NativeAmerican = 64
- Cabaret = 65
- NewWave = 66
- Psychadelic = 67
- Rave = 68
- Showtunes = 69
- Trailer = 70
- LoFi = 71
- Tribal = 72
- AcidPunk = 73
- AcidJazz = 74
- Polka = 75
- Retro = 76
- Musical = 77
- RocknRoll = 78
- HardRock = 79
- None = 255
- End Enum
-
- '******************************************************************************
- 'recup les infos a partir des tags
- Public Sub init(ByVal e_path As String)
-
- Me.path = e_path
-
- Try
-
- Me.filename = Me.path.Substring(Me.path.LastIndexOf("\") + 1)
- Me.title = Me.filename
- Me.directory = Me.path.Substring(0, Me.path.LastIndexOf("\") + 1)
-
- Dim Buffer(128) As Byte
- Dim StreamReadWrite As System.IO.FileStream
- Dim Encodeur As New System.Text.ASCIIEncoding
- Try
- StreamReadWrite = New System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.ReadWrite)
- Catch ex As Exception
- Exit Sub
- End Try
-
- Dim TagID3 As String
- StreamReadWrite.Seek(-128, System.IO.SeekOrigin.End)
- StreamReadWrite.Read(Buffer, 0, 128)
- TagID3 = Encodeur.GetString(Buffer)
- 'Recherche du Tag TAG
- If TagID3.Substring(0, 3).Equals("TAG") Then
- 'Initialisation de Title
- Me.title = TagID3.Substring(3, 30).Trim.Replace(Chr(0), "").Trim(CChar(vbNullChar))
- 'Initialisation de Author
- Me.artist = TagID3.Substring(33, 30).Trim.Trim.Replace(Chr(0), "").Trim(CChar(vbNullChar))
- 'Initialisation de Album
- Me.album = TagID3.Substring(63, 30).Trim.Trim.Replace(Chr(0), "").Trim(CChar(vbNullChar))
- 'Initialisation de Comments
- Me.comments = TagID3.Substring(97, 28).Trim.Trim.Replace(Chr(0), "").Trim(CChar(vbNullChar))
- 'Analyse du caractère 125 de TagID3
- If TagID3.Chars(125).Equals(0) Then
- 'Initialisation de Track
- Me.track = Buffer.GetValue(126)
- 'Initialisation de Tagged
- Me.tagged = False
- Else
- 'Initialisation de Track
- Me.track = 0
- 'Initialisation de Category
- Me.genre = Buffer.GetValue(127)
- If Me.genre = "" Or Me.genre = " " Then
- Me.genre = "255"
- End If
- If Me.title = "" Then Me.title = Me.filename
- 'Initialisation de Tagged
- Me.tagged = True
-
- 'ferme le fichier
- StreamReadWrite.Close()
-
- End If
- End If
- Catch IOex As System.IO.IOException
-
- End Try
-
-
- 'si ya pas de title, on met le nom du fichier
- If Me.title = "" Then Me.title = Me.filename
-
- 'si ya pas d'artiste, on met le nom du dossier
- If IsNothing(Me.artist) OrElse Me.artist.Length = 0 Then Me.artist = "Inconnu"
-
- End Sub
-
- '******************************************************************************
- 'recup l'image sur le site de la fnac :p
- Public Function get_picture(ByRef e_http As cls_http) As Image
- Try
- 'envoi du formulaire avec les infos
- Dim requete_http As String
- Dim response_http As String
- requete_http = "http://www3.fnac.com/search/quick.do?text=" & Me.artist & " " & Me.title & " " & Me.album & "+&category=audio"
- response_http = e_http.get_url(requete_http)
-
- 'recup le lien pour l'image
- Dim pos_debut As Integer = response_http.IndexOf("http://multimedia.fnac.com/multimedia/images_produits/petites")
- Dim pos_Fin As Integer = response_http.IndexOf("""", pos_debut)
- Dim url_img As String = response_http.Substring(pos_debut, pos_Fin - pos_debut)
- url_img = url_img.Replace("petites", "grandes")
- Debug.WriteLine(url_img)
-
- 'enregistre l'image dans un fichier
- Return e_http.get_picture(url_img)
-
- Catch ex As Exception
- Debug.WriteLine("Erreur lors de la récupération de l'image: " & ex.Message)
- Return Nothing
- End Try
-
- End Function
-
- End Class
-
Imports System.IO
Imports System.Net
<Serializable()> Public Class cls_mp3tag
Public path As String
Public directory As String
Public filename As String
Public artist As String
Public title As String
Public album As String
Public genre As String = 255
Public comments As String
Public track As String
Public tagged As Boolean
Public num As Integer
' Genres
Public Enum enum_genres As Byte
Blues = 0
ClassicRock = 1
Country = 2
Dance = 3
Disco = 4
Funk = 5
Grunge = 6
HipHop = 7
Jazz = 8
Metal = 9
NewAge = 10
Oldies = 11
Other = 12
Pop = 13
RnB = 14
Rap = 15
Reggae = 16
Rock = 17
Techno = 18
Industrial = 19
Alternative = 20
Ska = 21
DeathMetal = 22
Pranks = 23
Soundtrack = 24
EuroTechno = 25
Ambient = 26
TripHop = 27
Vocal = 28
JazzFunk = 29
Fusion = 30
Trance = 31
Classical = 32
Instrumental = 33
Acid = 34
House = 35
Game = 36
SoundClip = 37
Gospel = 38
Noise = 39
AlternRock = 40
Bass = 41
Soul = 42
Punk = 43
Space = 44
Meditative = 45
InstrumentalPop = 46
InstrumentalRock = 47
Ethnic = 48
Gothic = 49
Darkwave = 50
TechnoIndustrial = 51
Electronic = 52
PopFolk = 53
Eurodance = 54
Dream = 55
SouthernRock = 56
Comedy = 57
Cult = 58
Gangsta = 59
Top40 = 60
ChristianRap = 61
PopFunk = 62
Jungle = 63
NativeAmerican = 64
Cabaret = 65
NewWave = 66
Psychadelic = 67
Rave = 68
Showtunes = 69
Trailer = 70
LoFi = 71
Tribal = 72
AcidPunk = 73
AcidJazz = 74
Polka = 75
Retro = 76
Musical = 77
RocknRoll = 78
HardRock = 79
None = 255
End Enum
'******************************************************************************
'recup les infos a partir des tags
Public Sub init(ByVal e_path As String)
Me.path = e_path
Try
Me.filename = Me.path.Substring(Me.path.LastIndexOf("\") + 1)
Me.title = Me.filename
Me.directory = Me.path.Substring(0, Me.path.LastIndexOf("\") + 1)
Dim Buffer(128) As Byte
Dim StreamReadWrite As System.IO.FileStream
Dim Encodeur As New System.Text.ASCIIEncoding
Try
StreamReadWrite = New System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.ReadWrite)
Catch ex As Exception
Exit Sub
End Try
Dim TagID3 As String
StreamReadWrite.Seek(-128, System.IO.SeekOrigin.End)
StreamReadWrite.Read(Buffer, 0, 128)
TagID3 = Encodeur.GetString(Buffer)
'Recherche du Tag TAG
If TagID3.Substring(0, 3).Equals("TAG") Then
'Initialisation de Title
Me.title = TagID3.Substring(3, 30).Trim.Replace(Chr(0), "").Trim(CChar(vbNullChar))
'Initialisation de Author
Me.artist = TagID3.Substring(33, 30).Trim.Trim.Replace(Chr(0), "").Trim(CChar(vbNullChar))
'Initialisation de Album
Me.album = TagID3.Substring(63, 30).Trim.Trim.Replace(Chr(0), "").Trim(CChar(vbNullChar))
'Initialisation de Comments
Me.comments = TagID3.Substring(97, 28).Trim.Trim.Replace(Chr(0), "").Trim(CChar(vbNullChar))
'Analyse du caractère 125 de TagID3
If TagID3.Chars(125).Equals(0) Then
'Initialisation de Track
Me.track = Buffer.GetValue(126)
'Initialisation de Tagged
Me.tagged = False
Else
'Initialisation de Track
Me.track = 0
'Initialisation de Category
Me.genre = Buffer.GetValue(127)
If Me.genre = "" Or Me.genre = " " Then
Me.genre = "255"
End If
If Me.title = "" Then Me.title = Me.filename
'Initialisation de Tagged
Me.tagged = True
'ferme le fichier
StreamReadWrite.Close()
End If
End If
Catch IOex As System.IO.IOException
End Try
'si ya pas de title, on met le nom du fichier
If Me.title = "" Then Me.title = Me.filename
'si ya pas d'artiste, on met le nom du dossier
If IsNothing(Me.artist) OrElse Me.artist.Length = 0 Then Me.artist = "Inconnu"
End Sub
'******************************************************************************
'recup l'image sur le site de la fnac :p
Public Function get_picture(ByRef e_http As cls_http) As Image
Try
'envoi du formulaire avec les infos
Dim requete_http As String
Dim response_http As String
requete_http = "http://www3.fnac.com/search/quick.do?text=" & Me.artist & " " & Me.title & " " & Me.album & "+&category=audio"
response_http = e_http.get_url(requete_http)
'recup le lien pour l'image
Dim pos_debut As Integer = response_http.IndexOf("http://multimedia.fnac.com/multimedia/images_produits/petites")
Dim pos_Fin As Integer = response_http.IndexOf("""", pos_debut)
Dim url_img As String = response_http.Substring(pos_debut, pos_Fin - pos_debut)
url_img = url_img.Replace("petites", "grandes")
Debug.WriteLine(url_img)
'enregistre l'image dans un fichier
Return e_http.get_picture(url_img)
Catch ex As Exception
Debug.WriteLine("Erreur lors de la récupération de l'image: " & ex.Message)
Return Nothing
End Try
End Function
End Class
Conclusion
C'est un version beta, ya surement plein de bugs mais bon... (titou ma déja permis d'en resoudre :) Autrement je voudrais remercier HVb pour son code sur la recup du source html d'une page web (http://www.vbfrance.com/code.aspx?id=5938) et de téléchargement de fichiers (http://www.vbfrance.com/code.aspx?id=6109)
Pour l'utiliser: dim mp3 as new cls_mp3tag() mp3.init(le_chemin_de_votre_mp3) mp3. num = 1 'il doivent avoir un no, moi c'est la clé de ma base access mp3.get_picture(le_dossier_dans_lequel_vous _voulez_l_enregistrer) 'affiche dans un picturebox picturebox1.image=image.fromfile(mp3.im g_path) 'affiche les tags dans un textbox textbox1.text = mp3.artist & " - " & mp3.title & " - " & mp3.album
Enjoy :)
Historique
- 26 février 2006 17:48:39 :
- Prise en compte des remarques de titou !
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
VB6 lire mp3 [ par DarkFel ]
Bonjour alors voilà j'ai parcourt le site en faisant des recherches et j'ai vu pleins de trucs pour lire un fichier mp3. N'étant pas très doué j'ai pa
JOUER UNE MUSIQUE MP3 LORS DE L'EXECUTION D'UN FORMULAIRE SOUS VB.NET [ par moiseinfo2 ]
[b]Bonjour tout le monde, en fait je suis entrain de faire une application de gestion d'une école et j'aimerai que lors de l'exécution de ce dernier c
Musique de fond [ par Anakin79 ]
bonjour, Je voudrais que l'orque je clique sur un buttons, une musique au format mp3 se lance. La musique se trouve dans l'explorateur de solution, e
VisualBasic musique de fond [ par Adr1en35 ]
Bonjour, [quote]depuis peu avec un ami nous avons crée un server de jeux qui se nom [quote]"Métin2"[/quote] j'ai donc voulu crée notre propre luncher.
lecteur mp3 avec application vb2008 [ par ouidad02 ]
slt a tous je cherche comment cree une application vb2008 pour la lecture mp3 "cad application qui lie les fichier mp3 par click sure un buttan" mrc
Comment mettre une musique de fond a notre logiciel en vb [ par elchikokevo ]
Bonjours je débute avec visual basic 2010 et j'aurai besoin de vous pour Mettre une musique en arrière plan et qui se lit en boucle. J'ai deja cherche
La frequence d'une musique [ par culie3 ]
Bonjour, Je suis en trin de faire une application sous vb6 et j'ai quelques questions sur le système audio que je n'ai pas souvent utilisé et j'ai bea
slt a tous [ par ouidad02 ]
je suis en train de créer un logiciel pour un auto école ce logiciel besoin de lancer les image avec le son (le son explique l'image ) et des question
extracteur enregistreur analyseur de tag de mp3 [ par laurie3131 ]
Bonjour à tous, J'ai un programme visual basic à faire pour la fac, je vous avoue que ce n'est pas ma tasse de thé... En gros on doit créer un extrac
|
Derniers Blogs
MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril SHAREPOINT 15 TECHNICAL PREVIEW MANAGED OBJECT MODEL SOFTWARE DEVELOPMENT KITSHAREPOINT 15 TECHNICAL PREVIEW MANAGED OBJECT MODEL SOFTWARE DEVELOPMENT KIT par Matthew
http://www.microsoft.com/download/en/details.aspx?id=28768&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+MicrosoftDownloadCenter+(Microsoft+Download+Center) ...
Cliquez pour lire la suite de l'article par Matthew
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|