Update
This commit is contained in:
parent
2c398d0a21
commit
65e9c80647
3 changed files with 158 additions and 4 deletions
39
app.py
39
app.py
|
|
@ -1,13 +1,46 @@
|
||||||
import os
|
import os
|
||||||
from flask import Flask
|
import sys
|
||||||
|
|
||||||
|
from flask import Flask, request
|
||||||
|
from contextlib import closing
|
||||||
|
from urllib.request import urlopen
|
||||||
|
import json
|
||||||
|
from config import *
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route('/config')
|
||||||
|
def config(): # put application's code here
|
||||||
|
return str(cf.INDENT)+str(cf.WEATHER)+str(cf.WINDDIRS)
|
||||||
|
|
||||||
@app.route('/')
|
@app.route('/')
|
||||||
def hello_world(): # put application's code here
|
def hello_world(): # put application's code here
|
||||||
return 'Hello World!'
|
return 'Hello World!'
|
||||||
|
|
||||||
|
#TODO Recherche d'une ville
|
||||||
|
@app.route('/searchCity', methods = ['POST', 'GET'])
|
||||||
|
def searchCity(): # put application's code here
|
||||||
|
if request.method == 'POST':
|
||||||
|
city = request.form['search']
|
||||||
|
else:
|
||||||
|
city = request.args.get('search')
|
||||||
|
with closing(urlopen(API_LOCATION_CITIES + API_TOKEN + METEOCONCEPT_TOKEN + API_SEARCH + city)) as f:
|
||||||
|
cities = json.loads(f.read())['cities']
|
||||||
|
return json.dumps(cities, indent=INDENT, sort_keys=True)
|
||||||
|
|
||||||
|
|
||||||
|
#TODO Informations sur la Ville
|
||||||
|
|
||||||
|
#TODO Information sur la ville et Ephéméride
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
port = int(os.environ.get('PORT', 33507))
|
PORT = int(os.environ.get('PORT', 33507))
|
||||||
app.run(host='0.0.0.0', port=port, debug=True)
|
# On Linux or MAC 'export METEOCONCEPT_TOKEN=...' (check shell echo $METEOCONCEPT_TOKEN)
|
||||||
|
# On Windows 'set METEOCONCEPT_TOKEN=...' (check on Powershell echo $Env:METEOCONCEPT_TOKEN)
|
||||||
|
METEOCONCEPT_TOKEN = int(os.environ.get('METEOCONCEPT_TOKEN', -1))
|
||||||
|
if METEOCONCEPT_TOKEN == -1:
|
||||||
|
print('Env variable METEOCONCEPT_TOKEN not passed')
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
print('Env variable METEOCONCEPT_TOKEN passed')
|
||||||
|
app.run(host='0.0.0.0', port=PORT, debug=True)
|
||||||
121
config.py
Normal file
121
config.py
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
# JSON DUMPS
|
||||||
|
INDENT = 4
|
||||||
|
|
||||||
|
# API URL
|
||||||
|
API_TOKEN = '?token='
|
||||||
|
API_SEARCH = '&search='
|
||||||
|
|
||||||
|
API_LOCATION_CITIES = 'https://api.meteo-concept.com/api/location/cities'
|
||||||
|
API_LOCATION_CITY = 'https://api.meteo-concept.com/api/location/city'
|
||||||
|
API_EPHEMERIDE = 'https://api.meteo-concept.com/api/ephemeride/1'
|
||||||
|
|
||||||
|
# STATIC VARIABLES
|
||||||
|
WINDDIRS = [
|
||||||
|
'Nord',
|
||||||
|
'Nord-Nord-Est',
|
||||||
|
'Nord-Est',
|
||||||
|
'Est-Nord-Est',
|
||||||
|
'Est',
|
||||||
|
'Est-Sud-Est',
|
||||||
|
'Sud-Est',
|
||||||
|
'Sud-Sud-Est',
|
||||||
|
'Sud',
|
||||||
|
'Sud-Sud-Ouest',
|
||||||
|
'Sud-Ouest',
|
||||||
|
'Ouest-Sud-Ouest',
|
||||||
|
'Ouest',
|
||||||
|
'Ouest-Nord-Ouest',
|
||||||
|
'Nord-Ouest',
|
||||||
|
'Nord-Nord-Ouest',
|
||||||
|
'Nord'
|
||||||
|
]
|
||||||
|
WEATHER = {
|
||||||
|
0: "Soleil",
|
||||||
|
1: "Peu nuageux",
|
||||||
|
2: "Ciel voilé",
|
||||||
|
3: "Nuageux",
|
||||||
|
4: "Très nuageux",
|
||||||
|
5: "Couvert",
|
||||||
|
6: "Brouillard",
|
||||||
|
7: "Brouillard givrant",
|
||||||
|
10: "Pluie faible",
|
||||||
|
11: "Pluie modérée",
|
||||||
|
12: "Pluie forte",
|
||||||
|
13: "Pluie faible verglaçante",
|
||||||
|
14: "Pluie modérée verglaçante",
|
||||||
|
15: "Pluie forte verglaçante",
|
||||||
|
16: "Bruine",
|
||||||
|
20: "Neige faible",
|
||||||
|
21: "Neige modérée",
|
||||||
|
22: "Neige forte",
|
||||||
|
30: "Pluie et neige mêlées faibles",
|
||||||
|
31: "Pluie et neige mêlées modérées",
|
||||||
|
32: "Pluie et neige mêlées fortes",
|
||||||
|
40: "Averses de pluie locales et faibles",
|
||||||
|
41: "Averses de pluie locales",
|
||||||
|
42: "Averses locales et fortes",
|
||||||
|
43: "Averses de pluie faibles",
|
||||||
|
44: "Averses de pluie",
|
||||||
|
45: "Averses de pluie fortes",
|
||||||
|
46: "Averses de pluie faibles et fréquentes",
|
||||||
|
47: "Averses de pluie fréquentes",
|
||||||
|
48: "Averses de pluie fortes et fréquentes",
|
||||||
|
60: "Averses de neige localisées et faibles",
|
||||||
|
61: "Averses de neige localisées",
|
||||||
|
62: "Averses de neige localisées et fortes",
|
||||||
|
63: "Averses de neige faibles",
|
||||||
|
64: "Averses de neige",
|
||||||
|
65: "Averses de neige fortes",
|
||||||
|
66: "Averses de neige faibles et fréquentes",
|
||||||
|
67: "Averses de neige fréquentes",
|
||||||
|
68: "Averses de neige fortes et fréquentes",
|
||||||
|
70: "Averses de pluie et neige mêlées localisées et faibles",
|
||||||
|
71: "Averses de pluie et neige mêlées localisées",
|
||||||
|
72: "Averses de pluie et neige mêlées localisées et fortes",
|
||||||
|
73: "Averses de pluie et neige mêlées faibles",
|
||||||
|
74: "Averses de pluie et neige mêlées",
|
||||||
|
75: "Averses de pluie et neige mêlées fortes",
|
||||||
|
76: "Averses de pluie et neige mêlées faibles et nombreuses",
|
||||||
|
77: "Averses de pluie et neige mêlées fréquentes",
|
||||||
|
78: "Averses de pluie et neige mêlées fortes et fréquentes",
|
||||||
|
100: "Orages faibles et locaux",
|
||||||
|
101: "Orages locaux",
|
||||||
|
102: "Orages fort et locaux",
|
||||||
|
103: "Orages faibles",
|
||||||
|
104: "Orages",
|
||||||
|
105: "Orages forts",
|
||||||
|
106: "Orages faibles et fréquents",
|
||||||
|
107: "Orages fréquents",
|
||||||
|
108: "Orages forts et fréquents",
|
||||||
|
120: "Orages faibles et locaux de neige ou grésil",
|
||||||
|
121: "Orages locaux de neige ou grésil",
|
||||||
|
122: "Orages locaux de neige ou grésil",
|
||||||
|
123: "Orages faibles de neige ou grésil",
|
||||||
|
124: "Orages de neige ou grésil",
|
||||||
|
125: "Orages de neige ou grésil",
|
||||||
|
126: "Orages faibles et fréquents de neige ou grésil",
|
||||||
|
127: "Orages fréquents de neige ou grésil",
|
||||||
|
128: "Orages fréquents de neige ou grésil",
|
||||||
|
130: "Orages faibles et locaux de pluie et neige mêlées ou grésil",
|
||||||
|
131: "Orages locaux de pluie et neige mêlées ou grésil",
|
||||||
|
132: "Orages fort et locaux de pluie et neige mêlées ou grésil",
|
||||||
|
133: "Orages faibles de pluie et neige mêlées ou grésil",
|
||||||
|
134: "Orages de pluie et neige mêlées ou grésil",
|
||||||
|
135: "Orages forts de pluie et neige mêlées ou grésil",
|
||||||
|
136: "Orages faibles et fréquents de pluie et neige mêlées ou grésil",
|
||||||
|
137: "Orages fréquents de pluie et neige mêlées ou grésil",
|
||||||
|
138: "Orages forts et fréquents de pluie et neige mêlées ou grésil",
|
||||||
|
140: "Pluies orageuses",
|
||||||
|
141: "Pluie et neige mêlées à caractère orageux",
|
||||||
|
142: "Neige à caractère orageux",
|
||||||
|
210: "Pluie faible intermittente",
|
||||||
|
211: "Pluie modérée intermittente",
|
||||||
|
212: "Pluie forte intermittente",
|
||||||
|
220: "Neige faible intermittente",
|
||||||
|
221: "Neige modérée intermittente",
|
||||||
|
222: "Neige forte intermittente",
|
||||||
|
230: "Pluie et neige mêlées",
|
||||||
|
231: "Pluie et neige mêlées",
|
||||||
|
232: "Pluie et neige mêlées",
|
||||||
|
235: "Averses de grêle",
|
||||||
|
}
|
||||||
|
|
@ -1 +1 @@
|
||||||
Flask==2.0.2
|
Flask==2.0.2
|
||||||
Loading…
Add table
Add a link
Reference in a new issue