bonjour,
voila je suis entrain de coder un programme pour ranger mais musique et supprimer les doublons mais j'ai un problème voila le code :


Type.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#ifndef TYPE_H
#define TYPE_H
 
#include <QString>
 
const int ALL = 0; //tout les types
const int MP3 = 1; //fichier MP3
 
const QString sMP3 = "audio/mpeg";
 
#endif //fin TYPE_H
identifiertype.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifndef IDENTIFIERTYPE_H
#define IDENTIFIERTYPE_H
 
#include <QString>
#include <QStringList>
#include <magic.h>
 
class IdentifierType{
public:
 
    /*
	Constructeur
	QString Repertoire ou les types doivent étre identifier
    */
    IdentifierType(const QString& );
 
    ~IdentifierType();
 
    /*
	int type de fichier a trouvé (voir Type.h)
	QStringList list des fichier trouvé (chemin absolut)
    */
    QStringList find(int);
 
    void setDirectory(QString);
    QString Directory();
 
private:
    QStringList find(QString);
 
    QString directory;
    QStringList file;
    magic_t cookie;
};
 
#endif
identifiertype.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <QDir>
 
#include <magic.h>
 
#include "identifiertype.h"
#include "Type.h"
 
 
 
IdentifierType::IdentifierType(const QString &dir) :
directory(dir)
{
    cookie = magic_open(MAGIC_MIME_TYPE);
    magic_load(cookie, "/usr/share/file/magic");
 
    QDir dirInfo(directory);
    file = dirInfo.entryList();//liste des fichier dans directory
 
   QString::const_iterator sIt = directory.constEnd();
 
    if(*(sIt) != '/')
        directory += "/";
}
 
 
IdentifierType::~IdentifierType()
{
    magic_close(cookie);
}
 
QStringList IdentifierType::find(int id)
{
QStringList list;
    switch(id)
    {
        case MP3:
        list = find(sMP3);
        break;
 
        case ALL:
        list = find(QString());
        break;
    }
return list;
}
 
QStringList IdentifierType::find(QString filter)
{
   QString searchFile;
   QString mime_type;
   QStringList list;
   int i = 0;
 
   for(QStringList::const_iterator cIt = file.constBegin(); cIt == file.constEnd(); cIt++)
   {
       qDebug(cIt->toStdString().c_str());
       if(!filter.isEmpty())
       {
           searchFile = directory + *cIt;
           mime_type = magic_file( cookie, searchFile.toStdString().c_str() );
 
           if(filter == mime_type)
               list[i] = searchFile;
 
       }
 
       else
           list[i] = directory + *cIt;
 
       i++;
   }
return list;
}
 
void IdentifierType::setDirectory(QString dir)
{
    directory = dir;
}
 
QString IdentifierType::Directory()
{
    return directory;
}
main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
#include <QCoreApplication>
#include <QDataStream>
 
#include "identifiertype.h"
#include "Type.h"
int main(int argc, char *argv[])
{
      QCoreApplication app(argc, argv);
      qDebug("Hello from OrganizeMuzic");
      IdentifierType identify("/opt/Music");
 
      QString msg = identify.Directory();
      qDebug(msg.toStdString().c_str());
 
      QStringList listMP3 = identify.find(MP3);
      QDataStream out;
      out << listMP3;
      char *clistMP3;
      out >> clistMP3;
      qDebug(clistMP3);
      return 0;
}
Sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
prsieux@debian:/opt/src/OrganizeMusic/bin$ ./organizemusic
Hello from OrganizeMuzic
/opt/Music/
/opt/Music/
et le problème c'est que identify.find(MP3) devrait renvoyé la liste des *.mp3 dans le fichier Music et pas le deuxième /opt/Music
J'ai regardé ac un debbeugeur et ce que je peut dire c'est que après :
Code : C++

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
//ligne 35 de identifiertype.cpp
    QDir dirInfo(directory);
    file = dirInfo.entryList();//liste des fichier dans directory
file est toujours vide.

voici le ls du dit fichier

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
prsieux@debian:~$ ls /opt/Music/ -l
total 3292
drwxr-xr-x  2 prsieux prsieux    4096 août  8 13:05 0-Led Zeppelin - Mothership (disc 1)
-rw-r--r--  1 prsieux prsieux 3306144 avril  3 19:26 Children Of Bodom - Bed of Razors.mp3
drwxr-xr-x  2 prsieux prsieux    4096 janv.  1  2000 Dio -distraught overlord- - Heaven's Call
drwxr-xr-x  2 prsieux prsieux    4096 août 14 20:32 kalmah
drwxr-xr-x  2 prsieux prsieux    4096 juil. 26 14:23 Led Zeppelin - Mothership (disc 2)1
drwxr-xr-x  8 prsieux prsieux    4096 juil. 12 00:28 m4a
drwxr-xr-x 14 prsieux prsieux    4096 août 26  2007 Maximum The Hormone
drwxr-xr-x  2 prsieux prsieux    4096 sept.  3 19:00 Mors Principium Est - The Unborn - 2005
drwxr-xr-x 22 prsieux prsieux    4096 sept.  2 17:45 mp3
drwxr-xr-x  2 prsieux prsieux    4096 août 28 22:07 Norma Jean - The Anti-Mother (2008)
drwxr-xr-x  2 prsieux prsieux    4096 août 25 22:37 Norther
drwxr-xr-x 10 prsieux prsieux    4096 juil. 12 00:27 ogg
drwxr-xr-x  8 prsieux prsieux    4096 sept.  2 20:00 underOATH
drwxr-xr-x  2 prsieux prsieux    4096 juil. 12 00:19 wav
drwxr-xr-x 10 prsieux prsieux    4096 juil. 12 00:33 wma
Merci aurevoir