Récupérer la définition d'un mot français

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Ar-S
Messages : 9476
Inscription : dim. 09/oct./2005 16:51
Contact :

Récupérer la définition d'un mot français

Message 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")
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Récupérer la définition d'un mot français

Message par venom »

Sympa, je ne connaissais pas cette API.
Merci du partage :wink:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
jak64
Messages : 85
Inscription : dim. 03/mai/2020 23:16

Re: Récupérer la définition d'un mot français

Message 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.
Avatar de l’utilisateur
jak64
Messages : 85
Inscription : dim. 03/mai/2020 23:16

Re: Récupérer la définition d'un mot français

Message 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
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Récupérer la définition d'un mot français

Message 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.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Récupérer la définition d'un mot français

Message par Kwai chang caine »

Cool comme fonction :D
Fallait y penser :idea:
Encore faut il que le site soit perenne :wink: en tout cas merci pour le partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
jak64
Messages : 85
Inscription : dim. 03/mai/2020 23:16

Re: Récupérer la définition d'un mot français

Message par jak64 »

Bonjour Kwai chang caine

Encore faut-il que nous aussi soyons pérennes mais ça ...
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Récupérer la définition d'un mot français

Message par Kwai chang caine »

J'espere au moins autant que le site :wink: :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Récupérer la définition d'un mot français

Message par Micoute »

PureBasic nous survivra.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Récupérer la définition d'un mot français

Message par Kwai chang caine »

Surtout nous :wink: :mrgreen:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Récupérer la définition d'un mot français

Message par Kwai chang caine »

Surtout nous :wink:
Il aura pas trop de mal :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Récupérer la définition d'un mot français

Message 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 ...
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
jak64
Messages : 85
Inscription : dim. 03/mai/2020 23:16

Re: Récupérer la définition d'un mot français

Message 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.
Avatar de l’utilisateur
Ar-S
Messages : 9476
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Récupérer la définition d'un mot français

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre