Spaces:
Running
Running
import os.path | |
from flask import Flask | |
from flask_apscheduler import APScheduler | |
from flask_login import LoginManager | |
from flask_wtf import CSRFProtect | |
from utils.data_utils import clean_folder | |
from utils.phrases_dict import phrases_dict_init | |
from tts_app.frontend.views import frontend | |
from tts_app.voice_api.views import voice_api | |
from tts_app.auth.views import auth | |
from tts_app.admin.views import admin | |
from contants import config | |
app = Flask(__name__, template_folder=os.path.join(os.path.dirname(__file__), 'tts_app', 'templates'), | |
static_folder=os.path.join(os.path.dirname(__file__), 'tts_app', 'static')) | |
app.config.from_pyfile("config.py") | |
# app.config.update(config) | |
phrases_dict_init() | |
csrf = CSRFProtect(app) | |
# 禁用tts api请求的CSRF防护 | |
csrf.exempt(voice_api) | |
if config.system.is_admin_enabled: | |
login_manager = LoginManager() | |
login_manager.init_app(app) | |
login_manager.login_view = 'auth.login' | |
def load_user(user_id): | |
admin = config.admin | |
if admin.get_id() == user_id: | |
return admin | |
return None | |
# Initialize scheduler | |
scheduler = APScheduler() | |
scheduler.init_app(app) | |
if config.system.clean_interval_seconds > 0: | |
scheduler.start() | |
app.register_blueprint(frontend, url_prefix='/') | |
app.register_blueprint(voice_api, url_prefix='/voice') | |
if config.system.is_admin_enabled: | |
app.register_blueprint(auth, url_prefix=config.system.admin_route) | |
app.register_blueprint(admin, url_prefix=config.system.admin_route) | |
def create_folders(paths): | |
for path in paths: | |
if not os.path.exists(path): | |
os.makedirs(path, exist_ok=True) | |
create_folders([os.path.join(config.abs_path, config.system.upload_folder), | |
os.path.join(config.abs_path, config.system.cache_path), ]) | |
# regular cleaning | |
def clean_task(): | |
clean_folder(os.path.join(config.abs_path, config.system.upload_folder)) | |
clean_folder(os.path.join(config.abs_path, config.system.cache_path)) | |
if __name__ == '__main__': | |
app.run(host=config.http_service.host, port=config.http_service.port, debug=config.http_service.debug) | |