🎧 Audio Playback API – FastAPI + Socket alapĂș vezĂ©rlĂ©s

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

  1. Követelmények:
pip install fastapi uvicorn
  1. 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
}
KulcsTípusAlapértelmezettLeírås
file_pathstring–A lejĂĄtszandĂł WAV fĂĄjl elĂ©rĂ©si Ăștja
start_msint0Hanyadik milliszekundumtĂłl induljon a lejĂĄtsĂĄs
volumeint100KezdƑ hangerƑ 0–100 között
start_atfloatNoneOpcionĂĄ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"
}
KulcsTĂ­pusLeĂ­rĂĄs
idstringA 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
}
KulcsTĂ­pusLeĂ­rĂĄs
idstringA lejĂĄtszĂĄsi szĂĄl azonosĂ­tĂłja
volumeintÚ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