import tempfile
import bottle
from bottle import Jinja2Template, jinja2_view, static_file, response, Bottle, request
import ffmpeg
import requests
import os

app = Bottle()

BASE_URL = "https://www.ispeech.org/p/generic/getaudio"
BASE_ARGS = {"action": "convert",
             "pitch": "100",
             "speed": "0"}

@app.route('/tts')
def proxy_tts():
    text = request.query['text']
    locale = request.query['locale']

    args = BASE_ARGS.copy()
    args['text'] = text.encode('latin1')
    args['voice'] = locale

    resp = requests.get(BASE_URL, params=args)

    mpeg_data = resp.content
    temp_filename = ""
    with tempfile.NamedTemporaryFile(delete=False) as f:
        f.write(mpeg_data)
        temp_filename = f.name

    try:
        fdata = ffmpeg.probe(temp_filename)
    except Exception as e:
        response.status = 400
        return ''

    dur = float(fdata['streams'][0]['duration'])
    cut, _ = ffmpeg.input(temp_filename, t=(dur-2)).output('pipe:', format='mp3', audio_bitrate='320k', filter="volume='-10dB'").run(capture_stdout=True)
    response.content_type = 'audio/mpeg'
    os.unlink(temp_filename)
    return cut
