| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- from flask import Flask, render_template, jsonify
- from datetime import datetime
- from sqlalchemy import create_engine,func
- from sqlalchemy.orm import sessionmaker
- from Coin import Coin, CoinMarketPosition
- app = Flask(__name__)
- engine = create_engine('sqlite:///coins.db', echo=False, connect_args={'check_same_thread':False})
- # create a Session
- Session = sessionmaker(bind=engine)
- session = Session()
- def result50(date=datetime.now()):
- result = []
- for x in session.query(CoinMarketPosition,Coin).filter(func.Date(CoinMarketPosition.date) == date.date()).distinct(Coin.id).join(Coin).order_by(CoinMarketPosition.market_caps.desc()).limit(50).all():
- result.append((x[1].symbol, x[0].market_caps, x[0].prices, x[1].id))
- return result
-
- @app.route("/")
- @app.route('/top50async/<date>/')
- def top50async(date="2020-01-12"):
- return render_template('async_list.html', date=date )
- @app.route('/top50json/<date>/')
- def top50json(date):
- d = datetime.strptime(date, "%d-%m-%Y")
- results = result50(d)
- arr = [{'name':x[0],'marketCap':x[1], 'prices':x[2], 'id':x[3]} for x in results]
- return jsonify(arr)
- @app.route('/coin/<id>/')
- def coinHistory(id):
- results = session.query(CoinMarketPosition, Coin).filter(Coin.id==id).join(CoinMarketPosition).all()
- return jsonify([ {'date':marketPos[0].date,'prices':marketPos[0].prices, 'name':marketPos[1].symbol} for marketPos in results])
- @app.route('/coin/chart/<id>/')
- def coinChart(id="bitcoin"):
- currentCoin = session.query(Coin).filter(Coin.id==id).first()
- nextRowId = currentCoin.row_id + 1
- nextCoin = session.query(Coin).filter(Coin.row_id==nextRowId).first()
- return render_template('chart_coin.html', id=id , nextId=nextCoin.id)
- if __name__ == '__main__':
- app.run(debug=True)
|