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 !