Lister l'ensemble des fichiers mp3 id3v1 du disque

Soyez le premier à donner votre avis sur cette source.

Vue 6 815 fois - Téléchargée 363 fois

Description

Ce prog liste l'ensemble des mp3 du c:\ et stoque les infos (id3v1) dans disque.txt
Il permet egalement d'editer et de modifier directement les infos dans les mp3.
Je pense que ce prog est celui qu'il vous faut, il est trop cool.

Source / Exemple :


#include<iostream.h>
#include<windows.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<direct.h>
#include<conio.h>

int i,nb=0,nbtotal,pas=1,plusieurs=0,dernier,j;
WIN32_FIND_DATA wData;
char *nom,nom_complet[MAX_PATH],*trouvepoint,touche;
FILE *f,*fmp3;

typedef struct
{
	char nom_mp3[MAX_PATH];
	char ID[3];
	char Titre_musique[30];
	char Artiste[30];
	char Titre_album[30];
	char Annee[4];
	char Commentaire[30];
	char Genre;	
}MP3;

MP3 liste[5000];
MP3 variable;

void lister(LPCTSTR file,char [MAX_PATH]);
void manipuler_mp3();
void affichage_donnees();

void main()
{
	if((f=fopen("disque.txt","w+"))==NULL)
		printf("Creation impossible.\n");
	else
	{
		lister("C:\\*.*","C:\\");
		fprintf(f,"Il y a %d fichiers mp3 sur %s.",nb,"C:\\");
		fclose(f);
		nbtotal=nb;
		nb=0;
		manipuler_mp3();
	}
}

void lister(LPCTSTR fichier,char chemin[MAX_PATH])
{
	char chemin1[MAX_PATH],chemin2[MAX_PATH],chemin3[MAX_PATH],chemin4[MAX_PATH];

	for(i=0;i<MAX_PATH;i++)
	{
		chemin1[i]='\0';
		chemin2[i]='\0';
	}

	for(i=0;i<(int)strlen(chemin);i++)
		chemin1[i]=chemin[i];

	for(i=0;i<(int)strlen(chemin1);i++)
		chemin2[i]=chemin1[i];
	strcat(chemin2,"*.*");

	HANDLE listing;
	listing=FindFirstFile(fichier,&wData);
    
	while((FindNextFile(listing,&wData)))
	{
		nom=wData.cFileName;

		for(i=0;i<MAX_PATH;i++)
		{
			nom_complet[i]='\0';
		}
		for(i=0;i<(int)strlen(chemin1);i++)
			nom_complet[i]=chemin[i];
		for(i=strlen(chemin1);i<(int)strlen(chemin1)+(int)strlen(nom);i++)
			nom_complet[i]=nom[i-strlen(chemin1)];

		if(_chdir(nom_complet)==-1) trouvepoint="1";
		if((trouvepoint==NULL)&&((nom[0]!='.')||(nom[1]!='.')))
		{

			for(i=0;i<MAX_PATH;i++)
			{
				chemin3[i]='\0';
				chemin4[i]='\0';
			}

			strcpy(chemin3,nom_complet);
			strcpy(chemin4,nom_complet);

			strcat(chemin4,"\\*.*");
			strcat(chemin3,"\\");

			lister(chemin4,chemin3);
		}

		if(((nom[strlen(nom)-3]=='m')||(nom[strlen(nom)-3]=='M'))
			&&((nom[strlen(nom)-2]=='p')||(nom[strlen(nom)-2]=='P'))
			&&(nom[strlen(nom)-1]=='3'))
		{		
			for(i=0;i<MAX_PATH;i++)
			{
				nom_complet[i]='\0';
			}
			for(i=0;i<(int)strlen(chemin1);i++)
				nom_complet[i]=chemin[i];
			for(i=strlen(chemin1);i<(int)strlen(chemin1)+(int)strlen(nom);i++)
				nom_complet[i]=nom[i-strlen(chemin1)];

			if((fmp3=fopen(nom_complet,"rb"))!=NULL)			
			{
				fseek(fmp3,-128,SEEK_END);

				for(i=0;i<(int)strlen(nom_complet);i++)
					liste[nb].nom_mp3[i]=nom_complet[i];

				fscanf(fmp3,"%3c",liste[nb].ID);
				fscanf(fmp3,"%30c",liste[nb].Titre_musique);
				fscanf(fmp3,"%30c",liste[nb].Artiste);
				fscanf(fmp3,"%30c",liste[nb].Titre_album);
				fscanf(fmp3,"%4c",liste[nb].Annee);
				fscanf(fmp3,"%30c",liste[nb].Commentaire);
				fscanf(fmp3,"%1c",&liste[nb].Genre);
				fclose(fmp3);

				fprintf(f,"%s\n",liste[nb].nom_mp3);

				fprintf(f,"ID : ");
				for(i=0;i<3;i++)
					fprintf(f,"%c",liste[nb].ID[i]);

				fprintf(f,"\nTitre de la musique : ");
				for(i=0;i<30;i++)
					fprintf(f,"%c",liste[nb].Titre_musique[i]);

				fprintf(f,"\nNom de l'artiste : ");
				for(i=0;i<30;i++)
					fprintf(f,"%c",liste[nb].Artiste[i]);

				fprintf(f,"\nTitre de l'album : ");
				for(i=0;i<30;i++)
					fprintf(f,"%c",liste[nb].Titre_album[i]);

				fprintf(f,"\nAnnee : ");
				for(i=0;i<4;i++)
					fprintf(f,"%c",liste[nb].Annee[i]);

				fprintf(f,"\nCommentaire : ");
				for(i=0;i<30;i++)
					fprintf(f,"%c",liste[nb].Commentaire[i]);

				fprintf(f,"\nGenre : ");

				fprintf(f,"%c",liste[nb].Genre);
				fprintf(f,"\n\n");
				
				nb+=1;
			}
				
		}

		trouvepoint=NULL;
	 }
}  

void affichage_donnees()
{

	printf("**************************************************************\n");
	printf(" Donnees de la musique :                            \n");
	printf(" Numero : %4d/%4d                                 \n",nb+1,nbtotal);
	printf("                                                    \n");
	printf("%s",liste[nb].nom_mp3);

	printf("\n        ID      : ");
	for(i=0;i<3;i++)
		printf("%c",liste[nb].ID[i]);
			
	printf("\n  Titre_musique : ");
	for(i=0;i<30;i++)
		printf("%c",liste[nb].Titre_musique[i]);

	printf("\n     Artiste    : ");
	for(i=0;i<30;i++)
		printf("%c",liste[nb].Artiste[i]);

	printf("\n   Titre_album  : ");
	for(i=0;i<30;i++)
		printf("%c",liste[nb].Titre_album[i]);

	printf("\n      Annee     : ");
	for(i=0;i<4;i++)
		printf("%c",liste[nb].Annee[i]);

	printf("\n   Commentaire  : ");
	for(i=0;i<30;i++)
		printf("%c",liste[nb].Commentaire[i]);

	printf("\n      Genre     : ");
	printf("%d",liste[nb].Genre);

	printf("\n**************************************************************\n");
}

void manipuler_mp3()
{
	do
	{
		system("cls");
		printf("******************************************\n");
		printf(" 0 : Modifier l'ID.                       \n");
		printf(" 1 : Modifier le titre de la musique.     \n");
		printf(" 2 : Modifier le nom de l'artiste.        \n");
		printf(" 3 : Modifier le titre de l'album.        \n");
		printf(" 4 : Modifier l'annee de l'album.         \n");
		printf(" 5 : Enregistrer un commentaire.          \n");
		printf(" 6 : Genre.                               \n");
		printf(" 7 : Modifier le pas.                     \n");
		if(plusieurs==1) printf(" 8 :Appliquer a plusieurs.                \n");
			else(printf(" 8 :Appliquer a un seul.                  \n"));
		printf(" +/- : Incrementer/decrementer le numero. \n");
		printf(" Esc : Quitter.                           \n");

		affichage_donnees();

		do
		{
			touche=getch();
		}while(touche==NULL);
		
		if(touche==43) nb+=pas;
		if(touche==45) nb-=pas;
		if(touche==56) plusieurs=1-plusieurs;
		if(touche==55)
		{
			system("cls");
			printf("Ancien pas : %d\n",pas);
			printf("Veuillez entrez le nouveau pas.\n");
			scanf("%d",&pas);
			if(pas<1) pas=1;
			if(pas>nbtotal-1) pas=nbtotal-1;
		}
		if(touche==48)
		{
			touche=NULL;
			for(i=0;i<3;i++)
				variable.ID[i]='\0';
			if(plusieurs==1)
			{
				do
				{
				system("cls");
				printf("Du %d au : ",nb+1);
				scanf("%d",&dernier);
				if(dernier>nbtotal) dernier=nbtotal;
				dernier-=1;
				}while(dernier<nb);
			}
			else(dernier=nb);
			system("cls");
			affichage_donnees();
			printf("\n\nEntrer le nouveau ID.\n");

			i=0;
			do
			{
				do
				{
					touche=getche();
				}while(touche==NULL);
				if((touche==13)||(touche==27)) break;
				variable.ID[i]=touche;
				i++;
			}while(touche!=13);
			for(j=nb;j<dernier+1;j++)
			{
				for(i=0;i<3;i++)
					liste[j].ID[i]=variable.ID[i];
				fmp3=fopen(liste[j].nom_mp3,"r+");
				fseek(fmp3,-128,SEEK_END);
				for(i=0;i<3;i++)
					fprintf(fmp3,"%c",liste[j].ID[i]);
				fclose(fmp3);
			}
		}
		if(touche==49)
		{
			touche=NULL;
			affichage_donnees();
			for(i=0;i<30;i++)
				variable.Titre_musique[i]='\0';
			
			if(plusieurs==1)
			{
				do
				{
				system("cls");
				printf("Du %d au : ",nb+1);
				scanf("%d",&dernier);
				if(dernier>nbtotal) dernier=nbtotal;
				dernier-=1;
				}while(dernier<nb);
			}
			else(dernier=nb);
			system("cls");
			affichage_donnees();
			printf("\n\nEntrer le nouveau titre de la musique.\n");
			i=0;
			do
			{
				do
				{
					touche=getche();
				}while(touche==NULL);
				if((touche==13)||(touche==27)) break;
				variable.Titre_musique[i]=touche;
				i++;
			}while(touche!=13);
			for(j=nb;j<dernier+1;j++)
			{
				for(i=0;i<30;i++)
					liste[j].Titre_musique[i]=variable.Titre_musique[i];
				fmp3=fopen(liste[j].nom_mp3,"r+");
				fseek(fmp3,-125,SEEK_END);
				for(i=0;i<30;i++)
					fprintf(fmp3,"%c",liste[j].Titre_musique[i]);
				fclose(fmp3);
			}

		}
		if(touche==50)
		{
			touche=NULL;
			affichage_donnees();
			for(i=0;i<30;i++)
				variable.Artiste[i]='\0';

			if(plusieurs==1)
			{
				do
				{
				system("cls");
				printf("Du %d au : ",nb+1);
				scanf("%d",&dernier);
				if(dernier>nbtotal) dernier=nbtotal;
				dernier-=1;
				}while(dernier<nb);
			}
			else(dernier=nb);
			system("cls");
			affichage_donnees();
			printf("\n\nEntrer le nouveau nom de l'artiste.\n");
			i=0;
			do
			{
				do
				{
					touche=getche();
				}while(touche==NULL);
				if((touche==13)||(touche==27)) break;
				variable.Artiste[i]=touche;
				i++;
			}while(touche!=13);
			for(j=nb;j<dernier+1;j++)
			{
				for(i=0;i<30;i++)
					liste[j].Artiste[i]=variable.Artiste[i];
				fmp3=fopen(liste[j].nom_mp3,"r+");
				fseek(fmp3,-95,SEEK_END);
				for(i=0;i<30;i++)
					fprintf(fmp3,"%c",liste[j].Artiste[i]);
				fclose(fmp3);
			}
		}
		if(touche==51)
		{
			touche=NULL;
			affichage_donnees();
			for(i=0;i<30;i++)
				variable.Titre_album[i]='\0';

			if(plusieurs==1)
			{
				do
				{
				system("cls");
				printf("Du %d au  :",nb+1);
				scanf("%d",&dernier);
				if(dernier>nbtotal) dernier=nbtotal;
				dernier-=1;
				}while(dernier<nb);
			}
			else(dernier=nb);
			system("cls");
			affichage_donnees();
			printf("\n\nEntrer le nouveau titre de l'album.\n");
			i=0;
			do
			{
				do
				{
					touche=getche();
				}while(touche==NULL);
				if((touche==13)||(touche==27)) break;
				variable.Titre_album[i]=touche;
				i++;
			}while(touche!=13);
			for(j=nb;j<dernier+1;j++)
			{
				for(i=0;i<30;i++)
					liste[j].Titre_album[i]=variable.Titre_album[i];
				fmp3=fopen(liste[j].nom_mp3,"r+");
				fseek(fmp3,-65,SEEK_END);
				for(i=0;i<30;i++)
					fprintf(fmp3,"%c",liste[j].Titre_album[i]);
				fclose(fmp3);
			}
		}
		if(touche==52)
		{
			touche=NULL;
			affichage_donnees();
			for(i=0;i<4;i++)
				variable.Annee[i]='\0';

			if(plusieurs==1)
			{
				do
				{
				system("cls");
				printf("Du %d au : ",nb+1);
				scanf("%d",&dernier);
				if(dernier>nbtotal) dernier=nbtotal;
				dernier-=1;
				}while(dernier<nb);
			}
			else(dernier=nb);
			system("cls");
			affichage_donnees();
			printf("\n\nEntrer la nouvelle annee.\n");
			i=0;
			do
			{
				do
				{
					touche=getche();
				}while(touche==NULL);
				if((touche==13)||(touche==27)) break;
				variable.Annee[i]=touche;
				i++;
			}while(touche!=13);
			for(j=nb;j<dernier+1;j++)
			{
				for(i=0;i<4;i++)
					liste[j].Annee[i]=variable.Annee[i];
				fmp3=fopen(liste[j].nom_mp3,"r+");
				fseek(fmp3,-35,SEEK_END);
				for(i=0;i<4;i++)
					fprintf(fmp3,"%c",liste[j].Annee[i]);
				fclose(fmp3);
			}
		}
		if(touche==53)
		{
			touche=NULL;
			affichage_donnees();
			for(i=0;i<30;i++)
				variable.Commentaire[i]='\0';
			i=0;			if(plusieurs==1)
			{
				do
				{
				system("cls");
				printf("Du %d au : ",nb+1);
				scanf("%d",&dernier);
				if(dernier>nbtotal) dernier=nbtotal;
				dernier-=1;
				}while(dernier<nb);
			}
			else(dernier=nb);
			system("cls");
			affichage_donnees();
			printf("\n\nEntrer le nouveau commentaire.\n");
			i=0;
			do
			{
				do
				{
					touche=getche();
				}while(touche==NULL);
				if((touche==13)||(touche==27)) break;
				variable.Commentaire[i]=touche;
				i++;
			}while(touche!=13);
			for(j=nb;j<dernier+1;j++)
			{
				for(i=0;i<30;i++)
					liste[j].Commentaire[i]=variable.Commentaire[i];
				fmp3=fopen(liste[j].nom_mp3,"r+");
				fseek(fmp3,-31,SEEK_END);
				for(i=0;i<30;i++)
					fprintf(fmp3,"%c",liste[j].Commentaire[i]);
				fclose(fmp3);
			}
		}
		if(touche==54)
		{
			touche=NULL;
			affichage_donnees();
			variable.Genre='\0';

			if(plusieurs==1)
			{
				do
				{
				system("cls");
				printf("Du %d au : ",nb+1);
				scanf("%d",&dernier);
				if(dernier>nbtotal) dernier=nbtotal;
				dernier-=1;
				}while(dernier<nb);
			}
			else(dernier=nb);
			system("cls");
			affichage_donnees();
			printf("\n\nEntrer le genre de la musique (0 a 114).\n");
			scanf("%d",&variable.Genre);
			for(j=nb;j<dernier+1;j++)
			{
				liste[j].Genre=variable.Genre;
				fmp3=fopen(liste[j].nom_mp3,"r+");
				fseek(fmp3,-1,SEEK_END);
				fprintf(fmp3,"%c",liste[j].Genre);
				fclose(fmp3);
			}
		}

		if(nb<0) nb=nbtotal-1;
		if(nb>nbtotal-1) nb=0;

 
	}while(touche!=27);

}

Conclusion :


Les infos id3v2 ne sont pas prises encompte.
Le prog bug lorsque vous voulez modifiez une info sur un mp3 en lecture seule.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
TheLudo2013
Messages postés
77
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
18 octobre 2007

14 nov. 2002 à 01:49
La fonction de recherche est très intéressante. Quant a la gestion des mp3, c'est sympa. Par contre la présentation est baclé. En effet le prog pourrait trouner dans une fenêtre !!!!
sebos2013
Messages postés
64
Date d'inscription
vendredi 23 août 2002
Statut
Membre
Dernière intervention
7 décembre 2006

26 sept. 2002 à 16:57
Il est vraiement trop cool et en plus en voila un qui bug pas.

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.