Bonjour,

je récupère des informations d'une API, mais cette dernière n'envoie pas toujours toutes les valeurs.

Dans mon cas, je lui demande de récupérer le copyright mais l'information n'existe pas tout le temps, j'ai donc cette erreur KEY ERROR: 'copyright' qui est normale.

Ma question est comment je peux faire une condition "if" (lors du formatage du json reçu), si il manque une information ?

Merci par avance,

Jean Christophe

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
 
import requests
import webbrowser
 
""" Statut des réponses
Les codes de retour HTTP de l'API sont : 200 si la requête a été acceptée et que des données sont retournées ; un code de la centaine des 400 si la requête est erronée ou le code 500 s'il y a une erreur du côté du serveur. Les codes suivants sont actuellement utilisés :
 
200: OK
400: Paramètre manquant, ou valeur incorrecte.
401: Authentification nécessaire (token absent ou invalide)
403: Action non autorisée (URL non autorisée avec votre abonnement)
404: Page inaccessible (URL inconnue)
500: Erreur interne au serveur, contactez-nous
503: L'API est momentanément indisponible, réessayez dans quelques minutes
 
"""
class ApiNasa:
 
    #copyright = ''
 
    def __init__(self):
 
        #self.copyright = copyright
        self.date = date
        self.explanation = explanation
        self.url_hdimage = url_hdimage
        self.url_imageslow = url_imageslow
 
    def format_response_nasa(apod):
        #Formattage des informations à recevoir: API NASA
        try:
            #ApiNasa.copyright = apod ['copyright']
            ApiNasa.date = apod ['date']
            ApiNasa.explanation = apod ['explanation']
            ApiNasa.url_hdimage = apod ['hdurl']
            ApiNasa.url_imageslow = apod ['url']
            #webbrowser.open_new(url_hdimage)
        except KeyError as e:
            print('Erreur:',e)
        return """"Copyright:\t" + str(copyright) + '\n' +""" "Date:\t\t" + str(ApiNasa.date) + '\n' + "explanation:\t" + str(ApiNasa.explanation) + '\n\n' + "UrlHdImage:\t" + str(ApiNasa.url_hdimage) + '\n' + "UrlImageSlow:\t" + str(ApiNasa.url_imageslow) + '\n'
 
    def get_nasa_api():
        # Connexion à l'api de la NASA
        nasa_key = 'gygr7huhu8huh986ghggez4'
        url_planetary = 'https://api.nasa.gov/planetary/apod?api_key={}'.format(nasa_key)
        send_requests = requests.get(url_planetary)
        apod_data_json = send_requests.json()
        print(apod_data_json)
        print(ApiNasa.format_response_nasa(apod_data_json))
        #return
 
def main():
    ApiNasa.get_nasa_api()
    print(ApiNasa.date)
    print(ApiNasa.url_imageslow)
 
if __name__ == "__main__":
    print("\nMy script is directly executed...\n ")
    main()
else:
    print("My script is imported by an other module... ")