Spaces:
Sleeping
Sleeping
File size: 7,209 Bytes
dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d b8ca448 dea8d0d |
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 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
"""
main.py — Ultra-Premium NeuraAI_v500 Hardcode
Author: CHATGPT + Joshua•Dav
"""
import os, json, time, random, webbrowser
from flask import Flask, request, jsonify
from flask_cors import CORS
import gradio as gr
# ----------------------------
# Modules
# ----------------------------
from bot_engine import BotEngine
from voice_engine import VoiceBot
from mini_games import random_game
from automation import AutomationEngine
# ----------------------------
# Initialize App & Engines
# ----------------------------
app = Flask(__name__)
CORS(app)
bot = BotEngine()
voice_bot_female = VoiceBot(gender="female", rate=160)
voice_bot_male = VoiceBot(gender="male", rate=140)
automation_engine = AutomationEngine()
# ----------------------------
# Helper Functions
# ----------------------------
def get_user_id(req):
return req.args.get("user_id", "local_user")
def log_chat(user_id, role, msg):
path = "chat_logs.json"
logs = {}
if os.path.exists(path):
with open(path, "r") as f:
logs = json.load(f)
if user_id not in logs:
logs[user_id] = []
logs[user_id].append({"role": role, "msg": msg, "timestamp": time.time()})
with open(path, "w") as f:
json.dump(logs, f, indent=2)
def get_random_emoji():
return f"emoji_{random.randint(1,500):03}.png"
def fetch_crypto_insight(symbol="BTC"):
# Placeholder: integrate crypto API for real-time info
dummy_data = {"symbol": symbol, "price": random.uniform(20000, 40000), "change_24h": random.uniform(-10, 10)}
return dummy_data
def solve_problem(problem_text):
# Placeholder for problem solving logic
solution = f"Solved: {problem_text[:50]}..."
return solution
def write_description(topic):
# Placeholder for automated description writer
desc = f"Premium AI description for {topic}:\nThis is a detailed explanation with examples, insights, and practical use."
return desc
def educational_explain(subject):
# Placeholder for education tab logic
return f"Educational breakdown for {subject}:\nStep-by-step explanation with examples."
# ----------------------------
# Flask Endpoints
# ----------------------------
@app.route("/chat", methods=["GET"])
def chat():
user_input = request.args.get("msg", "")
user_id = get_user_id(request)
premium_flag = request.args.get("premium", "false").lower() == "true"
voice_mode = request.args.get("voice", "false").lower() == "true"
bot._start_session(user_id=user_id, is_premium=premium_flag)
reply = bot.generate_response(user_input, user_id=user_id)
log_chat(user_id, "user", user_input)
log_chat(user_id, "bot", reply)
if voice_mode:
if premium_flag:
voice_bot_female.speak(reply)
else:
voice_bot_male.speak(reply)
remaining_hours = bot.get_remaining_session_hours(user_id=user_id)
emoji_file = get_random_emoji()
return jsonify({
"reply": reply,
"emoji": emoji_file,
"remaining_hours": remaining_hours
})
@app.route("/upgrade", methods=["POST"])
def upgrade():
user_id = get_user_id(request)
msg = bot.upgrade_to_premium(user_id)
remaining_hours = bot.get_remaining_session_hours(user_id)
return jsonify({"message": msg, "remaining_hours": remaining_hours})
@app.route("/mini_game", methods=["GET"])
def mini_game():
game = random_game()
return jsonify({"game": game})
@app.route("/automation", methods=["POST"])
def automation():
task_name = request.json.get("task")
if hasattr(automation_engine, task_name):
getattr(automation_engine, task_name)()
return jsonify({"message": f"Automation '{task_name}' executed"})
return jsonify({"message": "Task not found"}), 404
@app.route("/memory_store", methods=["GET"])
def memory_store():
mem_path = "memory_store.json"
if os.path.exists(mem_path):
with open(mem_path, "r") as f:
memory = json.load(f)
return jsonify(memory)
return jsonify({})
@app.route("/session_info", methods=["GET"])
def session_info():
user_id = get_user_id(request)
return jsonify({
"remaining_hours": bot.get_remaining_session_hours(user_id),
"is_premium": bot.is_premium(user_id)
})
@app.route("/voice_list", methods=["GET"])
def voice_list():
voices = {
"female": ["Siri","Eva","Clara","Luna","Nova","Mia","Aria","Zara","Lily","Sophia"],
"male": ["Alex","John","Leo","Ethan","Max","Ryan","Oliver","Jack","Noah","Liam"]
}
return jsonify(voices)
@app.route("/open_url", methods=["POST"])
def open_url():
url = request.json.get("url")
if url:
webbrowser.open(url)
return jsonify({"message": f"Opened {url}"})
return jsonify({"message": "No URL provided"}), 400
@app.route("/crypto", methods=["GET"])
def crypto_tab():
symbol = request.args.get("symbol", "BTC")
data = fetch_crypto_insight(symbol)
return jsonify(data)
@app.route("/education", methods=["GET"])
def education_tab():
subject = request.args.get("subject", "Mathematics")
explanation = educational_explain(subject)
return jsonify({"subject": subject, "explanation": explanation})
@app.route("/problem_solver", methods=["POST"])
def problem_solver_tab():
problem_text = request.json.get("problem")
solution = solve_problem(problem_text)
return jsonify({"solution": solution})
@app.route("/description_writer", methods=["POST"])
def description_writer_tab():
topic = request.json.get("topic")
desc = write_description(topic)
return jsonify({"description": desc})
# ----------------------------
# Gradio Interface
# ----------------------------
def gr_interface(user_input, user_id="local_user", premium=False, voice=False, color="#00FF00"):
bot._start_session(user_id=user_id, is_premium=premium)
reply = bot.generate_response(user_input, user_id=user_id)
log_chat(user_id, "user", user_input)
log_chat(user_id, "bot", reply)
if voice:
if premium:
voice_bot_female.speak(reply)
else:
voice_bot_male.speak(reply)
emoji_file = get_random_emoji()
return reply, emoji_file
with gr.Blocks() as demo:
gr.Markdown("# Neura-AI v500 Hardcode 🤖💎")
with gr.Row():
txt_input = gr.Textbox(label="Type your message here")
output_txt = gr.Textbox(label="AI Reply")
emoji_img = gr.Image(label="Random Emoji")
with gr.Row():
btn_submit = gr.Button("Send")
color_picker = gr.ColorPicker(label="Pick UI Color", value="#00FF00")
voice_checkbox = gr.Checkbox(label="Voice Mode", value=False)
premium_checkbox = gr.Checkbox(label="Premium", value=False)
btn_submit.click(fn=gr_interface, inputs=[txt_input, gr.Textbox(value="local_user", visible=False), premium_checkbox, voice_checkbox, color_picker], outputs=[output_txt, emoji_img])
# ----------------------------
# Run Flask + Gradio
# ----------------------------
if __name__ == "__main__":
import threading
threading.Thread(target=lambda: demo.launch(server_name="0.0.0.0", server_port=7860, share=False)).start()
app.run(host="0.0.0.0", port=5000, debug=True) |