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