Spaces:
Runtime error
Runtime error
File size: 5,861 Bytes
66ca64a f0b744f 66ca64a 6fb2ead 3f48fa2 66ca64a 2fddf68 66ca64a f02b1de 66ca64a 2fddf68 6fb2ead 66ca64a dbec2e2 66ca64a f02b1de 66ca64a 47ca12e 89d38c5 47ca12e 66ca64a bbb9123 66ca64a 6fb2ead 8fffd9d 6fb2ead 66ca64a f0b744f 29f3438 f0b744f dbec2e2 66ca64a |
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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
import os
from flask import *
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
from routes.helpers import checkSignature, configFile
from routes import *
from random import randint
from transformers import AutoTokenizer, AutoModelForSequenceClassification
#initing
app = Flask(__name__)
VERSION = '1.0 build89'
app.config['JSON_AS_ASCII'] = False
limiter = Limiter(app=app, key_func=get_remote_address, default_limits=["5/minute"], storage_uri="memory://",)
#limiter
@limiter.request_filter
def ip_whitelist():
#try:
# if request.method == 'POST': signature = request.form['signature']
# else: signature = request.args['signature']
# return checkSignature(signature)
#except: return False
return bool(randint(0,1))
#error pages
@app.errorhandler(429)
def ratelimit_handler(e): return render_template('ratelimit.html')
@app.errorhandler(403)
def forbidden_handler(e): return render_template('forbidden.html')
@app.errorhandler(404)
def ratelimit_handler(e): return render_template('notfound.html')
@app.errorhandler(500)
def ratelimit_handler(e): return render_template('intervalservererror.html')
@app.errorhandler(502)
def ratelimit_handler(e): return render_template('badgateway.html')
#empty routes
@app.route('/yt/api/v1', methods=['GET', 'POST'])
@app.route('/recognize/api/v1', methods=['GET', 'POST'])
@app.route('/osu/api/v1', methods=['GET', 'POST'])
def emptyPath(): return {}
@app.route('/yt/api/v1/<path:path>', methods=['GET', 'POST'])
@app.route('/recognize/api/v1/<path:path>', methods=['GET', 'POST'])
@app.route('/osu/api/v1/<path:path>', methods=['GET', 'POST'])
def emptyApiWA(path): return {"status": "error", "error_code": 100, "error_details": "No method like that found"}
#icon
@app.route('/favicon.ico')
@limiter.exempt
def favicon(): return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico', mimetype='image/vnd.microsoft.icon')
###############
#SITE ROUTES
@app.route('/')
@limiter.exempt
def index(): return render_template('index.html')
@app.route('/signatures/api/v1/get', methods=['GET', 'POST'])
@limiter.exempt
def signatureGen(): return siteRoutes.signatureGen(request)
@app.route('/system-info/api/v1/get', methods=['GET', 'POST'])
@limiter.exempt
def systemInfo(): return siteRoutes.systemInfo()
###############
#RECOGNIZE API
@app.route('/recognize/api/v1/voice', methods=['GET', 'POST'])
def recognizeVoice(): return recognizeApi.recognizeVoice(request)
###############
#YT SOUND API
@app.route('/yt/api/v1/search', methods=['GET', 'POST'])
def search(): return ytApi.search(request)
@app.route('/yt/api/v1/get-full', methods=['GET', 'POST'])
def getFull(): return ytApi.getFull(request)
@app.route('/yt/api/v1/get-preview', methods=['GET', 'POST'])
def getPreview(): return ytApi.getPreview(request)
###############
#OSU API
@app.route('/osu/api/v1/find-song', methods=['GET', 'POST'])
def findSong(): return osuApi.findSong(request)
@app.route('/osu/api/v1/get-beatmap', methods=['GET', 'POST'])
def getBeatmap(): return osuApi.getBeatmap(request)
@app.route('/osu/api/v1/get-preview', methods=['GET', 'POST'])
def getBMPreview(): return osuApi.getPreview(request)
@app.route('/osu/api/v1/get-full', methods=['GET', 'POST'])
def getBMFull(): return osuApi.getFull(request)
###############
# LOAD MODELS
sa_t, sa_m = AutoTokenizer.from_pretrained("cardiffnlp/twitter-xlm-roberta-base-sentiment"), AutoModelForSequenceClassification.from_pretrained("cardiffnlp/twitter-xlm-roberta-base-sentiment")
ld_t, ld_m = AutoTokenizer.from_pretrained("papluca/xlm-roberta-base-language-detection"), AutoModelForSequenceClassification.from_pretrained("papluca/xlm-roberta-base-language-detection")
##############
# ANALYZE DATA API
# to understand which text is negative, positive or neutral
@app.route('/analyzeText/api/v1/sentiment', methods=['GET', 'POST'])
def sentimentAnalys():
try:
text = request.form.get('text') or request.args.get('url') or ""
if text == "": return {"status": "error", "details": { "error_code": 101, "error_details": "No text provided" }}
inputs = sa_t(text, return_tensors="pt")
# Предсказание тональности текста
outputs = sa_m(**inputs)
logits = outputs.logits
predicted_sentiment_index = logits.argmax(dim=1).item()
predicted_sentiment = model.config.id2label[predicted_sentiment_index]
return {"status": "pass", "predicted_sentiment": predicted_sentiment}
except: return {"status": "error", "details": { "error_code": 123, "error_details": str(e).replace("\n", " | ") }}
@app.route('/analyzeText/api/v1/detectLang')
def langDetect():
try:
text = request.form.get('text') or request.args.get('url') or ""
if text == "": return {"status": "error", "details": { "error_code": 101, "error_details": "No text provided" }}
inputs = ld_t(text, return_tensors="pt")
outputs = ld_m(**inputs)
logits = outputs.logits
predicted_language_index = logits.argmax(dim=1).item()
predicted_language = model.config.id2label[predicted_language_index]
return {"status": "pass", "predicted_language": predicted_language}
except: return {"status": "error", "details": { "error_code": 123, "error_details": str(e).replace("\n", " | ") }}
if __name__ == "__main__":
config = configFile()
with open(config['config-path'], "w") as outfile:
config['buildVersion'] = VERSION
json.dump(config, outfile)
with open(config['openapi-yaml-path'], "r+") as outfile:
info = outfile.read()
outfile.seek(0)
outfile.write(info.replace('$VERSION_VARIABLE$', VERSION))
outfile.truncate()
app.run(host="0.0.0.0", port=7860)
|