Загрузка...
Author's article We create a bot for instant free photo generation
Sep 16, 2024
fe4ther
31,396
67
  1. fe4ther
    fe4ther Topic starter Sep 16, 2024 Banned 2011 Jul 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:
     
    This article was useful for you?
    You can thank the author of the topic by transferring funds to your balance
    Thank the author
    1. View previous comments (2)
    2. Igroook
      fe4ther, Красавец,спасибо
    3. aksedocid
      fe4ther, спасибо, бро, годно

Comments

    1. Yamy
      Yamy Oct 9, 2024 34 Nov 20, 2022
      вставил другую модель, не генерирует фотки(
       
      1. oshmatok
        Yamy, значит ты используешь модель , которая не поддерживается
    2. Tlhelp32
      Tlhelp32 Oct 9, 2024 6 Mar 15, 2023
      парни, скажите пж как пофиксить [IMG]
       
      1. white_window
        Tlhelp32, airogram и webosokets точно скачал?
      2. fe4ther Topic starter
        Tlhelp32, аиограм обнови, у тебя 2 и установи вебсокетс
    3. Astronom
      Astronom Oct 11, 2024 60 Mar 30, 2020
      Круто и быстро делает, иногда конечно черный квадрат делает и лучше ставить 20-30 шагов для модели dev. А можно как то что бы на автомате делалось сразу 100 картинок? [IMG]
       
      1. fe4ther Topic starter
        Astronom,
        for i in range(100):
        # код генерации
      2. Astronom
        fe4ther, Бро, подскажи это надо перед чем вставлять? Можешь скрин сделать? а то я куда то вставляю но при запуске просто сразу закрывается. Я просто чайник в питоне
        [IMG]
      3. fe4ther Topic starter
        Astronom, та я как пример говорю вставь в чат гпт полный код и попроси генерить за раз не 1 а сотку картинок (конкретно нижнюю часть кода вставь router.message полностью блок)
    4. MefedroLove
      чувакк, бот очень полезный. но подскажите пожалуйста, как сделать так чтобы он принимал запросы еще и на Русском? :nerd:
       
      1. fe4ther Topic starter
    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. View previous comments (1)
      2. Ilya12_inactive5600037
        Astronom, ну вот я тоже хз,я хотя у меня ещё сегодня утром всё работало
      3. Ilya12_inactive5600037
        Astronom, не решил проблему?
      4. fe4ther Topic starter
        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
       
    7. Chuchelo81
      Подскажите, работает ли с моделью Juggernaut XL в данный момент? У меня не генерирует
       
      1. Astronom
        Chuchelo81, 11 версия не робит. 8,9,10 версии робит :dancing:
      2. sufleshKa
        Astronom, а как получить старые версии?
      3. Astronom
        sufleshKa, там же на сайте civitai есть все версии
    8. Manisk
      18+ контент генерирует?
       
      1. View previous comments (2)
      2. fe4ther Topic starter
        Manisk, таким не занимаюсь, но генерирует это точно
      3. Manisk
        fe4ther, понятно, не утверждай если не проверял)
      4. fe4ther Topic starter
        Manisk, могу с уверенностью утверждать. ты бы комменты прочел прежде чем свой писать
    9. id741371299
      id741371299 Oct 15, 2024 Banned 1 Oct 1, 2023
      А как Dall-e 3 поставить?
       
      1. fe4ther Topic starter
        id741371299, это не опенсурс модель
    10. v1nn1ty
      v1nn1ty Oct 16, 2024 ######################### 21 Dec 21, 2021
      первый ключ умер походу[IMG]
       
      1. View previous comments (6)
      2. v1nn1ty
        yellastro, вырубаются явно независимо
        т.к. второй ключ сегодня работал, в то время как первый умер
      3. pijawca
        v1nn1ty, [IMG]
        Update: Заработало
      4. v1nn1ty
        pijawca, эт откуда скрин
    11. Lilipop555
      Lilipop555 Oct 18, 2024 7 Apr 10, 2022
      работает походу через раз. сейчас постоянно куча ошибок в консоли, в конце ошибки KeyError: 'data'. я подумал это из-за того что я попробовал изменить размер и модель, но вернул код до первого и всё равно ошибка. хз
       
      1. View previous comments (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 Oct 18, 2024 1 Jul 29, 2024
      апи ключи вроде перестали работать
       
      1. fe4ther Topic starter
        tomoe2, [IMG]
        все работает
    13. billiorder
      billiorder Oct 18, 2024 4 Jun 15, 2021
      [IMG] :da:[IMG] :peka:
       
    14. Limbo_hack
      Limbo_hack Oct 19, 2024 203 Jan 4, 2017
      пиздец меня с ру айпи не пускал на сайт ахуеть! в *** ворвался только!
       
      1. DEVSTVENNIK
        Limbo_hack, ужас то какой, никогда такого не было и вот опять.. :hamster:
    15. fe4ther
      fe4ther Topic starter Oct 19, 2024 Banned 2011 Jul 24, 2019
      [IMG]

      Бесплатные ключи были отключены навсегда. Кто успел за месяц наабузить миллионы - поздравляю. Сейчас есть возможность получить личный ключ на их сайте https://runware.ai/ и на баланс капнет 15 пробных долларов. За 1$ можно сгенерировать +- 1600 картинок на Flux Schnell/SD 1.5 и 300 на Flux Dev
       
      1. Astronom
        fe4ther, Там же свою карту с деньгами надо привязывать что бы бесплатно что то получить? :em:
      2. fe4ther Topic starter
        Astronom, нет, создать аккаунт на бизнес почту какую-то, но я не стал морочиться и закинул сотку
    16. webad11
      webad11 Oct 19, 2024 63 Oct 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 попыток.');
      }
      }
      }
      }
      ловите пацаны, дальше сами разберётесь
       
      1. View previous comments (2)
      2. webad11
        fe4ther, что нарыл - то дал, позже мб покапаюсь, найду что-то более ценное
      3. webad11
      4. webad11
        webad11, UPD! Код не полный, если надо - обращайтесь
    17. nevera
      nevera Oct 22, 2024 0 Mar 23, 2024
      при импорте пишет что не найден модуль websockets, 6 строка, сам в питоне не сильно шарю
       
      1. fe4ther Topic starter
        nevera, pip install websockets
    18. 200
      200 Oct 22, 2024 Лучший *** 25 гбит/сек за 50₽: https://lolz.live/threads/8110836 300 Feb 11, 2023
      Что с ошибкой делать? KeyError: 'data'
       
      1. id741371299
        200, Памагите тоже такая ошибка, апи поменял - также
      2. 200
        id741371299, я там кидал код чат гпт, он мне что то на научном выдал, в итоге то что я понял, обновилось API.
    19. детектив
      детектив Oct 22, 2024 elvis has left the building 262 Nov 19, 2019
      fe4ther салам, сделал всё по гайду. Ловлю эррор:[IMG]

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

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