SARAH gère le frigo
Parmi les sujets récurrents sur la communauté Google+ il y a la gestion du réfrigérateur ou des courses par SARAH. Voici un petit aperçu de ce qu’il est possible de faire.
Base de donnée
La première étape consiste à persister et retrouver des données. Plutôt que d’utiliser une usine à gaz SQL j’ai mis en place NeDB qui est une petite base NoSQL inMemory. Et qui fonctionne comme MongoDB:
[crayon]
exports.init = function(sarah){
var Datastore = require(‘./lib/nedb’);
var path = __dirname + ‘/frigo.db’;
db = new Datastore({ filename: path});
db.loadDatabase(function (err) { … });
}
[/crayon]
On se branche sur le hook init() de manière à charger la base au chargement du plugin.
[crayon]
var save = function(data){
db.update({‘name’: data.name }, data, { upsert: true },
function(){ … });
}
[/crayon]
[crayon]
var remove = function(data){
db.remove({‘name’: data.name }, {}, function(){ … });
}
[/crayon]
Ensuite les méthode save()
et remove()
permettent une mise à jour d’un objet de la base.
Grammaire XML
Lors de chaque mise à jour de la base il faut mettre en cache la liste des produits (pour ne pas avoir à faire un appel asynchrone)
[crayon]
var cacheProducts = function(){
db.find({ name: {$gt:’1′} }, function(err, docs){ products = docs;});
}
[/crayon]
Puis réécrire le fichier XML
[crayon]
[/crayon]
[crayon]
var rewriteXML = function(){
var file = __dirname + ‘/frigo.xml’;
var xml = fs.readFileSync(file,’utf8′);
var replace = ‘§ –>n’;
for(var i = 0 ; i < products.length ; i++){
replace += '
}
replace += ‘
- Extension Chrome: Historique des prix d’un produit Amazon
- SARAH en PodCast pour ce début d’année
J’étais en train de faire un peu le même style de boulot ses dernier jours mais je me suis retrouvé confronter au problème de reconnaissance des garbadge….
En gros, pour ajouter un item dans la liste il me fallait, parfois, répéter 5 ou 6 fois la phrase -__- Quand je voyais ce qui passait dans la console de debug au niveau du dictation ça n’avait rien à voir (et ça quand sarah lançait le plugin…..)
Pourtant je suis à moins d’1 mêtre du kinecte u_u
Ouai c’est la reco Google qui est vraiment pas top, j’ai vu que le projet que j’utilise a été porté sur GitHub donc peut être que des choses ont été améliorée
Je jetterais un oeil à la source histoire de voir si il y a un truc que j’aurais loupé, amis dans l’état, mon plugin est en stand by, parce que pas utilisable….