Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
ff2balex
Manage
Activity
Members
Labels
Plan
Issues
9
Issue boards
Milestones
Wiki
External wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Lex gaMe
ff2balex
Commits
7e946db9
Commit
7e946db9
authored
6 months ago
by
Lucie Bader
Browse files
Options
Downloads
Patches
Plain Diff
Bouton définition Wiktionnaire menu perso
parent
684c1397
No related branches found
No related tags found
1 merge request
!4
Définitions (lexiques de l'utilisateur + Wiktionnaire)
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
api.js
+15
-17
15 additions, 17 deletions
api.js
barre_latérale/sidebar.js
+50
-16
50 additions, 16 deletions
barre_latérale/sidebar.js
with
65 additions
and
33 deletions
api.js
+
15
−
17
View file @
7e946db9
...
...
@@ -206,47 +206,45 @@ async function getDefinition(authToken, entryId) {
async
function
getWiktionaryDefinition
(
word
)
{
try
{
console
.
log
(
`🔍 Envoi de la requête au Wiktionnaire pour '
${
word
}
'...`
);
if
(
!
word
||
word
.
trim
()
===
""
)
{
throw
new
Error
(
"
Mot vide, impossible
d'envoyer la requête
.
"
);
throw
new
Error
(
"
⚠️
Mot vide,
requête
impossible.
"
);
}
// Le paramètre "origin=*" est requis pour les appels cross-domain
// "prop=extracts & exintro=true" renvoie seulement le début de l’article
const
wiktionaryURL
=
`https://fr.wiktionary.org/w/api.php?action=query&format=json&origin=*&prop=extracts&exintro=true&titles=
${
encodeURIComponent
(
word
)}
`
;
const
response
=
await
fetch
(
wiktionaryURL
);
if
(
!
response
.
ok
)
{
throw
new
Error
(
`Erreur API Wiktionnaire:
${
response
.
statusText
}
`
);
throw
new
Error
(
`
❌
Erreur API Wiktionnaire:
${
response
.
statusText
}
`
);
}
const
data
=
await
response
.
json
();
console
.
log
(
"
📖 Réponse API
(
Wiktionnaire
)
:
"
,
data
);
console
.
log
(
"
📖 Réponse API Wiktionnaire :
"
,
data
);
const
pages
=
data
.
query
.
pages
;
// pages est un objet dont la clé est l'ID de la page => on récupère la première
const
page
=
Object
.
values
(
pages
)[
0
];
if
(
!
data
.
query
||
!
data
.
query
.
pages
)
{
return
[
"
⚠️ Réponse inattendue du Wiktionnaire.
"
];
}
if
(
!
page
||
!
page
.
extract
)
{
console
.
warn
(
"
⚠️ Aucune définition trouvée sur le Wiktionnaire.
"
);
// Récupérer la première page (clé dynamique)
const
pages
=
Object
.
values
(
data
.
query
.
pages
);
if
(
pages
.
length
===
0
||
!
pages
[
0
].
extract
)
{
return
[
"
⚠️ Aucune définition trouvée sur le Wiktionnaire.
"
];
}
//
page.extract contient du HTML : on le parse pour en extraire du
texte brut
//
Convertir l'HTML en
texte brut
propre
const
parser
=
new
DOMParser
();
const
doc
=
parser
.
parseFromString
(
page
.
extract
,
"
text/html
"
);
const
doc
=
parser
.
parseFromString
(
page
s
[
0
]
.
extract
,
"
text/html
"
);
const
cleanText
=
doc
.
body
.
textContent
.
trim
();
console
.
log
(
"
✅ Définition extraite :
"
,
cleanText
);
// Tu peux renvoyer un tableau avec 1 seule définition
return
[
cleanText
];
return
[
cleanText
];
// Toujours un tableau
}
catch
(
error
)
{
console
.
error
(
"
❌ Erreur lors de la récupération de la définition du Wiktionnaire :
"
,
error
);
// On renvoie un tableau contenant un message d'erreur
return
[
`⚠️ Erreur :
${
error
.
message
}
`
];
return
[
"
⚠️ Erreur :
"
+
error
.
message
];
}
}
// ─────────────────────────────────────────────────────────────────────────────
// ▌ Mise à disposition globale de nos fonctions
// ─────────────────────────────────────────────────────────────────────────────
...
...
This diff is collapsed.
Click to expand it.
barre_latérale/sidebar.js
+
50
−
16
View file @
7e946db9
...
...
@@ -10,6 +10,20 @@ window.addEventListener('error', (e) => {
console
.
error
(
"
❗️ Erreur globale détectée :
"
,
e
.
message
,
"
dans
"
,
e
.
filename
,
"
:
"
,
e
.
lineno
);
});
document
.
addEventListener
(
"
DOMContentLoaded
"
,
()
=>
{
console
.
log
(
"
📦 DOM entièrement chargé, vérification des éléments...
"
);
// Vérifier si #definitionsList est maintenant disponible
const
definitionsList
=
document
.
getElementById
(
"
definitionsList
"
);
if
(
!
definitionsList
)
{
console
.
error
(
"
❌ Échec : #definitionsList est toujours introuvable.
"
);
}
else
{
console
.
log
(
"
✅ Succès : #definitionsList est bien détecté.
"
);
}
});
// ─────────────────────────────────────────────────────────────────────────────
// ▌ Fonctions utilitaires liées au token
// ─────────────────────────────────────────────────────────────────────────────
...
...
@@ -269,7 +283,7 @@ async function fetchWiktionaryDefinition(word) {
throw
new
Error
(
"
⚠️ Mot vide, impossible d'envoyer la requête.
"
);
}
const
wiktionaryURL
=
`https://fr.wiktionary.org/w/api.php?action=query&format=json&origin=*&prop=extracts&ex
intro=true
&titles=
${
encodeURIComponent
(
word
)}
`
;
const
wiktionaryURL
=
`https://fr.wiktionary.org/w/api.php?action=query&format=json&origin=*&prop=extracts&ex
plaintext=true&redirects=1
&titles=
${
encodeURIComponent
(
word
)}
`
;
const
response
=
await
fetch
(
wiktionaryURL
);
if
(
!
response
.
ok
)
{
...
...
@@ -279,20 +293,26 @@ async function fetchWiktionaryDefinition(word) {
const
data
=
await
response
.
json
();
console
.
log
(
"
📖 Réponse API (Wiktionnaire) :
"
,
data
);
const
pages
=
data
.
query
.
pages
;
const
page
=
Object
.
values
(
pages
)[
0
];
// Vérifier si des redirections ont été suivies
if
(
data
.
query
&&
data
.
query
.
redirects
)
{
console
.
log
(
"
🔄 Redirection détectée :
"
,
data
.
query
.
redirects
);
}
if
(
!
page
||
!
page
.
extract
)
{
throw
new
Error
(
"
⚠️ Aucune définition trouvée sur le
Wiktionnaire.
"
)
;
if
(
!
data
.
query
||
!
data
.
query
.
pages
)
{
return
[
"
⚠️ Réponse inattendue du
Wiktionnaire.
"
]
;
}
// Extraction et nettoyage de la définition
const
parser
=
new
DOMParser
();
const
doc
=
parser
.
parseFromString
(
page
.
extract
,
"
text/html
"
);
const
cleanText
=
doc
.
body
.
textContent
.
trim
();
// Récupérer la première page (clé dynamique)
const
pages
=
Object
.
values
(
data
.
query
.
pages
);
if
(
pages
.
length
===
0
||
!
pages
[
0
].
extract
)
{
return
[
"
⚠️ Aucune définition trouvée sur le Wiktionnaire.
"
];
}
// Extraire la définition sous forme de texte brut
const
cleanText
=
pages
[
0
].
extract
.
trim
();
console
.
log
(
"
✅ Définition extraite :
"
,
cleanText
);
return
[
cleanText
];
return
[
cleanText
];
// Toujours un tableau pour `displayDefinitions()`
}
catch
(
error
)
{
console
.
error
(
"
❌ Erreur lors de la récupération de la définition du Wiktionnaire :
"
,
error
);
return
[
"
⚠️ Aucune définition disponible.
"
];
...
...
@@ -318,18 +338,27 @@ async function showDefinitions(word) {
* Affiche la liste des définitions dans la barre latérale.
*/
function
displayDefinitions
(
definitions
)
{
const
definitionsList
=
document
.
getElementById
(
"
definitionsList
"
);
if
(
!
definitionsList
)
{
console
.
warn
(
"
⚠️ Élément #definitionsList introuvable.
"
);
// Vérifier si le DOM est prêt
if
(
document
.
readyState
===
"
loading
"
)
{
console
.
log
(
"
⏳ DOM pas encore prêt, attente...
"
);
document
.
addEventListener
(
"
DOMContentLoaded
"
,
()
=>
displayDefinitions
(
definitions
));
return
;
}
console
.
log
(
"
📖 Affichage des définitions dans la barre latérale :
"
,
definitions
);
let
definitionsList
=
document
.
getElementById
(
"
definitions
List
"
);
if
(
!
definitionsList
)
{
console
.
warn
(
"
⚠️ Élément #definitionsList introuvable. Attente du chargement...
"
);
setTimeout
(()
=>
displayDefinitions
(
definitions
),
500
);
return
;
}
console
.
log
(
"
📖 Affichage des définitions :
"
,
definitions
);
definitionsList
.
innerHTML
=
""
;
if
(
!
definitions
||
definitions
.
length
===
0
)
{
definitionsList
.
innerHTML
=
"
<li>Aucune définition trouvée.</li>
"
;
definitionsList
.
innerHTML
=
"
<li>
⚠️
Aucune définition trouvée.</li>
"
;
return
;
}
...
...
@@ -339,7 +368,7 @@ function displayDefinitions(definitions) {
definitionsList
.
appendChild
(
listItem
);
});
console
.
log
(
"
✅ Définitions affichées
avec succès
!
"
);
console
.
log
(
"
✅ Définitions affichées !
"
);
}
// ─────────────────────────────────────────────────────────────────────────────
...
...
@@ -376,6 +405,11 @@ browser.runtime.onMessage.addListener((message) => {
fetchWiktionaryDefinition
(
message
.
selectedText
).
then
((
definitions
)
=>
{
console
.
log
(
"
📖 Définitions récupérées :
"
,
definitions
);
if
(
definitions
.
length
===
0
)
{
console
.
warn
(
"
⚠️ Aucune définition reçue.
"
);
}
displayDefinitions
(
definitions
);
});
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment