plugin conjugaison
2 participants
Page 1 sur 1
plugin conjugaison
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;
}
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- Messages : 89
Date d'inscription : 19/11/2022
Re: plugin conjugaison
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/ ...
Donc comme on le vois tu n'arrives pas à réutiliser les plugs de Sarah donc tu reprends ceux de https://jarvis.forumactif.com/ ...
Frederic- Messages : 5
Date d'inscription : 02/05/2023
Re: plugin conjugaison
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);
});
}
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- Messages : 89
Date d'inscription : 19/11/2022
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|