from flask import Flask, jsonify, request, render_template import yaml import json import os app = Flask(__name__) LEADERBOARD_FILE = './data/leaderboard.yaml' if not os.path.exists(LEADERBOARD_FILE): with open(LEADERBOARD_FILE, 'w') as f: yaml.safe_dump([], f) def read_leaderboard(): with open(LEADERBOARD_FILE, 'r') as f: return yaml.load(f, Loader=yaml.UnsafeLoader) or [] def write_leaderboard(data): with open(LEADERBOARD_FILE, 'w') as f: yaml.safe_dump(data, f) @app.route('/api/leaderboard', methods=['POST']) def add_to_leaderboard(): new_entry = request.json if not new_entry or 'name' not in new_entry or 'score' not in new_entry: return jsonify({'error': 'Name and score are required'}), 400 leaderboard = read_leaderboard() leaderboard.append(new_entry) write_leaderboard(leaderboard) return jsonify({'message': 'Added successfully', 'leaderboard': leaderboard}), 201 @app.route('/api/leaderboard', methods=['GET']) def get_leaderboard(): leaderboard = read_leaderboard() leaderboard_sorted = sorted(leaderboard, key=lambda x: x['score'], reverse=True) return jsonify({'leaderboard': leaderboard_sorted}) @app.route('/questions') def show_questions(): with open('./data/quizz.json', 'r') as file: questions = json.load(file) return render_template('quiz.html', questions=questions) @app.route('/softwares_data') def show_questions(): with open('./data/softwares.json', 'r') as file: softwares = json.load(file) return render_template('pokemon.html', data=softwares) if __name__ == '__main__': app.run(debug=True, port=8080)