30

• Folco roule un e-patin à Kevin !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

lovelovelovelovelovelovelovelovelovelove

Bon ben impec, plus qu'à mettre ça proprement dans une classe, dans une fenêtre à part même, putain ça va chier des bulles carrées, merci encore ! smile

31

Bon, par contre comme j'y connais rien en web, j'ai deux questions.
Pour situer les choses, j'ai à peu-près 1000 requêtes à faire, dont la réponse fait 80 à 100 octets de data (je n'ai aucune idée de l'overhead du protocole HTTP).

Je voudrais savoir si je peux lancer toutes les requêtes à la fois pour gagner du temps :
- côté connection, je risque pas de me faire jeter par les serveurs, ou de faire paniquer ma carte réseau ?
- côté programme, comment faire pour apairer les requêtes et les réponses, si je ne fais qu'écouter un signal identique pour toutes les réponses ?

Pour la seconde question, la réponse est certainement dans la doc des classes que j'ai mises en lien en ./25, mais n'y connaissant rien en HTTP, je comprends pas les tenants et aboutissants des headers, des attributs etc...

Merci d'avance. smile

32

Folco (./31) :
- côté connection, je risque pas de me faire jeter par les serveurs, ou de faire paniquer ma carte réseau ?

1000 en même temps, c'est sûr que le serveur ne va pas aimer!

Traditionnellement, dans les navigateurs, la limite était de 2 connexions simultanées au même site. Il me semblerait que ça ait été relâché un peu récemment (à vérifier), mais plus de 5 connexions à la fois ne sont en aucun cas une bonne idée.

Ta carte réseau n'est normalement pas le facteur limitant.

- côté programme, comment faire pour apairer les requêtes et les réponses, si je ne fais qu'écouter un signal identique pour toutes les réponses ?
La manière la plus efficace est probablement d'utiliser des lambdas C++11 pour tes signaux (ce qui te permet d'avoir accès aux variables locales de la méthode qui crée la connexion signal-slot, normalement la même qui crée aussi ta connexion réseau). Sinon, tu as aussi QObject::sender(), mais les experts disent que c'est lent.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

33

Merci beaucoup ! top

34

Si tu lances toutes les connexions simultanément, tu as toutes les chances de te faire jeter voire blacklister, ouais tongue

À vrai dire, difficile de savoir sans tester, mais même en limitant le nombre de connexions simultanées 1000 requêtes successives sur une courte période de temps ça peut déclencher un truc côté serveur. Qu'en pensent les autres ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

35

(euh, en fait ça serait dans les ~3500 fear)

D'un autre côté, s'il me faut trois jours pour faire un getter des prix du marché sur steam, je suis pas rendu ><
Et ils font comment, les sites comme SteamAPI, ils ont un accord avec Steam ?

36

Je vois trois possibilités :

- soit Steam n'a aucun mécanisme qui limite les accès massifs. Peu probable pour un site de cette taille.
- soit ils ont effectivement un accord avec Steam.
- soit ils utilisent des astuces, genre une répartition des requêtes sur plein d'IP différentes.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

37

Oué, donc limite faudrait que j'évite quoi sorry
Et étudier sérieusement la possibilité SteamAPI...

38

Ben ça dépend, en pratique il se peut qu'ils laissent passer. Mais au doigt mouillé, je dirais que 3500 requêtes c'est suffisant pour qu'un truc automatisé détecte que t'es en train d'aspirer leur infos, et généralement ceux qui font des sites web n'aiment pas beaucoup ^^
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

39

Même si c'est avec des URL du type de celle donnée par RHJPP : http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=M4A4%20%7C%20Desolate%20Space%20%28Well-Worn%29

Ca retourne du JSON, c'est public, donc je dirais que c'est étudié pour ©, non ?

40

Ce n'est pas parce que c'est accessible publiquement que c'est un buffet à volonté pour autant, hein grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

41

Ok merci. Je connais pas bien les us et coutume du web ^^

42

Bon, question récupération à la mano, maintenant ^^

Je veux utiliser la requête de "Market Items", cf la liste des liens à gauche de cette page : https://steamapis.com/developers
Attention, il y a un 'S' à la fin de Item.

Je veux exécuter la requête qui donne des détails, donc d'après la doc de cet entry point, avec ?format=compact
Si j'ajoute "?format=compact" à la fin de ma clé, il me dit que ma clé est invalide : https://api.steamapis.com/market/items/730?api_key=clef?format=compact
Si j'ajoute ça avant ma clé, il me dit qu'il lui manque l'argument clé : https://api.steamapis.com/market/items/730?format=compact?api_key=**ma clé**

Donc question, comment former cette URL ? Ils ont du partir du principe que c'était évident, donc pas la peine d'expliquer grin

Merci d'avance.


Et merci Godzil \o/ grin boing

43

(je me suis permis d'éditer ton message pour supprimer ta clef)


Les URL se décomposent en plusieurs morceaux : [schéma]://[nom_du_serveur]/[chemin]?[requête] (on peut même ajouter [schéma]://[login]:[password]@[nom_du_serveur]/[chemin]?[requête] )

La requête est sous la forme argument1=valeur1&argument2=valeur2&argument3=valeur3…
La tienne est sous argument1=valeur1?argument2=valeur2?argument3=valeur3… (api_key=clef?format=compact)
Il faut donc mettre api_key=clef&format=compact pour que ça fonctionne.
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

44

tu dois séparer les arguments entre eux avec &, ? sépare juste les arguments de l'url, l'ordre n'importe pas
et la le mec il le pécho par le bras et il lui dit '

45

Merci à vous. Ca cartonne du tonnerre !!! lovelovelove

ps -> ah, et merci pour la clé tripaf

46

Putain oO
400 ko la string en réponse de ma requête. Et je dois tout parser. couic

47

Huh ? Qu'est-ce qu'il y a dedans pour que ce soit aussi gros ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

48

http://www.mirari.fr/KrI2
Tous les items et leurs prix en vente sur le Steam Market pour Counter-Strike:GO.
Heureusement c'est du JSON (c'était évident pour tout le monde, sauf pour moi grin), et Qt a des classes pour parser ça. smile

49

Ah oui OK, tu récupères tout en une fois, je n'avais pas pigé.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

50

C'est sûrement mieux que de faire des milliers de requêtes pour tout aspirer. wink
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

51

Yup. En passant par SteamAPIs.com smile

Un grand merci pour toute votre aide, le web et moi c'est pas ça côté programmation, c'est même une première ^^

52

Tiens, je fais la requête nécessaire en HTTPS. Est-ce que ça veut dire que Qt utilise SSL sans me le dire ?

(merci de répondre par oui ou par non avant tout exposé technique, je comprends déjà à peine la question que j'ai posée #triclasse#)

53

oui (tout comme ton navigateur)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

54

Ok, merci beaucoup !