Не так давно наткнулся на сайт моментальных генераций фото, который вот вот открылся и имеет огромную популярность на западном твиттере и реддите
Решил проверить как и через что идёт такая быстрая генерация, оказалось что для такой скорости они используют Websocket(вместо привычного HTTP API) и отправляют запрос с их секретным ключём для разработчиков прямо на стороне клиента.
Спросив у их владельца напрямую получил ответ, что они разрешают всем кто нашел ключ использовать и играться с ним![]()
Само апи у них недорогое по сравнению с конкурентами, но благодаря ключу мы сможем генерировать сотни тысяч картинок в день абсолютно бесплатно и без лимитов, а так же работать с изображениями: img2img, inpaint/outpaint, controlnet и различные loras
Данный инструмент в руках умелого кодера может приносить до $1000 в день(проверил на себе )
К слову одна такая генерация на топовой видеокарте 4090 займет у вас 40-60 секунд, в то время как тут абсолютно бесплатно вы ее получите меньше чем за секунду, халява, не правда ли?
Возможностей с этим у вас куча: от создания неотличимых дипфейк нюдсов до собственного платного сервиса - зависит лишь от вашей фантазии и профессионализма.
Сегодня я поделюсь примером простого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.pyfrom 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())Pythonfrom 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)
Сливаю эту информацию потому что не гонюсь за деньгами, поверьте, в жизни есть вещи и по важнее, и я считаю каждый обязан иметь свободный доступ к современным технологиям
Не знаю сколько проживет схема, но апи ключи действительны и работают уже полтора месяца, а в случае чего на заработанном с абуза можно уже и платно их апи использовать![]()
БЕСПЛАТНЫЕ КЛЮЧИ ОТКЛЮЧЕНЫ
Бесплатные ключи были отключены навсегда. Кто успел за месяц наабузить миллионы - поздравляю. Сейчас есть возможность получить личный апи ключ на их сайте https://runware.ai/ и на баланс капнет 15 пробных долларов. За 1$ можно сгенерировать +- 1600 картинок на Flux Schnell/SD 1.5 и 300 на Flux Devhttps://docs.runware.ai/en/getting-started/introduction
Разберётся даже чайник. Но не советую использовать их официальные библиотеки, лучше напрямую ручками через вебсокеты, ибо они только открылись и все дорабатывается
(по словам разрабов на этой неделе выкатят ControlNet+Loras для FLUX)[SIZE=5]https://fastflux.ai[/SIZE]
(ЗАКРЫТ)Всем кодерам желаю удачных проектов и миллионы долларов
Загрузка...

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