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)