from flask import Flask,render_template,request,jsonify import google.generativeai as genai from googletrans import Translator import asyncio from dotenv import load_dotenv import os app = Flask(__name__) GEMINI_API_KEY = os.getenv("GEMINI_API_KEY") genai.configure(api_key=GEMINI_API_KEY) def get_response(prompt): # Use Gemini model (e.g., gemini-1.5-flash) model = genai.GenerativeModel('gemini-1.5-flash') response = model.generate_content(prompt) return response.text app = Flask(__name__) LANGUAGE_MAP = { "English (US)": "en", "Hindi (India)": "hi", "Spanish (Spain)": "es", "French (France)": "fr", "German (Germany)": "de", "Arabic (Saudi Arabia)": "ar" } @app.route('/') def index(): return render_template("index.html") @app.route('/api/process_text', methods=['POST']) def process_text(): # Get JSON payload data = request.get_json() try: original_text = data['text'] language_name = data['language'] except (KeyError, TypeError): return jsonify({"error": "Missing 'text' or 'language' in JSON payload"}), 400 # Map language name to language code if language_name not in LANGUAGE_MAP: return jsonify({"error": f"Unsupported language: {language_name}"}), 400 original_lang_code = LANGUAGE_MAP[language_name] print("Original Text:", original_text) print("Original Language:", language_name, f"({original_lang_code})") # Define an async function for translation async def translate_async(text, dest_lang): translator = Translator() translated = await translator.translate(text, dest=dest_lang) return translated.text # Translate to English if original_lang_code != "en": translated_text = asyncio.run(translate_async(original_text, dest_lang="en")) else: translated_text = original_text # No translation needed if already English print("Translated to English:", translated_text) # Process the text (convert to lowercase) processed_text = translated_text.lower() # Get response (assumed to be in English) response = get_response(processed_text) print("English Response:", response) # Translate response back to original language if original_lang_code != "en": final_response = asyncio.run(translate_async(response, dest_lang=original_lang_code)) else: final_response = response # No translation needed if English print("Final Response (in original language):", final_response) # Return the final response return jsonify({"response": final_response, "language": language_name}) if __name__ == '__main__': app.run(host='0.0.0.0', port=7860)