from flask import Flask, request, Markup, abort, jsonify, send_from_directory from flask_cors import CORS import logging from logging.config import dictConfig import sys, os import base64 import traceback DATA_ROOT = "./" dictConfig({ 'version': 1, 'formatters': {'default': { 'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s', }}, 'handlers': {'wsgi': { 'class': 'logging.StreamHandler', 'stream': 'ext://flask.logging.wsgi_errors_stream', 'formatter': 'default' }}, 'root': { 'level': 'DEBUG', 'handlers': ['wsgi'] } }) app = Flask(__name__) @app.route("/") def static_dir(path): return send_from_directory("../docs", path) @app.route('/', methods=['GET']) def redirect_to_index(): return send_from_directory("../frontend/dist", 'index.html') CORS(app, resources={r"/*": {"origins": "*"}}) ## !!!!!!!!!!! COLABのプロキシがRoot直下のパスしか通さない??? !!!!!! ## !!!!!!!!!!! Bodyで参照、設定コマンドを代替する。 !!!!!! @app.route('/api', methods=['POST']) def api(): try: print("POST REQUEST PROCESSING....\n") command = request.json['command'] print(request) # GET VOICE if command == "GET_VOICE": title = request.json['title'] prefix = request.json['prefix'] index = request.json['index'] data_dir = os.path.join(DATA_ROOT, title) os.makedirs(data_dir,exist_ok=True) filename = f"{prefix}{index:03}.zip" fullpath = os.path.join(data_dir, filename) is_file = os.path.isfile(fullpath) if is_file == False: data = { "message":"NOT_FOUND", } return jsonify(data) f = open(fullpath, 'rb') data = f.read() dataBase64 = base64.b64encode(data).decode('utf-8') data = { "message":"OK", "data":dataBase64, } return jsonify(data) # POST VOICE if command == "POST_VOICE": title = request.json['title'] prefix = request.json['prefix'] index = request.json['index'] data = base64.b64decode(request.json['data']) data_dir = os.path.join(DATA_ROOT, title) os.makedirs(data_dir,exist_ok=True) filename = f"{prefix}{index:03}.zip" fullpath = os.path.join(data_dir, filename) f = open(fullpath, 'wb') f.write(data) f.close() data = { "message":"OK_TEST" } return jsonify(data) except Exception as e: print("REQUEST PROCESSING!!!! EXCEPTION!!!", e) print(traceback.format_exc()) return str(e) ## !!!!!!!!!!! COLABのプロキシがRoot直下のパスしか通さない??? !!!!!! ## !!!!!!!!!!! Bodyで参照、設定コマンドを代替する。 !!!!!! # @app.route('/api/voice///', methods=['POST']) # def post_voice(title, prefix, index): # try: # filename = f"{prefix}{index:03}.zip" # data_dir = os.path.join(DATA_ROOT, title) # os.makedirs(data_dir,exist_ok=True) # fullpath = os.path.join(data_dir, filename) # data = base64.b64decode(request.json['data']) # f = open(fullpath, 'wb') # f.write(data) # f.close() # data = { # "message":"OK" # } # return jsonify(data) # except Exception as e: # print("REQUEST PROCESSING!!!! EXCEPTION!!!", e) # print(traceback.format_exc()) # return str(e) # @app.route('/api/voice///', methods=['GET']) # def get_voice(title, prefix, index): # filename = f"{prefix}{index:03}.zip" # data_dir = os.path.join(DATA_ROOT, title) # fullpath = os.path.join(data_dir, filename) # is_file = os.path.isfile(fullpath) # if is_file == False: # data = { # "message":"NOT_FOUND", # } # return jsonify(data) # f = open(fullpath, 'rb') # data = f.read() # dataBase64 = base64.b64encode(data).decode('utf-8') # data = { # "message":"OK", # "data":dataBase64, # } # return jsonify(data) if __name__ == '__main__': args = sys.argv PORT = args[1] DATA_ROOT = args[2] app.logger.info('START APP') app.run(debug=True, host='0.0.0.0',port=PORT)