Ez a projekt egy Python alapĂș REST API, amely lehetĆvĂ© teszi hangfĂĄjlok lejĂĄtszĂĄsĂĄt, vezĂ©rlĂ©sĂ©t Ă©s ĂĄllapotĂĄnak lekĂ©rdezĂ©sĂ©t egy socket-alapĂș lejĂĄtszĂłmagon keresztĂŒl. A rendszer FastAPI-ra Ă©pĂŒl, Ă©s a hĂĄttĂ©rben egy socket szerveren keresztĂŒl kommunikĂĄl a lejĂĄtszĂł modulokkal.
đ§ MƱködĂ©s röviden
- A REST API parancsokat fogad HTTP-n keresztĂŒl (pl.
/play,/stop,/volume). - Ezeket a parancsokat JSON formĂĄtumban tovĂĄbbĂtja egy helyi socket szervernek (alapĂ©rtelmezetten
127.0.0.1:9999). - A socket vĂĄlaszkĂ©nt visszakĂŒld egy JSON vĂĄlaszt, amelyet az API tovĂĄbbĂt a kliensnek.
đ TelepĂtĂ©s
- Követelmények:
pip install fastapi uvicorn
- API indĂtĂĄsa:
uvicorn api_server:app --host 127.0.0.1 --port 8010 --reload
Feltételezi, hogy a fåjl neve
api_server.py.
đĄ API vĂ©gpontok Ă©s hasznĂĄlatuk
đ POST /play
HangfĂĄjl lejĂĄtszĂĄsa.
Bemeneti JSON:
{
"file_path": "/path/to/audio.wav",
"start_ms": 0,
"volume": 100,
"start_at": 1721981243.0
}
| Kulcs | TĂpus | AlapĂ©rtelmezett | LeĂrĂĄs |
|---|---|---|---|
file_path | string | â | A lejĂĄtszandĂł WAV fĂĄjl elĂ©rĂ©si Ăștja |
start_ms | int | 0 | Hanyadik milliszekundumtĂłl induljon a lejĂĄtsĂĄs |
volume | int | 100 | KezdĆ hangerĆ 0â100 között |
start_at | float | None | OpcionĂĄlis abszolĂșt Unix timestamp, mikor induljon |
Példa vålasz:
{
"id": "thread_001",
"status": "started"
}
âčïž POST /stop
LejĂĄtszĂĄs leĂĄllĂtĂĄsa adott azonosĂtĂł alapjĂĄn.
Bemeneti JSON:
{
"id": "thread_001"
}
| Kulcs | TĂpus | LeĂrĂĄs |
|---|---|---|
id | string | A lejĂĄtszĂĄsi szĂĄl azonosĂtĂłja |
Példa vålasz:
{
"status": "stopped",
"id": "thread_001"
}
đ POST /volume
HangerĆ mĂłdosĂtĂĄsa egy aktĂv lejĂĄtszĂĄsi szĂĄlhoz.
Bemeneti JSON:
{
"id": "thread_001",
"volume": 80
}
| Kulcs | TĂpus | LeĂrĂĄs |
|---|---|---|
id | string | A lejĂĄtszĂĄsi szĂĄl azonosĂtĂłja |
volume | int | Ăj hangerĆ Ă©rtĂ©k 0â100 között |
Példa vålasz:
{
"status": "volume_changed",
"id": "thread_001",
"volume": 80
}
đ GET /status
Jelenlegi rendszerållapot lekérdezése.
Nincs bemenet.
Példa vålasz:
{
"active_threads": [
{
"id": "thread_001",
"file_path": "/path/to/audio.wav",
"position_ms": 23456,
"volume": 80
}
]
}
đ§© Modulok leĂrĂĄsa
PlayRequest: lejĂĄtszĂĄsi paramĂ©tereket tartalmaz (Ăștvonal, idĆzĂtĂ©s, hangerĆ).ControlRequest: szĂĄlazonosĂtĂł alapjĂĄn vezĂ©rlĆ parancsokat kĂŒld.VolumeRequest: hangerĆ szabĂĄlyozĂĄsĂĄhoz hasznĂĄlt modell.send_socket_command(): TCP socket kapcsolaton kĂŒldi a parancsokat a hĂĄttĂ©r lejĂĄtszĂł processznek.
â ïž HibakezelĂ©s
Ha a socket kapcsolat sikertelen, az API 500 Internal Server Error vĂĄlasszal tĂ©r vissza, a kivĂ©tel szöveges rĂ©szletĂ©vel a detail mezĆben.
đ MegjegyzĂ©s
A rendszer feltĂ©telezi, hogy egy kĂŒlön hĂĄttĂ©rben futĂł socket szerver (lejĂĄtszĂł) elĂ©rhetĆ a 127.0.0.1:9999 cĂmen, amely Ă©rtelmezi a "action" mezĆvel ellĂĄtott JSON parancsokat.
đ ïž FejlesztĂ©si lehetĆsĂ©gek
- TovĂĄbbi vezĂ©rlĆk:
PAUSE,RESUME,SEEK - FelhasznĂĄlĂłi autentikĂĄciĂł
- Webes felĂŒlet a REST API-hoz
