Opera8 commited on
Commit
b3f80c9
·
verified ·
1 Parent(s): b6b54c2

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +118 -80
main.py CHANGED
@@ -1334,43 +1334,50 @@ async def process_image(client, chat_id, prompt, size_choice="1"):
1334
  if not HF_TOKENS: return await send_with_keyboard(client, chat_id, "❌ توکن‌های هاگینگ فیس تنظیم نشده‌اند.", False)
1335
 
1336
  proc_msg = await send_with_keyboard(client, chat_id, "✨ در حال ترجمه و بهینه‌سازی پرامپت شما...\n(تبدیل به پرامپت حرفه‌ای)", False)
1337
- enhanced_prompt = prompt
1338
- 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}"
1339
 
1340
- if GEMINI_KEYS:
1341
- keys_to_try_gemini = get_next_gemini_keys(100)
1342
- async with aiohttp.ClientSession() as session:
1343
- for key in keys_to_try_gemini:
1344
- url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key={key}"
1345
- payload = {"contents": [{"parts":[{"text": gemini_sys_prompt}]}], "generationConfig": {"temperature": 0.7}}
1346
- try:
1347
- async with session.post(url, json=payload, timeout=20) as response:
1348
- if response.status == 200:
1349
- data = await response.json()
1350
- enhanced_prompt = data["candidates"][0]["content"]["parts"][0]["text"].strip()
1351
- break
1352
- except Exception: continue
 
 
 
 
 
 
1353
 
1354
- if enhanced_prompt == prompt and HF_TOKENS:
1355
- keys_to_try_hf = HF_TOKENS.copy()
1356
- random.shuffle(keys_to_try_hf)
1357
- async with aiohttp.ClientSession() as session:
1358
- for hf_key in keys_to_try_hf:
1359
- url = "https://router.huggingface.co/v1/chat/completions"
1360
- headers = {"Authorization": f"Bearer {hf_key}", "Content-Type": "application/json"}
1361
- payload = {
1362
- "model": "google/gemma-4-31B-it:novita",
1363
- "messages":[{"role": "user", "content":[{"type": "text", "text": gemini_sys_prompt}]}],
1364
- "max_tokens": 1024
1365
- }
1366
- try:
1367
- async with session.post(url, headers=headers, json=payload, timeout=20) as response:
1368
- if response.status == 200:
1369
- data = await response.json()
1370
- enhanced_prompt = data["choices"][0]["message"]["content"].strip()
1371
- break
1372
- except Exception:
1373
- continue
 
 
 
1374
 
1375
  try:
1376
  if proc_msg:
@@ -1953,51 +1960,51 @@ async def process_create_file(client, chat_id, topic):
1953
  if creds["chat"] <= 0:
1954
  return await send_with_keyboard(client, chat_id, "❌ اعتبار چت شما تمام شده است. لطفاً از منوی اصلی وارد بخش «خرید اشتراک 💎» شوید.", False)
1955
 
1956
- if not GEMINI_KEYS: return await send_with_keyboard(client, chat_id, "❌ کلیدهای جیمینای تنظیم نشده‌اند.", False)
1957
-
1958
  proc_msg = await send_with_keyboard(client, chat_id, "✍️ در حال تحقیق و نگارش مقاله جامع و حرفه‌ای...\n(این عملیات با توجه به طولانی بودن متن ممکن است کمی طول بکشد)", False)
1959
 
1960
- ai_prompt = f"یک مقاله بسیار جامع، کاملا حرفه‌ای، بسیار طولانی و با جزئیات کامل درباره موضوع زیر به زبان فارسی بنویس. فقط متن مقاله را بده و هیچ توضیح اضافه‌ای نده:\n\nموضوع: {topic}"
1961
 
1962
  article_text = None
1963
- for attempt in range(5):
1964
- keys_to_try = get_next_gemini_keys(100)
1965
- async with aiohttp.ClientSession() as session:
1966
- for key in keys_to_try:
1967
- url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key={key}"
1968
- payload = {"contents":[{"parts":[{"text": ai_prompt}]}], "generationConfig": {"temperature": 0.7, "maxOutputTokens": 8192}}
1969
- try:
1970
- async with session.post(url, json=payload, timeout=60) as response:
1971
- if response.status == 200:
1972
- data = await response.json()
1973
- article_text = data["candidates"][0]["content"]["parts"][0]["text"]
1974
- break
1975
- except Exception: continue
1976
- if article_text: break
1977
- await asyncio.sleep(2)
 
1978
 
1979
- if not article_text and HF_TOKENS:
1980
- for attempt in range(5):
1981
- keys_to_try_hf = HF_TOKENS.copy()
1982
- random.shuffle(keys_to_try_hf)
1983
  async with aiohttp.ClientSession() as session:
1984
- for hf_key in keys_to_try_hf:
1985
- url = "https://router.huggingface.co/v1/chat/completions"
1986
- headers = {"Authorization": f"Bearer {hf_key}", "Content-Type": "application/json"}
1987
- payload = {
1988
- "model": "google/gemma-4-31B-it:novita",
1989
- "messages":[{"role": "user", "content":[{"type": "text", "text": ai_prompt}]}],
1990
- "max_tokens": 4096
1991
- }
1992
- try:
1993
- async with session.post(url, headers=headers, json=payload, timeout=60) as response:
1994
- if response.status == 200:
1995
- data = await response.json()
1996
- article_text = data["choices"][0]["message"]["content"]
1997
- break
1998
- except Exception: continue
1999
- if article_text: break
2000
- await asyncio.sleep(2)
 
 
 
2001
 
2002
  if not article_text:
2003
  return await send_with_keyboard(client, chat_id, "❌ سرور تولید متن شلوغ است، لطفاً بعداً تلاش کنید.", True)
@@ -2009,7 +2016,7 @@ async def process_create_file(client, chat_id, topic):
2009
  if msg_id: await client.delete_messages(chat_id,[msg_id])
2010
  except Exception: pass
2011
 
2012
- proc_msg = await send_with_keyboard(client, chat_id, "📄 مقاله با موفقیت نوشته شد! در حال ارتباط با سرور و تبدیل به فایل‌های PDF و Word...\n(لطفا صبور باشید)", False)
2013
 
2014
  converter_url = "https://opera8-texttopdf.hf.space/"
2015
  uid = uuid.uuid4().hex
@@ -2597,14 +2604,45 @@ else:
2597
  await send_with_keyboard(client, chat_id, "🪄 به بخش **ویرایش عکس (Flux.2)** خوش آمدید.\n\nلطفاً ابتدا عکسی که می‌خواهید ویرایش کنید را بفرستید:\n(برای خروج دکمه «برگشت♻️» را بزنید)", True)
2598
  return
2599
 
2600
- if user_text_str in["/tts", "🎙️ صدا", "تبدیل متن به صدا🗣️"]:
2601
  user_states[str_chat_id]["mode"] = "tts_waiting_for_text"
2602
- await send_with_keyboard(client, chat_id, "🎙️ شما وارد بخش **تبدیل متن به صدا** شدید.\n\nلطفاً متنی که می‌خواهید به صدا تبدیل شود را ارسال کنید:\n(برای خروج دکمه «برگشت♻️» را بزنید)", True)
 
 
 
 
 
 
 
 
 
 
 
2603
  return
2604
 
2605
- if user_text_str in["/podcast", "📻 پادکست", "ساخت پادکست 🎙️"]:
2606
  user_states[str_chat_id]["mode"] = "podcast_waiting_for_topic"
2607
- await send_with_keyboard(client, chat_id, "📻 شما وارد بخش **ساخت پادکست** شدید.\n\nلطفاً موضوع پادکست خود را بفرستید.\nمثال: درباره تاریخچه پیدایش قهوه با ۳ گوینده یک پادکست جذاب بساز . همچنین این قسمت متصل به مدل زبانی است و درخواست هارو قبل از ساخت درک میکنه. میتوانید مقاله کامل یک سایت بفرستید با تبلیغات یا هرچی، هوش مصنوعی متن مقاله رو استخراج و پادکست براتون میسازه . در توضیحات امکان مشخص کردن تعداد گوینده به همراه اسم شون نیز از سمت شما امکان پذیر است.\n\n(برای خروج دکمه «برگشت♻️» را بزنید)", True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2608
  return
2609
 
2610
  if user_text_str in["/vc", "تغییر صدا 🎙️"]:
@@ -2617,7 +2655,7 @@ else:
2617
  user_states[str_chat_id]["mode"] = "clone_waiting_for_src"
2618
  user_states[str_chat_id]["file_bytes"] = None
2619
  user_states[str_chat_id]["ref_bytes"] = None
2620
- clone_text = """👤 **شما وارد بخش کلون کردن صدای اختصاصی شدید.**
2621
 
2622
  ✨ **این بخش چه کاری انجام می‌دهد؟**
2623
  با این ویژگی بی‌نظیر، شما می‌توانید صدای خود (یا هر فرد دیگری) را دقیقاً شبیه‌سازی کنید! کافیست یک نمونه از صدای خودتان صحبت کنید و یک نمونه از صدای شخص مورد نظر (الگو) را به هوش مصنوعی بدهید. ربات لحن و کلمات شما را گرفته و دقیقاً با جنس صدای شخص الگو بازسازی می‌کند.
 
1334
  if not HF_TOKENS: return await send_with_keyboard(client, chat_id, "❌ توکن‌های هاگینگ فیس تنظیم نشده‌اند.", False)
1335
 
1336
  proc_msg = await send_with_keyboard(client, chat_id, "✨ در حال ترجمه و بهینه‌سازی پرامپت شما...\n(تبدیل به پرامپت حرفه‌ای)", False)
 
 
1337
 
1338
+ aya_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}"
1339
+
1340
+ enhanced_prompt = prompt
1341
+ session_hash = ''.join(random.choices(string.ascii_lowercase + string.digits, k=11))
1342
+ join_url = "https://coherelabs-aya-expanse.hf.space/gradio_api/queue/join"
1343
+ data_url = f"https://coherelabs-aya-expanse.hf.space/gradio_api/queue/data?session_hash={session_hash}"
1344
+
1345
+ payload = {
1346
+ "data": [
1347
+ aya_sys_prompt,
1348
+ [],
1349
+ None,
1350
+ None
1351
+ ],
1352
+ "event_data": None,
1353
+ "fn_index": 2,
1354
+ "session_hash": session_hash,
1355
+ "trigger_id": 37
1356
+ }
1357
 
1358
+ for attempt in range(3):
1359
+ try:
1360
+ async with aiohttp.ClientSession() as session:
1361
+ async with session.post(join_url, json=payload, timeout=30) as resp:
1362
+ if resp.status == 200:
1363
+ async with session.get(data_url, timeout=120) as data_resp:
1364
+ async for line_bytes in data_resp.content:
1365
+ line = line_bytes.decode('utf-8').strip()
1366
+ if line.startswith("data: "):
1367
+ try:
1368
+ json_data = json.loads(line[6:])
1369
+ if json_data.get("msg") == "process_completed":
1370
+ if json_data.get("success"):
1371
+ output_data = json_data.get("output", {}).get("data", [])
1372
+ if output_data and len(output_data) > 0:
1373
+ result_hist = output_data[0]
1374
+ if isinstance(result_hist, list) and len(result_hist) > 0:
1375
+ enhanced_prompt = result_hist[-1][1].strip()
1376
+ break
1377
+ except Exception: pass
1378
+ except Exception: pass
1379
+ if enhanced_prompt != prompt: break
1380
+ await asyncio.sleep(2)
1381
 
1382
  try:
1383
  if proc_msg:
 
1960
  if creds["chat"] <= 0:
1961
  return await send_with_keyboard(client, chat_id, "❌ اعتبار چت شما تمام شده است. لطفاً از منوی اصلی وارد بخش «خرید اشتراک 💎» شوید.", False)
1962
 
 
 
1963
  proc_msg = await send_with_keyboard(client, chat_id, "✍️ در حال تحقیق و نگارش مقاله جامع و حرفه‌ای...\n(این عملیات با توجه به طولانی بودن متن ممکن است کمی طول بکشد)", False)
1964
 
1965
+ ai_prompt = f"یک مقاله بی‌نهایت جامع، کاملاً حرفه‌ای و بسیار بسیار طولانی درباره موضوع زیر به زبان فارسی بنویس. دقت کن که مقاله باید شامل بخش‌بندی‌های متعدد باشد و توضیحات زیر هر عنوان باید به شدت طولانی، مفصل و با جزئیات و مثال‌های فراوان (حداقل چند پاراگراف بلند برای هر بخش) نوشته شود؛ به هیچ وجه زیر عناوین توضیحات کوتاه نده. فقط متن اصلی مقاله را بده و هیچ توضیح اضافه‌ای ننویس:\n\nموضوع: {topic}"
1966
 
1967
  article_text = None
1968
+ session_hash = ''.join(random.choices(string.ascii_lowercase + string.digits, k=11))
1969
+ join_url = "https://coherelabs-aya-expanse.hf.space/gradio_api/queue/join"
1970
+ data_url = f"https://coherelabs-aya-expanse.hf.space/gradio_api/queue/data?session_hash={session_hash}"
1971
+
1972
+ payload = {
1973
+ "data": [
1974
+ ai_prompt,
1975
+ [],
1976
+ None,
1977
+ None
1978
+ ],
1979
+ "event_data": None,
1980
+ "fn_index": 2,
1981
+ "session_hash": session_hash,
1982
+ "trigger_id": 37
1983
+ }
1984
 
1985
+ for attempt in range(3):
1986
+ try:
 
 
1987
  async with aiohttp.ClientSession() as session:
1988
+ async with session.post(join_url, json=payload, timeout=30) as resp:
1989
+ if resp.status == 200:
1990
+ async with session.get(data_url, timeout=180) as data_resp:
1991
+ async for line_bytes in data_resp.content:
1992
+ line = line_bytes.decode('utf-8').strip()
1993
+ if line.startswith("data: "):
1994
+ try:
1995
+ json_data = json.loads(line[6:])
1996
+ if json_data.get("msg") == "process_completed":
1997
+ if json_data.get("success"):
1998
+ output_data = json_data.get("output", {}).get("data", [])
1999
+ if output_data and len(output_data) > 0:
2000
+ result_hist = output_data[0]
2001
+ if isinstance(result_hist, list) and len(result_hist) > 0:
2002
+ article_text = result_hist[-1][1]
2003
+ break
2004
+ except Exception: pass
2005
+ except Exception: pass
2006
+ if article_text: break
2007
+ await asyncio.sleep(2)
2008
 
2009
  if not article_text:
2010
  return await send_with_keyboard(client, chat_id, "❌ سرور تولید متن شلوغ است، لطفاً بعداً تلاش کنید.", True)
 
2016
  if msg_id: await client.delete_messages(chat_id,[msg_id])
2017
  except Exception: pass
2018
 
2019
+ proc_msg = await send_with_keyboard(client, chat_id, "📄 مقاله با موفقیت نوشته شد! در حال ارتباط با هوش مصنوعی و دریافت فایل‌های PDF و Word...\n(لطفا صبور باشید)", False)
2020
 
2021
  converter_url = "https://opera8-texttopdf.hf.space/"
2022
  uid = uuid.uuid4().hex
 
2604
  await send_with_keyboard(client, chat_id, "🪄 به بخش **ویرایش عکس (Flux.2)** خوش آمدید.\n\nلطفاً ابتدا عکسی که می‌خواهید ویرایش کنید را بفرستید:\n(برای خروج دکمه «برگشت♻️» را بزنید)", True)
2605
  return
2606
 
2607
+ if user_text_str in ["/tts", "🎙️ صدا", "تبدیل متن به صدا🗣️"]:
2608
  user_states[str_chat_id]["mode"] = "tts_waiting_for_text"
2609
+ tts_msg = """🎙️ شما وارد بخش **تبدیل متن به صدا** شدید.
2610
+
2611
+
2612
+ 📝 لطفاً متنی که می‌خواهید به صدا تبدیل شود را ارسال کنید.
2613
+
2614
+ 🌍 **پشتیبانی از تمامی زبان‌های دنیا!**
2615
+ 🎭 **درک لحن و احساسات:**
2616
+ هوش مصنوعی ما احساسات رو درک می‌کنه! کافیه لحن دلخواهت رو داخل پرانتز بنویسی.
2617
+ 💡 *مثال:* هی، گوش کن! یه راز دارم که فقط به تو می‌گم. (با لحنی مرموز، شیطنت‌آمیز و نجواگونه)
2618
+
2619
+ (برای خروج دکمه «برگشت♻️» را بزنید)"""
2620
+ await send_with_keyboard(client, chat_id, tts_msg, True)
2621
  return
2622
 
2623
+ if user_text_str in ["/podcast", "📻 پادکست", "ساخت پادکست 🎙️"]:
2624
  user_states[str_chat_id]["mode"] = "podcast_waiting_for_topic"
2625
+ podcast_msg = """📻 شما وارد بخش **ساخت پادکست** شدید.
2626
+
2627
+ لطفاً موضوع پادکست خود را بفرستید. این بخش متصل به هوش مصنوعی زبانی است و درخواست شما را قبل از ساخت کاملاً درک می‌کند! 🧠
2628
+
2629
+ ➖➖➖➖➖➖➖➖➖➖
2630
+ 💡 **راهنم��ی استفاده:**
2631
+ 🔹 می‌توانید فقط یک موضوع بدهید (مثال: درباره تاریخچه پیدایش قهوه با سه گوینده یک پادکست جذاب بساز).
2632
+ 🔹 می‌توانید متن کامل یک مقاله از یک سایت را بفرستید تا هوش مصنوعی خودش محتوای اصلی را استخراج کرده و پادکست بسازد.
2633
+ 🔹 امکان مشخص کردن تعداد گویندگان و اسم آن‌ها به انتخاب شما وجود دارد!
2634
+
2635
+ ➖➖➖➖➖➖➖➖➖➖
2636
+ 🎙️ **لیست ۳۰ گوینده اختصاصی ما:**
2637
+ شهاب | آوا | نوید | آرمان | مهسا | دانا | سامان | آرش | شبنم | سحر | مریم | بهرام | نیکان | فرناز | سارا | مانی | آرتین | دلنواز | روژان | امید | بردیا | ترانه | نیکو | هستی | کامیار | کیانوش | پویا | مهتاب | سام | لیدا
2638
+
2639
+ ➖➖➖➖➖➖➖➖➖➖
2640
+ 📌 **مثال برای درخواست:**
2641
+ یک پادکست برام بساز در باره مدیریت زمان با دو گوینده امید و مهسا
2642
+ اگر گوینده و تعداد آن از سمت شما مشخص نشه هوش مصنوعی خودش انتخاب میکنه
2643
+
2644
+ (برای خروج دکمه «برگشت♻️» را بزنید)"""
2645
+ await send_with_keyboard(client, chat_id, podcast_msg, True)
2646
  return
2647
 
2648
  if user_text_str in["/vc", "تغییر صدا 🎙️"]:
 
2655
  user_states[str_chat_id]["mode"] = "clone_waiting_for_src"
2656
  user_states[str_chat_id]["file_bytes"] = None
2657
  user_states[str_chat_id]["ref_bytes"] = None
2658
+ clone_text = """👤 **شما وارد بخش کلون کردن صدای اختصاصی شدید. با یک فایل صوتی کوتاه از هر شخصی صدای خودتونو به همون صدا تغییر بدید.**
2659
 
2660
  ✨ **این بخش چه کاری انجام می‌دهد؟**
2661
  با این ویژگی بی‌نظیر، شما می‌توانید صدای خود (یا هر فرد دیگری) را دقیقاً شبیه‌سازی کنید! کافیست یک نمونه از صدای خودتان صحبت کنید و یک نمونه از صدای شخص مورد نظر (الگو) را به هوش مصنوعی بدهید. ربات لحن و کلمات شما را گرفته و دقیقاً با جنس صدای شخص الگو بازسازی می‌کند.