Page 1 sur 1
Récupérer la définition d'un mot français
Publié : ven. 21/mai/2021 10:33
par Ar-S
Code : Tout sélectionner
InitNetwork()
Procedure.s CatchDefinition(word.s)
; by Ar-S
Protected BaseURL$ = "https://api.dictionaryapi.dev/api/v2/entries/fr/", urlinfo$, start
;
urlinfo$=BaseURL$+word.s
;
Request = HTTPRequest(#PB_HTTP_Get, urlinfo$)
If Request
If HTTPInfo(Request, #PB_HTTP_StatusCode) = "200"
HTML$ = HTTPInfo(Request, #PB_HTTP_Response)
; Debug HTML$
; Chargement du JSON
N = CountString (HTML$, "definition"+Chr(34))
start = 0
If N = 1
Start = FindString(HTML$,"definition"+Chr(34),0)
Start+13
Fin = FindString(HTML$,".",Start)
def.s = Mid(HTML$,start,fin-start)
Else
For i = 1 To N
Start = FindString(HTML$,"definition"+Chr(34),start)
Start+13
Fin = FindString(HTML$,".",Start)
def.s + Mid(HTML$,start,fin-start)+Chr(10)
start = Fin
Next
EndIf
Else
def = "Pas de données pour ce mot"
EndIf
Else
def = "La requête n'a pas aboutie"
EndIf
ProcedureReturn def
EndProcedure
; ----------EXAMPLE-----------
Debug CatchDefinition("programmation")
Debug CatchDefinition("cacao")
Debug CatchDefinition("chinois")
Debug CatchDefinition("serviette")
Re: Récupérer la définition d'un mot français
Publié : ven. 21/mai/2021 11:49
par venom
Sympa, je ne connaissais pas cette API.
Merci du partage
@++
Re: Récupérer la définition d'un mot français
Publié : ven. 21/mai/2021 12:26
par jak64
Bonjour ar-s
Merci pour ce module, je l'intégrerai peut-être mais il ne prend pas en compte les verbes conjugués, par exemple.
Si je l'intègre, j'afficherai la définition dans une info bulle s'il la trouve, sinon, j'utiliserai le lien qui ouvre google avec le mot recherché.
J'ai aussi testé avec Larousse, Le petit robert, etc...
Merci pour ta contribution.
Re: Récupérer la définition d'un mot français
Publié : ven. 21/mai/2021 15:35
par jak64
Bonjour,
En m'inspirant du code fourni par Ar-s, j'ai fait la même fonction en utilisant un autre dictionnaire qui trouve aussi (pas tous...) les verbes conjugués entre autres. J'ai mis aussi une boucle pour lancer la requête (10 fois max) car, parfois, la requête n'aboutit pas dans le temps imparti (j'ai un faible débit dans ma jolie ville).
Voici le code :
Code : Tout sélectionner
EnableExplicit
If InitNetwork()=0 : MessageRequester("Erreur", "InitNetwork() non initialisé !"):End:EndIf
Procedure.s definition_du_mot(mot.s)
; Modifiée par jak64 en prenant pour base le code de Ar-s
Protected debut_url.s = "http://dictionnaire.sensagent.leparisien.fr/"
Protected fin_url.s="/fr-fr/"
Protected url.s
Protected requete.q
Protected resultat.s
Protected debut.i
Protected fin.i
Protected chaine_recherchee_avant.s="</span><span class="+Chr(34)+"wording"+Chr(34)+">"
Protected chaine_recherchee_apres.s="<"
Protected nb_definitions.b
Protected nu_definitions.b
Protected definitions.s
Protected nb_essais.b=0
;= Construction de l'url avec le mot dont on recherche la ou les définition(s)
url=debut_url+mot.s+fin_url
;= Lancement de la requête
While nb_essais<10
requete = HTTPRequest(#PB_HTTP_Get, url)
If requete
If HTTPInfo(requete, #PB_HTTP_StatusCode) = "200" ; La requête s'est bien déroulée
resultat = HTTPInfo(requete, #PB_HTTP_Response)
nb_essais=10
;= Compter combien de définitions existent pour le mot passé en paramètre
nb_definitions = CountString (resultat, chaine_recherchee_avant)
definitions="----- Définitions de "+ mot + " -----" + Chr(10) + Chr(10)
If nb_definitions>0
debut=1
;= Boucle pour extraire chaque définition
For nu_definitions=1 To nb_definitions
;= Rechercher la chaîne avant la définition
Fin = FindString(resultat,chaine_recherchee_avant,debut)
;= Rechercher la chaîne après la définition
debut=fin+29
Fin = FindString(resultat,chaine_recherchee_apres,debut)
;= Stocker les définitions en ajoutant un retour à la ligne entre chacune d'elles
definitions + Right("0"+Str(nu_definitions),2) + " - " + Mid(resultat,debut,fin-debut)+Chr(10)
Next nu_definitions
Else
definitions = "Pas de définition trouvée pour " + mot + Chr(10)
EndIf
Else
nb_essais+1
EndIf
Else
definitions = "La requête n'a pas aboutie"
EndIf
Wend
ProcedureReturn definitions
EndProcedure
;= Exemples d'utilisation
Debug definition_du_mot("turlupinais")
Debug "***************************************************************************************************************"
Debug definition_du_mot("gâteau")
Debug "***************************************************************************************************************"
Debug definition_du_mot("IncAs")
Debug "***************************************************************************************************************"
Debug definition_du_mot("DEFINISSAIENT")
Debug "***************************************************************************************************************"
Debug definition_du_mot("empaquetées")
Debug "***************************************************************************************************************"
Debug definition_du_mot("AXENE")
Debug "***************************************************************************************************************"
Debug definition_du_mot("aller-retour")
Debug "***************************************************************************************************************"
Debug definition_du_mot("azertyuiop")
Debug "***************************************************************************************************************"
End
Re: Récupérer la définition d'un mot français
Publié : dim. 30/mai/2021 1:43
par Ollivier
J'ignore pourquoi ça me stresse ces systèmes on-line. Pour ce type de truc, je préfère quelquechose d'embarqué. C'est sûr c'est x fois plus lourd (faire une base de définition, comme la gérer) mais, grosso modo, ça prend 8 méga pour tous les mots et accords, et 128 méga, pour des définitions d'une vingtaine de mots en moyenne.
Re: Récupérer la définition d'un mot français
Publié : lun. 31/mai/2021 9:14
par Kwai chang caine
Cool comme fonction
Fallait y penser

Encore faut il que le site soit perenne

en tout cas merci pour le partage

Re: Récupérer la définition d'un mot français
Publié : lun. 31/mai/2021 17:28
par jak64
Bonjour Kwai chang caine
Encore faut-il que nous aussi soyons pérennes mais ça ...
Re: Récupérer la définition d'un mot français
Publié : lun. 31/mai/2021 20:30
par Kwai chang caine
J'espere au moins autant que le site

Re: Récupérer la définition d'un mot français
Publié : mar. 01/juin/2021 14:29
par Micoute
PureBasic nous survivra.
Re: Récupérer la définition d'un mot français
Publié : mar. 01/juin/2021 16:48
par Kwai chang caine
Surtout nous

Re: Récupérer la définition d'un mot français
Publié : mar. 01/juin/2021 16:48
par Kwai chang caine
Surtout nous
Il aura pas trop de mal

Re: Récupérer la définition d'un mot français
Publié : mar. 01/juin/2021 17:32
par Micoute
Ca me rend un peu triste d'avoir vécu la majorité de ma vie sans connaître ce langage si facile à apprendre et qui fait des merveilles, si j'avais eut toutes ces choses quand j'étais analyste-programmeur ...
Re: Récupérer la définition d'un mot français
Publié : mar. 01/juin/2021 18:12
par jak64
Je comprends Micoute,
Mais comme on devait tout programmer, ça nous a permis de faire les tris bulle ou par insertion, de faire de l'assembleur, de nous poser des tas de questions car les langages de l'époque n'offraient pas la richesse de ceux d'aujourd'hui. Je me souviens d'avoir programmé, entre autres, en cobol, des calendriers quo sortaient imprimés sur des grosses imprimantes à bande pilote et là y'avait aucune fonction sur les dates, c'était formateur.
Re: Récupérer la définition d'un mot français
Publié : mar. 01/juin/2021 20:04
par Ar-S
PB peut toujours servir.
En ce moment je me suis replongé dans PHP/MySQL car j'ai rejoint un projet assez gros projet mêlant :
Unity/Oculust Quest et pour gérer tout ça, des API php qui communique avec MySQL.. Et pour upper les fichiers de mises à jour et des videos 360° j'ai fait un Client FTP en purebasic ! Ce dernier est juste excellent. En glissant déposant un fichier dessus,
- il l'up
- il génère un UUID
- il date le nom du fichier
- il renseigne la BDD en envoyant toutes ces infos à un API que j'ai fait en PHP.
Tout ça pour 668 ko !
PB est formidable et ses prochaines moutures, si elles permettent une installation sur ARM (Rpi par exemple), ça va être énorme.