Extraire info d'un nom de fichier et les passer en propriétés
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 52

Extraire info d'un nom de fichier et les passer en propriétés



  1. #1
    r4ph0u

    Extraire info d'un nom de fichier et les passer en propriétés


    ------

    Bonjour à tous,

    Je réfléchis actuellement à une solution pour trier un ensemble de photos:

    Ce sont un ensemble de photos (environ 15000), réparties dans des dossiers par année, puis des sous-dossiers correspondant à un "numéro de pellicule" (une grande partie de ces photos sont des argentiques numérisées).

    Le titre de chaque photo est ensuite composé du nom de l'événement, du lieu, du nom des personnes qui apparaissent sur la photo et d'un numéro d'identification unique (de 0 à 15000)

    La difficulté principale serait que le programme sache distinguer, dans le titre, ce qui correspond au nom d'un événement, d'un lieu, d'une personne. pour cela je pense que le programme devrait dans un premier temps séparer tous les mots qui apparaissent, supprimer les doublons, puis demander à l'utilisateur de préciser un "type" pour chaque mot

    Aussi, la syntaxe que j'ai décrite peu varier légèrement : parfois le sous dossier contient, en plus du n° de pellicule le nom de l'événement, le lieu n'est pas toujours précise dans le nom de la photo

    Le but serait au final de n'avoir des photos identifiées que par numéro, et toutes les autres informations en propriétés

    Je pense faire ça en C (seul langage que je connais un peu), mais je ne connais pas encore les commandes pour traiter des dossiers. (sous Windows)

    Si vous avez des idées sur le moyen de résoudre ça, je suis preneur

    Merci d'avance

    Raphaël

    -----

  2. #2
    CM63

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Bonjour,

    Sujet très intéressant, si j'avais à le faire, je le ferais plutôt en Python. A brûle-pourpoint je n'ai pour l'instant pas d'autres idées, que celle, excellente, que tu as de faire un "premier passage", où on demande à l'utilisateur (fût-ce toi) de donner des "types" aux mots qui constituent les noms des fichiers: événement, date , personne, etc.
    Dernière modification par CM63 ; 13/12/2016 à 14h39.

  3. #3
    CM63

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Il faudra évidemment envisager de stocker ces informations de "type" quelque part, et décider comment on fait pour prendre le train en marche: les prochaines photos, comment seront-elles classées? Je veux dire, en termes de cas d'utilisation du logiciel.

  4. #4
    Ludwig1

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Salut,
    Ne souhaitant pas provoquer une levée de bouclier,
    tu peux me faire un MP, je te donnerai les outils tous fait pour résoudre au moins 90 % de ton PB

    Cordialement
    Ludwig

  5. A voir en vidéo sur Futura
  6. #5
    Kissagogo27

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    peut être éditer l'exif des photos pour pouvoir les trier par un utilitaire ensuite ? ( ça va être long )

  7. #6
    Flyingbike
    Modérateur*

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Citation Envoyé par Ludwig1 Voir le message
    Salut,
    Ne souhaitant pas provoquer une levée de bouclier,
    tu peux me faire un MP, je te donnerai les outils tous fait pour résoudre au moins 90 % de ton PB

    Cordialement
    Ludwig
    C'est gentil de votre part de proposer votre aide à r4ph0u, mais le faire par MP est plutôt contraire à l'esprit du forum !
    La vie trouve toujours un chemin

  8. #7
    Ludwig1

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Salut,
    Citation Envoyé par Flyingbike Voir le message
    C'est gentil de votre part de proposer votre aide à r4ph0u, mais le faire par MP est plutôt contraire à l'esprit du forum !
    Ben c'est plutôt le Forum qui risquerai de se révolter si je poste de façon publique. Il se trouve que le sujet est intéressant
    et qu'il correspond bien aux développements que je suis en train de faire. (Programmation par composants sous Windows, de WIN 95 à Windows 10)
    Je veux bien montrer ces techniques de développement, mais j'ai pas envie de me faire traiter de tous les noms.

    Cordialement

    Ludwig

  9. #8
    Flyingbike
    Modérateur*

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    si c'est légal et que ça fonctionne, pourquoi vous faire traiter de tous les noms ?
    La vie trouve toujours un chemin

  10. #9
    JPL
    Responsable des forums

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    C'est simplement parce que Ludwig, après avoir voulu endosser le rôle de professeur voulant nous enseigner des choses que nous savons tout, ou qui sont dépassées, endosse maintenant le rôle de Caliméro.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  11. #10
    Ikhar84
    Animateur Informatique

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Citation Envoyé par r4ph0u Voir le message
    Ce sont un ensemble de photos (environ 15000), réparties dans des dossiers par année, puis des sous-dossiers correspondant à un "numéro de pellicule" (une grande partie de ces photos sont des argentiques numérisées).

    Le titre de chaque photo est ensuite composé du nom de l'événement, du lieu, du nom des personnes qui apparai
    La difficulté principale serait que le programme sache distinguer, dans le titre, ce qui correspond au nom d'un événement, d'un lieu, d'une personne. pour cela je pense que le programme devrait dans un premier temps séparer tous les mots qui apparaissent, supprimer les doublons
    Je pense que la première question à se poser serait:
    Quel caractère(s) sépare ces éléments dans le nom du fichier?

    Si ce caractère est un [espace], y a-t'il des espaces dans ces éléments (un élement risque t'il d'être identifié comme plusieurs élements ?

    Quant à poser une question à l'utilisateur...
    15 000 x nombre d'élements de chaque titre de photos... questions potentielles...
    Personnellement, je quitte bien avant la fin...
    Il faudrait trouver une méthode pour automatiser la procédure au maximum.
    Par exemple, si les noms de personne sont limitées (ce qui devrait être le cas), préparer un jeu de données des noms, afin de comparer les élements a ce jeu de données, et deteminer ainsi le type "nom" si il y a une correspondance...
    Même chose pour les lieu...
    Quant aux dates, elles devraient avoir des formes particulièrement reconnaissable... on pourra utiliser des expressions régulières, au pire...

    Autant limiter le recours aux questions à l'utilisateur au minimum.
    On peut, par exemple, mémoriser le type proposé par l'utilisateur pour l'élement posant problème, afin de ne plus avoir à lui poser de question sur cet élement par la suite...

    Il faut veiller à bien discriminer les jeux de données et les expressions regulière pour éviter les erreurs de traitement par contre.

    Ce ne sont quelques rapides pistes de réflexion bien sûr, mais la problématique est vraiment interressante.

    Et enfin, parcourir les fichiers d'un dossier est trivial, ce qui l'est moins, c'est de le faire dans des sous-dossiers...
    Il faut garder une "trace" des dossiers et sous-dossiers explorés...

  12. #11
    Chanur

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Citation Envoyé par Ikhar84 Voir le message
    Et enfin, parcourir les fichiers d'un dossier est trivial, ce qui l'est moins, c'est de le faire dans des sous-dossiers...
    Il faut garder une "trace" des dossiers et sous-dossiers explorés...
    Mais si, c'est trivial aussi : il suffit de faire une fonction qui parcourt un répertoire et qu s'appelle récursivement à chaque fois qu'une entrée est un sous-répertoire (en évitant .. et . ).
    Voir, par exemple ici.

    Par ailleurs, il n'y a pas que le nom qui contienne des infos intéressantes. La date de création du fichier et le répertoire où il est peuvent être intéressants aussi. On trouve aussi ça dans la structure dirent.
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  13. #12
    Ludwig1

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Salut,
    Citation Envoyé par JPL Voir le message
    C'est simplement parce que Ludwig, après avoir voulu endosser le rôle de professeur voulant nous enseigner des choses que nous savons tout, ou qui sont dépassées, endosse maintenant le rôle de Caliméro.
    N'importe quoi, j'utilise un système de développement professionnel.


    Cordialement

    Ludwig

  14. #13
    JPL
    Responsable des forums

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Alors pourquoi t'agresserait-on si tu en parlais ici ?
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  15. #14
    lou_ibmix_xi

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    A mon avis tu peux pas mal dégrossir sous un shell type bash (natif sous linux ou mac, installable sous windows), surtout si tu as structuré les dossiers en fonctions de dates ou autre...
    Avec un peu de chance, tu peux grapiller des infos de dates dans les données exif avec un "exiftool" au autre (et les incontournables grep/awk)

  16. #15
    r4ph0u

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Merci à tous pour ces pistes.
    Ikhar84: je compte effectivement ne demander à l'utilisateur de définir le type que si le mot-clé en question n'a pas été déjà rencontré. Dans le but de créer un dictionnaire des lieux, noms, etc.. Sur lequel le programme se baserait ensuite.

    D'un point de vue syntaxique, le caractère de séparation n'est pas toujours le même, c'est pourquoi je cherche toujours comment différencier les mots clés en 2 mots (ex: mariage Michel) de deux mots clés différents.

    Pour être tout à fait honnête, je n'ai pas ces photos sous la main (c'est pour mon oncle). J'ajouterais les précisions quand j'en aurais d'avantage

  17. #16
    r4ph0u

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Citation Envoyé par lou_ibmix_xi Voir le message
    A mon avis tu peux pas mal dégrossir sous un shell type bash (natif sous linux ou mac, installable sous windows), surtout si tu as structuré les dossiers en fonctions de dates ou autre...
    Avec un peu de chance, tu peux grapiller des infos de dates dans les données exif avec un "exiftool" au autre (et les incontournables grep/awk)
    Par compte je suis plutot debutant en prog, je ne sais pas ce qu'est un shell type bash...

    Pour les données exif, ça peut aider, oui mais seulement pour la moitié qui est en numérique (puis ça ne récupère que la date quoi..)

  18. #17
    r4ph0u

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    J'aimerais également savoir s'il existe un moyen de créer un tableau de chaines de caractère. Je sais que normalement ce n'est pas possible, mais existe-t-il une fonction qui le fasse ? de façn a me simplifier l'écriture du programme. Et existe-t-il une fonction qui permette de reconnaître une chaîne de caractères inclue dans une autre ?

  19. #18
    lou_ibmix_xi

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Par compte je suis plutot debutant en prog, je ne sais pas ce qu'est un shell type bash...
    Ce qui fait que tout les "vieux barbus" préfèrent un bon vieux terminal type UNIX qu'un cliquodrôme. Une vraie ligne de commande quoi, pas le DOS qui a les inconvénients d'un shell, sans les avantages!

    Pour les données exif, ça peut aider, oui mais seulement pour la moitié qui est en numérique (puis ça ne récupère que la date quoi..)
    Je ne comprends pas bien ce que tu peux faire sur la moitié qui n'est pas numérisée avec un ordinateur...

  20. #19
    Jack
    Modérateur

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    J'aimerais également savoir s'il existe un moyen de créer un tableau de chaines de caractère
    En C, pas de problème. Il faudrait savoir si tu veux que le nombre de chaines et/ou la taille des chaines doit être fixe ou non. Si la taille n'est pas fixée dans le code source, il faut gérer dynamiquement la mémoire et c'est un peu plus compliqué si tu débutes, mais rien de rédhibitoire.

    Et existe-t-il une fonction qui permette de reconnaître une chaîne de caractères inclue dans une autre ?
    Oui, la fonction strstr() est faite pour.

    Avec quelques connaissances de C++, les classes string pour gérer les chaines et les conteneurs vector ou list pour les stocker faciliteraient grandement la tâche car plus besoin de gérer dynamiquement la taille des chaines et du tableau.

  21. #20
    lou_ibmix_xi

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Citation Envoyé par r4ph0u Voir le message
    J'aimerais également savoir s'il existe un moyen de créer un tableau de chaines de caractère. Je sais que normalement ce n'est pas possible, mais existe-t-il une fonction qui le fasse ?
    Ouch... si c'est possible, mais il faut te le pallucher "à la main" avec autant de malloc que de chaîne de caractères... Je fais "ouch" car effectivement tu sembles débuter en C qui n'est pas (à mon avis) l'outils adapté à ton problème, donc investi ton temps en apprentissage d'un outils plus adapté. J'ai envie de dire python ou bash, j'aurai une légère tendance à privilégier bash car nettement plus utile au quotidien à mon avis.

    Citation Envoyé par r4ph0u Voir le message
    de façn a me simplifier l'écriture du programme. Et existe-t-il une fonction qui permette de reconnaître une chaîne de caractères inclue dans une autre ?
    strncmp, strntok... regarde un peu se que te propose la bibliothèque standard (man string.h)... Mais ne le fais pas en C!

  22. #21
    lou_ibmix_xi

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Avec quelques connaissances de C++, les classes string pour gérer les chaines et les conteneurs vector ou list pour les stocker faciliteraient grandement la tâche car plus besoin de gérer dynamiquement la taille des chaines et du tableau.
    Les habitués trouveront que je radote mais JE DECONSEILLE FORTEMENT LE C++ POUR DEBUTER.

  23. #22
    Jack
    Modérateur

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    A ce niveau d'utilisation, le C++ reste franchement abordable et va faciliter la mise au point et l'exploitation en s'affranchissant de tous les problèmes de gestion de la mémoire.

  24. #23
    Ludwig1

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Salut,
    Citation Envoyé par r4ph0u Voir le message
    J'aimerais également savoir s'il existe un moyen de créer un tableau de chaines de caractère. Je sais que normalement ce n'est pas possible, mais existe-t-il une fonction qui le fasse ? de façn a me simplifier l'écriture du programme. Et existe-t-il une fonction qui permette de reconnaître une chaîne de caractères inclue dans une autre ?
    Bien sur que si, selon le système de développement que tu utilise, c'est même tous simple.
    Dans le système que j'utilise, il suffit d'écrire:


    Code:
    16384 Zliste BlocNotes   \ Création d'un tableau de nom BlocNotes de 16384 Caractères

    Quelques exemples

    Code:
    GetZl         ( zadr0,n --- adrx,len ) \ Retourne l'adresse et la longueur de la chaine n dans la Zliste pointée par zadr0
    		\ L'accès est sécurisé.
    
    USAGE:
     
    Blocnotes 5 GetZl  \ Retourne le contenu de la  ligne 5 du tableau de nom Blocnotes
    
    
    
    AppendZl              ( from adr,len, to adrZliste --- ) \ Ajoute une chaine de caratères dans une Zliste et place un zéro à la suite
    			\ de la chaine. Les paramètres de la Zliste sont mis à jour. L'accès est sécurisé contre l'overflow.
    			 
    USAGE:
    
    Buf$ Blocnotes Appendzl  \ Ajoute le contenu de la chaine Buf$ à la suite du tableau de nom Blocnotes.
    On dispose évidement de toute une série de méthodes pour manipuler les chaines de caractères.
    Par Exemple:

    Code:
    255 STRING$  BUF$  \ Déclare une chaine de caractères vide de taille max de 255 caractères et de nom BUF$
    
    \ Pour stocker du texte dans une chaine de caractère
    
    S" Voici du texte que l'on transférer dans BUF$"   BUF$  $!

    On dispose d'au moins 350 Méthodes (Fonctions) pour manipuler du texte, des fichiers texte etc...

    En outre on dispose de toute une série de méthodes qui permettent de compulser le disque et de rechercher toutes sortes de fichiers dans les différents répertoires puis d'enregistrer les PATH dans un Blocnotes par exemple.

    On dispose évidement de toute une série de composants Windows pour créer les interfaces Homme/Machine
    Par exemple:

    Nom : Composant-1.JPG
Affichages : 80
Taille : 51,3 Ko


    En clair ton PB est pratiquement résolu.

    Cordialement
    Ludwig
    Dernière modification par Ludwig1 ; 14/12/2016 à 09h32.

  25. #24
    Ludwig1

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Re
    Citation Envoyé par r4ph0u Voir le message
    Par compte je suis plutot debutant en prog, je ne sais pas ce qu'est un shell type bash...

    Pour les données exif, ça peut aider, oui mais seulement pour la moitié qui est en numérique (puis ça ne récupère que la date quoi..)
    Et cerise sur le gâteau, il n'y a pas de syntaxe à apprendre.


    Cordialement
    Ludwig

  26. #25
    lou_ibmix_xi

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Citation Envoyé par Jack Voir le message
    A ce niveau d'utilisation, le C++ reste franchement abordable et va faciliter la mise au point et l'exploitation en s'affranchissant de tous les problèmes de gestion de la mémoire.
    ça reste pour moi un très mauvais conseil car:
    - R4ph0u connaît mal le C, la "plus valu" d'une syntaxe proche est donc d'autant moins pertinente, surtout que beaucoup d'autre langage que le C++ partage un gros air de famille avec celle du C (la syntaxe du python n'est pas C-like ?)
    - ce n'est pas l'outil le mieux adapté à la tâche, il me semble nettement plus pertinent de taper à plus haut niveau
    - pour profiter de la gestion automatique de la mémoire en C++ (en générale, je ne connais pas le cas particulier de la classe string), il faut utiliser les nouveaux pointeurs du C++
    - la moindre erreur syntaxique bêbête peut donner des messages d'erreurs de compilation qui font vite mal aux yeux...

  27. #26
    CM63

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Et encore une fois:
    - le créateur du fil ne remet pas les pieds,
    - la discussion devient un troll sempiternel sur toujours les mêmes sujets.

  28. #27
    pm42

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Citation Envoyé par CM63 Voir le message
    - le créateur du fil ne remet pas les pieds,
    Normal, il a du poser la question sur plusieurs forums et prendre la solution toute cuite qui lui a été donnée sur l'un d'entre eux..

    Citation Envoyé par CM63 Voir le message
    - la discussion devient un troll sempiternel sur toujours les mêmes sujets.
    Il faut bien laisser ça au troll. Le seul endroit où il peut vivre dans l'illusion qu'il y connait quelque chose en info est sur FS. Il suffit d'ignorer toutes les réponses...

  29. #28
    Ludwig1

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Salut,
    Citation Envoyé par pm42 Voir le message
    Il faut bien laisser ça au troll. Le seul endroit où il peut vivre dans l'illusion qu'il y connait quelque chose en info est sur FS. Il suffit d'ignorer toutes les réponses...
    La t' as bien raison, l'informatique n'étant pas une science, j'ai jamais bien compris ce qu'il fallait y comprendre. Je ne sais pas si ça consiste à faire des ronds de jambes dans les salons en étalant un jargon pseudo scientifique pour impressionner, ou si ça consiste à résoudre de la façon la plus efficace qui soit, un PB d'automatisation de traitement de données.
    Le sujet de ce fil est bien un PB d'automatisation de traitement de données me semble t'il.
    Personnellement pour définir l'informatique j'opterais pour le deuxième cas de figure et toi?

    Cordialement

    Ludwig

  30. #29
    Jack
    Modérateur

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Citation Envoyé par lou_ibmix_xi Voir le message
    ça reste pour moi un très mauvais conseil car:
    - R4ph0u connaît mal le C, la "plus valu" d'une syntaxe proche est donc d'autant moins pertinente, surtout que beaucoup d'autre langage que le C++ partage un gros air de famille avec celle du C (la syntaxe du python n'est pas C-like ?)
    - ce n'est pas l'outil le mieux adapté à la tâche, il me semble nettement plus pertinent de taper à plus haut niveau
    - pour profiter de la gestion automatique de la mémoire en C++ (en générale, je ne connais pas le cas particulier de la classe string), il faut utiliser les nouveaux pointeurs du C++
    - la moindre erreur syntaxique bêbête peut donner des messages d'erreurs de compilation qui font vite mal aux yeux...
    Code:
    vector <string> stringTab;                     // Hop, un tableau dynamique de chaines
    string myString("Tout le monde il est beau "); // une chaine qcq (pour les amateurs de Jean Yanne)
    stringTab.push_back(myString);                      // Pour ajouter la chaine dans le tableau
    stringTab.push_back("tout le monde il est gentil"); // Pour en ajouter une autre, tout ça sans allocation dynamique de mémoire avec une syntaxe qui, comme tu l'as fait remarquer, a tendance à se généraliser avec les langages modernes(python, C#, java, etc.)
    
    myString = stringTab[0];                                 // Si on aime la syntaxe tableau classique.
    int pos = myString.find(monde);                     // renvoie la position de la chaine monde dans la chaine contenue dans myString
    Je trouve que l'accès à cette syntaxe, sans aller taper dans le C++ "moderne", est assez abordable et dans l'air du temps.
    Dernière modification par Jack ; 14/12/2016 à 18h13.

  31. #30
    Ludwig1

    Re : Extraire info d'un nom de fichier et les passer en propriétés

    Salut,
    Citation Envoyé par Jack Voir le message
    Code:
    vector <string> stringTab;                     // Hop, un tableau dynamique de chaines
    string myString("Tout le monde il est beau "); // une chaine qcq (pour les amateurs de Jean Yanne)
    stringTab.push_back(myString);                      // Pour ajouter la chaine dans le tableau
    stringTab.push_back("tout le monde il est gentil"); // Pour en ajouter une autre, tout ça sans allocation dynamique de mémoire avec une syntaxe qui, comme tu l'as fait remarquer, a tendance à se généraliser avec les langages modernes(python, C#, java, etc.)
    
    myString = stringTab[0];                                 // Si on aime la syntaxe tableau classique.
    int pos = myString.find(monde);                     // renvoie la position de la chaine monde dans la chaine contenue dans myString
    Je trouve que l'accès à cette syntaxe, sans aller taper dans le C++ "moderne", est assez abordable et dans l'air du temps.
    Oui cette syntaxe est parfaitement claire. Bien que n'étant pas ma tasse de Thé, je dois dire que C++ de base est
    tout à fait abordable.

    Cordialement

    Ludwig

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Extraire une page d'un fichier PDF
    Par michel5002 dans le forum Logiciel - Software - Open Source
    Réponses: 39
    Dernier message: 03/02/2014, 11h07
  2. extraire les input/output d'un fichier OWL-S
    Par rayene89 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 29/10/2013, 22h45
  3. comment extraire les propriétés d'une interface graphique.
    Par inviteb7f68bc4 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 14/03/2008, 15h12
  4. Extraire fichier MP3 d'une liste de lecture M3U
    Par invitef47e13a5 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 20/01/2006, 20h03
  5. Extraire un fichier audio
    Par invite899f8a1e dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 26/12/2005, 08h50