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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -74
app.py CHANGED
@@ -6,10 +6,11 @@ from datetime import datetime
6
  from pathlib import Path
7
 
8
  # ============================
9
- # TOKENS (via Secrets)
10
  # ============================
11
- PREMIUM_TOKEN = os.getenv("PREMIUM_KEY")
12
- SUPER_TOKEN = os.getenv("SUPER_PREMIUM_KEY")
 
13
 
14
  # ============================
15
  # LOAD TEMPLATES
@@ -136,84 +137,64 @@ def generate(goal, kind, tone, audience, length, constraints, language, n, tier=
136
  return "\n\n---\n\n".join(ready)
137
 
138
  # ============================
139
- # TOKEN HANDLERS
140
  # ============================
141
- def premium_handler(token, *args):
142
- if token != PREMIUM_TOKEN:
143
- return "❌ Token Premium salah."
144
- return generate(*args, tier="premium")
145
 
146
- def super_handler(token, *args):
147
- if token != SUPER_TOKEN:
148
- return "❌ Token Super Premium salah."
149
- return generate(*args, tier="super")
 
 
 
 
 
 
 
150
 
151
  # ============================
152
  # UI
153
  # ============================
154
  with gr.Blocks() as demo:
155
 
156
- gr.Markdown("# 🌟 AIPromptLab β€” Super Premium Edition")
157
-
158
- # FREE TAB
159
- with gr.Tab("Free"):
160
- goal = gr.Textbox(label="Goal")
161
- kind = gr.Radio(["text", "image", "code"], value="text")
162
- tone = gr.Textbox(label="Tone")
163
- audience = gr.Textbox(label="Audience")
164
- length = gr.Textbox(label="Length")
165
- constraints = gr.Textbox(label="Constraints")
166
- language = gr.Textbox(label="Language", value="Indonesian")
167
- n = gr.Slider(1, 5, value=3, step=1, label="Jumlah Varian")
168
-
169
- btn = gr.Button("Generate (Free)")
170
- out = gr.Textbox(label="Prompt Siap Pakai", lines=20, elem_id="copy-free")
171
- copy_btn = gr.Button("Copy")
172
-
173
- btn.click(generate, [goal, kind, tone, audience, length, constraints, language, n], out)
174
- copy_btn.click(None, None, None, js="navigator.clipboard.writeText(document.getElementById('copy-free').value)")
175
-
176
- # PREMIUM TAB
177
- with gr.Tab("Premium"):
178
- token_p = gr.Textbox(label="Token Premium", type="password")
179
- goal_p = gr.Textbox(label="Goal")
180
- kind_p = gr.Radio(["text", "image", "code"], value="text")
181
- tone_p = gr.Textbox(label="Tone")
182
- audience_p = gr.Textbox(label="Audience")
183
- length_p = gr.Textbox(label="Length")
184
- constraints_p = gr.Textbox(label="Constraints")
185
- language_p = gr.Textbox(label="Language", value="Indonesian")
186
- n_p = gr.Slider(1, 10, value=5, step=1, label="Jumlah Varian")
187
-
188
- btn_p = gr.Button("Generate (Premium)")
189
- out_p = gr.Textbox(label="Prompt Siap Pakai", lines=20, elem_id="copy-premium")
190
- copy_p = gr.Button("Copy")
191
-
192
- btn_p.click(premium_handler,
193
- [token_p, goal_p, kind_p, tone_p, audience_p, length_p, constraints_p, language_p, n_p],
194
- out_p)
195
- copy_p.click(None, None, None, js="navigator.clipboard.writeText(document.getElementById('copy-premium').value)")
196
-
197
- # SUPER PREMIUM TAB
198
- with gr.Tab("Super Premium"):
199
- token_s = gr.Textbox(label="Token Super Premium", type="password")
200
- goal_s = gr.Textbox(label="Goal")
201
- kind_s = gr.Radio(["text", "image", "code"], value="text")
202
- tone_s = gr.Textbox(label="Tone")
203
- audience_s = gr.Textbox(label="Audience")
204
- length_s = gr.Textbox(label="Length")
205
- constraints_s = gr.Textbox(label="Constraints")
206
- language_s = gr.Textbox(label="Language", value="Indonesian")
207
- n_s = gr.Slider(1, 20, value=10, step=1, label="Jumlah Varian")
208
-
209
- btn_s = gr.Button("Generate (Super Premium)")
210
- out_s = gr.Textbox(label="Prompt Siap Pakai", lines=20, elem_id="copy-super")
211
- copy_s = gr.Button("Copy")
212
-
213
- btn_s.click(super_handler,
214
- [token_s, goal_s, kind_s, tone_s, audience_s, length_s, constraints_s, language_s, n_s],
215
- out_s)
216
- copy_s.click(None, None, None, js="navigator.clipboard.writeText(document.getElementById('copy-super').value)")
217
 
218
  # ============================
219
  # LAUNCH
@@ -221,5 +202,6 @@ with gr.Blocks() as demo:
221
  demo.launch(
222
  server_name="0.0.0.0",
223
  server_port=7860,
224
- theme=gr.themes.Soft()
 
225
  )
 
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
 
15
  # ============================
16
  # LOAD TEMPLATES
 
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:
151
+ tier = "premium"
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")
175
+ tone = gr.Textbox(label="Tone")
176
+ audience = gr.Textbox(label="Audience")
177
+ length = gr.Textbox(label="Length")
178
+ constraints = gr.Textbox(label="Constraints")
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,
188
+ [goal, kind, tone, audience, length, constraints, language, n],
189
+ out
190
+ )
191
+
192
+ copy_btn.click(
193
+ None,
194
+ None,
195
+ None,
196
+ js="navigator.clipboard.writeText(document.getElementById('copy-output').value)"
197
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
 
199
  # ============================
200
  # LAUNCH
 
202
  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
  )