47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
|
from flask import Flask, jsonify, request
|
||
|
from flask_cors import CORS
|
||
|
from models import db, AimeCard, Mai2ProfileDetail, Mai2ItemCard
|
||
|
import yaml
|
||
|
|
||
|
with open('config.yaml', 'r') as file:
|
||
|
config = yaml.safe_load(file)
|
||
|
app = Flask(__name__)
|
||
|
app.config['SQLALCHEMY_DATABASE_URI'] = config['database']['uri']
|
||
|
db.init_app(app)
|
||
|
CORS(app)
|
||
|
|
||
|
|
||
|
@app.route('/api/query', methods=['GET'])
|
||
|
def query_info():
|
||
|
access_code = request.args.get('accesscode')
|
||
|
card = AimeCard.query.filter_by(access_code=access_code).first()
|
||
|
|
||
|
if not card:
|
||
|
return jsonify({'message': 'Access code not found'}), 404
|
||
|
|
||
|
latest_detail = Mai2ProfileDetail.query.filter_by(user=card.user).order_by(Mai2ProfileDetail.id.desc()).first()
|
||
|
|
||
|
item_cards = Mai2ItemCard.query.filter_by(user=card.user).all()
|
||
|
items = [
|
||
|
{'cardId': item.cardId, 'cardTypeId': item.cardTypeId, 'startDate': item.startDate, 'endDate': item.endDate} for
|
||
|
item in item_cards]
|
||
|
|
||
|
response_data = {
|
||
|
'user': card.user,
|
||
|
'details': {
|
||
|
'userName': latest_detail.userName if latest_detail else None,
|
||
|
'playerRating': latest_detail.playerRating if latest_detail else None,
|
||
|
'playCount': latest_detail.playCount if latest_detail else None,
|
||
|
'lastRomVersion': latest_detail.lastRomVersion if latest_detail else None,
|
||
|
'lastDataVersion': latest_detail.lastDataVersion if latest_detail else None,
|
||
|
'banstate': latest_detail.banstate if latest_detail else None,
|
||
|
},
|
||
|
'items': items,
|
||
|
}
|
||
|
|
||
|
return jsonify(response_data)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
app.run(host=config['flask']['host'], port=config['flask']['port'], debug=True) # 允许从外部访问
|