Spaces:
Runtime error
Runtime error
File size: 4,225 Bytes
7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b ac5c525 7e6554b |
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 |
from flask import Flask, request, jsonify
import requests
import json
app = Flask(__name__)
# Laden der API-Keys aus einer Konfigurationsdatei
def load_api_keys():
with open("config.json", "r") as file:
return json.load(file)
# Speichern der API-Keys
def save_api_keys(api_keys):
with open("config.json", "w") as file:
json.dump(api_keys, file)
# API-Dienst für Synonyme (mit Fallback)
class SynonymAPI:
def __init__(self, api_keys):
self.api_keys = api_keys
def fetch(self, word, language='en'):
try:
response = self._fetch_from_primary_api(word, language)
if response.status_code == 200:
return response.json()['entries'][0]['synonyms']
except Exception:
# Fallback zur zweiten API, falls die erste nicht funktioniert
return self._fetch_from_secondary_api(word, language)
def _fetch_from_primary_api(self, word, language):
url = f"https://lingua-robot.p.rapidapi.com/language/v1/synonyms?word={word}&language={language}"
headers = {
'x-rapidapi-key': self.api_keys['primary'],
'x-rapidapi-host': "lingua-robot.p.rapidapi.com"
}
return requests.get(url, headers=headers)
def _fetch_from_secondary_api(self, word, language):
url = f"https://api.datamuse.com/words?rel_syn={word}&ml={language}"
return requests.get(url)
# API-Dienst für Grammatik
class GrammarAPI:
def __init__(self, api_key):
self.api_key = api_key
def fetch(self, text, language='en'):
response = requests.post(self.api_key, data={'text': text, 'language': language})
return response.json()['matches'] if response.status_code == 200 else []
# API Manager zum Verwalten der Dienste
class APIManager:
def __init__(self):
self.synonym_api = None
self.grammar_api = None
def configure_apis(self, synonym_api_keys, grammar_api_key):
self.synonym_api = SynonymAPI(synonym_api_keys)
self.grammar_api = GrammarAPI(grammar_api_key)
def fetch_synonyms(self, word, language='en'):
return self.synonym_api.fetch(word, language) if self.synonym_api else "Keine Synonym-API konfiguriert."
def fetch_grammar(self, text, language='en'):
return self.grammar_api.fetch(text, language) if self.grammar_api else "Keine Grammatik-API konfiguriert."
# Instanziierung des API-Managers
api_manager = APIManager()
# API-Konfiguration
@app.route('/configure', methods=['POST'])
def configure_apis():
data = request.json
api_keys = {
'synonym_api_keys': {
'primary': data.get('synonym_primary_api_key'),
'secondary': data.get('synonym_secondary_api_key')
},
'grammar_api_key': data.get('grammar_api_key')
}
save_api_keys(api_keys)
api_manager.configure_apis(api_keys['synonym_api_keys'], api_keys['grammar_api_key'])
return jsonify({"status": "APIs erfolgreich konfiguriert."})
# Textanalyse-API mit Zeichenanpassung
@app.route('/analyze-text', methods=['POST'])
def analyze_text():
data = request.json
text = data.get('text')
desired_length = data.get('desired_length', len(text))
language = data.get('language', 'en')
word = text.split()[0]
synonyms = api_manager.fetch_synonyms(word, language)
grammar = api_manager.fetch_grammar(text, language)
# Zeichenanzahl berechnen und Anpassungsvorschläge geben
current_length = len(text)
length_difference = desired_length - current_length
response = {
"synonyms": synonyms,
"grammar_suggestions": grammar,
"current_length": current_length,
"desired_length": desired_length,
"length_difference": length_difference,
"adjustment_suggestions": []
}
# Vorschläge für Zeichenanzahl-Anpassung
if length_difference > 0:
response["adjustment_suggestions"].append(f"Fügen Sie {length_difference} Zeichen hinzu.")
elif length_difference < 0:
response["adjustment_suggestions"].append(f"Entfernen Sie {abs(length_difference)} Zeichen.")
return jsonify(response)
# Serverstart
if __name__ == '__main__':
app.run(debug=True) |