This repository has been archived by the owner on Oct 20, 2019. It is now read-only.
forked from arlosi/FlaskAzure
/
runserver.py
77 lines (60 loc) · 2.01 KB
/
runserver.py
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"""
This script runs the FlaskWebProject1 application using a development server.
"""
from os import environ
from datetime import datetime
from flask import Flask, jsonify, abort
from skyfield import api as skyapi
from skyfield import named_stars
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
load = skyapi.Loader('./data')
ts = load.timescale()
planets = load('de405.bsp')
earth = planets['earth']
PRINCETON_EARTH = skyapi.Topos('40.3440 N', '74.6514 W')
STARS = [skyapi.NamedStar(star) for star in named_stars.named_star_dict.keys()]
def star_data(stars, loc, time):
altaz = [loc.at(time).observe(s).apparent().altaz() for s in stars]
return [(altaz_[0].degrees, altaz_[1].degrees) for altaz_ in altaz]
# data = []
# for star in stars:
# obs = princeton.at(now).observe(s)
# alt, az, d = obs.apparent().altaz()
# data.append((alt.radians, az.radians))
# return data
@app.route('/data/<int:time>/<string:lat>/<string:long>')
# TODO: /<float:azi>/<float:alt>/<float:radius>')
def get_data(time, lat, long): # , azi, alt, radius):
"""Returns star data near a certain position"""
# As of yet, does literally none of that.
try:
lat = float(lat)
long = float(long)
except ValueError:
print('wow')
abort(404)
location = earth + skyapi.Topos(lat, long)
dt = datetime.fromtimestamp(time)
dt = dt.replace(tzinfo=skyapi.utc)
t = ts.utc(dt)
return jsonify({
'type': 'FeatureCollection',
'features': [{
'geometry': {
'type': 'Point',
'coordinates': [star_az, star_alt],
},
'type': 'Feature',
'properties': {'mag': 1.337}
} for star_az, star_alt in star_data(STARS, location, t)]
})
if __name__ == '__main__':
HOST = environ.get('SERVER_HOST', 'localhost')
try:
PORT = int(environ.get('SERVER_PORT', '5555'))
except ValueError:
PORT = 5555
app.run(HOST, PORT)