JSON à la place de la page HTML

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

JSON à la place de la page HTML

Message par Kwai chang caine »

Bonjour à tous,

J'ai aussi posé la question sur le forum US. :wink:
J'ai un comportement "zarebi" quand je clique sur la recherche ou le lien "Savoir plus"
Au lieu d'avoir la page normale, j'ai un fichier JSON qui m'est proposé en téléchargement 8O
Et ça fait ça que dans le WebGadget, pas dans FF ou autre navigateur
Si "quinquin" sait pourquoi ???? et surtout comment soigner ce truc :?

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 1000, 800, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
    WebGadget(0, 10, 10, 980, 780, "https://cookidoo.fr/foundation/fr-FR") 
   
    Repeat 
    Until WaitWindowEvent() = #PB_Event_CloseWindow 
  EndIf
Je vous souhaite une bonne journée
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: JSON à la place de la page HTML

Message par venom »

Je ne suis pas fort dans le domaine, mais je pense qu'enfaite le fichier json stock les paramètres pour afficher la page (quand ça fonctionne sous FF etc...). Après peut être que le WebGadget n'est pas prévu pour ce type de méthode. :roll:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: JSON à la place de la page HTML

Message par Kwai chang caine »

Oui c'est un peu la réponse que j'ai eue :wink:
Apparemment comme le WebGadget est "Périmé" depuis pas mal de temps, il ne sait pas gérer certains codes, du coup, il remonte un JSON au lieu d'une page qu'il ne peut pas afficher :cry:
C'est vraiment dommage que FRED ai abandonné le moteur FF comme dans les vieilles versions :cry: c'était trop de boulot de mise à jour de ce que j'avais aussi compris....

En tout cas merci de ta réponse 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: JSON à la place de la page HTML

Message par Ar-S »

Le WebGadget en l'etat est franchement inutile. Si ça mise à jour n'est pas prévu, autant le supprimer. On est d'accord.
Mais par contre ton site retourne des résultats json quoi qu'il en soit. Aucune rapport avec le webgadget.
J'ai l'impression qu'il fonction sous API.
(voir API REST wikipedia)
Car il renvoie du json pour n'importe quel requete, même sans webgadget..

Code : Tout sélectionner

InitNetwork()

Procedure.s catchpage(terme$)
    
       UserUrl$ = "https://cookidoo.fr/search/fr-FR?context=recipes&countries=fr&query="+terme$
    
    Request = HTTPRequest(#PB_HTTP_Get, UserUrl$)
    If Request
        If HTTPInfo(Request, #PB_HTTP_StatusCode) = "200"
             HTML$ = HTTPInfo(Request, #PB_HTTP_Response)
           
            ProcedureReturn html$
            
        EndIf
    EndIf
    
EndProcedure

If OpenWindow(0, 0, 0, 1000, 800, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
    
     Debug catchpage("ravioles")
   
    Repeat 
    Until WaitWindowEvent() = #PB_Event_CloseWindow 
  EndIf

Si tu affiches le JSON, tu as bien le contenu de la page. (j'ai utilisé POSTMAN pour afficher ça correctement).

Code : Tout sélectionner

{
    "data": [
        {
            "id": "r552484",
            "title": "Ravioles de homard sauce Newburg",
            "rating": "5.0",
            "publishedAt": "2020-11-17T10:41:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/23c41d72-71e6-4632-b2f3-69899ace2dd4/Derivates/1d7c5c69-b9c1-4d6a-9c38-3467e72a3586"
                }
            ],
            "totalTime": 6000,
            "objectID": "r552484",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 1,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full"
            ]
        },
        {
            "id": "r289887",
            "title": "Ravioles de homard, sauce à la truffe",
            "rating": "5.0",
            "publishedAt": "2018-01-15T16:26:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/67CA1937-AEEA-48DA-9425-18C31012B85F/Derivates/8e892788-f312-4a1b-934c-d9fbad9c4303"
                }
            ],
            "totalTime": 7200,
            "objectID": "r289887",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 2,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full"
            ]
        },
        {
            "id": "r332445",
            "title": "Ravioles au poulet et au basilic",
            "rating": "3.8",
            "publishedAt": "2018-05-07T00:00:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/8AEE5C6F-FD47-4047-A749-DB1869E011EA/Derivates/63bddeac-a316-4f53-b471-debe645e9bfb"
                }
            ],
            "totalTime": 3600,
            "objectID": "r332445",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 3,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                ""
            ]
        },
        {
            "id": "r36987",
            "title": "Ravioles sauce au foie gras",
            "rating": "4.4",
            "publishedAt": "2017-12-11T00:00:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/EBD4E797-1AE6-4ED3-967C-B36F83B2F37A/Derivates/05CB7D8E-979E-464E-AF25-CCF6FED71A16"
                }
            ],
            "totalTime": 2400,
            "objectID": "r36987",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 4,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--half"
            ]
        },
        {
            "id": "r120391",
            "title": "Ravioles de volaille des Landes aux asperges blanches et morilles",
            "rating": "4.0",
            "publishedAt": "2016-06-23T00:00:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/vimdb/172027"
                }
            ],
            "totalTime": 8100,
            "objectID": "r120391",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 5,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                ""
            ]
        },
        {
            "id": "r303086",
            "title": "Ravioles de saint-jacques, sauce aigre-douce",
            "rating": "3.1",
            "publishedAt": "2018-03-19T00:00:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/41857D74-02E3-423E-9170-23020651CB16/Derivates/0494cb52-eff7-44a9-b048-c1aacc6e2b16"
                }
            ],
            "totalTime": 7500,
            "objectID": "r303086",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 6,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "",
                ""
            ]
        },
        {
            "id": "r359400",
            "title": "Ravioles végétales de moules, crémeux à l’ail d’Arleux",
            "rating": "3.0",
            "publishedAt": "2019-06-03T08:05:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/B8F1615C-AB40-4E02-95EF-4A277150312E/Derivates/8fa96fd2-4fa7-4e1b-b243-056f9297c9e3"
                }
            ],
            "totalTime": 3000,
            "objectID": "r359400",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 7,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "",
                ""
            ]
        },
        {
            "id": "r494227",
            "title": "Mantì (ravioles turques au bœuf)",
            "rating": "3.8",
            "publishedAt": "2020-02-12T09:23:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/916C3807-B38D-4395-A51E-2DFA0868A5BA/Derivates/ab187314-ba6c-4262-ae77-941e687c98fd"
                }
            ],
            "totalTime": 2700,
            "objectID": "r494227",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 8,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                ""
            ]
        },
        {
            "id": "r346907",
            "title": "Gratin de ravioles, céleri et poireaux",
            "rating": "4.3",
            "publishedAt": "2018-05-14T12:49:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/DE1EF30A-7AC0-4C49-984B-62F3FAF9B5B2/Derivates/44cac369-a055-4834-a5c0-37c5799a2a05"
                }
            ],
            "totalTime": 3900,
            "objectID": "r346907",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 9,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--half"
            ]
        },
        {
            "id": "r86586",
            "title": "Amuse bouche : ravioles de Saint-Jacques acidulées",
            "rating": "3.8",
            "publishedAt": "2015-01-26T14:20:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/FC318715-05FA-4346-B6C1-02BA5454679C/Derivates/e98996ee-5a66-472c-bf46-f29ba6810e40"
                }
            ],
            "totalTime": 3000,
            "objectID": "r86586",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 10,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                ""
            ]
        },
        {
            "id": "r560456",
            "title": "Papillotes de saumon, poireaux et ravioles",
            "rating": "4.2",
            "publishedAt": "2019-10-21T10:51:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/4F1F6755-8ECC-466A-AB98-D30C3F0071FF/Derivates/a1cd1c2c-bfae-4362-98ae-33d267f66cdc"
                }
            ],
            "totalTime": 1800,
            "objectID": "r560456",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 11,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                ""
            ]
        },
        {
            "id": "r244354",
            "title": "Dos de cabillaud en panure d'herbes, raviole et bouillon végétal (Demi-finale Thermostars 2017)",
            "rating": "5.0",
            "publishedAt": "2017-10-30T00:00:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/vimdb/232811"
                }
            ],
            "totalTime": 7200,
            "objectID": "r244354",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 12,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full"
            ]
        },
        {
            "id": "r70828",
            "title": "Soupe de fanes de radis et ses ravioles croquantes au chèvre",
            "rating": "3.4",
            "publishedAt": "2016-01-10T00:00:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/vimdb/83524"
                }
            ],
            "totalTime": 2700,
            "objectID": "r70828",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 13,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--half",
                ""
            ]
        },
        {
            "id": "r397763",
            "title": "Raviolis frits au crabe  ",
            "rating": "5.0",
            "publishedAt": "2018-09-17T13:40:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/3E213E1F-A6DB-43DD-ADA5-6CDCB6186340/Derivates/aca20b17-92b6-4b6e-9880-fe41c1291a6a"
                }
            ],
            "totalTime": 2400,
            "objectID": "r397763",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 14,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full"
            ]
        },
        {
            "id": "r151116",
            "title": "Ravioli vapeur au porc et au chou",
            "rating": "4.7",
            "publishedAt": "2017-05-22T10:20:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/C3F456A6-5C5E-4D39-9F70-273CBAA3C417/Derivates/F6E11C40-9324-46D1-9FF1-E6E5944C8552"
                }
            ],
            "totalTime": 6000,
            "objectID": "r151116",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 15,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--half"
            ]
        },
        {
            "id": "r474393",
            "title": "Ravioli de poireau, bouillon au citron",
            "rating": "4.0",
            "publishedAt": "2019-05-16T13:23:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/45B3A2C8-4815-4046-827A-44A6A8E87F34/Derivates/9f0e05e3-a52b-42da-a266-d29ecaf8dd6a"
                }
            ],
            "totalTime": 5700,
            "objectID": "r474393",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 16,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                ""
            ]
        },
        {
            "id": "r398462",
            "title": "Raviolis pékinois ",
            "rating": "4.7",
            "publishedAt": "2018-09-17T13:40:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/B4DCD71A-A88F-434A-84A6-9E5639A167B6/Derivates/5cc23d9d-7746-45bd-8ca2-121fcc1184b1"
                }
            ],
            "totalTime": 3600,
            "objectID": "r398462",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 17,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--half"
            ]
        },
        {
            "id": "r346008",
            "title": "Ravioli, on est lundi !",
            "rating": "4.2",
            "publishedAt": "2018-04-30T00:00:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/vimdb/254998"
                }
            ],
            "totalTime": 9000,
            "objectID": "r346008",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 18,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                ""
            ]
        },
        {
            "id": "r699075",
            "title": "Raviolis pékinois au porc, champignons noirs et poireaux",
            "rating": "4.6",
            "publishedAt": "2021-01-19T13:24:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/ras/Assets/0b5081b2-c9ac-4723-9380-425511afea3b/Derivates/7a6a8e15-b56b-4b83-bd33-c4722a7b63ab"
                }
            ],
            "totalTime": 2700,
            "objectID": "r699075",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 19,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--half"
            ]
        },
        {
            "id": "r133290",
            "title": "Ravioli maison",
            "rating": "4.3",
            "publishedAt": "2016-08-20T00:00:00Z",
            "descriptiveAssets": [
                {
                    "square": "https://assets.tmecosys.com/image/upload/{transformation}/img/recipe/vimdb/183908_746-0-3318-3318"
                }
            ],
            "totalTime": 8100,
            "objectID": "r133290",
            "queryID": "e3e232d9d2181d72181af81bb06bd303",
            "position": 20,
            "stars": [
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--full",
                "core-rating__point--half"
            ]
        }
    ]
}
~~~~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
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: JSON à la place de la page HTML

Message par Marc56 »

Une petite amélioration pour la lisibilité directe du JSON dans le Debug
utilisation de ParseJSON() et ComposeJSON(0, #PB_JSON_PrettyPrint))

Code : Tout sélectionner

InitNetwork()

Procedure.s catchpage(terme$)
    
    UserUrl$ = "https://cookidoo.fr/search/fr-FR?context=recipes&countries=fr&query="+terme$
    
    Request = HTTPRequest(#PB_HTTP_Get, UserUrl$)
    If Request
        If HTTPInfo(Request, #PB_HTTP_StatusCode) = "200"
            HTML$ = HTTPInfo(Request, #PB_HTTP_Response)
            ; ----------------------------------------
            ParseJSON(0, HTML$)
            Debug ComposeJSON(0, #PB_JSON_PrettyPrint)
            FreeJSON(0)
            ; ----------------------------------------
            ProcedureReturn html$
        EndIf
    EndIf
    
EndProcedure

If OpenWindow(0, 0, 0, 1000, 800, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
    
    Debug catchpage("ravioles")
    
    Repeat 
    Until WaitWindowEvent() = #PB_Event_CloseWindow 
EndIf
Ou aussi avec les outils de l'IDE

Code : Tout sélectionner

ParseJSON(0, HTML$) : ShowLibraryViewer("json", 0) : CallDebugger
:wink:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: JSON à la place de la page HTML

Message par Kwai chang caine »

Bonjour ARS
Ars a écrit :Mais par contre ton site retourne des résultats json quoi qu'il en soit. Aucune rapport avec le webgadget.
Que néni :mrgreen: Je me serais pas permis de déranger tout le monde si c'était le cas :wink:
Le probleme c'est que la majorité des liens qui sont "normaux" sont dans la partie "espace client connectés" donc tu n'y a pas accés et j'avais oublié :|

Mais regarde ce lien, il envoi bien la source HTML 8)

Code : Tout sélectionner

InitNetwork()

If OpenWindow(0, 0, 0, 1000, 800, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
 
 UserUrl$ = "https://cookidoo.fr/foundation/fr-FR"
  
 Request = HTTPRequest(#PB_HTTP_Get, UserUrl$)
 
 If Request

  If HTTPInfo(Request, #PB_HTTP_StatusCode) = "200"

   Debug HTTPInfo(Request, #PB_HTTP_Response)
   
  EndIf
  
 EndIf
  
 Repeat 
 Until WaitWindowEvent() = #PB_Event_CloseWindow 
 
EndIf
En fait il renvoi du JSON que dans certains liens, comme la recherche, le "voir plus", etc ... mais c'est loin d'être la majorité quand tu es connecté, crois moi :wink:

Je le sais car j'ai justement parcouru pas mal de liens du site, codé en conséquence, et paf ....je me suis trouvé dans cette situation :cry:
Mais seulement avec le WebGadget, car avec les navigateurs pas de JSON
Comme le dit FIRACE, si il ne sait pas lire le code il envoi le JSON :idea:

Je connaissais pas POSTMAN ça a l'air d'un bon outil 8O
En tout cas merci pour la réponse et ce logiciel 8)

Marc56 a écrit :Une petite amélioration pour la lisibilité directe du JSON dans le Debug
Hello "Morque", :D

Image

Aze wane againe, wine yes, fuck wane euguaine ize tou flaille ...
Merde....on est sur le forum Français :oops: :lol:

J'suis vraiment un jambon beurre de 3 semaines, j'ai oublié la bibliotheque JSON de PB :?
J'me suis tapé tout le parsing des JSON à la paluche :twisted: des fois...je me hais :twisted:

Par contre super cool ton utilisation du debugger avec la librairie JSON 8O
Encore un outil que je ne connaissais pas de PB, après plusieurs décennies d'utilisation quasi quotidienne :oops:
En fin de compte, FRED il aurait mis 3 boutons à l'IDE, KCC il se serait quand même éclaté comme une bête :mrgreen:
Ce qui est cool avec moi, c'est que même si on a pas vraiment la réponse à ma question, ça vaut toujours le coup de me répondre car on m'apprends presque toujours quelque chose :mrgreen: :lol:

Putain, si vous saviez ce que c'est fatiguant de faire de la programmation avec le QI d'un bulot de 10 jours ..... :oops:
Heureusement que tous les copains du forum, vous êtes là ....
car je me sens bien seul avec ma nouvelle idée par jour, et mon "budget mental" d'un chômeur en fin de droits
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre