from http.server import HTTPServer, BaseHTTPRequestHandler
import subprocess
import uuid
import urllib.parse
import os

class TTSHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        if self.path.startswith('/generate'):
            query = urllib.parse.urlparse(self.path).query
            params = urllib.parse.parse_qs(query, encoding='utf-8')
            text = params.get('text', [''])[0]
            voice = params.get('voice', ['ru-RU-DmitryNeural'])[0]
            
            if not text:
                self.send_response(400)
                self.end_headers()
                self.wfile.write(b'Missing text')
                return
            
            filename = f"{uuid.uuid4().hex[:8]}.mp3"
            filepath = f"/var/www/tts/{filename}"
            
            cmd = ['/root/.local/bin/edge-tts', '--voice', voice, '--rate', '+30%', '--text', text, '--write-media', filepath]
            result = subprocess.run(cmd, capture_output=True)
            
            if result.returncode == 0 and os.path.exists(filepath):
                self.send_response(200)
                self.send_header('Content-Type', 'application/json')
                self.end_headers()
                # Use IP instead of domain
                self.wfile.write(f'{{"url":"http://tts.aivdele.com/{filename}"}}'.encode())
            else:
                self.send_response(500)
                self.end_headers()
                self.wfile.write(f'Error: {result.stderr.decode()}'.encode())
        else:
            self.send_response(404)
            self.end_headers()

if __name__ == '__main__':
    server = HTTPServer(('0.0.0.0', 8766), TTSHandler)
    print('TTS Server on 8766')
    server.serve_forever()
