File size: 2,144 Bytes
01d0b27 a3fd48d 6d8044f 96f653d 6d8044f d7e6a25 25fffdf a442d45 96f653d 01d0b27 f418c58 96f653d 045e664 96f653d 25fffdf 6d8044f 8f4e3e0 25d08e0 276f9ea 6d8044f 78cfc41 ee554bb 40bfceb 232d4d1 1f93e9f 6d8044f 0630c4e 276f9ea 78cfc41 6d8044f e0be4fc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
from io import BytesIO
from flask import Flask, request, jsonify, render_template, send_file, Response
from bs4 import BeautifulSoup
from scraper import voicevox
import requests
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>OK</h1>'
@app.route("/voicevox")
def voicevox_resp():
text = request.args.get("text")
speaker = request.args.get("speaker")
if not text:
return jsonify({'error': "Please provided parameter 'text'"}), 400
try:
data = voicevox(text, speaker=speaker)
io = BytesIO(data)
return send_file(io, as_attachment=True, mimetype="audio/mp3", download_name=f'rull-pyward_voicevox({text.strip()}).mp3')
except Exception as e:
return jsonify({'error': "Internal server error"}), 500
@app.route('/proxy')
def proxy():
url = request.args.get('url')
if not url:
return jsonify({'error': 'URL parameter is missing'}), 400
try:
headers = {key: value for (key, value) in request.headers if key != 'Host'}
cookies = request.cookies
method = request.method
data = request.get_data()
response = requests.request(
method=method,
url=url,
# headers=headers,
# cookies=cookies,
# data=data,
allow_redirects=False
)
print(response.headers.items())
if response.headers.get('content-type', '').startswith('text/html'):
soup = BeautifulSoup(response.text, 'html.parser')
for tag in soup.find_all(href=True):
tag['href'] = '/proxy?url=' + tag['href']
for tag in soup.find_all(src=True):
tag['src'] = '/proxy?url=' + tag['src']
content = soup.prettify(formatter="html")
return content, response.status_code
else:
return Response(response.content, status=response.status_code)
except requests.RequestException as e:
return jsonify({'error': str(e)}), 500
if __name__ == '__main__':
app.run(host="0.0.0.0", port=7860) # Use 'adhoc' to enable HTTPS locally
|