Создаем бота для моментальных бесплатных генераций фото

Создаем бота для моментальных бесплатных генераций фото

Не так давно наткнулся на сайт моментальных генераций фото, который вот вот открылся и имеет огромную популярность на западном твиттере и реддите
​​


Это фото и ещё 3 таких он сгенерировал буквально за 0.3сек

Решил проверить как и через что идёт такая быстрая генерация, оказалось что для такой скорости они используют Websocket(вместо привычного HTTP API) и отправляют запрос с их секретным ключём для разработчиков прямо на стороне клиента.



Спросив у их владельца напрямую получил ответ, что они разрешают всем кто нашел ключ использовать и играться с ним
eb6dd3a2-b197-475c-a649-77a98f9b797c.svg


Само апи у них недорогое по сравнению с конкурентами, но благодаря ключу мы сможем генерировать сотни тысяч картинок в день абсолютно бесплатно и без лимитов, а так же работать с изображениями: img2img, inpaint/outpaint, controlnet и различные loras
​​


Данный инструмент в руках умелого кодера может приносить до $1000 в день(проверил на себе )​​


К слову одна такая генерация на топовой видеокарте 4090 займет у вас 40-60 секунд, в то время как тут абсолютно бесплатно вы ее получите меньше чем за секунду, халява, не правда ли?

Возможностей с этим у вас куча: от создания неотличимых дипфейк нюдсов до собственного платного сервиса - зависит лишь от вашей фантазии и профессионализма.

Сегодня я поделюсь примером простого
bc9c08a9-a19a-48c1-8d27-f33b40b559f7.svg
Telegram бота на питоне для генерации таких картинок:​​

Для начала нам необходимо установить на наш компьютер/сервер сам Python.
Переходим по ссылке https://www.python.org/downloads/release/python-3119/ и выбираем нужную версию:


Нас интересует Windows Installer 64-bit, скачиваем, запускаем установщик и ОБЯЗАТЕЛЬНО в первом окне жмем галочку "Add Python to PATH"



После установки переходим в консоль(win+r), вводим "cmd" и в открывшемся терминале прописываем команду:

pip install aiogram websockets

Ждем загрузки двух библиотек и закрываем терминал​​

Запускаем любую удобную IDE (если вы программист), например PyCharm или vscode
Простым работягам подойдет и блокнот/sublime text

Я же буду использовать vscode

Создаем на рабочем столе папку с названием нашего бота, пусть это будет Generator
Перетаскиваем её в vscode и создаем в этой папке файлик main.py

Копируем код ниже и вставляем в наш созданный файлик main.py​​


from aiogram import Bot, types, Dispatcher, Router, F
from aiogram.filters import Command
import asyncio
import uuid
import json
import websockets

token = '' # Ваш токен бота взятый из @BotFather
runware_api = '' # Ваш личный ключ с ЛК [URL]https://runware.ai/[/URL]

bot = Bot(token=token)
dp = Dispatcher()
router = Router()

async def create_image(prompt): # Генерируем картинку
async with websockets.connect('wss://ws-api.runware.ai/v1') as websocket:
auth_request = [{"taskType": "authentication","apiKey": runware_api}]
await websocket.send(json.dumps(auth_request)) # Логинимся и получаем успешный ответ от сервера
auth_response = await websocket.recv()
n = 1
image_request = [{"positivePrompt": prompt,"model": "runware:100@1",'steps':4,'width':512,'height':512,'numberResults':n,'outputType':['URL'],'taskType':'imageInference','taskUUID':uuid.uuid4().hex}]
await websocket.send(json.dumps(image_request)) # Отправляем запрос на генерацию и получаем картинку
img = await websocket.recv()
data = json.loads(img)['data'][0]
return data

@router.message(Command('start')) # Добавляем ответ на команду /start
async def start(message: types.Message):
await message.answer('Привет!\nЯ бот для моментальной генерации картинок, отправь мне на английском любой промпт и я в ту же секунду сгенерирую тебе изображение')

@router.message() # Ловим промпты
async def gen(message: types.Message):
if not message.text:
return await message.answer('Отправь мне запрос текстом, я не понимаю другие форматы :(')
msg = await message.answer(f'Начинаю генерацию по запросу:\n\n{message.text}')
image = await create_image(message.text)
await message.answer_photo(image['imageURL'], caption=f'Вот ваша генерация по запросу:\n\n{message.text}')
await bot.delete_messages(message.chat.id, [msg.message_id, message.message_id])

async def main():
router.message.filter(F.chat.type == 'private')
dp.include_router(router)
await dp.start_polling(bot)

if __name__ == '__main__':
print('Бот для генерации картинок успешно запущен')
asyncio.run(main())

Python

Код:
from aiogram import Bot, types, Dispatcher, Router, F
from aiogram.filters import Command
import asyncio
import uuid
import json
import websockets

token = '' # Ваш токен бота взятый из @BotFather
runware_api = '' # Ваш личный ключ с ЛК [URL]https://runware.ai/[/URL]

bot = Bot(token=token)
dp = Dispatcher()
router = Router()

async def create_image(prompt): # Генерируем картинку
    async with websockets.connect('wss://ws-api.runware.ai/v1') as websocket:
        auth_request = [{"taskType": "authentication","apiKey": runware_api}]
        await websocket.send(json.dumps(auth_request)) # Логинимся и получаем успешный ответ от сервера
        auth_response = await websocket.recv()
        n = 1
        image_request = [{"positivePrompt": prompt,"model": "runware:100@1",'steps':4,'width':512,'height':512,'numberResults':n,'outputType':['URL'],'taskType':'imageInference','taskUUID':uuid.uuid4().hex}]
        await websocket.send(json.dumps(image_request)) # Отправляем запрос на генерацию и получаем картинку
        img = await websocket.recv()
        data = json.loads(img)['data'][0]
        return data

@router.message(Command('start')) # Добавляем ответ на команду /start
async def start(message: types.Message):
    await message.answer('Привет!\nЯ бот для моментальной генерации картинок, отправь мне на английском любой промпт и я в ту же секунду сгенерирую тебе изображение')

@router.message() # Ловим промпты
async def gen(message: types.Message):
    if not message.text:
        return await message.answer('Отправь мне запрос текстом, я не понимаю другие форматы :(')
    msg = await message.answer(f'Начинаю генерацию по запросу:\n\n{message.text}')
    image = await create_image(message.text)
    await message.answer_photo(image['imageURL'], caption=f'Вот ваша генерация по запросу:\n\n{message.text}')
    await bot.delete_messages(message.chat.id, [msg.message_id, message.message_id])

async def main():
    router.message.filter(F.chat.type == 'private')
    dp.include_router(router)
    await dp.start_polling(bot)

if __name__ == '__main__':
    print('Бот для генерации картинок успешно запущен')
    asyncio.run(main())

В переменную token вставляем токен от бота(который можно получить в боте BotFather).
Для смены модели, например на порнушную, замените значение параметра model на любую модель введя ее AIR ID из CiviAI, например на
⁡civitai:133005@782002
⁡ (в комментариях к статье рассказано об этом более подробно)​​

Запускаем наш файл main.py и видим, что всё работает




Обратите внимание что у бота ушло всего 4 секунды чтобы получить от вас промпт, отправить на сервер и получить в ответ картинку.

P.S: У вас нет границ и бот можно улучшать вечность, тут лишь показан базовый пример, который сможет запустить у себя любой нубик и не платить миллионы в месяц за тот же миджорни(который, кстати, хуже опенсорс модели FLUX Dev)​​



Сливаю эту информацию потому что не гонюсь за деньгами, поверьте, в жизни есть вещи и по важнее, и я считаю каждый обязан иметь свободный доступ к современным технологиям

Не знаю сколько проживет схема, но апи ключи действительны и работают уже полтора месяца, а в случае чего на заработанном с абуза можно уже и платно их апи использовать
73dc06ae-2fa4-499d-937b-0216431277e8.webp

БЕСПЛАТНЫЕ КЛЮЧИ ОТКЛЮЧЕНЫ
​​

Бесплатные ключи были отключены навсегда. Кто успел за месяц наабузить миллионы - поздравляю. Сейчас есть возможность получить личный апи ключ на их сайте https://runware.ai/ и на баланс капнет 15 пробных долларов. За 1$ можно сгенерировать +- 1600 картинок на Flux Schnell/SD 1.5 и 300 на Flux Dev

https://docs.runware.ai/en/getting-started/introduction

Разберётся даже чайник. Но не советую использовать их официальные библиотеки, лучше напрямую ручками через вебсокеты, ибо они только открылись и все дорабатывается
(по словам разрабов на этой неделе выкатят ControlNet+Loras для FLUX)​​


Всем кодерам желаю удачных проектов и миллионы долларов
408648de-cbe1-4cd7-bfc3-c696a349321c.webp

Комментарии 0

Пока нет комментариев. Начните обсуждение.
Войдите, чтобы оставить комментарий.
Назад
Верх