Advertisement
sosyamba

Untitled

Nov 15th, 2024
333
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.12 KB | None | 0 0
  1. import requests
  2. import time
  3. from aiogram import Bot, Dispatcher, types
  4. from aiogram.utils import executor
  5.  
  6. # Ваш токен Telegram бота
  7. TELEGRAM_TOKEN = 'Токен бота'
  8.  
  9. # Инициализация бота и диспетчера
  10. bot = Bot(token=TELEGRAM_TOKEN)
  11. dp = Dispatcher(bot)
  12.  
  13. # Функция для генерации изображения
  14. def generate_image_v2(prompt):
  15.     url = 'https://pornworks.ai/api/v2/generate/text2image'
  16.  
  17.     payload = {
  18.         "checkpoint": "nude_people",
  19.         "prompt": prompt,
  20.         "resources": [],
  21.         "samplerName": "DPM++ 2M Karras",
  22.         "ratio": "1x1",
  23.         "hr": False,
  24.         "sharpness": 5,
  25.         "cfgScale": 5,
  26.         "performance": "speed",
  27.         "denoisingStrength": 1,
  28.         "fast": False,
  29.         "inpaintMode": "controlnet"
  30.     }
  31.  
  32.     headers = {
  33.         'Content-Type': 'application/json',
  34.         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0',
  35.     }
  36.  
  37.     try:
  38.         # Отправка POST-запроса для генерации изображения
  39.         response = requests.post(url, json=payload, headers=headers)
  40.         response.raise_for_status()  # Если ошибка в ответе, выбрасываем исключение
  41.  
  42.         # Получаем ID запроса для дальнейшего опроса
  43.         data = response.json()
  44.         image_id = data['id']
  45.         print(f"Запрос на генерацию изображения отправлен, ID: {image_id}")
  46.  
  47.         # Ожидание завершения генерации
  48.         image_url = poll_for_image(image_id)
  49.         return image_url  # Возвращаем URL сгенерированного изображения
  50.  
  51.     except requests.exceptions.RequestException as error:
  52.         print(f"Ошибка при генерации изображения: {error}")
  53.         return None
  54.  
  55. # Функция для опроса статуса генерации изображения
  56. def poll_for_image(image_id):
  57.     url = f'https://pornworks.ai/api/v2/generations/{image_id}/state'
  58.  
  59.     while True:
  60.         try:
  61.             response = requests.get(url, headers={
  62.                 'Accept': 'application/json, text/plain, */*',
  63.                 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0',
  64.             })
  65.             response.raise_for_status()
  66.  
  67.             data = response.json()
  68.             state = data['state']
  69.             results = data.get('results')
  70.  
  71.             if state == 'done':
  72.                 print(f"Генерация изображения завершена: {results}")
  73.                 return results['image']  # Возвращаем URL сгенерированного изображения
  74.             else:
  75.                 print("Ожидание завершения генерации...")
  76.                 time.sleep(2)  # Ожидаем 2 секунды перед следующим запросом
  77.  
  78.         except requests.exceptions.RequestException as error:
  79.             print(f"Ошибка при опросе изображения: {error}")
  80.             return None
  81.  
  82. # Обработчик команды /start
  83. @dp.message_handler(commands=['start'])
  84. async def start(message: types.Message):
  85.     await message.answer("Привет! Отправь мне любое сообщение, и я сгенерирую картинку!")
  86.  
  87. # Обработчик всех сообщений
  88. @dp.message_handler(content_types=['text'])
  89. async def handle_message(message: types.Message):
  90.     user_message = message.text
  91.     image_url = generate_image_v2(user_message)
  92.  
  93.     if image_url:
  94.         await message.answer(f'Вот ваша картинка: {image_url}')
  95.     else:
  96.         await message.answer('Произошла ошибка при генерации картинки. Попробуйте снова.')
  97.  
  98. if __name__ == '__main__':
  99.     executor.start_polling(dp, skip_updates=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement