begin process at 2010 02 10 00:27:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Multimédia

 > LECTURE DES PLAYLITS M3U

LECTURE DES PLAYLITS M3U


 Information sur la source

Note :
Aucune note
Catégorie :Multimédia Source .NET ( DotNet ) Classé sous :fichier, m3u, playlist, ini, treeview Niveau :Initié Date de création :18/04/2006 Date de mise à jour :18/04/2006 16:33:05 Vu / téléchargé :16 126 / 329

Auteur : nounours21_6

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

 Description

Cliquez pour voir la capture en taille normale
Ce petit utilitaire recherche tous les fichiers M3U (playlists) dans un dossier (et ses sous-dossiers) et de les insèrent dans un TreeView triés par artiste et par albums. Un clic sur un album affiche la jaquette et un double clic permet d'ouvrir la playlist dans le lecteur par défaut.

C'est un programme simple mais qui me simplifie la vie... lol!!


Source

  • using System;
  • using System.Collections.Generic;
  • using System.ComponentModel;
  • using System.Data;
  • using System.Drawing;
  • using System.Text;
  • using System.Windows.Forms;
  • using System.IO;
  • namespace Musique
  • {
  • public partial class frmMusique : Form
  • {
  • public frmMusique()
  • {
  • InitializeComponent();
  • }
  • confini conf = new confini();
  • ImageList listeImage;
  • private void frmMusique_Load(object sender, EventArgs e)
  • {
  • configIni();
  • listeImage = new ImageList();
  • listeImage.Images.Add(Image.FromFile("../../icones/cd.gif"));
  • listeImage.Images.Add(Image.FromFile("../../icones/micro.jpg"));
  • this.tvMusique.ImageList = listeImage;
  • remplirTvMusique();
  • }
  • private void configIni()
  • {
  • if (conf.read("folder", "0") == "")
  • {
  • conf.write("folder", "0", "G:\\Musique");
  • }
  • if (conf.read("jaquette", "0") == "")
  • {
  • conf.write("jaquette", "0", "folder.jpg");
  • }
  • this.txtRep.Text = conf.read("folder", "0");
  • this.txtJaquette.Text = conf.read("jaquette", "0");
  • }
  • private void remplirTvMusique()
  • {
  • this.tvMusique.Nodes.Clear();
  • String[] listeFichiers = Directory.GetFiles(conf.read("folder", "0"), "*.m3u", SearchOption.AllDirectories);
  • if (listeFichiers.Length > 0)
  • {
  • TreeNode artiste = new TreeNode();
  • foreach (string ligne in listeFichiers)
  • {
  • String[] info = ligne.Split('\\');
  • if (this.tvMusique.Nodes.Count > 0)
  • {
  • if (artiste.Text == info[info.Length - 3])
  • {
  • artiste.Nodes.Add(ligne, info[info.Length - 2], 0);
  • }
  • else
  • {
  • artiste = new TreeNode(info[info.Length - 3], 1, 1);
  • artiste.Nodes.Add(ligne, info[info.Length - 2], 0);
  • this.tvMusique.Nodes.Add(artiste);
  • }
  • }
  • else
  • {
  • artiste = new TreeNode(info[info.Length - 3], 1, 1);
  • artiste.Nodes.Add(ligne, info[info.Length - 2], 0);
  • this.tvMusique.Nodes.Add(artiste);
  • }
  • }
  • this.lblInfo.Text = "Il y a " + this.tvMusique.Nodes.Count.ToString() + " artiste(s) et " + listeFichiers.Length.ToString() + " album(s).";
  • this.tvMusique.Sort();
  • this.tvMusique.Focus();
  • }
  • else
  • {
  • this.tvMusique.Nodes.Add("Aucun fichier");
  • }
  • }
  • private void tvMusique_AfterSelect(object sender, TreeViewEventArgs e)
  • {
  • if (this.tvMusique.SelectedNode.Parent != null)
  • {
  • this.pbAlbum.ImageLocation = folder(this.tvMusique.SelectedNode.Name) + conf.read("jaquette", "0");
  • this.tvMusique.SelectedImageIndex = 0;
  • }
  • else
  • {
  • this.pbAlbum.Image = null;
  • }
  • }
  • private string folder(string uneAdresse)
  • {
  • FileInfo fi = new FileInfo(uneAdresse);
  • return fi.Directory.ToString() + "\\";
  • }
  • private void tvMusique_DoubleClick(object sender, EventArgs e)
  • {
  • if (this.tvMusique.SelectedNode.Parent != null)
  • {
  • System.Diagnostics.Process.Start(this.tvMusique.SelectedNode.Name);
  • }
  • }
  • private void cmdParcourir_Click(object sender, EventArgs e)
  • {
  • if (this.fbdRep.ShowDialog() == DialogResult.OK)
  • {
  • this.txtRep.Text = this.fbdRep.SelectedPath;
  • }
  • }
  • private void cmdOk_Click(object sender, EventArgs e)
  • {
  • if (this.txtRep.Text.Trim() != "")
  • {
  • if (this.txtJaquette.Text.Trim() != "")
  • {
  • if (Directory.Exists(this.txtRep.Text.Trim()))
  • {
  • if (this.txtJaquette.Text.Trim().Split('.').Length >= 2)
  • {
  • conf.write("jaquette", "0", this.txtJaquette.Text.Trim());
  • conf.write("folder", "0", this.txtRep.Text.Trim());
  • remplirTvMusique();
  • }
  • else
  • {
  • afficheErreur("Le nom de la jaquette est erroné.");
  • }
  • }
  • else
  • {
  • afficheErreur("Ce répertoire n'existe pas.");
  • }
  • }
  • else
  • {
  • afficheErreur("Vous devez insérer le nom de la jaquette.");
  • }
  • }
  • else
  • {
  • afficheErreur("Vous devez choisir un répertoire.");
  • }
  • }
  • private void afficheErreur(string message)
  • {
  • MessageBox.Show(message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
  • }
  • private void agrandirToolStripMenuItem_Click(object sender, EventArgs e)
  • {
  • this.Show();
  • this.Activate();
  • this.WindowState = FormWindowState.Normal;
  • }
  • private void reduireToolStripMenuItem_Click(object sender, EventArgs e)
  • {
  • this.Hide();
  • }
  • private void fermerToolStripMenuItem_Click(object sender, EventArgs e)
  • {
  • this.Close();
  • }
  • }
  • }
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Musique
{
    public partial class frmMusique : Form
    {
        public frmMusique()
        {
            InitializeComponent();
        }

        confini conf = new confini();
        ImageList listeImage;

        private void frmMusique_Load(object sender, EventArgs e)
        {
            configIni();
            listeImage = new ImageList();
            listeImage.Images.Add(Image.FromFile("../../icones/cd.gif"));
            listeImage.Images.Add(Image.FromFile("../../icones/micro.jpg"));
            this.tvMusique.ImageList = listeImage;
            remplirTvMusique();
        }

        private void configIni()
        {
            if (conf.read("folder", "0") == "")
            {
                conf.write("folder", "0", "G:\\Musique");
            }
            if (conf.read("jaquette", "0") == "")
            {
                conf.write("jaquette", "0", "folder.jpg");
            }
            this.txtRep.Text = conf.read("folder", "0");
            this.txtJaquette.Text = conf.read("jaquette", "0");
        }

        private void remplirTvMusique()
        {
            this.tvMusique.Nodes.Clear();
            String[] listeFichiers = Directory.GetFiles(conf.read("folder", "0"), "*.m3u", SearchOption.AllDirectories);
            if (listeFichiers.Length > 0)
            {
                TreeNode artiste = new TreeNode();
                foreach (string ligne in listeFichiers)
                {
                    String[] info = ligne.Split('\\');
                    if (this.tvMusique.Nodes.Count > 0)
                    {
                        if (artiste.Text == info[info.Length - 3])
                        {
                            artiste.Nodes.Add(ligne, info[info.Length - 2], 0);
                        }
                        else
                        {
                            artiste = new TreeNode(info[info.Length - 3], 1, 1);
                            artiste.Nodes.Add(ligne, info[info.Length - 2], 0);
                            this.tvMusique.Nodes.Add(artiste);
                        }
                    }
                    else
                    {
                        artiste = new TreeNode(info[info.Length - 3], 1, 1);
                        artiste.Nodes.Add(ligne, info[info.Length - 2], 0);
                        this.tvMusique.Nodes.Add(artiste);
                    }
                }
                this.lblInfo.Text = "Il y a " + this.tvMusique.Nodes.Count.ToString() + " artiste(s) et " + listeFichiers.Length.ToString() + " album(s).";
                this.tvMusique.Sort();
                this.tvMusique.Focus();
            }
            else
            {
                this.tvMusique.Nodes.Add("Aucun fichier");
            }
        }

        private void tvMusique_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (this.tvMusique.SelectedNode.Parent != null)
            {
                this.pbAlbum.ImageLocation = folder(this.tvMusique.SelectedNode.Name) + conf.read("jaquette", "0");
                this.tvMusique.SelectedImageIndex = 0;
            }
            else
            {
                this.pbAlbum.Image = null;
            }
        }

        private string folder(string uneAdresse)
        {
            FileInfo fi = new FileInfo(uneAdresse);
            return fi.Directory.ToString() + "\\";
        }

        private void tvMusique_DoubleClick(object sender, EventArgs e)
        {
            if (this.tvMusique.SelectedNode.Parent != null)
            {
                System.Diagnostics.Process.Start(this.tvMusique.SelectedNode.Name);
            }
        }

        private void cmdParcourir_Click(object sender, EventArgs e)
        {
            if (this.fbdRep.ShowDialog() == DialogResult.OK)
            {
                this.txtRep.Text = this.fbdRep.SelectedPath;
            }
        }

        private void cmdOk_Click(object sender, EventArgs e)
        {
            if (this.txtRep.Text.Trim() != "")
            {
                if (this.txtJaquette.Text.Trim() != "")
                {
                    if (Directory.Exists(this.txtRep.Text.Trim()))
                    {
                        if (this.txtJaquette.Text.Trim().Split('.').Length >= 2)
                        {
                            conf.write("jaquette", "0", this.txtJaquette.Text.Trim());
                            conf.write("folder", "0", this.txtRep.Text.Trim());
                            remplirTvMusique();
                        }
                        else
                        {
                            afficheErreur("Le nom de la jaquette est erroné.");
                        }
                    }
                    else
                    {
                        afficheErreur("Ce répertoire n'existe pas.");
                    }
                }
                else
                {
                    afficheErreur("Vous devez insérer le nom de la jaquette.");
                }
            }
            else
            {
                afficheErreur("Vous devez choisir un répertoire.");
            }
        }

        private void afficheErreur(string message)
        {
            MessageBox.Show(message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void agrandirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Show();
            this.Activate();
            this.WindowState = FormWindowState.Normal;
        }

        private void reduireToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Hide();
        }

        private void fermerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

 Conclusion

Il faut que tous les albums comporte une jaquette, un fichier .m3u et qu'ils soient rangés comme cela :
- Musique

-- artiste 1
---- album 1
---- album 2

-- artiste 2
---- album 1

-- artiste 3
---- album 1
---- album 2
...

bien sur, le dossier initiale de recherche et le nom de la jaquette est paramètrable
l'enregistrement des options se fait dans un fichier .ini dont j'ai emprumter la classe sur ce site!!
http://www.csharpfr.com/code.aspx?ID=27564

voila, je suis ouvert à toutes les remarques et futures modifications...

Julien

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Musique
    •   Musique
      •   bin
        •   Debug
          • configuration.iniTélécharger ce fichier [Réservé aux membres club]Voir ce fichier50 octets
          • confini.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier9 565 octets
          • Musique.exeTélécharger ce fichier [Réservé aux membres club]69 632 octets
          • Musique.pdbTélécharger ce fichier [Réservé aux membres club]46 592 octets
          • Musique.vshost.exeTélécharger ce fichier [Réservé aux membres club]5 632 octets
        •   Release
          • Musique.exeTélécharger ce fichier [Réservé aux membres club]69 632 octets
          • Musique.pdbTélécharger ce fichier [Réservé aux membres club]44 544 octets
      •   icones
      •   obj
        •   Debug
          • Refactor
          •   TempPE
            • Properties.Resources.Designer.cs.dllTélécharger ce fichier [Réservé aux membres club]5 120 octets
          • Musique.csproj.GenerateResource.CacheTélécharger ce fichier [Réservé aux membres club]994 octets
          • Musique.exeTélécharger ce fichier [Réservé aux membres club]69 632 octets
          • Musique.frmMusique.resourcesTélécharger ce fichier [Réservé aux membres club]23 868 octets
          • Musique.pdbTélécharger ce fichier [Réservé aux membres club]46 592 octets
          • Musique.Properties.Resources.resourcesTélécharger ce fichier [Réservé aux membres club]1 864 octets
        •   Release
          •   TempPE
            • Properties.Resources.Designer.cs.dllTélécharger ce fichier [Réservé aux membres club]5 120 octets
          • Musique.csproj.GenerateResource.CacheTélécharger ce fichier [Réservé aux membres club]994 octets
          • Musique.exeTélécharger ce fichier [Réservé aux membres club]69 632 octets
          • Musique.frmMusique.resourcesTélécharger ce fichier [Réservé aux membres club]23 868 octets
          • Musique.pdbTélécharger ce fichier [Réservé aux membres club]44 544 octets
          • Musique.Properties.Resources.resourcesTélécharger ce fichier [Réservé aux membres club]1 864 octets
        • Musique.csproj.FileList.txtTélécharger ce fichier [Réservé aux membres club]Voir ce fichier562 octets
      •   Properties
      • cd.icoTélécharger ce fichier [Réservé aux membres club]Voir ce fichier11 502 octets
      • confini.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 018 octets
      • Form1.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier6 145 octets
      • Form1.Designer.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier11 279 octets
      • Form1.resxTélécharger ce fichier [Réservé aux membres club]Voir ce fichier41 553 octets
      • Musique.csprojTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 581 octets
      • Program.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier479 octets
    • Musique.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier910 octets
    • Musique.suoTélécharger ce fichier [Réservé aux membres club]19 968 octets

Télécharger le zip


 Historique

18 avril 2006 16:28:48 :
Modification des explications...
18 avril 2006 16:30:48 :
modifications explications (encore!! kelque fote d'aurtaugraf)
18 avril 2006 16:33:06 :
ajout de la capture d'écran

 Sources de la même categorie

Source avec Zip REDIMENSION D'IMAGE EN C# par VinceMonkeyz
Source avec Zip Source avec une capture Source .NET (Dotnet) SOUND EDITOR - UN PETIT LOGICIEL DE DSP AUDIO par MaxSoldier
Source avec Zip Source avec une capture Source .NET (Dotnet) "SURFACE LIKE" EN SILVERLIGHT par Malkuth
Source avec Zip Source avec une capture Source .NET (Dotnet) LAMINE PLAYER par ouadjaout
Source avec Zip Source avec une capture Source .NET (Dotnet) PROJET EDUCATIF : CD INTERACTIF DU PROJET PUISSANCE QUATRE. par mechtaly

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) RECHERCHE ET GESTION DE FICHIERS PERSONNALISÉES par JeremyLecouvert
Source .NET (Dotnet) GREP POUR WINDOWS par Warny
Source avec Zip Source .NET (Dotnet) CLASSE FICHIER INI COMPLET par filipegomes
Source avec Zip Source .NET (Dotnet) PARSEUR DE FICHIER INI par dragonkeeper
Source .NET (Dotnet) GESTIONNAIRE DE FICHIERS INI par bucherb

Commentaires et avis

Commentaire de sebmafate le 19/04/2006 08:06:24 administrateur CS

beurk... les ini... vive le XML :)

Commentaire de nounours21_6 le 19/04/2006 08:27:55

tu crois??

Commentaire de sebmafate le 19/04/2006 08:41:04 administrateur CS

nan... j'en suis sûr :)

le ini... c'était bien en VB6... mais en .net, la manipulation des fichiers XML est tellement simple que ca ne vaut pas la peine de s'embêter à utiliser une classe de lecture/écriture pour ini.

je serais curieux de comparerles temps d'accés à une section/clé entre les 2 méthodes... pareil pour l'écriture.

bref.
XML + XPath, y a que ca de vrai pour les fichiers de config.

Commentaire de nounours21_6 le 19/04/2006 08:43:35

ben je ferai la midification...
lol

Commentaire de leproc le 21/04/2006 16:57:40

C'est plus simple de mettre les paramètre dans la base de registre

Commentaire de coq le 21/04/2006 23:26:28 administrateur CS

Je ne suis pas certain que le registre soit la meilleure place pour stocker ce genre de données.

Je pense comme maf, xml is good :p

Et pas dans le répertoire de l'application, mais dans les répertoires de l'utilisateur !!!Environment.GetFolderPath est votre amie ;-)

Commentaire de TheSaib le 21/04/2006 23:41:13 administrateur CS

Sauf que XML est aussi simple en VB6 qu'il est en .NET (App.config exclus).

Commentaire de nounours21_6 le 23/04/2006 17:21:11

merci pour vos informations...
je tiendrais compte pour les futures modifications...!!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Ecriture / lecture d'un fichier INI [ par Tsu91 ] Bonjour,Je débute en c# et ma question est simple:Comment écrire et lire dans un fichier Ini ?merci :)Séb [C#] INI vs XML, DataSet vs INI [ par scoubidou944 ] Actuellement, mon programme utilise un fichier Ini pour sa configuration.Voulant migrer ce fichier vers un format XML, plusieurs choix sont possibles. Modification XML [ par fdouieb ] BonjourSuite à la source "http://www.csharpfr.com/code.aspx?ID=26507"qui permet de generer un fichier ".Ini". J'ai decidé de faire comme la plupart l' Treeview : erreur de lecture du fichier XML en authentification intégrée [ par Drix78 ] Bonjour,après avoir tenté d'exécuter un sample tout bête du webcontrol treeview, avec un fichier XML, je me suis rendu compte qu'il m'était impossible Fichier ini [ par joe2005 ] Bonjour à vous tous, J'aurai besoin de votre aide. Il faut que je crée un fichier de configuration *.ini pour mon hébergeur. Mais, je n acceder a un fichier .ini [ par jesaipa_1 ] Slt a tous, je voudrais savoir comment on accède à un fichier .ini pour recuperer des infos.Merci fichier m3u [ par nounours21_6 ] Bonjourvoila, je fais un programme qui m'affiche dans un treeview tous les fichiers .m3u d'un dossieret je voudrais savoir comment on fais p Problème de mémoire [ par nicompx ] Bonjour, J'ai un problème de mémoire avec une application.En gros : le programme insère EN BOUCLE dans une base de données Oracle des lignes.Je rega chargement d'une treeview a partir d'un fichier XML [ par M_karim8 ] bonjour je cherche a charger une tree view a partir d'un fichier XML. quelqu'un saurait il comment faire ???merci d'avance... Parametre regionaux [ par chouchoune80 ] Bonjour,Je pense que ma question sera valable pour toutes les futures applications que je vais développer. Je souhaiterai savoir comment  créer un fic


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,827 sec (3)

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