Non, je ne fait pas de poésie. C'est le petit nom que j'ai trouvé pour le programme que je suis en train de faire pour apprendre le Python.
Présentation
RIME signifie Recherche Indexée Modulable et Evolutive (oui, bon, c'est pour faire un mot ). Il s'agit d'un système de recherche de plein de choses (à la base de fichiers, mais comme son nom l'indique, c'est fait pour évoluer) qui permet une indexion. J'ai décidé de faire ça, car je n'avais pas trop d'idées, et que je venais de voir dans un Login
que Apple avait intégré dans son dernier MacOS X un certain spotlight
. Les windoziens (du moins 2000 et plus, si je me souviens bien) ont déjà Google Desktop Search, et les tuxien ? J'ai fait une recherche (rapide, je l'admet. Il est fortement possible que je réinvente la roue, le but n'étant pas d'être inovant), et je n'ai rien trouvé.
Composants et fonctionnement :
- rime.py : c'est le programme principal, qui permet de lancer des recherches en lignes de commande, de lancer une indexion, d'ouvrir l'interface graphique, de générer des fichiers contenant les résultats d'une recherche, etc. Il peut également être utilisé comme un module python pour une exploitation plus pratique des fonction de recherche. Ce script est a peu près terminé.
- rimed.py : c'est le démon qui permet une mise à jour régulière de l'index, et qui permet aussi de maintenir des flux dynamiques de recherche, par exemple un fil RSS ou un dossier virtuel (dossier réel contenant des liens symboliques vers les résultats de la recherche). Ce script est fonctionel, cependant j'aimerai réécrire quelques parties pour l'optimiser.
- rimedb.py : c'est le module python qui permet la gestion de l'index. Il utilise une base SQLite (ce qui m'a permit d'apprendre les requêtes SQL) mais cela peut être modifié sans conséquences sur les autres programmes. Ce programme s'occupe aussi de chercher des similitudes entre mots-clef.Ce script est à peu près terminé, quelques options de configurations à ajouter, et la fonction de requête à modifier légèrement pour une compatibilité entre modules.
- rimegui.py : l'interface graphique, un gros morceau niveau apprentissage (utilisation de pyGTK). Elle permet de faire des recherches de façon graphique, d'enregistrer celles-ci sous divers format, et de configurer RIME.La partie rechercher et la partie enregistrement sont à peu près terminées (cf. screenshots). Il reste la partie configuration.
Les modules
Les modules sont de petits scripts python qui permettent de faire des recherches sur divers types de données. On peut faire des modules qui indexent un système de fichier (comme par exemple le module file.py
), de mail, de favoris d'un navigateur web, un module qui ajoute des métadonnées en fonction du type de fichier (par exemple un module pour les images), ou un module utilisant une autre source de recherche, utilisant ou pas l'index (par exemple un module de recherche sur google).
- file.py : ce module permet d'indexer un système de fichier local.Il ne manque que l'interface de configuration du module.
- J'ai d'autres projets de modules : indexer les mails (format mbox ?), la base de donnée d'amaroK, des recherches web (j'ai un code pour les API de Yahoo!), wikipédia...
Quelques images...
...de l'interface graphique sur laquelle je bose en ce moment :
La fenêtre de sauvegarde d'une recherche de rimegui.py
Voilà un peu mon petit projet... si vous avez des conseils, des idées, n'hésitez pas !
Commentaires
Pour Linux il existe un soft du nom de Beagle (ou Beaggle) Mais que ça ne t'empèches pas de continuer ton projet Dans la doc Dive Into Python il y a pas mal d'exemples au niveau des tags ID3 des mp3... si tu veux indexer les mp3 ça peut servir
Je viens de mozboter Beagle, en effet, c'est un projet de Novell qui semble être intégré à SUSE. J'ai voulu l'installer avec mon urpmi préféré, (histoire de voir s'il n'y avait des bonnes idées à pomper ), mais il me demandait 46 Mo (et ma partition / est pleine à craquer). J'ai regardé en détail, et il semble que c'est programmé en C# (des paquets sufixés par sharp et mono dans les dépendances...). A quoi bon faire des progs pour Linux si c'est pour utiliser de la technologie de Microsoft ?!
Alors je l'ai pas installé, tant pis.
Sinon, j'avais en effet l'intention de faire un module pour la musique (j'ai surtout de l'OGG et du MP3, un peu de WMA qu'il me reste et qu'il faut absolument que je convertise depuis un ans ), mais j'hésite à indexer les fichiers sur le disque directement, ou à exploiter la base de donnée de amaroK (du SQLite)... Comme tout le monde n'a pas amaroK, je vais peut-être faire les deux...
Quoi qu'il en soit, il faudra vraiment que je regarde en détail Dive Into Python.
Bonjour thesa,
Il m'a l'air vraiment sympa ce projet.
Une petite idée de module: indexation du contenu de fichiers pdf. (Utile pour ceux qui ont un max de ebook techniques ou autre...)
Et une question: ton projet n'est pas dispo en téléchargement ou n'ai je pas assez cherché ?
>Il m'a l'air vraiment sympa ce projet.
Merci !
>indexation du contenu de fichiers pdf
J'essayerai de le faire, quand je me mettrai à faire des modules "en série" Pour l'instant, je me concentre surtout sur le corps du programme. Si quelque connait connait un système simple pour accéder aux pdf sous python, je suis preneur.
> Et une question: ton projet n'est pas dispo en téléchargement ou n'ai je pas assez cherché ?
Il n'est pas encore téléchargeables, je n'y ai plus trop touché depuis juillet. Promis, dès que j'ai un week-end libre, je termine l'interface graphique pour la configuration (partie la plus ch*** mais nécessaire), et je fais une première bêta.