Files
biblioteca_conocimiento_lab…/vigilancia/tv_api.py

47 lines
1.4 KiB
Python

import json
import os
import threading
from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import parse_qs, urlparse
sys_dir = os.path.dirname(os.path.abspath(__file__))
import sys
sys.path.insert(0, sys_dir)
import config
from voz import anuncio_en_teles
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
q = parse_qs(urlparse(self.path).query)
texto = (q.get("texto") or q.get("msg") or [""])[0]
if not texto:
self._resp(400, {"error": "falta parametro texto"})
return
threading.Thread(target=anuncio_en_teles, args=(texto,), daemon=True).start()
print(f"[TV-API] Mensaje lanzado: {texto[:80]}")
self._resp(200, {"ok": True, "mensaje": texto})
def _resp(self, code, obj):
body = json.dumps(obj).encode("utf-8")
self.send_response(code)
self.send_header("Content-Type", "application/json; charset=utf-8")
self.send_header("Content-Length", str(len(body)))
self.end_headers()
self.wfile.write(body)
def log_message(self, *a):
pass
def main():
puerto = int(os.getenv("TV_API_PUERTO", "8600"))
print(f"TV API escuchando en :{puerto}")
print(f"Uso: http://<ip>:{puerto}/tv/mensaje?texto=Mensaje")
HTTPServer(("0.0.0.0", puerto), Handler).serve_forever()
if __name__ == "__main__":
main()