begin process at 2012 02 04 12:25:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Multimedia

 > CLASSE MP3 (TAGS, IMAGE)

CLASSE MP3 (TAGS, IMAGE)


 Information sur la source

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Multimedia Source .NET ( DotNet ) Classé sous :mp3, idtag, musique Niveau :Débutant Date de création :22/09/2005 Date de mise à jour :26/02/2006 17:48:39 Vu :16 925

Auteur : olixelle

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 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

Source avec Zip Source avec une capture Source .NET (Dotnet) MSN MESSENGER
Source avec Zip Source avec une capture Source .NET (Dotnet) RECHERCHE DE PAROLES DE CHANSONS
Source avec Zip Source .NET (Dotnet) CREER SON MSN AVEC DOTMSN
Source avec Zip Source avec une capture Source .NET (Dotnet) PICTUREBOX "INTELLIGENT" (DU MOINS PLUS QUE CELUI LIVRÉ EN S...
Source .NET (Dotnet) CONVERTIR ENTITÉS HTML EN CARACTÈRE

 Sources de la même categorie

Source avec Zip Source avec une capture LECTEUR MULTIMÉDIA par lartiguef
Source avec Zip Source avec une capture RENOMMER SOUS-TITRES par memejoueur
Source .NET (Dotnet) "PARLEUR" EN VB 2010 par clementgeek41
Source avec Zip Source avec une capture CHANGER LE VOLUME SYSTÉME SANS ACTIVEX par kayoub5
Source avec une capture Source .NET (Dotnet) LIL SAMPLE par chadada

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) LECTEUR PLAYER MULTIMÉDIA (MUSIQUES ET VIDÉOS) par aus3004
Source avec Zip Source avec une capture LECTEUR DE MUSIQUE ET LECTEUR AUDIO par killer123456789
Source avec Zip Source avec une capture PLATINE DE MIXAGE DJ par freddybesac
Source avec Zip Source avec une capture PLAYER MULTIMÉDIA par momongana
Source avec Zip Source avec une capture MEZIK II, LECTEUR MUSIQUE, LYRIC, TAG, RENOMMER, SUPPRIMER E... par aaa

Commentaires et avis

Commentaire de Titou4u le 23/02/2006 23:53:34

excellent, c'est ce que je cherchais.
EN Vb.net, peu de sources proposent une classe claire et bien commentée.
Dommage qu'elle ne recupère pas les tad v2.
Pour moi, ca mérite un bon 9/10 et je m'enpresse de mettre ta classe dans mon projet...

Commentaire de hvb le 25/02/2006 15:24:21

merci de me citer, c'est correct. N'ayant lu l'explication finale qu'en dernier, j'ai failli raler... ^^'x

Commentaire de Titou4u le 25/02/2006 16:34:04

Bon, en fait, j'ai trouvé qualques soucis sur ton codes:
-Le 1er qui n'est pas des moindres est que tu ouvre un fichier en lecture, mais que tu as oublié de le refermer a la fin. Donc a la fin de ton sub init, aprés le end try, place ca "StreamReadWrite.Close()"

-2nd point, dans ta fonction init, tu recupére des données (par exemple pour le titre du morceau), mais tu n'enléve pas les caractères nuls que cette valeur contient, du coup, si tu essaie de concatener auteur et titre dans une variable string, ca ne marche pas. moi dans mon code, j'ai mis:
Me.title = TagID3.Substring(3, 30).Trim
Me.title = Me.title.Trim(CChar(vbNullChar))

-3éme point, tu n'as pas mis option strict, du coup, j'ai eu queqlques warning de conversion from string to char, mais ca, c'est moins important...

sinon, ca marche impec, j'en suis bien content :o)
continue comme ca
TiToU

Commentaire de olixelle le 26/02/2006 17:47:29

coucou titou4u,

merci pour tes remarques, j'ai un peu honte en fait sur le nom fermage du stream :)
sinon pour les null j'avais mis ca: TagID3.Substring(97, 28).Trim.Trim.Replace(Chr(0), "")
je sais pas si ca fé la mm chose que ton trim...

si tu fé des améliorations donne les moi, je mettrai le source a jour !

a+

Commentaire de Titou4u le 26/02/2006 18:01:58

toutes mes excuses, j'avais pas vu le code posté, .Trim.Replace(Chr(0), "") fait la même chose que mon code, mais en ouvrant le zip, je n'avais pas ca. C'est moi qui ai honte d'avoir mis sur 2 lignes ce qui marche en une, donc pas besoin de rajouter .Trim(CChar(vbNullChar)) a la fin... :p

Dés que j'aurais le temps, je t'enveirais le fichier avec les corrections de convertions.

Je vais aussi essayer de trouver comment recuperer les tag v2 (même si pour mon projet je n'en ai pas spécialement besoin) et je tenterais de modifier ta classe pour qu'ele puisse recuperer,les tag v1 , v2 ou les 2...

Commentaire de olixelle le 26/02/2006 18:08:17

mdr,
je viens de modifier le code en prenant en compte tes remarques :)
ya osi un pb de caractere (style les é qui sont remplacés par un i .... c un pb d'unicode ca devrait pas etre compliqué a modifer :p

Commentaire de Karpett le 26/04/2006 17:26:51

Il y a un soucis dans la source de la recup d'image sur fnac.com
La classe cls_http n'est pas déclarée

Commentaire de inconnu974 le 06/09/2006 20:01:00

Source tres utile et bien commentée mais comme pour KARPETT, la classe cls_http n'est pas déclaréee (cela dit je m'en sers pas)
Dommage les concepts objets sont quelque peu oubliés (constructeurs, encapsulation) mais comme la source est de niveau débutant je vote 7/10

Commentaire de olixelle le 06/09/2006 20:20:09

Bonjour Inconnu,

effectivement c 2 concepts poo ne sont pas implémentés mais pour une bonne raison:
cette source fait partie d'un média center (www.mydomotix.com) et j'ai rajouté les méthodes init & finish qui sont appelées des que l'initialisation d'un module est demandée (sachant que cette classe est static chez moi :)

voila (jvoulé mdéfendre un peu :)

Olixelle

Commentaire de Hummer29 le 19/09/2007 15:01:59

Bonjour,

En voyant ce code, il est vrai qu'il est pas mal. Je voudrais demander si quelqu'un est intéressé par le développement d'une application permettant de gérer plusieurs types de médias(MP3, DVD, Divx).

Je voudrais développer cette application sur le web et ce, afin que tous le monde puisse avoir cette base de données à sa disposition même s'il n'a pas fait de backup de son disque dur.A l'heure actuelle (si je ne me trompe pas) il n'existe que des applications sur Windows mais pas en Web. Si toutefois cela existe, please envoyer moi le lien pour que j'aille voir si cela correspond à ce que je veux faire.

Je suis donc à la recherche de développeurs qui m'aideraient dans cette tache, si cela intéresse quelqu'un, please contactez-moi sur xmahieu@gmail.com

Merci d'avance

Hummer29

Commentaire de olixelle le 19/09/2007 19:03:01

bonjour,

j'ai fait cette source il y a assez loongtemps et ca m'a donné l'idée de développer une application Media center
Le résultat est domotix: www.mydomotix.com

Commentaire de shiryu76 le 16/05/2010 19:09:42

Bonjour, aurais tu une solution si un genre n'est pas standardisé dans la liste de winamp ? Il me retourne other =/

 Ajouter un commentaire


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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales