Upload main.py
Browse files
main.py
CHANGED
|
@@ -61,20 +61,25 @@ async def upload_to_bucket(url, user_id, prefix="temp"):
|
|
| 61 |
return None, None
|
| 62 |
|
| 63 |
|
| 64 |
-
async def download_file(url, retries=5, delay=
|
| 65 |
-
"""Пытается скачать файл из бакета несколько раз с задержкой"""
|
| 66 |
for i in range(retries):
|
| 67 |
try:
|
| 68 |
async with aiohttp.ClientSession() as session:
|
| 69 |
-
async with session.get(url, timeout=
|
| 70 |
if resp.status == 200:
|
| 71 |
data = await resp.read()
|
| 72 |
-
|
|
|
|
| 73 |
return io.BytesIO(data)
|
| 74 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
await asyncio.sleep(delay)
|
| 76 |
except Exception as e:
|
| 77 |
-
logger.error(f"Ошибка на попытке {i+1} скачивания файла для ВК: {e}")
|
| 78 |
await asyncio.sleep(delay)
|
| 79 |
return None
|
| 80 |
|
|
@@ -418,13 +423,13 @@ async def main_handler(message: Message):
|
|
| 418 |
if user['status'] == "wait_gender_free" and not user['primary_photo']:
|
| 419 |
supabase.table("users").update({"status": "wait_primary_photo"}).eq("id", message.from_id).execute()
|
| 420 |
return await message.answer("📸 Отправь одно своё фото — я сделаю стильный образ\n\n"
|
| 421 |
-
|
| 422 |
-
|
| 423 |
-
|
| 424 |
-
|
| 425 |
-
|
| 426 |
-
|
| 427 |
-
|
| 428 |
return await message.answer("✅ Сохранено", keyboard=get_main_menu(user['free_used']))
|
| 429 |
|
| 430 |
supabase.table("users").update({"status": "main"}).eq("id", message.from_id).execute()
|
|
|
|
| 61 |
return None, None
|
| 62 |
|
| 63 |
|
| 64 |
+
async def download_file(url, retries=5, delay=3):
|
| 65 |
+
"""Пытается скачать файл из бакета несколько раз с задержкой и проверкой размера"""
|
| 66 |
for i in range(retries):
|
| 67 |
try:
|
| 68 |
async with aiohttp.ClientSession() as session:
|
| 69 |
+
async with session.get(url, timeout=15) as resp:
|
| 70 |
if resp.status == 200:
|
| 71 |
data = await resp.read()
|
| 72 |
+
# Проверка: файл должен существовать и быть больше 500 байт (минимум для картинки)
|
| 73 |
+
if data and len(data) > 500:
|
| 74 |
return io.BytesIO(data)
|
| 75 |
+
else:
|
| 76 |
+
logger.warning(
|
| 77 |
+
f"Попытка {i + 1}: Файл пустой или неполный ({len(data) if data else 0} байт)")
|
| 78 |
+
|
| 79 |
+
logger.warning(f"Попытка {i + 1} скачивания не удалась, ждем {delay} сек...")
|
| 80 |
await asyncio.sleep(delay)
|
| 81 |
except Exception as e:
|
| 82 |
+
logger.error(f"Ошибка на попытке {i + 1} скачивания файла для ВК: {e}")
|
| 83 |
await asyncio.sleep(delay)
|
| 84 |
return None
|
| 85 |
|
|
|
|
| 423 |
if user['status'] == "wait_gender_free" and not user['primary_photo']:
|
| 424 |
supabase.table("users").update({"status": "wait_primary_photo"}).eq("id", message.from_id).execute()
|
| 425 |
return await message.answer("📸 Отправь одно своё фото — я сделаю стильный образ\n\n"
|
| 426 |
+
"Чтобы результат получился классным, важно:\n"
|
| 427 |
+
"• на фото только ты\n"
|
| 428 |
+
"• лицо хорошо освещено и видно целиком\n"
|
| 429 |
+
"• без очков, шапок и эффектов\n"
|
| 430 |
+
"• без других людей в кадре\n\n"
|
| 431 |
+
"Через пару минут ты получишь стильное нейро-изображение ✨\n\n"
|
| 432 |
+
"Жду фотографию ⬇️")
|
| 433 |
return await message.answer("✅ Сохранено", keyboard=get_main_menu(user['free_used']))
|
| 434 |
|
| 435 |
supabase.table("users").update({"status": "main"}).eq("id", message.from_id).execute()
|