Accueil > > > LECTURE DES PLAYLITS M3U
LECTURE DES PLAYLITS M3U
Information sur la source
Description
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
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
Commentaires et avis
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
|
Derniers Blogs
TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|