Загрузка...
Авторская статья Создаем бота для моментальных бесплатных генераций фото
  1. fe4ther
    fe4ther Автор темы 16 сен 2024 Заблокирован(а) 2011 24 июл 2019

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

    [IMG]

    Спросив у их владельца напрямую получил ответ, что они разрешают всем кто нашел ключ использовать и играться с ним :finger_up:



    Само апи у них недорогое по сравнению с конкурентами, но благодаря ключу мы сможем генерировать сотни тысяч картинок в день абсолютно бесплатно и без лимитов, а так же работать с изображениями: img2img, inpaint/outpaint, controlnet и различные loras
    [IMG]
    Данный инструмент в руках умелого кодера может приносить до $1000 в день(проверил на себе )

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



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

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

    [IMG]

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

    [IMG]

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

    pip install aiogram websockets

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


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

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


    Копируем код ниже и вставляем в наш созданный файлик main.py
    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 и видим, что всё работает
    [IMG]
    [IMG]
    [IMG]

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



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


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

    Не знаю сколько проживет схема, но апи ключи действительны и работают уже полтора месяца, а в случае чего на заработанном с абуза можно уже и платно их апи использовать :hi:
    БЕСПЛАТНЫЕ КЛЮЧИ ОТКЛЮЧЕНЫ
    Бесплатные ключи были отключены навсегда. Кто успел за месяц наабузить миллионы - поздравляю. Сейчас есть возможность получить личный апи ключ на их сайте 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)
    Всем кодерам желаю удачных проектов и миллионы долларов :colobok_cool:
     
    Этот материал оказался полезным?
    Вы можете отблагодарить автора темы путем перевода средств на баланс
    Отблагодарить автора
    16 сен 2024 Изменено
    1. Посмотреть предыдущие комментарии (2)
    2. Igroook
      fe4ther, Красавец,спасибо
    3. aksedocid
      fe4ther, спасибо, бро, годно

Комментарии

    1. Yamy
      Yamy 9 окт 2024 34 20 ноя 2022
      вставил другую модель, не генерирует фотки(
       
      1. oshmatok
        Yamy, значит ты используешь модель , которая не поддерживается
    2. Tlhelp32
      Tlhelp32 9 окт 2024 6 15 мар 2023
      парни, скажите пж как пофиксить [IMG]
       
      1. white_window
        Tlhelp32, airogram и webosokets точно скачал?
      2. fe4ther Автор темы
        Tlhelp32, аиограм обнови, у тебя 2 и установи вебсокетс
    3. Astronom
      Astronom 11 окт 2024 60 30 мар 2020
      Круто и быстро делает, иногда конечно черный квадрат делает и лучше ставить 20-30 шагов для модели dev. А можно как то что бы на автомате делалось сразу 100 картинок? [IMG]
       
      1. fe4ther Автор темы
        Astronom,
        for i in range(100):
        # код генерации
      2. Astronom
        fe4ther, Бро, подскажи это надо перед чем вставлять? Можешь скрин сделать? а то я куда то вставляю но при запуске просто сразу закрывается. Я просто чайник в питоне
        [IMG]
      3. fe4ther Автор темы
        Astronom, та я как пример говорю вставь в чат гпт полный код и попроси генерить за раз не 1 а сотку картинок (конкретно нижнюю часть кода вставь router.message полностью блок)
    4. MefedroLove
      MefedroLove 11 окт 2024 1 11 окт 2024
      чувакк, бот очень полезный. но подскажите пожалуйста, как сделать так чтобы он принимал запросы еще и на Русском? :nerd:
       
      1. fe4ther Автор темы
    5. Ilya12_inactive5600037
      Как это пофиксить ?
      Failed to fetch updates - TelegramConflictError: Telegram server says - Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
      Sleep for 1.155050 seconds and try again... (tryings = 1, bot id = 7888732487)
       
      1. Посмотреть предыдущие комментарии (1)
      2. Ilya12_inactive5600037
        Astronom, ну вот я тоже хз,я хотя у меня ещё сегодня утром всё работало
      3. Ilya12_inactive5600037
        Astronom, не решил проблему?
      4. fe4ther Автор темы
        Ilya12_inactive5600037, тебе на английском прямо пишут что у тебя запущено 2 инстанса бота на 1 токен
    6. Ilya12_inactive5600037
      что за ошибка кто знает ? :despair:
      File "c:\Users\FuryFoеx-pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\aiogram\dispatcher\router.py", line 166, in _propagate_event
      response = await observer.trigger(event, **kwargs)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "c:\Users\FuryFoеx-pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\aiogram\dispatcher\event\telegram.py", line 121, in trigger
      return await wrapped_inner(event, kwargs)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "c:\Users\FuryFoеx-pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\aiogram\dispatcher\event\handler.py", line 43, in call
      return await wrapped()
      ^^^^^^^^^^^^^^^
      File "C:\Users\FuryFoе-pc\Desktop\Generator 2\main.py", line 35, in gen
      image = await create_image(message.text)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "C:\Users\FuryFoеx-pc\Desktop\Generator 2\main.py", line 22, in create_image
      img = await websocket.recv()
      ^^^^^^^^^^^^^^^^^^^^^^
      File "c:\Users\FuryFoеx-pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\websockets\legacy\protocol.py", line 562, in recv
      await self.ensure_open()
      File "c:\Users\FuryFoеx-pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\websockets\legacy\protocol.py", line 924, in ensure_open
      raise self.connection_closed_exc()
      websockets.exceptions.ConnectionClosedError: no close frame received or sent
       
      12 окт 2024 Изменено
    7. Chuchelo81
      Подскажите, работает ли с моделью Juggernaut XL в данный момент? У меня не генерирует
       
      13 окт 2024 Изменено
      1. Astronom
        Chuchelo81, 11 версия не робит. 8,9,10 версии робит :dancing:
      2. sufleshKa
        Astronom, а как получить старые версии?
      3. Astronom
        sufleshKa, там же на сайте civitai есть все версии
    8. Manisk
      18+ контент генерирует?
       
      1. Посмотреть предыдущие комментарии (2)
      2. fe4ther Автор темы
        Manisk, таким не занимаюсь, но генерирует это точно
      3. Manisk
        fe4ther, понятно, не утверждай если не проверял)
      4. fe4ther Автор темы
        Manisk, могу с уверенностью утверждать. ты бы комменты прочел прежде чем свой писать
        15 окт 2024 Изменено
    9. id741371299
      id741371299 15 окт 2024 Заблокирован(а) 1 1 окт 2023
      А как Dall-e 3 поставить?
       
      1. fe4ther Автор темы
        id741371299, это не опенсурс модель
    10. v1nn1ty
      v1nn1ty 16 окт 2024 ######################### 21 21 дек 2021
      первый ключ умер походу[IMG]
       
      1. Посмотреть предыдущие комментарии (6)
      2. v1nn1ty
        yellastro, вырубаются явно независимо
        т.к. второй ключ сегодня работал, в то время как первый умер
      3. pijawca
        v1nn1ty, [IMG]
        Update: Заработало
        16 окт 2024 Изменено
      4. v1nn1ty
        pijawca, эт откуда скрин
    11. Lilipop555
      Lilipop555 18 окт 2024 7 10 апр 2022
      работает походу через раз. сейчас постоянно куча ошибок в консоли, в конце ошибки KeyError: 'data'. я подумал это из-за того что я попробовал изменить размер и модель, но вернул код до первого и всё равно ошибка. хз
       
      1. Посмотреть предыдущие комментарии (7)
      2. Lilipop555
        v1nn1ty, а можешь подсказать с моделями и размером. я особо не шарю в кодинге прост. сайт с моделями я нашёл, еще не пробовал, а вот размеры прям любые можно там?
      3. v1nn1ty
        Lilipop555, я модели с civitai беру
        размеры не любые можно, там условия на них есть
        https://docs.runware.ai/en/image-inference/api-reference#request-height
        https://docs.runware.ai/en/image-inference/api-reference#request-width

        типо, что делится на 64 должно число, минимально можно 512, максимально 2048 пикселей

        но надо еще смотреть что в описании модели написано, там могут быть рекомендованные размеры, на которых лучше всего генерируются фотки
    12. tomoe2
      tomoe2 18 окт 2024 1 29 июл 2024
      апи ключи вроде перестали работать
       
      1. fe4ther Автор темы
        tomoe2, [IMG]
        все работает
    13. billiorder
      billiorder 18 окт 2024 4 15 июн 2021
      [IMG] :da:[IMG] :peka:
       
      18 окт 2024 Изменено
    14. Limbo_hack
      Limbo_hack 19 окт 2024 203 4 янв 2017
      пиздец меня с ру айпи не пускал на сайт ахуеть! в *** ворвался только!
       
      1. DEVSTVENNIK
        Limbo_hack, ужас то какой, никогда такого не было и вот опять.. :hamster:
    15. fe4ther
      fe4ther Автор темы 19 окт 2024 Заблокирован(а) 2011 24 июл 2019
      [IMG]

      Бесплатные ключи были отключены навсегда. Кто успел за месяц наабузить миллионы - поздравляю. Сейчас есть возможность получить личный ключ на их сайте https://runware.ai/ и на баланс капнет 15 пробных долларов. За 1$ можно сгенерировать +- 1600 картинок на Flux Schnell/SD 1.5 и 300 на Flux Dev
       
      1. Astronom
        fe4ther, Там же свою карту с деньгами надо привязывать что бы бесплатно что то получить? :em:
      2. fe4ther Автор темы
        Astronom, нет, создать аккаунт на бизнес почту какую-то, но я не стал морочиться и закинул сотку
    16. webad11
      webad11 19 окт 2024 63 2 окт 2024
      JS
      async function createImage(prompt, userId) {
      const maxRetries = 3;
      let attempt = 0;

      const connectAndGenerateImage = async () => {
      console.log('Отправляем запрос на генерацию изображения...');

      const requestUrl = `https://image-generation.perchance.org/api/generate?prompt=${encodeURIComponent(prompt)}&seed=-1&resolution=1024x1024&guidanceScale=7&negativePrompt=${encodeURIComponent("low quality, deformed, blurry, bad art, drawing, painting, horrible resolutions, low DPI, low PPI, blurry, glitch, error")}&channel=image-generator-professional&subChannel=public&userKey=21c0410d6c167b688d7058b2a2d4bdd67d99a3121da47ceb0be4af8c547d59dc&requestId=0.3375448669220542&__cacheBust=${Math.random()}`;

      try {
      const response = await axios.get(requestUrl);
      console.log('Ответ от API:', response.data);

      if (response.data.status === 'success' && response.data.imageId) {
      const imageUrl = `https://image-generation.perchance.org/api/downloadTemporaryImage?imageId=${response.data.imageId}`;
      console.log('Изображение успешно сгенерировано. URL:', imageUrl);
      return imageUrl; // Вернем URL изображения
      } else {
      throw new Error('Не удалось получить imageId из ответа');
      }
      } catch (error) {
      console.error('Ошибка при запросе к API:', error.message);
      throw error; // Пробрасываем ошибку для повторной попытки
      }
      };

      while (attempt < maxRetries) {
      try {
      return await connectAndGenerateImage();
      } catch (error) {
      console.error(`Ошибка при попытке ${attempt + 1}:`, error.message);
      attempt += 1;

      if (attempt < maxRetries) {
      console.log(`Переотправка запроса... (${attempt}/${maxRetries})`);
      } else {
      throw new Error('Не удалось сгенерировать изображение после 3 попыток.');
      }
      }
      }
      }
      ловите пацаны, дальше сами разберётесь
       
      19 окт 2024 Изменено
      1. Посмотреть предыдущие комментарии (2)
      2. webad11
        fe4ther, что нарыл - то дал, позже мб покапаюсь, найду что-то более ценное
      3. webad11
        19 окт 2024 Изменено
      4. webad11
        webad11, UPD! Код не полный, если надо - обращайтесь
    17. nevera
      nevera 22 окт 2024 0 23 мар 2024
      при импорте пишет что не найден модуль websockets, 6 строка, сам в питоне не сильно шарю
       
      1. fe4ther Автор темы
        nevera, pip install websockets
    18. 200
      200 22 окт 2024 300 11 фев 2023
      Что с ошибкой делать? KeyError: 'data'
       
      1. id741371299
        200, Памагите тоже такая ошибка, апи поменял - также
      2. 200
        id741371299, я там кидал код чат гпт, он мне что то на научном выдал, в итоге то что я понял, обновилось API.
    19. детектив
      детектив 22 окт 2024 elvis has left the building 262 19 ноя 2019
      fe4ther салам, сделал всё по гайду. Ловлю эррор:[IMG]

      чё мне просто выходит надо на аккич 1$ закинуть там и всё ворк будет?
       
      1. fe4ther Автор темы
        детектив, да, но минимум пополнение 20$ (на всю жизнь хватит)
      2. детектив
        fe4ther, хуясебе

        увидел, спасибо:duck_love:
    20. Cassele
      Cassele 1 ноя 2024 17 1 ноя 2024
      Обидно, досадно что я дочитал до "Бесплатные ключи отключены" только после того как уже запустил бота( Но автор молодец, статья хорошо оформлена, я как человек который вообще не близок ко всему что здесь рассказано шагом в шаг смог все повторить. Есть ли аналоги или похожие темы?
       
      1. Посмотреть предыдущие комментарии (1)
      2. Cassele
        fe4ther, ты запустил свой сервис по генерации?
      3. fe4ther Автор темы
      4. Cassele
      5. Посмотреть следующие комментарии (1)
Top
Загрузка...