From 1afeaa602285bbbce812d9fec029d1206203741c Mon Sep 17 00:00:00 2001 From: hina ntki Date: Fri, 16 Aug 2024 02:09:16 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=9E=E3=82=B9=E3=82=BF=E3=83=BC=E7=B7=A8?= =?UTF-8?q?=E9=9B=86=E3=81=A8=E3=83=97=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E5=86=8D=E7=94=9F=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot/app.py | 2 +- web/app.py | 13 ++- web/handlers.py | 21 +++- web/templates/quiz_master.html | 181 ++++++++++++++++++++++++--------- 4 files changed, 167 insertions(+), 50 deletions(-) diff --git a/bot/app.py b/bot/app.py index 658fabb..ff56162 100644 --- a/bot/app.py +++ b/bot/app.py @@ -138,7 +138,7 @@ async def send_quiz_message(channel, intro_audio_name, volume): await disable_button_after_timeout(message) async def disable_button_after_timeout(message): - await asyncio.sleep(20) + await asyncio.sleep(30) view = discord.ui.View() for action_row in message.components: for item in action_row.children: diff --git a/web/app.py b/web/app.py index 8a55ebb..25615cb 100644 --- a/web/app.py +++ b/web/app.py @@ -4,7 +4,7 @@ import traceback import secrets import random import requests -from flask import Flask, session, redirect, url_for, g, request, render_template, jsonify, flash +from flask import Flask, session, redirect, url_for, g, request, render_template, jsonify, flash, send_from_directory import logging from datetime import timedelta from db import get_db, close_connection, initialize_db, reset_active_sessions @@ -331,6 +331,16 @@ def process_csv(file_path): except Exception as e: logger.error(f'Error processing CSV file: {str(e)}') +# プレビュー用のエンドポイントを追加 +@app.route('/preview_audio/', methods=['GET']) +@login_required +def preview_audio_route(filename): + try: + # ファイルがアップロードされているディレクトリからファイルを返す + return send_from_directory(app.config['UPLOAD_FOLDER'], filename) + except Exception as e: + return jsonify({'error': 'ファイルのプレビュー中にエラーが発生しました'}), 500 + if __name__ == "__main__": try: app.run(debug=True, host='0.0.0.0', port=80) @@ -340,4 +350,3 @@ if __name__ == "__main__": except Exception as e: logger.error(f"例外が発生しました: {e}") traceback.print_exc(file=sys.stderr) - diff --git a/web/handlers.py b/web/handlers.py index b4b6765..c48492a 100644 --- a/web/handlers.py +++ b/web/handlers.py @@ -90,14 +90,33 @@ def update_quiz_master(): db = get_db() quiz_master = db.query(QuizMaster).filter_by(id=data['id']).first() if quiz_master: + old_full_audio_name = quiz_master.full_audio_name + old_intro_audio_name = quiz_master.intro_audio_name + + # フル音源名とイントロ音源名を更新 quiz_master.title = data['title'] quiz_master.full_audio_name = data['full_audio_name'] quiz_master.intro_audio_name = data['intro_audio_name'] quiz_master.keyword1 = data['keyword1'] quiz_master.keyword2 = data['keyword2'] quiz_master.keyword3 = data['keyword3'] + + # ファイル名を変更 + upload_folder = current_app.config['UPLOAD_FOLDER'] + if old_full_audio_name != data['full_audio_name']: + os.rename( + os.path.join(upload_folder, old_full_audio_name), + os.path.join(upload_folder, data['full_audio_name']) + ) + if old_intro_audio_name != data['intro_audio_name']: + os.rename( + os.path.join(upload_folder, old_intro_audio_name), + os.path.join(upload_folder, data['intro_audio_name']) + ) + db.commit() - return jsonify({'message': '更新が完了しました'}) + return jsonify({'message': '更新が完了しました'}) + return jsonify({'error': 'クイズマスタが見つかりません'}) def add_quiz_master(): data = request.json diff --git a/web/templates/quiz_master.html b/web/templates/quiz_master.html index 458cd2f..a4fe9ec 100644 --- a/web/templates/quiz_master.html +++ b/web/templates/quiz_master.html @@ -36,10 +36,28 @@ th { background-color: #f2f2f2; } + + #updateModal { + display: none; + position: fixed; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + background-color: white; + padding: 20px; + border: 1px solid #ddd; + box-shadow: 0px 0px 10px rgba(0,0,0,0.1); + } + + /* 音量スライダーのスタイル */ + #volumeSlider { + width: 100%; + }