Aller au contenu
Les Forums d'Infoclimat

Ce tchat, hébergé sur une plateforme indépendante d'Infoclimat, est géré et modéré par une équipe autonome, sans lien avec l'Association.
Un compte séparé du site et du forum d'Infoclimat est nécessaire pour s'y connecter.

API open data: wrong ip adress [RESOLU]


Picard
 Partager

Messages recommandés

Bonjour,

je n'arrive pas à faire fonctionner le script d'exemple de récupération des données via l'api open data.

J'ai bien généré une ip via la page dédiée. J'ai même généré 3 clés différentes: 2 pour les 2 ip différentes selon la machine depuis laquelle j'éxecute le code, et 1 clé redondante pour une des 2 machines

j’exécute le code suivant

Citation

import requests

# ~ token = 'MjzvARf5cXiWqzGu0kVYxOFidJWHXXXXX'
# ~ token = '1ZF9BavLmXXXXXXXqoHEYxcXMxaIxm3DZTQg'
token = 'Lkygr7NQkqGqj6zXXXXXXXXA0oOS5rYT9VHn9yYw'

url = "https://www.infoclimat.fr/opendata/?method=get&format=json&stations[]=000HF&start=2022-01-03&end=2022-01-04&token=%s"%token
response = requests.get(url)
response.json()

mais quelque soit la machine et la clé, j'ai l'erreur suivante

 

Citation

Traceback (most recent call last):
  File "/home/bpicard/anaconda3/lib/python3.8/site-packages/requests/models.py", line 910, in json
    return complexjson.loads(self.text, **kwargs)
  File "/home/bpicard/anaconda3/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/home/bpicard/anaconda3/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/home/bpicard/anaconda3/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./get_infoclimat.py", line 29, in <module>
    response.json()
  File "/home/bpicard/anaconda3/lib/python3.8/site-packages/requests/models.py", line 917, in json
    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: [Errno Expecting value] Wrong ip address: 0

 

 

et effectivement, l'objet response contient

Citation

In [2]: response
Out[2]: <Response [200]>

In [3]: response.content
Out[3]: b'Wrong ip address'

 

 

Question subsidiaire: je n'arrive pas à supprimer les clés via la page dédiée... je clique sur la poubelle, un pop-up d'avertissement apparaît (pour confirmer) et pourtant les 3 clés sont toujours là....

 

J'ai vu que certains d'entre vous ont réussi, je dois me planter qq part ^ ^.

une idée: @Marc09, @Fred59_, @libertykite  ?

 

 

 

 

 

 

Lien à poster
Partager sur d’autres sites

Salut @Picard,

J'ai pas vu comme ça au premier abord où ton code est faux.
Si ça peut aider, voici ma fonction en php qui a fonctionne de mon côté (A part le problème de la valeur vent_rafale qui est souvent null mais j'ai déjà signalé ça à l'équipe d'infoclimat)

 

 function importDatas()
    {
        $date = new \DateTime('now');
        $date->setTimezone(new \DateTimeZone('Europe/Paris'));
        $dateString = $date->format('y-m-d');  //2022-02-26

        $apiKey = $_ENV['API_INFOCLIMAT'];
        $url = 'https://www.infoclimat.fr/opendata/?method=get&format=json&stations[]=07020&stations[]=ME031&stations[]=000TZ&stations[]=ME105&stations[]=000IB&stations[]=000EC&stations[]=000S2&stations[]=000SR&stations[]=ME052&stations[]=000YJ&stations[]=000BX&stations[]=07117&stations[]=00098&stations[]=000D8&stations[]=000NQ&stations[]=07207&stations[]=000CO&stations[]=000O3&stations[]=000RG&stations[]=000AS&stations[]=000TQ&stations[]=ME017&stations[]=000GL&stations[]=000ST&stations[]=07314&stations[]=000LV&stations[]=000DM&stations[]=000DZ&stations[]=ME120&stations[]=00063&stations[]=000EV&stations[]=STATIC0003&stations[]=000MN&stations[]=000F3&stations[]=00010&stations[]=000F1&stations[]=07650&stations[]=000C4&stations[]=000BL&stations[]=000Y9&stations[]=07661&stations[]=000WB&stations[]=000EF&stations[]=07690&stations[]=000GD&stations[]=ME018&stations[]=ME057&stations[]=07761&stations[]=000SO&stations[]=000S9&stations[]=000UA&start=' . $dateString . '&end=' . $dateString . '&token=' . $apiKey;
        
        try {
            $response = $this->client->request('GET', $url);
        } catch (\Exception $e) {
            echo 'Problème de connection au service Infoclimmat.fr' . PHP_EOL;
            echo 'ERREUR => ' . $e->getMessage();
            return;
        }

        try {
            $body = $response->getBody();
        } catch (\Exception $e) {
            echo 'ERREUR => ' . $e->getMessage();
            return;
        }

        $remainingBytes = $body->getContents();
        $datas = json_decode($remainingBytes);
        return $datas;
    }

 

Lien à poster
Partager sur d’autres sites

nooooooon mais quel boulet :-/

je mettais l'adresse de mon routeur, erreur de newbie ... désolé...

maintenant, ça marche parfaitement,

merci pour le support @libertykite d'avoir répondu, ça m'a obligé à regarder tout ça de plus prés.

Lien à poster
Partager sur d’autres sites

Posté(e)
Colombier (42) , Alt. 1030 m
il y a 53 minutes, Picard a dit :

est-ce qu'il possible de modifier le titre de ce topic en [RESOLU] ?

 

Oui tu clic long sur le titre du topic (tu en es le créateur) et tu accèdes à l'éditeur

Lien à poster
Partager sur d’autres sites

  • Sebaas changed the title to API open data: wrong ip adress [RESOLU]
  • 1 year later...

Bonjour,

 

Je rencontre un problème similaire, lorsque j'essaie de télécharger le fichier depuis l'interface avec le token que j'ai créé à partir de mon adresse IP, ça fonctionne alors que quand j'essaie de collecter les fichiers en Python, mes fichiers contiennent juste "Wrong IP Address". J'ai pensé que le problème pouvait venir de l'adresse IPv6 donc j'ai essayé de forcer l'utilisation d'IPv4 mais ça ne résoud pas le problème.

Je fournis pourtant bien l'IP de mon ordinateur et non celle de mon routeur.

@Picard Est-ce que tu pourrais m'en dire plus sur la manière dont tu as résolu le problème ?

 

Merci pour votre aide !

 

Axel

 

import argparse
import json
import os
import sys
from datetime import date, datetime, timedelta
import requests
 
from ofunctions.network import set_ip_version
 
if __name__ == "__main__":
 
     # API URL
     api_url = "https://www.infoclimat.fr/opendata/?method=get&format=csv&stations[]=ME099&stations[]=000BV"
 
     # Token (replace with your actual token)
     token = "xxxxxxxx"
      
     # Start and end date
     start_date = datetime.strptime("2023-01-01", "%Y-%m-%d"
     end_date = datetime.strptime("2024-01-01", "%Y-%m-%d")
      
     # Delta for one week
     one_week_delta = timedelta(days=7)
      
     # Loop through date windows
     while start_date <= end_date:
          # Calculate the end date for the current week
          current_end_date = start_date + one_week_delta - timedelta(days=1)
     
          # Format the dates as strings
          start_date_str = start_date.strftime("%Y-%m-%d")
          current_end_date_str = current_end_date.strftime("%Y-%m-%d")
      
          local_filename = f"weather_data_{start_date_str}_{current_end_date_str}.csv"
     
          # Construct the API request URL
          request_url = f"{api_url}&start={start_date_str}&end={current_end_date_str}&token={token_2}"
          set_ip_version(4)
      
          # Make the API request
          response = requests.get(request_url)
     
          # Process the response (you can customize this part based on your needs)
          if response.status_code == 200:
               with open(local_filename, "wb") as file:
                    file.write(response.content)
               print(f"File downloaded successfully as {local_filename}")
          # Process the response content here, e.g., save it to a file or analyze the data
          else:
               print(f"Error collecting data. Status code: {response.status_code}")
               print(response.text) # Print the response content for debugging
 
          # Increment the start date for the next iteration
          start_date += one_week_delta
Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Partager

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...