env, docker, requirements, custom server url, gradio auth
This commit is contained in:
parent
48e92b085e
commit
1f30f42f51
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.vscode
|
||||||
|
.venv
|
||||||
|
.env
|
2
LICENSE
2
LICENSE
@ -2,6 +2,8 @@ MIT License
|
|||||||
|
|
||||||
Copyright (c) 2023 Мишген
|
Copyright (c) 2023 Мишген
|
||||||
|
|
||||||
|
Copyright for portions of project soaska/sd_telegram are held by Мишген, 2023 as part of project amputator84/sd_telegram. All other copyright for project soaska/sd_telegram are held by Alex Borisov.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
in the Software without restriction, including without limitation the rights
|
in the Software without restriction, including without limitation the rights
|
||||||
|
52
README.md
52
README.md
@ -1,20 +1,45 @@
|
|||||||
# sd_telegram
|
# sd_telegram
|
||||||
telegram bot on aiogram python 3.10.6 to generate images in automatic1111 locally
|
telegram bot on aiogram to generate images with automatic1111 fast api
|
||||||
|
|
||||||
create bot from [BotFather](https://t.me/BotFather) and use token in [API_TOKEN](https://github.com/amputator84/sd_telegram/blob/master/bot.py#L32)
|
|
||||||
|
|
||||||
the bot is installed in automatic1111 via extensions or use _git clone_ into _C:\stable-diffusion-webui\extensions\sd_telegram_
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp sample.env .env
|
||||||
```
|
```
|
||||||
pip install aiogram
|
|
||||||
pip install webuiapi
|
create bot from [BotFather](https://t.me/BotFather) and use token in API_TOKEN variable.
|
||||||
pip install translate
|
add vk and ok tokens to env file.
|
||||||
pip install transformers
|
|
||||||
pip install vk_api
|
> заходим в https://oauth.vk.com/authorize?client_id=51626357&scope=photos&redirect_uri=http%3A%2F%2Foauth.vk.com%2Fblank.html&display=page&response_type=token \
|
||||||
pip install ok_api
|
> где 51626357 - номер вашего включенного приложения, созданного в https://vk.com/apps?act=manage, \
|
||||||
cd C:\stable-diffusion-webui\extensions\sd_telegram\
|
> photos - зона доступа. \
|
||||||
|
> После перехода и подтверждения выцепляем access_token из адресной строки \
|
||||||
|
> TODO auto requests \
|
||||||
|
> OK https://ok.ru/vitrine/myuploaded \
|
||||||
|
> Добавить приложение - https://ok.ru/app/setup \
|
||||||
|
> дбавить платформу - OAUTH \
|
||||||
|
> VALUABLE_ACCESS = Обязательно \
|
||||||
|
> PHOTO_CONTENT = Обязательно \
|
||||||
|
> Ссылка на страницу = https://apiok.ru/oauth_callback \
|
||||||
|
> Список разрешённых redirect_uri = https://apiok.ru/oauth_callback \
|
||||||
|
> сохранить, перезайти \
|
||||||
|
> Ищем ID приложения справа от "Основные настройки приложения" - ID 512002358821 \
|
||||||
|
> Открываем в браузере https://connect.ok.ru/oauth/authorize?client_id=512002358821&scope=PHOTO_CONTENT;VALUABLE_ACCESS&response_type=token&redirect_uri=https://apiok.ru/oauth_callback \
|
||||||
|
> С адресной строки копируем token в access_token ниже \
|
||||||
|
> application_key = Публичный ключ справа от "Основные настройки приложения" \
|
||||||
|
> Вечный access_token - Получить новый \
|
||||||
|
> application_secret_key = Session_secret_key \
|
||||||
|
|
||||||
|
run bot with python
|
||||||
|
```bash
|
||||||
|
python -m venv venv
|
||||||
|
source venv/bin/activate
|
||||||
|
pip install -m requirements.txt
|
||||||
python bot.py
|
python bot.py
|
||||||
``````
|
```
|
||||||
|
run bot in docker
|
||||||
|
```bash
|
||||||
|
docker build -t soaska/sd_bot .
|
||||||
|
docker run soaska/sd_bot
|
||||||
|
```
|
||||||
|
|
||||||
use ; in prompt as delimiter to be divided into several separate parts, like ```cat;dog;car```
|
use ; in prompt as delimiter to be divided into several separate parts, like ```cat;dog;car```
|
||||||
|
|
||||||
@ -106,4 +131,3 @@ Donations are **not needed**. Who wants to subscribe to [my generations](https:/
|
|||||||
Lifehack`s:
|
Lifehack`s:
|
||||||
If Lora dont work, see [this](https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/7984?ref=blog.hinablue.me#issuecomment-1514312942)
|
If Lora dont work, see [this](https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/7984?ref=blog.hinablue.me#issuecomment-1514312942)
|
||||||
|
|
||||||
© _Mishgen_
|
|
49
bot.py
49
bot.py
@ -1,4 +1,5 @@
|
|||||||
# https://docs.aiogram.dev/en/latest/
|
# https://docs.aiogram.dev/en/latest/
|
||||||
|
from ipaddress import ip_address
|
||||||
from aiogram import Bot, Dispatcher, types
|
from aiogram import Bot, Dispatcher, types
|
||||||
from aiogram.dispatcher.filters.state import State, StatesGroup
|
from aiogram.dispatcher.filters.state import State, StatesGroup
|
||||||
from aiogram.contrib.fsm_storage.memory import MemoryStorage
|
from aiogram.contrib.fsm_storage.memory import MemoryStorage
|
||||||
@ -34,6 +35,10 @@ import logging
|
|||||||
import vk_api
|
import vk_api
|
||||||
from vk_api import VkUpload #https://github.com/python273/vk_api
|
from vk_api import VkUpload #https://github.com/python273/vk_api
|
||||||
from ok_api import OkApi, Upload # https://github.com/needkirem/ok_api
|
from ok_api import OkApi, Upload # https://github.com/needkirem/ok_api
|
||||||
|
import dotenv
|
||||||
|
import os
|
||||||
|
|
||||||
|
dotenv.load_dotenv()
|
||||||
|
|
||||||
# Настройка логгера
|
# Настройка логгера
|
||||||
logging.basicConfig(format="[%(asctime)s] %(levelname)s : %(name)s : %(message)s",
|
logging.basicConfig(format="[%(asctime)s] %(levelname)s : %(name)s : %(message)s",
|
||||||
@ -44,35 +49,18 @@ logging.getLogger('aiogram').setLevel(logging.DEBUG)
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# from https://t.me/BotFather
|
# from https://t.me/BotFather
|
||||||
API_BOT_TOKEN = "TOKEN_HERE"
|
|
||||||
#заходим в https://oauth.vk.com/authorize?client_id=51626357&scope=photos&redirect_uri=http%3A%2F%2Foauth.vk.com%2Fblank.html&display=page&response_type=token
|
VK_TOKEN = os.getenv('VK_TOKEN')
|
||||||
# где 51626357 - номер вашего включенного приложения, созданного в https://vk.com/apps?act=manage,
|
API_BOT_TOKEN = os.getenv('API_BOT_TOKEN')
|
||||||
# photos - зона доступа.
|
VK_ALBUM_ID = os.getenv('VK_ALBUM_ID') # брать с адресной строки, когда открываешь ВК. Пример https://vk.com/album123_789
|
||||||
# После перехода и подтверждения выцепляем access_token из адресной строки
|
OK_ACCESS_TOKEN = os.getenv('OK_ACCESS_TOKEN')
|
||||||
# TODO auto requests
|
OK_APPLICATION_KEY = os.getenv('OK_APPLICATION_KEY')
|
||||||
# OK https://ok.ru/vitrine/myuploaded
|
OK_APPLICATION_SECRET_KEY = os.getenv('OK_APPLICATION_SECRET_KEY')
|
||||||
# Добавить приложение - https://ok.ru/app/setup
|
OK_GROUP_ID = os.getenv('OK_GROUP_ID')
|
||||||
# дбавить платформу - OAUTH
|
|
||||||
# VALUABLE_ACCESS = Обязательно
|
|
||||||
# PHOTO_CONTENT = Обязательно
|
|
||||||
# Ссылка на страницу = https://apiok.ru/oauth_callback
|
|
||||||
# Список разрешённых redirect_uri = https://apiok.ru/oauth_callback
|
|
||||||
# сохранить, перезайти
|
|
||||||
# Ищем ID приложения справа от "Основные настройки приложения" - ID 512002358821
|
|
||||||
# Открываем в браузере https://connect.ok.ru/oauth/authorize?client_id=512002358821&scope=PHOTO_CONTENT;VALUABLE_ACCESS&response_type=token&redirect_uri=https://apiok.ru/oauth_callback
|
|
||||||
# С адресной строки копируем token в access_token ниже
|
|
||||||
# application_key = Публичный ключ справа от "Основные настройки приложения"
|
|
||||||
# Вечный access_token - Получить новый
|
|
||||||
# application_secret_key = Session_secret_key
|
|
||||||
VK_TOKEN = 'VK_TOKEN_HERE'
|
|
||||||
API_BOT_TOKEN = 'API_BOT_TOKEN_HERE'
|
|
||||||
VK_ALBUM_ID = 'VK_ALBUM_ID' # брать с адресной строки, когда открываешь ВК. Пример https://vk.com/album123_789
|
|
||||||
OK_ACCESS_TOKEN = 'OK_ACCESS_TOKEN_HERE'
|
|
||||||
OK_APPLICATION_KEY = 'OK_APPLICATION_KEY_HERE'
|
|
||||||
OK_APPLICATION_SECRET_KEY = 'OK_APPLICATION_SECRET_KEY_HERE'
|
|
||||||
OK_GROUP_ID = 'OK_GROUP_ID_HERE'
|
|
||||||
ARRAY_INLINE = []
|
ARRAY_INLINE = []
|
||||||
|
|
||||||
|
print(API_BOT_TOKEN)
|
||||||
|
|
||||||
bot = Bot(token=API_BOT_TOKEN)
|
bot = Bot(token=API_BOT_TOKEN)
|
||||||
storage = MemoryStorage()
|
storage = MemoryStorage()
|
||||||
dp = Dispatcher(bot, storage=storage)
|
dp = Dispatcher(bot, storage=storage)
|
||||||
@ -97,10 +85,11 @@ def getAttrtxt2img():
|
|||||||
|
|
||||||
# -------- GLOBAL ----------
|
# -------- GLOBAL ----------
|
||||||
formatted_date = datetime.today().strftime("%Y-%m-%d")
|
formatted_date = datetime.today().strftime("%Y-%m-%d")
|
||||||
host = "127.0.0.1"
|
host = os.getenv('SD_HOST')
|
||||||
port = "7861"
|
port = os.getenv('SD_PORT')
|
||||||
# https://github.com/mix1009/sdwebuiapi
|
# https://github.com/mix1009/sdwebuiapi
|
||||||
api = webuiapi.WebUIApi(host=host, port=port)
|
api = webuiapi.WebUIApi(host=host, port=port)
|
||||||
|
api.set_auth(os.getenv('SD_USERNAME'), os.getenv('SD_PASSWORD'))
|
||||||
# TODO --share used shared link. https://123456.gradio.live/docs does not work
|
# TODO --share used shared link. https://123456.gradio.live/docs does not work
|
||||||
local = "http://" + host + ":" + port
|
local = "http://" + host + ":" + port
|
||||||
process = None
|
process = None
|
||||||
@ -640,7 +629,7 @@ async def inl_sd(message: Union[types.Message, types.CallbackQuery]) -> None:
|
|||||||
await message.message.edit_text(
|
await message.message.edit_text(
|
||||||
"Запускаем SD\n" + getTxt(), reply_markup=getStart()
|
"Запускаем SD\n" + getTxt(), reply_markup=getStart()
|
||||||
)
|
)
|
||||||
url = 'http://127.0.0.1:7861/docs'
|
url = f'http://{host}:port/docs/'
|
||||||
n = 0
|
n = 0
|
||||||
while n != 200:
|
while n != 200:
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
6
dockerfile
Normal file
6
dockerfile
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
FROM python:3.11
|
||||||
|
LABEL maintainer="info@borisov-ab.ru"
|
||||||
|
COPY . /bot
|
||||||
|
WORKDIR /bot
|
||||||
|
RUN pip install -r requirements.txt
|
||||||
|
CMD ["python", "/bot/bot.py"]
|
11
example.env
Normal file
11
example.env
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
VK_TOKEN = 'VK_TOKEN_HERE'
|
||||||
|
API_BOT_TOKEN = 'API_BOT_TOKEN_HERE'
|
||||||
|
VK_ALBUM_ID = 'VK_ALBUM_ID'
|
||||||
|
OK_ACCESS_TOKEN = 'OK_ACCESS_TOKEN_HERE'
|
||||||
|
OK_APPLICATION_KEY = 'OK_APPLICATION_KEY_HERE'
|
||||||
|
OK_APPLICATION_SECRET_KEY = 'OK_APPLICATION_SECRET_KEY_HERE'
|
||||||
|
OK_GROUP_ID = 'OK_GROUP_ID_HERE'
|
||||||
|
SD_HOST = '127.0.0.1'
|
||||||
|
SD_PORT = '7861'
|
||||||
|
SD_USERNAME = 'user'
|
||||||
|
SD_PASSWORD = '1234'
|
7
requirements.txt
Normal file
7
requirements.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
aiogram==2.22.2
|
||||||
|
webuiapi
|
||||||
|
translate
|
||||||
|
transformers
|
||||||
|
vk_api
|
||||||
|
ok_api
|
||||||
|
python-dotenv
|
Loading…
Reference in New Issue
Block a user