AVATAR Forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-40%
Le deal à ne pas rater :
-40% sur le Pack Gaming Mario PDP Manette filaire + Casque filaire ...
29.99 € 49.99 €
Voir le deal

plugin conjugaison

2 participants

Aller en bas

plugin conjugaison Empty plugin conjugaison

Message par halim Jeu 28 Mar - 23:34

plugin conjugaison , avec l'assistant vocal AVATAR vous pouvez conjugaison n'importe quel verbe à 3 indicatif: passé, présent et futur, par défaut la conjugaison du verbe est au présent

code js:

exports.action = function(data, callback){

let client = setClient(data);
info("Conjugaison from:", data.client, "To:", client);
conjugateVerb (data, client);
callback();
}

async function conjugateVerb(data, client) {
   try {
       const verbToConjugate = parseVerb(data.action.rawSentence);

       if (!verbToConjugate) {
           Avatar.speak(`Je ne peux pas conjuguer sans donner le verbe.`, data.client, () => {
               Avatar.Speech.end(data.client);
           });
           return;
       }

       const tense = detectTense(verbToConjugate);
       const verbName = verbToConjugate.replace(/au passé|au présent|au futur/gi, "").trim();
       const verbURL = `https://conjugator.reverso.net/conjugation-french-verb-${encodeURIComponent(verbName)}.html`;
       const response = await fetch(verbURL);

       if (!response.ok) {
           throw new Error(`Échec de la requête : code erreur ${response.status}`);
       }

       const html = await response.text();
       const cheerio = require("cheerio");
       const $ = cheerio.load(html);

       const tensePosition = getTensePosition(tense);
       const je = $(`#ch_divSimple > div > div:nth-child(${tensePosition}) > div:nth-child(2) > div > ul > li:nth-child(1)`).text();
       const tu = $(`#ch_divSimple > div > div:nth-child(${tensePosition}) > div:nth-child(2) > div > ul > li:nth-child(2)`).text();
       const il_elle = $(`#ch_divSimple > div > div:nth-child(${tensePosition}) > div:nth-child(2) > div > ul > li:nth-child(3)`).text();
       const nous = $(`#ch_divSimple > div > div:nth-child(${tensePosition}) > div:nth-child(2) > div > ul > li:nth-child(4)`).text();
       const vous = $(`#ch_divSimple > div > div:nth-child(${tensePosition}) > div:nth-child(2) > div > ul > li:nth-child(5)`).text();
       const ils_elles = $(`#ch_divSimple > div > div:nth-child(${tensePosition}) > div:nth-child(2) > div > ul > li:nth-child(6)`).text();

       Avatar.speak(`Voici la conjugaison du verbe ${verbName}`, data.client, () => {
           const conjugatedForms = `${je}, ${tu}, ${il_elle}, ${nous}, ${vous}, ${ils_elles}.`;
           Avatar.speak(conjugatedForms, data.client, () => {
               Avatar.Speech.end(data.client);
           });
       });
   } catch (err) {
       Avatar.speak(`Une erreur s'est produite lors de la conjugaison: ${err.message}`, data.client, () => {
           Avatar.Speech.end(data.client);
       });
   }
}

function parseVerb(sentence) {
   return sentence.replace(/(conjugue le verbe|conjugaison du verbe|conjugue|le|du|verbe)/gi, "").trim();
}

function detectTense(verb) {
   if (verb.includes("au passé")) return 'past';
   else if (verb.includes("au présent")) return 'present';
   else if (verb.includes("au futur")) return 'futur';
   else return 'present';
}

function getTensePosition(tense) {
   switch (tense) {
       case 'past':
           return 2;
       case 'present':
           return 1;
       case 'futur':
           return 5;
       default:
           throw new Error('Invalid tense');
   }
}


function setClient(data) {
 let client = data.client;
 if (data.action.room)
     client = (data.action.room != 'current') ? data.action.room : (Avatar.currentRoom) ? Avatar.currentRoom : Config.default.client;
 if (data.action.setRoom)
     client = data.action.setRoom;
 return client;
}
halim
halim

Messages : 89
Date d'inscription : 19/11/2022

Revenir en haut Aller en bas

plugin conjugaison Empty Re: plugin conjugaison

Message par Frederic Ven 29 Mar - 1:05

Ah ça me rappelle un plugin ça...
Donc comme on le vois tu n'arrives pas à réutiliser les plugs de Sarah donc tu reprends ceux de https://jarvis.forumactif.com/ ...
plugin conjugaison 1f605 plugin conjugaison 1f605 plugin conjugaison 1f605

Frederic

Messages : 5
Date d'inscription : 02/05/2023

Revenir en haut Aller en bas

plugin conjugaison Empty Re: plugin conjugaison

Message par halim Ven 29 Mar - 13:17

salut, fred , je te propose un parie, je vais porter le plugin marmiton de laurent J pour AVATAR si je réussie tu vas passer sur AVATAR, daccord?
le plugin seras développer avec du javscript moderne et niveau superieur
le code js est déja modifier avec la méthode fetch, j'ai juste à remplacer jarvisIAspeech et jarvisAskme par AvatarSpeak et AvatarAskme
je sais c'est pas bien de voler les plugin des autres , c'est pas du développement , mais bon!
un apercus en dessous le code js

exports.action = function(data, callback){

let client = setClient(data);
info("Marmiton from:", data.client, "To:", client);
marmiton (data, client);
callback();

}

function marmiton (data, client) {

let nmbrRecette = 3;
let reg = /une recette sur marmiton (.+)/i;
let rgxp = eval(reg);
let nameRecipeMatch = data.action.rawSentence.toLowerCase().match(rgxp);
let extractNameRecipe = nameRecipeMatch ? nameRecipeMatch[1].trim() : null;

if (!extractNameRecipe) {
Avatar.speak("Je ne peux pas donner une recette sans le nom de la recette", data.client, function(){
Avatar.Speech.end(data.client);
});
return;
} else {
Avatar.speak(`J'ai trouvé ${nmbrRecette} recettes ${extractNameRecipe}`, data.client, function(){
Avatar.Speech.end(data.client);
});
return;
}

}


function setClient (data) {
let client = data.client;
if (data.action.room) {
client = (data.action.room != 'current') ? data.action.room : (Avatar.currentRoom) ? Avatar.currentRoom : Config.default.client;
}
if (data.action.setRoom) {
client = data.action.setRoom;
}
return client;
}

exports.action = function (data) {
console.log("les datas : ", data);

var cheerio = require('cheerio');

var reg = "/" + data.RecetteMarmiton + "(.+)/i";
var rgxp = eval(reg);
var temp = JarvisIA.reco.match(rgxp);
console.log(temp);
var urlmarmitonTemp = temp[1].trim();
console.log("on cherche : ", urlmarmitonTemp.replace("œ", "oe"));

var urlmarmiton = "https://www.marmiton.org/recettes/recherche.aspx?aqt=" + urlmarmitonTemp.replace("œ", "oe");
console.log(urlmarmiton, "ddddddd");

fetch(urlmarmiton)
.then(response => response.text())
.then(html => {
const $ = cheerio.load(html);
var listRecetteUrl = [];
$('.MRTN__sc-1gofnyi-0').find('a').each(function (index, element) {
listRecetteUrl.push($(element).attr('href'));
});
console.log(listRecetteUrl);

listRecetteUrl[0] = listRecetteUrl[0].replace('/recettes', '');
console.log(listRecetteUrl[0] + " recette trouvée");
var urlmarmiton = "https://www.marmiton.org/recettes" + listRecetteUrl[0];

return fetch(urlmarmiton, { headers: { 'Accept-Charset': 'utf-8' } });
})
.then(response => response.text())
.then(html => {
const $ = cheerio.load(html);
var listRecetteIngredients = [];

$("div.MuiGrid-root").each(function () {
listRecetteIngredients.push(($(this).children().text()).replace(/\s{2,}/g, ' '));
console.log(($(this).children().text()).replace(/\s{2,}/g, ' '), 'wwwwwwww');
});

var listRecettePreparation = [];
$(".SHRD__sc-juz8gd-3 > ul").each(function () {
listRecettePreparation.push(($(this).find('p').text()).replace(/\s{2,}/g, ' '));
console.log(($(this).find('p').text()).replace(/\s{2,}/g, ' '), 'rrrrrrr');
});

return new Promise((resolve, reject) => {
JarvisAskMe('veux-tu les ingrédients ou la recette', function (result) {
console.log("retour askme me : " + result)
if (result.search('ingrédients') > -1) {
resolve(JSON.stringify(listRecetteIngredients.shift()));
} else if (result.search('recette') > -1) {
resolve(JSON.stringify(listRecettePreparation));
} else {
resolve('je sors');
}
});
});
})
.then(response => {
JarvisIASpeech(response);
})
.catch(error => {
console.error('Error:', error);
});
}
halim
halim

Messages : 89
Date d'inscription : 19/11/2022

Revenir en haut Aller en bas

plugin conjugaison Empty Re: plugin conjugaison

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum