add computing connect
This commit is contained in:
Regular → Executable
@@ -0,0 +1,7 @@
|
|||||||
|
FROM python:3.10.6
|
||||||
|
LABEL authors="dmitrium12"
|
||||||
|
|
||||||
|
WORKDIR /audio_resive
|
||||||
|
COPY . .
|
||||||
|
RUN pip3 install -r requirements.txt
|
||||||
|
RUN pip3 install -U openai-whisper
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
version: '3.7'
|
||||||
|
services:
|
||||||
|
backend:
|
||||||
|
container_name: audio_resive
|
||||||
|
build: .
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ".:/audio_resive"
|
||||||
|
working_dir: /audio_resive
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
python main.py
|
||||||
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
+27
-14
@@ -2,17 +2,19 @@ import subprocess
|
|||||||
import speech_recognition as sr
|
import speech_recognition as sr
|
||||||
import os
|
import os
|
||||||
from functions.loging import loging
|
from functions.loging import loging
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
class Converter:
|
class Converter:
|
||||||
"""
|
"""
|
||||||
Этот класс выполняет главную функцию, конвертирует голос в текст
|
Этот класс выполняет главную функцию, конвертирует голос в текст
|
||||||
"""
|
"""
|
||||||
def __init__(self, path_to_file: str, message, language: str = "ru-RU"):
|
def __init__(self, path_to_file: str, message, model, language: str = "ru-RU"):
|
||||||
self.language = language
|
self.language = language
|
||||||
self.path_to_file = path_to_file
|
self.path_to_file = path_to_file
|
||||||
self.service = None
|
self.service = None
|
||||||
self.message = message
|
self.message = message
|
||||||
|
self.model = model
|
||||||
|
|
||||||
def audio_to_text(self) -> str:
|
def audio_to_text(self) -> str:
|
||||||
"""
|
"""
|
||||||
@@ -20,21 +22,32 @@ class Converter:
|
|||||||
|
|
||||||
:return: str - текст + служебная информация
|
:return: str - текст + служебная информация
|
||||||
"""
|
"""
|
||||||
f = -1.0
|
# f = -1.0
|
||||||
try:
|
try:
|
||||||
try:
|
r = requests.get("http://192.168.0.108:5000/ping")
|
||||||
import mutagen
|
if r.status_code == 200:
|
||||||
f = mutagen.File(self.path_to_file) # получение данных mutagen
|
response = requests.post("http://192.168.0.108:5000/decrypt_audio",
|
||||||
f = float(f.info.length)
|
files={"file": open(self.path_to_file, "rb").read()})
|
||||||
if f >= 30.0: # если длинна больше 30 секунд
|
if response.status_code == 200:
|
||||||
self.service = "google" # устанавливаю сервис google
|
return f"От компа:\n{response.text.replace('"', '')}"
|
||||||
return self.google(f) # запуск функции google
|
|
||||||
else:
|
else:
|
||||||
self.service = "yandex" # устанавливаем сервис yandex
|
return 'Не удалось получить текст.'
|
||||||
return self.yandex(f) # запуск функции yandex
|
else:
|
||||||
except Exception as e: # если какая-то проблема
|
result = self.model.transcribe(self.path_to_file)
|
||||||
print(e)
|
return result["text"]
|
||||||
return self.google(f) # запуск функции google
|
# try:
|
||||||
|
# import mutagen
|
||||||
|
# f = mutagen.File(self.path_to_file) # получение данных mutagen
|
||||||
|
# f = float(f.info.length)
|
||||||
|
# if f >= 30.0: # если длинна больше 30 секунд
|
||||||
|
# self.service = "google" # устанавливаю сервис google
|
||||||
|
# return self.google(f) # запуск функции google
|
||||||
|
# else:
|
||||||
|
# self.service = "yandex" # устанавливаем сервис yandex
|
||||||
|
# return self.yandex(f) # запуск функции yandex
|
||||||
|
# except Exception as e: # если какая-то проблема
|
||||||
|
# print(e)
|
||||||
|
# return self.google(f) # запуск функции google
|
||||||
except sr.RequestError: # обработка ошибки размера файлов
|
except sr.RequestError: # обработка ошибки размера файлов
|
||||||
return "Толи файл слишком большой, толи с ботом что-то случилось" # возвращение ошибки
|
return "Толи файл слишком большой, толи с ботом что-то случилось" # возвращение ошибки
|
||||||
|
|
||||||
|
|||||||
Regular → Executable
Executable
+28
@@ -0,0 +1,28 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def load_data():
|
||||||
|
try:
|
||||||
|
with open('users.json', 'r') as f:
|
||||||
|
return json.load(f)
|
||||||
|
except FileNotFoundError:
|
||||||
|
return {'users': [], 'chats': []}
|
||||||
|
|
||||||
|
|
||||||
|
def save_data(data_type, data_id=None):
|
||||||
|
data = load_data()
|
||||||
|
if data_id is None:
|
||||||
|
if 'static' not in data:
|
||||||
|
data['static'] = {'audio_resive': 0, 'chatGPT': 0}
|
||||||
|
if 'audio_resive' not in data['static']:
|
||||||
|
data['static'][data_type] = 0
|
||||||
|
if 'chatGPT' not in data['static']:
|
||||||
|
data['static']['chatGPT'] = 0
|
||||||
|
data['static'][data_type] += 1
|
||||||
|
with open('users.json', 'w') as f:
|
||||||
|
json.dump(data, f, indent=4)
|
||||||
|
else:
|
||||||
|
if data_id not in data[data_type]:
|
||||||
|
data[data_type].append(data_id)
|
||||||
|
with open('users.json', 'w') as f:
|
||||||
|
json.dump(data, f, indent=4)
|
||||||
Regular → Executable
+2
-2
@@ -3,7 +3,7 @@ from functions.convert import Converter
|
|||||||
from aiogram import types
|
from aiogram import types
|
||||||
|
|
||||||
|
|
||||||
async def get_audio_messages_func(message: types.Message, logger, bot) -> None:
|
async def get_audio_messages_func(message: types.Message, logger, bot, model) -> None:
|
||||||
"""
|
"""
|
||||||
Функция выкачивает файл, потом конвертирует его в текст, потом логирует
|
Функция выкачивает файл, потом конвертирует его в текст, потом логирует
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ async def get_audio_messages_func(message: types.Message, logger, bot) -> None:
|
|||||||
file = await bot.get_file(file_id) # ссылка для скачивая файла
|
file = await bot.get_file(file_id) # ссылка для скачивая файла
|
||||||
file_dow = await bot.download_file(file.file_path) # скачанный файл
|
file_dow = await bot.download_file(file.file_path) # скачанный файл
|
||||||
new_file.write(file_dow.getvalue()) # записываю
|
new_file.write(file_dow.getvalue()) # записываю
|
||||||
converter = Converter(file_name, message) # запуск конвертора
|
converter = Converter(file_name, message, model) # запуск конвертора
|
||||||
message_text = converter.audio_to_text() # получаю текст из конвертора
|
message_text = converter.audio_to_text() # получаю текст из конвертора
|
||||||
logger.info(f"Чат {name} (ID: {message.chat.id}) обработал файл {file_name}, "
|
logger.info(f"Чат {name} (ID: {message.chat.id}) обработал файл {file_name}, "
|
||||||
f"сервисом {converter.service}") # записываю всё в logger
|
f"сервисом {converter.service}") # записываю всё в logger
|
||||||
|
|||||||
Regular → Executable
-7
@@ -35,10 +35,3 @@ def loging(message: types.Message, service: str, file_path: str, text: str, f: f
|
|||||||
chat_title = message.chat.first_name
|
chat_title = message.chat.first_name
|
||||||
else:
|
else:
|
||||||
chat_title = message.chat.title
|
chat_title = message.chat.title
|
||||||
print(user_id, group_id, service, time, user_name, chat_title)
|
|
||||||
conn = sqlite3.connect("db.sql")
|
|
||||||
cur = conn.cursor()
|
|
||||||
user = (user_id, group_id, service, time, user_name, chat_title)
|
|
||||||
cur.execute("INSERT INTO statistic(user_id, group_id, service, time, user_name, chat_title) "
|
|
||||||
"VALUES(?, ?, ?, ?, ?, ?);", user)
|
|
||||||
conn.commit()
|
|
||||||
|
|||||||
Regular → Executable
+1
-1
@@ -30,7 +30,7 @@ async def get_response_to_openai(message: types.Message, bot):
|
|||||||
presence_penalty=0.0
|
presence_penalty=0.0
|
||||||
)
|
)
|
||||||
await bot.send_message(message.chat.id, f"ChatGPT\n{response['choices'][0]['message']['content']}",
|
await bot.send_message(message.chat.id, f"ChatGPT\n{response['choices'][0]['message']['content']}",
|
||||||
parse_mode=None, reply_to_message_id=message.message_id)
|
parse_mode="Markdown", reply_to_message_id=message.message_id)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
conn = sqlite3.connect('db.sql')
|
conn = sqlite3.connect('db.sql')
|
||||||
|
|||||||
Executable
+26
@@ -0,0 +1,26 @@
|
|||||||
|
from aiogram import types
|
||||||
|
from functions.file_data import load_data
|
||||||
|
|
||||||
|
|
||||||
|
async def start_stat(message: types.Message):
|
||||||
|
data = load_data()
|
||||||
|
send_message = f"""
|
||||||
|
Здравствуйте, {message.from_user.username}
|
||||||
|
➖➖➖➖➖➖➖➖➖
|
||||||
|
Мои боты созданы чтобы помогать вам с голосовыми сообщениями, а так же получить доступ к ChatGPT
|
||||||
|
➖➖➖➖➖➖➖➖➖
|
||||||
|
1️⃣ Отправив этому боту голосовое сообщение, кружок или что-то похожее вы получите его расшифровку
|
||||||
|
2️⃣ Добавив бота в чат и дав ему права читать и писать сообщение, он станет переводит все голосовые сообщения
|
||||||
|
, кружки и тому подобное
|
||||||
|
3️⃣ Так же вы можете написать боту @db_ChatGPT_bot команду /start и он расскажет как пользоваться ChatGPT из России
|
||||||
|
➖➖➖➖➖➖➖➖➖
|
||||||
|
🆓 Весь функционал ботов бесплатный
|
||||||
|
➖➖➖➖➖➖➖➖➖
|
||||||
|
Статистика:
|
||||||
|
Чатов в которых находится бот: {len(data["chats"])}
|
||||||
|
Пользователей воспользовавшихся ботом: {len(data["audio"])}
|
||||||
|
Пользователей запустивших бота: {len(data["start"])}
|
||||||
|
Ботом воспользовались {data["static"]["audio_resive"]} раз
|
||||||
|
ChatGPT ботом воспользовались {data["static"]["chatGPT"]} раз
|
||||||
|
"""
|
||||||
|
await message.reply(send_message)
|
||||||
Regular → Executable
+21
-38
@@ -1,64 +1,47 @@
|
|||||||
from aiogram.utils import executor
|
from aiogram.utils import executor
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
from aiogram import Bot, Dispatcher, types
|
from aiogram import Bot, Dispatcher, types
|
||||||
from functions import get_audio_messages_func, openai_answer, yandex
|
from functions import get_audio_messages_func, file_data, start_stat
|
||||||
import json
|
import asyncio
|
||||||
|
import whisper
|
||||||
|
|
||||||
bot = Bot(token="5941118321:AAG0g0keLrlnuH_9U9X6ehpFFAdOX38qeXI") # создаю объект бота
|
bot = Bot(token="5941118321:AAG0g0keLrlnuH_9U9X6ehpFFAdOX38qeXI") # создаю объект бота
|
||||||
dp = Dispatcher(bot) # создаю объект слушателя
|
dp = Dispatcher(bot) # создаю объект слушателя
|
||||||
logger.remove() # удаляю стандартный логер
|
logger.remove() # удаляю стандартный логер
|
||||||
logger.add("static/logs/logging_log.log", level="INFO") # создаю логер
|
logger.add("static/logs/logging_log.log", level="INFO") # создаю логер
|
||||||
|
model = whisper.load_model("tiny")
|
||||||
|
lock = asyncio.Lock()
|
||||||
|
|
||||||
|
|
||||||
|
@dp.message_handler(content_types=['new_chat_members'])
|
||||||
|
async def new_chat_members_handler(message: types.Message):
|
||||||
|
file_data.save_data('chats', message.chat.id)
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(commands=['start']) # обрабатываю команду start
|
@dp.message_handler(commands=['start']) # обрабатываю команду start
|
||||||
async def start(message: types.Message):
|
async def start(message: types.Message):
|
||||||
|
file_data.save_data('start', message.from_user.id)
|
||||||
# получаю имя отправителя
|
# получаю имя отправителя
|
||||||
if message.chat.first_name:
|
if message.chat.first_name:
|
||||||
name = message.chat.first_name
|
name = message.chat.first_name
|
||||||
else:
|
else:
|
||||||
name = message.chat.title
|
name = message.chat.title
|
||||||
logger.info(f"Группа {name} (ID: {message.chat.id}) запустил бота") # записываю в логи
|
logger.info(f"Группа {name} (ID: {message.chat.id}) запустил бота") # записываю в логи
|
||||||
await bot.send_message(message.chat.id, 'Привет! Отправляй голосовое, я расшифрую!') # отправляю ответное сообщение
|
await start_stat.start_stat(message)
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(commands=['statistic'])
|
|
||||||
async def statistic(message: types.Message):
|
|
||||||
await yandex.statistic(message)
|
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(commands=['create_yandex'])
|
|
||||||
async def create_yandex(message: types.Message):
|
|
||||||
await yandex.create_yandex(message)
|
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(commands=['r'])
|
|
||||||
async def r(message: types.Message):
|
|
||||||
await openai_answer.get_response_to_openai(message, bot)
|
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(commands=['r_clear'])
|
|
||||||
async def r_clear(message: types.Message):
|
|
||||||
await openai_answer.clear_db(message)
|
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(content_types=['text'])
|
|
||||||
async def not_work_user(message: types.Message):
|
|
||||||
if str(message.from_user.id) == "620318992" and message.text == "Гена, бань его" and message.reply_to_message:
|
|
||||||
with open('../not_work_user.json', 'r') as f:
|
|
||||||
data = json.load(f)
|
|
||||||
data['chat_gpt'].append(message.reply_to_message.from_user.id)
|
|
||||||
with open('../not_work_user.json', 'w') as f:
|
|
||||||
json.dump(data, f, indent=4)
|
|
||||||
await message.reply(f"@{message.reply_to_message.from_user.username} "
|
|
||||||
f"вы больше не можете со мной разговаривать")
|
|
||||||
|
|
||||||
|
|
||||||
@dp.message_handler(content_types=['voice', 'video_note', 'video']) # обрабатываю голосовые сообщения, кружки, видео
|
@dp.message_handler(content_types=['voice', 'video_note', 'video']) # обрабатываю голосовые сообщения, кружки, видео
|
||||||
async def get_audio_messages(message: types.Message):
|
async def get_audio_messages(message: types.Message):
|
||||||
await get_audio_messages_func.get_audio_messages_func(message, logger, bot) # вызываю функцию
|
file_data.save_data('audio_resive')
|
||||||
|
if message.chat.type == 'group' or message.chat.type == "supergroup":
|
||||||
|
file_data.save_data('chats', message.chat.id)
|
||||||
|
file_data.save_data('audio', message.from_user.id)
|
||||||
|
else:
|
||||||
|
file_data.save_data('audio', message.from_user.id)
|
||||||
|
async with lock:
|
||||||
|
await get_audio_messages_func.get_audio_messages_func(message, logger, bot, model) # вызываю функцию
|
||||||
|
|
||||||
|
|
||||||
def start_work_bot(): # функция запуска бота
|
def start_work_bot(): # функция запуска бота
|
||||||
logger.info("Бот запустился") # записываю логи
|
logger.info("Бот запустился") # записываю логи
|
||||||
executor.start_polling(dp, skip_updates=True) # запускаю pooling без пропуска пропущенных сообщений
|
executor.start_polling(dp, skip_updates=False) # запускаю pooling без пропуска пропущенных сообщений
|
||||||
|
|
||||||
|
|||||||
Regular → Executable
+3
@@ -2,6 +2,7 @@ from fastapi import FastAPI, Request, Form, Depends, Cookie, responses, templati
|
|||||||
from functions.admin import is_logged_in
|
from functions.admin import is_logged_in
|
||||||
from functions.admin.models import database
|
from functions.admin.models import database
|
||||||
from functions.admin.templates import logins, refresh, logs, log
|
from functions.admin.templates import logins, refresh, logs, log
|
||||||
|
import uvicorn
|
||||||
|
|
||||||
def Site():
|
def Site():
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
@@ -31,3 +32,5 @@ def Site():
|
|||||||
@app.get("/logs/{log_id}", response_class=responses.HTMLResponse)
|
@app.get("/logs/{log_id}", response_class=responses.HTMLResponse)
|
||||||
async def log_response(request: Request, log_id: int, logged_in: bool = Depends(is_logged_in.is_logged_in)):
|
async def log_response(request: Request, log_id: int, logged_in: bool = Depends(is_logged_in.is_logged_in)):
|
||||||
return await log.log(templates, request, log_id, logged_in)
|
return await log.log(templates, request, log_id, logged_in)
|
||||||
|
|
||||||
|
uvicorn.run(app)
|
||||||
|
|||||||
Regular → Executable
Regular → Executable
+102
-59
@@ -1,127 +1,170 @@
|
|||||||
aiofiles==22.1.0
|
aiofiles==23.1.0
|
||||||
aiogram==2.23.1
|
aiogram==2.25.1
|
||||||
aiohttp==3.8.3
|
aiohttp==3.8.4
|
||||||
aiolimiter==1.0.0
|
aiolimiter==1.1.0
|
||||||
aiosignal==1.3.1
|
aiosignal==1.3.1
|
||||||
anyio==3.6.2
|
altair
|
||||||
|
anyio==3.7.0
|
||||||
APScheduler==3.10.1
|
APScheduler==3.10.1
|
||||||
async-generator==1.10
|
async-generator==1.10
|
||||||
async-timeout==4.0.2
|
async-timeout==4.0.2
|
||||||
attrs==22.1.0
|
attrs==23.1.0
|
||||||
audiosegment==0.23.0
|
audiosegment==0.23.0
|
||||||
Babel==2.9.1
|
Babel==2.9.1
|
||||||
bcrypt==4.0.1
|
bcrypt==4.0.1
|
||||||
beautifulsoup4==4.11.1
|
beautifulsoup4==4.12.2
|
||||||
BibaAndBoba==1.2.2
|
BibaAndBoba
|
||||||
boto3==1.26.13
|
blinker==1.6.2
|
||||||
botocore==1.29.13
|
boto3==1.26.145
|
||||||
cachetools==5.3.0
|
botocore==1.29.145
|
||||||
certifi==2022.9.24
|
cachetools==5.3.1
|
||||||
|
certifi==2023.5.7
|
||||||
cffi==1.15.1
|
cffi==1.15.1
|
||||||
charset-normalizer==2.1.1
|
charset-normalizer==3.1.0
|
||||||
click==8.1.3
|
click==8.1.3
|
||||||
contourpy==1.0.6
|
colorama==0.4.6
|
||||||
cryptography==38.0.3
|
contourpy==1.0.7
|
||||||
|
cryptography==41.0.1
|
||||||
|
curl-cffi==0.5.6
|
||||||
cycler==0.11.0
|
cycler==0.11.0
|
||||||
DAWG-Python==0.7.2
|
DAWG-Python==0.7.2
|
||||||
deep-translator==1.9.2
|
decorator==5.1.1
|
||||||
|
deep-translator==1.11.1
|
||||||
dill==0.3.6
|
dill==0.3.6
|
||||||
discord==2.2.2
|
discord==2.2.3
|
||||||
discord.py==2.2.2
|
discord.py==2.2.3
|
||||||
dnspython==2.3.0
|
dnspython==2.3.0
|
||||||
docopt==0.6.2
|
docopt==0.6.2
|
||||||
email-validator==1.3.1
|
email-validator==2.0.0.post2
|
||||||
|
entrypoints==0.4
|
||||||
exceptiongroup==1.1.1
|
exceptiongroup==1.1.1
|
||||||
fastapi==0.95.1
|
fake-useragent==1.1.3
|
||||||
fastapi-users==10.4.2
|
fastapi==0.95.2
|
||||||
Flask==2.2.3
|
fastapi-users==11.0.0
|
||||||
fonttools==4.38.0
|
Flask==2.3.2
|
||||||
|
fonttools==4.39.4
|
||||||
|
forefront==0.2.6
|
||||||
frozenlist==1.3.3
|
frozenlist==1.3.3
|
||||||
geographiclib==2.0
|
geographiclib==2.0
|
||||||
geopy==2.3.0
|
geopy==2.3.0
|
||||||
|
gitdb==4.0.10
|
||||||
|
GitPython==3.1.31
|
||||||
|
gpt4free==1.0.2
|
||||||
greenlet==2.0.2
|
greenlet==2.0.2
|
||||||
grpcio==1.50.0
|
grpcio==1.54.2
|
||||||
grpcio-tools==1.48.2
|
grpcio-tools==1.48.2
|
||||||
h11==0.14.0
|
h11==0.14.0
|
||||||
h2==4.1.0
|
h2==4.1.0
|
||||||
hpack==4.0.0
|
hpack==4.0.0
|
||||||
httpcore==0.16.1
|
httpcore==0.17.2
|
||||||
httpx==0.23.3
|
httpx==0.24.1
|
||||||
hyperframe==6.0.1
|
hyperframe==6.0.1
|
||||||
idna==3.4
|
idna==3.4
|
||||||
|
importlib-metadata==6.6.0
|
||||||
itsdangerous==2.1.2
|
itsdangerous==2.1.2
|
||||||
javascript==1!1.0.1
|
javascript==1!1.0.2
|
||||||
Jinja2==3.1.2
|
Jinja2==3.1.2
|
||||||
jmespath==1.0.1
|
jmespath==1.0.1
|
||||||
joblib==1.2.0
|
joblib==1.2.0
|
||||||
|
jsonschema==4.17.3
|
||||||
kiwisolver==1.4.4
|
kiwisolver==1.4.4
|
||||||
loguru==0.6.0
|
loguru==0.7.0
|
||||||
lxml==4.9.2
|
lxml==4.9.2
|
||||||
magic-filter==1.0.9
|
magic-filter==1.0.9
|
||||||
makefun==1.15.1
|
makefun==1.15.1
|
||||||
|
markdown-it-py==2.2.0
|
||||||
MarkupSafe==2.1.2
|
MarkupSafe==2.1.2
|
||||||
matplotlib==3.6.2
|
matplotlib==3.7.1
|
||||||
multidict==6.0.3
|
mdurl==0.1.2
|
||||||
|
multidict==6.0.4
|
||||||
multiprocess==0.70.14
|
multiprocess==0.70.14
|
||||||
mutagen==1.46.0
|
mutagen==1.46.0
|
||||||
nltk==3.8
|
names==0.3.0
|
||||||
numpy==1.23.5
|
nltk==3.8.1
|
||||||
openai==0.27.4
|
numpy==1.24.3
|
||||||
|
openai==0.27.7
|
||||||
outcome==1.2.0
|
outcome==1.2.0
|
||||||
packaging==22.0
|
packaging==23.1
|
||||||
pandas==1.4.3
|
pandas
|
||||||
passlib==1.7.4
|
passlib==1.7.4
|
||||||
pathos==0.3.0
|
pathos==0.3.0
|
||||||
Pillow==9.4.0
|
Pillow==9.5.0
|
||||||
|
pip-review==1.3.0
|
||||||
pox==0.3.2
|
pox==0.3.2
|
||||||
ppft==1.7.6.6
|
ppft==1.7.6.6
|
||||||
|
prettytable==3.7.0
|
||||||
protobuf==3.19.6
|
protobuf==3.19.6
|
||||||
|
pyarrow==12.0.0
|
||||||
pycparser==2.21
|
pycparser==2.21
|
||||||
pydantic==1.10.2
|
pydantic==1.10.8
|
||||||
|
pydeck==0.8.1b0
|
||||||
pydub==0.25.1
|
pydub==0.25.1
|
||||||
PyExecJS==1.5.1
|
PyExecJS==1.5.1
|
||||||
|
Pygments==2.15.1
|
||||||
PyJWT==2.6.0
|
PyJWT==2.6.0
|
||||||
|
pymailtm==1.1.1
|
||||||
pymorphy2==0.9.1
|
pymorphy2==0.9.1
|
||||||
pymorphy2-dicts-ru==2.4.417127.4579844
|
pymorphy2-dicts-ru==2.4.417127.4579844
|
||||||
|
Pympler==1.0.1
|
||||||
pyparsing==3.0.9
|
pyparsing==3.0.9
|
||||||
|
PyPasser==0.0.5
|
||||||
|
pyperclip==1.8.2
|
||||||
|
pyrsistent==0.19.3
|
||||||
PySocks==1.7.1
|
PySocks==1.7.1
|
||||||
pyTelegramBotAPI==4.7.1
|
pyTelegramBotAPI==4.12.0
|
||||||
python-dateutil==2.8.2
|
python-dateutil==2.8.2
|
||||||
python-dotenv==1.0.0
|
python-dotenv==1.0.0
|
||||||
python-multipart==0.0.6
|
python-multipart==0.0.6
|
||||||
python-telegram-bot==20.1
|
python-telegram-bot==20.3
|
||||||
pytz==2022.6
|
pytz==2023.3
|
||||||
pytz-deprecation-shim==0.1.0.post0
|
pytz-deprecation-shim==0.1.0.post0
|
||||||
regex==2022.10.31
|
random-username==1.0.2
|
||||||
requests==2.28.1
|
regex==2023.5.5
|
||||||
rfc3986==1.5.0
|
requests==2.31.0
|
||||||
|
rfc3986==2.0.0
|
||||||
|
rich==13.4.1
|
||||||
rnnoise-wrapper @ git+https://github.com/Desklop/RNNoise_Wrapper@10647eba5c1dc678dc3fd443d111400792fefef6
|
rnnoise-wrapper @ git+https://github.com/Desklop/RNNoise_Wrapper@10647eba5c1dc678dc3fd443d111400792fefef6
|
||||||
s3transfer==0.6.0
|
s3transfer==0.6.1
|
||||||
scipy==1.10.0
|
scipy==1.10.1
|
||||||
selenium==4.8.3
|
selenium==4.9.1
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
|
smmap==5.0.0
|
||||||
sniffio==1.3.0
|
sniffio==1.3.0
|
||||||
sortedcontainers==2.4.0
|
sortedcontainers==2.4.0
|
||||||
soupsieve==2.3.2.post1
|
soupsieve==2.4.1
|
||||||
speechkit==2.1.1
|
speechkit==2.2.2
|
||||||
SpeechRecognition==3.8.1
|
SpeechRecognition==3.8.1
|
||||||
SQLAlchemy==2.0.10
|
SQLAlchemy==2.0.15
|
||||||
starlette==0.26.1
|
srt==3.5.3
|
||||||
tornado==6.2
|
starlette==0.27.0
|
||||||
tqdm==4.64.1
|
streamlit==1.21.0
|
||||||
translators==5.5.6
|
tls-client==0.2.1
|
||||||
|
toml==0.10.2
|
||||||
|
toolz==0.12.0
|
||||||
|
tornado==6.3.2
|
||||||
|
tqdm==4.65.0
|
||||||
|
translators==5.7.6
|
||||||
trio==0.22.0
|
trio==0.22.0
|
||||||
trio-websocket==0.10.2
|
trio-websocket==0.10.2
|
||||||
typing_extensions==4.4.0
|
TwoCaptcha==0.0.1
|
||||||
tzdata==2022.7
|
typing_extensions==4.6.3
|
||||||
tzlocal==4.3
|
tzdata==2023.3
|
||||||
|
tzlocal==5.0.1
|
||||||
urllib3==1.26.12
|
urllib3==1.26.12
|
||||||
uvicorn==0.21.1
|
uvicorn==0.22.0
|
||||||
|
validators==0.20.0
|
||||||
vk-api==11.9.9
|
vk-api==11.9.9
|
||||||
|
vosk==0.3.45
|
||||||
|
watchdog==3.0.0
|
||||||
|
wcwidth==0.2.6
|
||||||
webdriver-manager==3.8.6
|
webdriver-manager==3.8.6
|
||||||
webrtcvad==2.0.10
|
webrtcvad==2.0.10
|
||||||
Werkzeug==2.2.3
|
websocket-client==1.5.2
|
||||||
|
websockets==11.0.3
|
||||||
|
Werkzeug==2.3.4
|
||||||
wsproto==1.2.0
|
wsproto==1.2.0
|
||||||
yandex-s3==0.1.1
|
yandex-s3==0.1.1
|
||||||
yarl==1.8.2
|
yarl==1.9.2
|
||||||
yaweather==1.2.2
|
yaweather==1.2.2
|
||||||
|
zipp==3.15.0
|
||||||
|
pytube~=15.0.0
|
||||||
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
|
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 176 KiB |
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Executable
+48
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"start": [
|
||||||
|
620318992,
|
||||||
|
1144937686,
|
||||||
|
5142202213,
|
||||||
|
6285339504,
|
||||||
|
5807099397,
|
||||||
|
1816362641,
|
||||||
|
5544944943,
|
||||||
|
107869711
|
||||||
|
],
|
||||||
|
"r": [
|
||||||
|
620318992,
|
||||||
|
1144937686,
|
||||||
|
6263682066,
|
||||||
|
1484475666,
|
||||||
|
651112197,
|
||||||
|
5142202213,
|
||||||
|
1476571560,
|
||||||
|
725117322
|
||||||
|
],
|
||||||
|
"chats": [
|
||||||
|
-1001977366032,
|
||||||
|
-1001887458183,
|
||||||
|
-1001913006666,
|
||||||
|
-1001560258527
|
||||||
|
],
|
||||||
|
"audio": [
|
||||||
|
1144937686,
|
||||||
|
620318992,
|
||||||
|
211473217,
|
||||||
|
1484475666,
|
||||||
|
651112197,
|
||||||
|
190475953,
|
||||||
|
5807099397,
|
||||||
|
1035585172,
|
||||||
|
5142202213,
|
||||||
|
5798798097,
|
||||||
|
5563487236,
|
||||||
|
6285339504,
|
||||||
|
864790102,
|
||||||
|
107869711
|
||||||
|
],
|
||||||
|
"static": {
|
||||||
|
"audio_resive": 2,
|
||||||
|
"chatGPT": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
Regular → Executable
Reference in New Issue
Block a user