Akhmad123 commited on
Commit
b206966
Β·
verified Β·
1 Parent(s): 31c8f0e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -31
app.py CHANGED
@@ -1,14 +1,12 @@
1
  # app.py
2
  import gradio as gr
3
  import json
4
- import os
5
  from datetime import datetime
6
  from pathlib import Path
7
 
8
  # ============================
9
  # USER ACCESS LIST
10
  # ============================
11
- # Daftar username HuggingFace yang punya akses premium/super premium
12
  PREMIUM_USERS = ["Akhmad123", "user_premium_1"]
13
  SUPER_USERS = ["Akhmad123", "user_super_1"]
14
 
@@ -110,7 +108,7 @@ def generate_variants(kind, goal, tone, audience, length, constraints, language,
110
 
111
  return variants
112
 
113
- def generate(goal, kind, tone, audience, length, constraints, language, n, tier="free"):
114
  goal = normalize(goal, "Describe the task clearly.")
115
  tone = normalize(tone, "neutral")
116
  audience = normalize(audience, "general")
@@ -125,26 +123,23 @@ def generate(goal, kind, tone, audience, length, constraints, language, n, tier=
125
  kind, goal, tone, audience, length, constraints, language, n, tier
126
  )
127
 
128
- ready = []
129
- for v in variants:
130
- if kind == "text":
131
- ready.append(f"### ChatGPT Prompt\n{v['prompt']}")
132
- elif kind == "image":
133
- ready.append(f"### Image Prompt\n{v['prompt']}")
134
- elif kind == "code":
135
- ready.append(f"### Code Prompt\n{v['prompt']}")
136
 
137
- return "\n\n---\n\n".join(ready)
138
 
139
  # ============================
140
  # MAIN HANDLER (LOGIN)
141
  # ============================
142
- def main_handler(request: gr.Request, goal=None, kind=None, tone=None, audience=None,
143
- length=None, constraints=None, language=None, n=None):
144
-
145
  username = request.username or "anonymous"
146
 
147
- # Tentukan tier user
148
  if username in SUPER_USERS:
149
  tier = "super"
150
  elif username in PREMIUM_USERS:
@@ -152,23 +147,19 @@ def main_handler(request: gr.Request, goal=None, kind=None, tone=None, audience=
152
  else:
153
  tier = "free"
154
 
155
- return generate(goal, kind, tone, audience, length, constraints, language, n, tier)
156
 
157
  # ============================
158
  # UI
159
  # ============================
160
  with gr.Blocks() as demo:
161
 
162
- gr.Markdown("# 🌟 AIPromptLab β€” Unified Login Edition")
 
163
 
164
- gr.Markdown(
165
- """
166
- Sistem otomatis mendeteksi level akses berdasarkan akun HuggingFace Anda:
167
- - **Free** β†’ User biasa
168
- - **Premium** β†’ User terdaftar
169
- - **Super Premium** β†’ User VIP
170
- """
171
- )
172
 
173
  goal = gr.Textbox(label="Goal")
174
  kind = gr.Radio(["text", "image", "code"], value="text")
@@ -179,9 +170,9 @@ with gr.Blocks() as demo:
179
  language = gr.Textbox(label="Language", value="Indonesian")
180
  n = gr.Slider(1, 20, value=3, step=1, label="Jumlah Varian")
181
 
182
- btn = gr.Button("πŸš€ Generate Prompt")
183
- out = gr.Textbox(label="Prompt Siap Pakai", lines=20, elem_id="copy-output")
184
- copy_btn = gr.Button("Copy")
185
 
186
  btn.click(
187
  main_handler,
@@ -193,7 +184,7 @@ with gr.Blocks() as demo:
193
  None,
194
  None,
195
  None,
196
- js="navigator.clipboard.writeText(document.getElementById('copy-output').value)"
197
  )
198
 
199
  # ============================
@@ -203,5 +194,5 @@ demo.launch(
203
  server_name="0.0.0.0",
204
  server_port=7860,
205
  theme=gr.themes.Soft(),
206
- auth_message="Silakan login untuk mengakses fitur sesuai level akun Anda."
207
  )
 
1
  # app.py
2
  import gradio as gr
3
  import json
 
4
  from datetime import datetime
5
  from pathlib import Path
6
 
7
  # ============================
8
  # USER ACCESS LIST
9
  # ============================
 
10
  PREMIUM_USERS = ["Akhmad123", "user_premium_1"]
11
  SUPER_USERS = ["Akhmad123", "user_super_1"]
12
 
 
108
 
109
  return variants
110
 
111
+ def generate_json(username, goal, kind, tone, audience, length, constraints, language, n, tier):
112
  goal = normalize(goal, "Describe the task clearly.")
113
  tone = normalize(tone, "neutral")
114
  audience = normalize(audience, "general")
 
123
  kind, goal, tone, audience, length, constraints, language, n, tier
124
  )
125
 
126
+ data = {
127
+ "generated_at": datetime.utcnow().isoformat() + "Z",
128
+ "user": username,
129
+ "tier": tier,
130
+ "kind": kind,
131
+ "goal": goal,
132
+ "variants": variants
133
+ }
134
 
135
+ return json.dumps(data, ensure_ascii=False, indent=2)
136
 
137
  # ============================
138
  # MAIN HANDLER (LOGIN)
139
  # ============================
140
+ def main_handler(request: gr.Request, goal, kind, tone, audience, length, constraints, language, n):
 
 
141
  username = request.username or "anonymous"
142
 
 
143
  if username in SUPER_USERS:
144
  tier = "super"
145
  elif username in PREMIUM_USERS:
 
147
  else:
148
  tier = "free"
149
 
150
+ return generate_json(username, goal, kind, tone, audience, length, constraints, language, n, tier)
151
 
152
  # ============================
153
  # UI
154
  # ============================
155
  with gr.Blocks() as demo:
156
 
157
+ gr.Markdown("# πŸ” Login Required")
158
+ gr.Markdown("Silakan login dengan akun HuggingFace Anda untuk melanjutkan.")
159
 
160
+ gr.Markdown("---")
161
+
162
+ gr.Markdown("# 🌟 AIPromptLab β€” JSON Output Edition")
 
 
 
 
 
163
 
164
  goal = gr.Textbox(label="Goal")
165
  kind = gr.Radio(["text", "image", "code"], value="text")
 
170
  language = gr.Textbox(label="Language", value="Indonesian")
171
  n = gr.Slider(1, 20, value=3, step=1, label="Jumlah Varian")
172
 
173
+ btn = gr.Button("πŸš€ Generate JSON")
174
+ out = gr.Textbox(label="Output JSON", lines=25, elem_id="json-output")
175
+ copy_btn = gr.Button("Copy JSON")
176
 
177
  btn.click(
178
  main_handler,
 
184
  None,
185
  None,
186
  None,
187
+ js="navigator.clipboard.writeText(document.getElementById('json-output').value)"
188
  )
189
 
190
  # ============================
 
194
  server_name="0.0.0.0",
195
  server_port=7860,
196
  theme=gr.themes.Soft(),
197
+ auth_message="Silakan login untuk menggunakan AIPromptLab."
198
  )