Opera8 commited on
Commit
d1505c8
·
verified ·
1 Parent(s): 8660205

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +34 -12
main.py CHANGED
@@ -311,6 +311,32 @@ if GEMINI_KEYS_STR2:
311
  GEMINI_KEYS = list(set([k.strip() for k in _raw_keys if k.strip()]))
312
  print(f"✅ تعداد {len(GEMINI_KEYS)} کلید جیمینای با موفقیت شناسایی شد.")
313
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
  HF_TOKENS_STR = os.environ.get("HF_TOKENS", "")
315
  HF_TOKENS = [k.strip() for k in HF_TOKENS_STR.split(",") if k.strip()]
316
 
@@ -448,9 +474,8 @@ async def process_gemini(client, chat_id, prompt, file_bytes=None, file_name=Non
448
  history = history[-40:]
449
  if history[0]["role"] == "model": history = history[1:]
450
 
451
- keys_to_try = GEMINI_KEYS.copy()
452
- random.shuffle(keys_to_try)
453
- keys_to_try = keys_to_try[:20] # انتخاب حداکثر ۲۰ کلید تصادفی برای تست در هر پاسخ
454
  final_answer = None
455
 
456
  async with aiohttp.ClientSession() as session:
@@ -522,9 +547,8 @@ async def process_image(client, chat_id, prompt):
522
  proc_msg = await send_with_keyboard(client, chat_id, "✨ در حال ترجمه و بهینه‌سازی پرامپت شما توسط جیمینای...\n(تبدیل به پرامپت حرفه‌ای)", False)
523
  enhanced_prompt = prompt
524
  if GEMINI_KEYS:
525
- keys_to_try_gemini = GEMINI_KEYS.copy()
526
- random.shuffle(keys_to_try_gemini)
527
- keys_to_try_gemini = keys_to_try_gemini[:20] # انتخاب حداکثر ۲۰ کلید برای ترجمه پرامپت
528
  gemini_sys_prompt = f"You are an expert AI image generation prompt engineer. Translate the following user input to English, and enhance it with high-quality, highly detailed, 4k resolution, cinematic lighting, and visually striking descriptive keywords. Return ONLY the final English prompt string.\nUser input: {prompt}"
529
  async with aiohttp.ClientSession() as session:
530
  for key in keys_to_try_gemini:
@@ -842,9 +866,8 @@ async def process_stt(client, chat_id, audio_bytes, file_name):
842
  mime_type, _ = mimetypes.guess_type(file_name)
843
  if not mime_type: mime_type = "audio/ogg"
844
 
845
- keys_to_try = GEMINI_KEYS.copy()
846
- random.shuffle(keys_to_try)
847
- keys_to_try = keys_to_try[:20] # انتخاب حداکثر ۲۰ کلید تصادفی
848
  transcribed_text = None
849
  prompt = "لطفاً این فایل صوتی/تصویری را با دقت کامل گوش بده و صحبت‌های داخل آن را کلمه به کلمه به متن تبدیل کن. هیچ توضیح اضافه‌ای نده."
850
 
@@ -891,9 +914,8 @@ async def process_file_analysis(client, chat_id, file_bytes, file_name, prompt):
891
  mime_type, _ = mimetypes.guess_type(file_name)
892
  if not mime_type: mime_type = "image/jpeg"
893
 
894
- keys_to_try = GEMINI_KEYS.copy()
895
- random.shuffle(keys_to_try)
896
- keys_to_try = keys_to_try[:20] # انتخاب حداکثر ۲۰ کلید تصادفی
897
  final_answer = None
898
 
899
  async with aiohttp.ClientSession() as session:
 
311
  GEMINI_KEYS = list(set([k.strip() for k in _raw_keys if k.strip()]))
312
  print(f"✅ تعداد {len(GEMINI_KEYS)} کلید جیمینای با موفقیت شناسایی شد.")
313
 
314
+ # --- 🚀 سیستم چرخشی پیشرفته (Round-Robin) برای کلیدهای جیمینای ---
315
+ current_gemini_key_index = 0
316
+ gemini_key_lock = threading.Lock()
317
+
318
+ def get_next_gemini_keys(count=100):
319
+ """
320
+ این تابع تضمین می‌کند که به ترتیب از کلیدها استفاده شود.
321
+ مثلاً درخواست اول کلیدهای ۱ تا ۱۰۰ را می‌گیرد.
322
+ درخواست دوم کلیدهای ۱۰۱ تا ۲۰۰ را می‌گیرد.
323
+ و وقتی به آخر لیست برسد، دوباره از اول شروع می‌کند.
324
+ """
325
+ global current_gemini_key_index
326
+ with gemini_key_lock:
327
+ total_keys = len(GEMINI_KEYS)
328
+ if total_keys == 0:
329
+ return []
330
+
331
+ actual_count = min(count, total_keys)
332
+ selected_keys = []
333
+
334
+ for _ in range(actual_count):
335
+ selected_keys.append(GEMINI_KEYS[current_gemini_key_index])
336
+ current_gemini_key_index = (current_gemini_key_index + 1) % total_keys
337
+
338
+ return selected_keys
339
+
340
  HF_TOKENS_STR = os.environ.get("HF_TOKENS", "")
341
  HF_TOKENS = [k.strip() for k in HF_TOKENS_STR.split(",") if k.strip()]
342
 
 
474
  history = history[-40:]
475
  if history[0]["role"] == "model": history = history[1:]
476
 
477
+ # دریافت ۱۰۰ کلید به صورت چرخشی
478
+ keys_to_try = get_next_gemini_keys(100)
 
479
  final_answer = None
480
 
481
  async with aiohttp.ClientSession() as session:
 
547
  proc_msg = await send_with_keyboard(client, chat_id, "✨ در حال ترجمه و بهینه‌سازی پرامپت شما توسط جیمینای...\n(تبدیل به پرامپت حرفه‌ای)", False)
548
  enhanced_prompt = prompt
549
  if GEMINI_KEYS:
550
+ # دریافت ۱۰۰ کلید به صورت چرخشی
551
+ keys_to_try_gemini = get_next_gemini_keys(100)
 
552
  gemini_sys_prompt = f"You are an expert AI image generation prompt engineer. Translate the following user input to English, and enhance it with high-quality, highly detailed, 4k resolution, cinematic lighting, and visually striking descriptive keywords. Return ONLY the final English prompt string.\nUser input: {prompt}"
553
  async with aiohttp.ClientSession() as session:
554
  for key in keys_to_try_gemini:
 
866
  mime_type, _ = mimetypes.guess_type(file_name)
867
  if not mime_type: mime_type = "audio/ogg"
868
 
869
+ # دریافت ۱۰۰ کلید به صورت چرخشی
870
+ keys_to_try = get_next_gemini_keys(100)
 
871
  transcribed_text = None
872
  prompt = "لطفاً این فایل صوتی/تصویری را با دقت کامل گوش بده و صحبت‌های داخل آن را کلمه به کلمه به متن تبدیل کن. هیچ توضیح اضافه‌ای نده."
873
 
 
914
  mime_type, _ = mimetypes.guess_type(file_name)
915
  if not mime_type: mime_type = "image/jpeg"
916
 
917
+ # دریافت ۱۰۰ کلید به صورت چرخشی
918
+ keys_to_try = get_next_gemini_keys(100)
 
919
  final_answer = None
920
 
921
  async with aiohttp.ClientSession() as session: