Tentative de transcription d'une ligne de commande « Curl » Í l'aide de « urllib3 ».
2 réponses
Valrik
Bonjour Í tous,
je suis grand débutant en Python, Json et Graphql. Mes questions, donc,
pourront peut-être vous paraÍ®tre naͯves.
Je tente actuellement de programmer une petite application en lignes de
commandes (CLI) permettant de visualiser la grille des programmes de
Radio France. Openapi de Radio France, m'a fourni une clé afin de
pouvoir me connecter sur leur serveur Graphql.
Il existe également un « terrain de jeux » sur
https://openapi.radiofrance.fr/ avec des exemples. Il y a possibilité de
copier la requête et cela donne pour l'un des exemples :
Tu ne fais jamais rien de ces données, alors qu'il me semble qu'elles doivent partir vers le serveur (en tout cas, c'est ce que fait curl).
http = urllib3.PoolManager() r = http.request( 'GET',
S'il y a des données Í transmettre, il faut bien qu'elles soient quelque part. Avec GET, ce serait dans l'uri. Mais si j'en crois ta commande curl, c'est en POST qu'elles sont envoyées (Í cause de --data-binary), et c'est du JSON. Jette un oeil Í https://urllib3.readthedocs.io/en/stable/user-guide.html#json
'https://openapi.radiofrance.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">https://openapi.radiofrance.fr/v1/graphql?x-token=clé_que_je_ne_peux_pas_rendre_publique_pour_l'instant" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">https://openapi.radiofrance.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">https://openapi.radiofrance.fr/v1/graphql?x-token=clé_que_je_ne_peux_pas_rendre_publique_pour_l'instant', headers={ 'Accept-Encoding': 'gzip, deflate, br', 'Content-Type': 'application/json', 'Accept': 'application/json', 'Connection': 'keep-alive', 'DNT': '1', # Obsolète. 'Origin': 'https://openapi.radiofrance.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">https://openapi.radiofrance.fr' } ) Je n'est également rien trouvé sur « --compressed », mais je dois avouer que j'ai fait beaucoup moins de recherche.
Moi je fais "man curl" et je trouve : | --compressed | (HTTP) Request a compressed response using one of the algorithms | curl supports, and save the uncompressed document. If this | option is used and the server sends an unsupported encoding, | curl will report an error. | Mes 2 cents. -- Alain.
Valrik <nospam@valrik.invalid> writes:
je suis grand débutant en Python, Json et Graphql. Mes questions, donc,
pourront peut-être vous paraÍ®tre naͯves.
Je n'est également rien trouvé sur « --compressed », mais je dois avouer
que j'ai fait beaucoup moins de recherche.
Moi je fais "man curl" et je trouve :
| --compressed
| (HTTP) Request a compressed response using one of the algorithms
| curl supports, and save the uncompressed document. If this
| option is used and the server sends an unsupported encoding,
| curl will report an error.
|
Tu ne fais jamais rien de ces données, alors qu'il me semble qu'elles doivent partir vers le serveur (en tout cas, c'est ce que fait curl).
http = urllib3.PoolManager() r = http.request( 'GET',
S'il y a des données Í transmettre, il faut bien qu'elles soient quelque part. Avec GET, ce serait dans l'uri. Mais si j'en crois ta commande curl, c'est en POST qu'elles sont envoyées (Í cause de --data-binary), et c'est du JSON. Jette un oeil Í https://urllib3.readthedocs.io/en/stable/user-guide.html#json
'https://openapi.radiofrance.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">https://openapi.radiofrance.fr/v1/graphql?x-token=clé_que_je_ne_peux_pas_rendre_publique_pour_l'instant" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">https://openapi.radiofrance.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">https://openapi.radiofrance.fr/v1/graphql?x-token=clé_que_je_ne_peux_pas_rendre_publique_pour_l'instant', headers={ 'Accept-Encoding': 'gzip, deflate, br', 'Content-Type': 'application/json', 'Accept': 'application/json', 'Connection': 'keep-alive', 'DNT': '1', # Obsolète. 'Origin': 'https://openapi.radiofrance.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">https://openapi.radiofrance.fr' } ) Je n'est également rien trouvé sur « --compressed », mais je dois avouer que j'ai fait beaucoup moins de recherche.
Moi je fais "man curl" et je trouve : | --compressed | (HTTP) Request a compressed response using one of the algorithms | curl supports, and save the uncompressed document. If this | option is used and the server sends an unsupported encoding, | curl will report an error. | Mes 2 cents. -- Alain.
Valrik
Merci pour ta réponse. :-) Alain Ketterlin writes:
Je n'ai aucune idée de ce qu'est graphql.
C'est protocole qui permet de télé-charger uniquement les données qu'on désire, Í l'inverse d'un serveur web qui transfert toute la page. D'o͹ une économie de trafique. Et puis, cela doit être pratique pour l'élaboration d'un client lourd. Voir https://fr.wikipedia.org/wiki/GraphQL
Tu ne fais jamais rien de ces données, alors qu'il me semble qu'elles doivent partir vers le serveur (en tout cas, c'est ce que fait curl).
Ben, comme je l'ai écrit, je les ai placées un peu partout… Mais, rien Í faire… Je n'arrive Í rien ! Soit des message d'erreurs de la part de l'interpréteur Python, soit le serveur Graphql me répond que le lui raconte n'importe quoi ! L'exemple que j'ai donné, consistait en une requête vide. Et lÍ , le serveur me répond : « Bien, mais avec des données se serait mieux ! ».
r = http.request( 'GET',
S'il y a des données Í transmettre, il faut bien qu'elles soient quelque part. Avec GET, ce serait dans l'uri.
Je vais essayer de ce coté lÍ .
Mais si j'en crois ta commande curl, c'est en POST qu'elles sont
J'ai essayé ça aussi, mais la combinatoire devient énorme. Je n'ai donc sans doute pas testé toutes les possibilités.
envoyées (Í cause de --data-binary), et c'est du JSON. Jette un oeil Í
Non, ça ressemble Í du JSON, mais c'est du Graphql.
C'est protocole qui permet de télé-charger uniquement les données qu'on
désire, Í l'inverse d'un serveur web qui transfert toute la page. D'o͹
une économie de trafique. Et puis, cela doit être pratique pour
l'élaboration d'un client lourd.
Voir https://fr.wikipedia.org/wiki/GraphQL
Tu ne fais jamais rien de ces données, alors qu'il me semble qu'elles
doivent partir vers le serveur (en tout cas, c'est ce que fait curl).
Ben, comme je l'ai écrit, je les ai placées un peu partout… Mais, rien Í
faire… Je n'arrive Í rien ! Soit des message d'erreurs de la part de
l'interpréteur Python, soit le serveur Graphql me répond que le lui
raconte n'importe quoi ! L'exemple que j'ai donné, consistait en une
requête vide. Et lÍ , le serveur me répond : « Bien, mais avec des
données se serait mieux ! ».
r = http.request(
'GET',
S'il y a des données Í transmettre, il faut bien qu'elles soient quelque
part. Avec GET, ce serait dans l'uri.
Je vais essayer de ce coté lÍ .
Mais si j'en crois ta commande curl, c'est en POST qu'elles sont
J'ai essayé ça aussi, mais la combinatoire devient énorme. Je n'ai donc
sans doute pas testé toutes les possibilités.
envoyées (Í cause de --data-binary), et c'est du JSON. Jette un oeil Í
Non, ça ressemble Í du JSON, mais c'est du Graphql.
Merci pour ta réponse. :-) Alain Ketterlin writes:
Je n'ai aucune idée de ce qu'est graphql.
C'est protocole qui permet de télé-charger uniquement les données qu'on désire, Í l'inverse d'un serveur web qui transfert toute la page. D'o͹ une économie de trafique. Et puis, cela doit être pratique pour l'élaboration d'un client lourd. Voir https://fr.wikipedia.org/wiki/GraphQL
Tu ne fais jamais rien de ces données, alors qu'il me semble qu'elles doivent partir vers le serveur (en tout cas, c'est ce que fait curl).
Ben, comme je l'ai écrit, je les ai placées un peu partout… Mais, rien Í faire… Je n'arrive Í rien ! Soit des message d'erreurs de la part de l'interpréteur Python, soit le serveur Graphql me répond que le lui raconte n'importe quoi ! L'exemple que j'ai donné, consistait en une requête vide. Et lÍ , le serveur me répond : « Bien, mais avec des données se serait mieux ! ».
r = http.request( 'GET',
S'il y a des données Í transmettre, il faut bien qu'elles soient quelque part. Avec GET, ce serait dans l'uri.
Je vais essayer de ce coté lÍ .
Mais si j'en crois ta commande curl, c'est en POST qu'elles sont
J'ai essayé ça aussi, mais la combinatoire devient énorme. Je n'ai donc sans doute pas testé toutes les possibilités.
envoyées (Í cause de --data-binary), et c'est du JSON. Jette un oeil Í
Non, ça ressemble Í du JSON, mais c'est du Graphql.