Update main.py
Browse files
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 |
-
|
| 1341 |
-
|
| 1342 |
-
|
| 1343 |
-
|
| 1344 |
-
|
| 1345 |
-
|
| 1346 |
-
|
| 1347 |
-
|
| 1348 |
-
|
| 1349 |
-
|
| 1350 |
-
|
| 1351 |
-
|
| 1352 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1353 |
|
| 1354 |
-
|
| 1355 |
-
|
| 1356 |
-
|
| 1357 |
-
|
| 1358 |
-
|
| 1359 |
-
|
| 1360 |
-
|
| 1361 |
-
|
| 1362 |
-
|
| 1363 |
-
|
| 1364 |
-
|
| 1365 |
-
|
| 1366 |
-
|
| 1367 |
-
|
| 1368 |
-
|
| 1369 |
-
|
| 1370 |
-
|
| 1371 |
-
|
| 1372 |
-
|
| 1373 |
-
|
|
|
|
|
|
|
|
|
|
| 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"یک مقاله ب
|
| 1961 |
|
| 1962 |
article_text = None
|
| 1963 |
-
|
| 1964 |
-
|
| 1965 |
-
|
| 1966 |
-
|
| 1967 |
-
|
| 1968 |
-
|
| 1969 |
-
|
| 1970 |
-
|
| 1971 |
-
|
| 1972 |
-
|
| 1973 |
-
|
| 1974 |
-
|
| 1975 |
-
|
| 1976 |
-
|
| 1977 |
-
|
|
|
|
| 1978 |
|
| 1979 |
-
|
| 1980 |
-
|
| 1981 |
-
keys_to_try_hf = HF_TOKENS.copy()
|
| 1982 |
-
random.shuffle(keys_to_try_hf)
|
| 1983 |
async with aiohttp.ClientSession() as session:
|
| 1984 |
-
|
| 1985 |
-
|
| 1986 |
-
|
| 1987 |
-
|
| 1988 |
-
|
| 1989 |
-
|
| 1990 |
-
|
| 1991 |
-
|
| 1992 |
-
|
| 1993 |
-
|
| 1994 |
-
|
| 1995 |
-
|
| 1996 |
-
|
| 1997 |
-
|
| 1998 |
-
|
| 1999 |
-
|
| 2000 |
-
|
|
|
|
|
|
|
|
|
|
| 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, "📄 مقاله با موفقیت نوشته شد! در حال ارتباط با
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2603 |
return
|
| 2604 |
|
| 2605 |
-
if user_text_str in["/podcast", "📻 پادکست", "ساخت پادکست 🎙️"]:
|
| 2606 |
user_states[str_chat_id]["mode"] = "podcast_waiting_for_topic"
|
| 2607 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
با این ویژگی بینظیر، شما میتوانید صدای خود (یا هر فرد دیگری) را دقیقاً شبیهسازی کنید! کافیست یک نمونه از صدای خودتان صحبت کنید و یک نمونه از صدای شخص مورد نظر (الگو) را به هوش مصنوعی بدهید. ربات لحن و کلمات شما را گرفته و دقیقاً با جنس صدای شخص الگو بازسازی میکند.
|