From 9b6da14eb548d30829a040b2e8e61c53bd12579d Mon Sep 17 00:00:00 2001 From: tarepan Date: Sat, 27 Apr 2024 07:06:33 +0000 Subject: [PATCH 1/3] =?UTF-8?q?refactor:=20=E6=83=85=E5=A0=B1=20API=20Rout?= =?UTF-8?q?er=20=E3=81=B8=E3=81=AE=E3=83=A2=E3=82=B8=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E3=83=AB=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- run.py | 31 ++---------------- voicevox_engine/app/routers/info.py | 49 +++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 29 deletions(-) create mode 100644 voicevox_engine/app/routers/info.py diff --git a/run.py b/run.py index 182e66061..56d7b4b78 100644 --- a/run.py +++ b/run.py @@ -1,6 +1,5 @@ import argparse import asyncio -import json import multiprocessing import os import re @@ -32,6 +31,7 @@ deprecated_mutable_api, ) from voicevox_engine.app.routers import ( + info, preset, setting, speaker, @@ -41,7 +41,6 @@ from voicevox_engine.cancellable_engine import CancellableEngine from voicevox_engine.core.core_adapter import CoreAdapter from voicevox_engine.core.core_initializer import initialize_cores -from voicevox_engine.engine_manifest.EngineManifest import EngineManifest from voicevox_engine.engine_manifest.EngineManifestLoader import EngineManifestLoader from voicevox_engine.library_manager import LibraryManager from voicevox_engine.metas.Metas import StyleId @@ -53,7 +52,6 @@ InstalledLibraryInfo, MorphableTargetInfo, StyleIdNotFoundError, - SupportedDevicesInfo, VvlibManifest, ) from voicevox_engine.morphing import ( @@ -357,17 +355,6 @@ def _synthesis_morphing( app.include_router(preset.generate_router(preset_manager)) - @app.get("/version", tags=["その他"]) - async def version() -> str: - return __version__ - - @app.get("/core_versions", response_model=list[str], tags=["その他"]) - async def core_versions() -> Response: - return Response( - content=json.dumps(list(cores.keys())), - media_type="application/json", - ) - app.include_router(speaker.generate_router(get_core, metas_store, root_dir)) if engine_manifest_data.supported_features.manage_library: @@ -480,21 +467,7 @@ def is_initialized_speaker( app.include_router(user_dict.generate_router()) - @app.get("/supported_devices", response_model=SupportedDevicesInfo, tags=["その他"]) - def supported_devices( - core_version: str | None = None, - ) -> Response: - supported_devices = get_core(core_version).supported_devices - if supported_devices is None: - raise HTTPException(status_code=422, detail="非対応の機能です。") - return Response( - content=supported_devices, - media_type="application/json", - ) - - @app.get("/engine_manifest", response_model=EngineManifest, tags=["その他"]) - async def engine_manifest() -> EngineManifest: - return engine_manifest_data + app.include_router(info.generate_router(get_core, cores, engine_manifest_data)) app.include_router( setting.generate_router( diff --git a/voicevox_engine/app/routers/info.py b/voicevox_engine/app/routers/info.py new file mode 100644 index 000000000..6e35dcda9 --- /dev/null +++ b/voicevox_engine/app/routers/info.py @@ -0,0 +1,49 @@ +"""情報機能を提供する API Router""" + +import json +from typing import Callable + +from fastapi import APIRouter, HTTPException, Response + +from voicevox_engine import __version__ +from voicevox_engine.core.core_adapter import CoreAdapter +from voicevox_engine.engine_manifest.EngineManifest import EngineManifest +from voicevox_engine.model import SupportedDevicesInfo + + +def generate_router( + get_core: Callable[[str | None], CoreAdapter], + cores: dict[str, CoreAdapter], + engine_manifest_data: EngineManifest, +) -> APIRouter: + """情報 API Router を生成する""" + router = APIRouter() + + @router.get("/version", tags=["その他"]) + async def version() -> str: + return __version__ + + @router.get("/core_versions", response_model=list[str], tags=["その他"]) + async def core_versions() -> Response: + return Response( + content=json.dumps(list(cores.keys())), + media_type="application/json", + ) + + @router.get("/supported_devices", response_model=SupportedDevicesInfo, tags=["その他"]) + def supported_devices( + core_version: str | None = None, + ) -> Response: + supported_devices = get_core(core_version).supported_devices + if supported_devices is None: + raise HTTPException(status_code=422, detail="非対応の機能です。") + return Response( + content=supported_devices, + media_type="application/json", + ) + + @router.get("/engine_manifest", response_model=EngineManifest, tags=["その他"]) + async def engine_manifest() -> EngineManifest: + return engine_manifest_data + + return router From e1bf4eda4e06812703ea419f628e2c27492c9af2 Mon Sep 17 00:00:00 2001 From: tarepan Date: Sun, 28 Apr 2024 04:35:42 +0000 Subject: [PATCH 2/3] fix: lint --- voicevox_engine/app/routers/info.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/voicevox_engine/app/routers/info.py b/voicevox_engine/app/routers/info.py index 6e35dcda9..b7f564e04 100644 --- a/voicevox_engine/app/routers/info.py +++ b/voicevox_engine/app/routers/info.py @@ -30,7 +30,9 @@ async def core_versions() -> Response: media_type="application/json", ) - @router.get("/supported_devices", response_model=SupportedDevicesInfo, tags=["その他"]) + @router.get( + "/supported_devices", response_model=SupportedDevicesInfo, tags=["その他"] + ) def supported_devices( core_version: str | None = None, ) -> Response: From d543cddc09475fd124f10d439eaac6555d149d27 Mon Sep 17 00:00:00 2001 From: Hiroshiba Kazuyuki Date: Wed, 1 May 2024 17:09:25 +0900 Subject: [PATCH 3/3] info -> engine_info --- run.py | 4 ++-- voicevox_engine/app/routers/{info.py => engine_info.py} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename voicevox_engine/app/routers/{info.py => engine_info.py} (93%) diff --git a/run.py b/run.py index 56d7b4b78..3d9aa68da 100644 --- a/run.py +++ b/run.py @@ -31,7 +31,7 @@ deprecated_mutable_api, ) from voicevox_engine.app.routers import ( - info, + engine_info, preset, setting, speaker, @@ -467,7 +467,7 @@ def is_initialized_speaker( app.include_router(user_dict.generate_router()) - app.include_router(info.generate_router(get_core, cores, engine_manifest_data)) + app.include_router(engine_info.generate_router(get_core, cores, engine_manifest_data)) app.include_router( setting.generate_router( diff --git a/voicevox_engine/app/routers/info.py b/voicevox_engine/app/routers/engine_info.py similarity index 93% rename from voicevox_engine/app/routers/info.py rename to voicevox_engine/app/routers/engine_info.py index b7f564e04..3a636a285 100644 --- a/voicevox_engine/app/routers/info.py +++ b/voicevox_engine/app/routers/engine_info.py @@ -1,4 +1,4 @@ -"""情報機能を提供する API Router""" +"""エンジンの情報機能を提供する API Router""" import json from typing import Callable @@ -16,7 +16,7 @@ def generate_router( cores: dict[str, CoreAdapter], engine_manifest_data: EngineManifest, ) -> APIRouter: - """情報 API Router を生成する""" + """エンジン情報 API Router を生成する""" router = APIRouter() @router.get("/version", tags=["その他"])