Все существенные изменения данного проекта будут задокументированы в этом файле.
Формат основан на Keep a Changelog, и этот проект придерживается Semantic Versioning.
1.3.8 - 29-12-2024
- Переконфигурирован ffmpeg для поддержки
libmp3lameдля решения проблемы сsoundcloud
1.3.7 - 24-10-2024
- <config/bot> Добавлено поле
proxy_urlуSettings
- <bot/audioWorker> Получение битрейта песни теперь производится с помощью
yt-dlp, а неffmpeg
- <bot/audioWorker> Обойдена блокировка youtube и других сервисов с помощью
proxy
1.3.6 - 22-04-2023
-
<db/scripts/init_triggers> Созданы триггеры для упрощения работы с БД (автоматизации некоторых действий)
-
<db/database> Создана функция
insert_messageдля добавления информации о сообщении в таблицуvk_messages -
<db/database> Создана функция
_insert_userдля добавления нового пользователя в таблицуusers -
<db/database> Создана функция
set_error_codeдля установки ошибки обработки сообщения в таблицеvk_messages -
<db/database> Создана функция
set_user_tokenдля добавления токена пользователя в таблицуvk_messages -
<db/database> Создана функция
select_user_dataдля получения карточки пользователя из таблицыusers -
<db/database> Создана функция
set_user_settingдля установки определённой настройки пользователя в таблицуuser_serttings -
<db/database> Создана функция
select_user_settingsдля получения настроек пользователя из таблицыuser_serttings -
<db/database> Создана функция
init_convert_requestдля добавления основных полей задачи пользователя в таблицеconvert_requests -
<db/database> Создана функция
complete_convert_requestдля добавления оставшихся полей в таблицеconvert_requests -
<db/database> Создана функция
insert_audioдля добавления информации о загруженной песни в таблицуvk_audio -
<db/database> Создана функция
select_original_audioдля получения информации о загруженной ранее песни из таблицыvk_audio -
<db/dbEnums> Созданы перечисления для удобства работы с базой данных
-
<commands/user> Добавлена команда
/skipдля пропуска загрузки текущего трека -
<commands/user> Добавлена команда
/set_agent (true/false)для включения/выключения режима агента (загрузка песни через собсвтенный аккаунт) -
<keyboards/user> Добавлена кнопка
Авторизоваться в боте -
<bot/userAuthServer> Создан класс
UserAuthHandlerдля поднятия веб-сервера, необходимого для получения токена пользователя (т.е. его авторизации) -
<utils/errorHandler/*> Создан модуль для классификации, масштабирования и управления ошибками, и дальнейшей их записи в базу данных
-
<bot/vkBotWorker> Добавлена возможность переименовывания ранее загруженных песен
-
<bot/vkBotWorker> Добавлено сохранение сообщений в базу данных
-
<bot/audioWorker> Добавлена возможность "быстрой обработки" песен: отправка уже готовой песни, если ранее её кто-то загружал через бота
-
<bot/audioWorker> Добавлена возможность загрузки песни через аккаунт самого пользователя (это необходимо как для удоства, так и для обхода лимита загружаемых песен в день)
- <db/scripts/init_tables> Изменены типы и ограничения некоторых столбцов
- <bot_settings> Период обновления сообщения со статусом загрузки песни уменьшен до 1 минуты
- <bot/vkBotWorker> Изменена логика обработки нового сообщения
- <bot/queueHandler> В функцию
ack_requestиз <bot/audioWorker> перенесена работа над обновлением текущей очереди запросов пользователя
- <bot/vkBotWorker> Изменение YouTube Shorts запроса под обычный, т.к. в обновленной версии модуля
yt-dlpдоабвлена их поддержка - <config/bot> Удаление показателя YouTube Shorts
- <config/bot> Удалён класс показателей запросов
RequestIndex - <keyboards/keyboard> Удалён параметр
executableиз-за его ненадобности
- <bot/vkBotWorker> Исправлена обработка прикреплённых видео. Благодаря возможности авторизации теперь их можно обрабатывать
1.3.5 - 21-03-2023
- <.dockerignore> Добавлен облегчения образа
Docker - <.pylintrc> Включён
pylintдля повышения стилизации и читаемости кода - <bot/vkBotWorker> Добавлено игнорирование ответов пользователей на сообщения в чате для возможности общения с модератором, оставления заметок
- <commands/init> Добавлена инициализция списка всех команд
- <commands/command> Добавлены структуры, необходимые для описания пользовательских команд
- <commands/init> Добавлена команда
/help, выводящая список доступных команд для конкретного пользователя - <bot/vkBotWorker> Добавлена поддержка "клавиатурных" команд (кнопки в меню)
- <keyboards/*> Добавлены клавиатуры
- Изменена логика развёртывания
Dockerдля повышения скорости - <config/*> Конфиг разбит на файлы
- <config/handler> Добавлен объект
WorkerTaskдля передачи параметров запроса пользователя - <audiobridge/*> Код адаптирован под использование новой структуры конфига
- <db/scripts/init_tables> Обновлены структуры таблиц
- <bot/vkBotWorker> Переработана обработка команд
- Переименован в
utils - <commands/user> Переписан под новую динамическую структуру
- Удалён
betterconf
- <common/vars> Удалён из-за перехода на новую структуру конфига
- <common/config> Удалён из-за перехода на новую структуру конфига
- <tools/loggerSetup> Исправлена ошибка "застывшего" времени в логах (теперь время обновляется)
- Во всех файлах настроены единые отступы (space)
1.3.4 - 02-12-2022
- <tools/customErrors> Создан единый список ошибок
yt-dlpи их ключей, для улучшения читаемости кода - <tools/yt_dlpShell> Создан для обработки сообщений
yt-dlp - <bot/audioWorker> Добавлена функция
_analyzeTitleдля извлечения из заголовка видео названия работы (без хештегов и авторов) - <bot/audioWorker> Добавлена функция
_getAudioBitrateдля получения битрейта видео, необходимо для оценки приблизительного размера mp3 файла
- Изменена модель
Workflowнад проектом, из-за недочётов предыдущей - Указывание версии бота перенесено из параметров запуска в конфигурационный файл
bot_settings.json - Устаревший модуль
youtube-dlзаменён на активно развивающийся форкyt-dlp - Название класса и файла
AudioToolsзаменено наPlaylistHandlerиз-за полной специализации на соответствующих задачах - <bot/playlistHandler> Получение элементов плейлиста было переложено на
yt-dlp - Передача запроса теперь осуществляется в форме
dict - <bot/vkBotWorker> Изменён размер максимально запроса (с 5 до 4)
- <main> Удалён
ArgParserиз-за ненадобности - <bot/playlistHandler> Удалён метод
_getPlaylistElements, т.к. его функцию заменил форкyt-dlp - <bot/audioWorker> Удалены функции
_toSeconds,_getAudioInfo,_getAudioUrlиз-за того, что их заменил функционалyt-dlp - Удален модуль
youtube_dl
- <bot/queueHandler> Исправлена работа
1.3.3 - 16-10-2022
- Исправлена обработка ошибки
HTTP error 404для модуляffmpeg - Доработаны рекурсивные функции
1.3.2 - 09-10-2022
- Добавлена предварительная оценка размера веса аудио перед скачиванием путём
F (bits) = t (sec) * bitrate (Kb / sec) - Заданы коды кастомных ошибок (
CustomError) для обработки преднамеренной остановки работы потока (AudioWorker) - Добавлено ограничение по минимальному размеру загружаемой аудиозаписи (файл должен быть не менее 50 Кб), иначе Вк ограничит загрузку
- Автокоррекция второго аргумента при загрузке плейлиста (удаление пробелов в строке)
- Поменян инструмент загрузки аудио (
youtube-dl→ffmpeg) в целях оптимизации процесса и извлечения аудио-отрезка - Циклы
while(), ранее используемые для выполнения консольной команды, заменены на рекурсивные функции для улучшения читаемости кода - Вынесены простые функции в ламбда-функции для улучшения читаемости кода
- Изменены содержания сообщений с процессом выполнения запроса
- Обновление прогресса скачивания трека теперь адекватное: оно происходит по временному таймеру в 1 минуту, а изначально период обновления рассчитывался по числу загрузки блоков песни
- Исправлена ошибка в функции
getSeconds()при обработке запросов с временем среза
1.3.1 - 20-09-2022
- Добавлен новый конфигурационный файл
bot_settings.json, в котором прописаны настройки обработки запросов пользователя и конвертации видео - Создан новый класс
vkGroupManager.pyдля управления группой вк - Добавлена функция конвертации
CHANGELOG.mdвwikiформат для вк группы
- Полностью переработана структура программы: каждый класс был вынесен в соответствующий ему модуль. Такое решение структуризирует ведение проекта и упрощает его дальнейшее развитие
- Обработка конфига программы переписана с использованием библиотеки
betterconf. Это сделано для более удобной работы с конфигурационными файлами.envиbot_settings.json - Прикреплённые YouTube видео стали обрабатываться как запрос, не содержащий ссылку, следовательно, будет вызываться ошибка об отсутствии в запросе ссылки
1.3.0 — 31-08-2022
- Добавлена функция в
audioBridge.pyvk_video_handlerдля получения прямой ссылки на прикреплённое видео
- Были оптимизированы переменные контейнера
PYTHONDONTWRITEBYTECODE=1иPYTHONUNBUFFERED=1на аналогичными по функционалу параметрами запуска-Buв командеENTRYPOINT
- Исправлена обработка видеозаписей ВКонтакте
1.2.9 — 30-08-2022
- Добавлено отсеивание запросов от пользователей, не содержащих в себе ссылки
- Добавлена обработка видео типа YouTube Shorts
- Был улучшен и оптимизирован принцип обработки сообщений от пользователя
1.2.8 — 27-08-2022
- Добавлена переменная
ENV PYTHONDONTWRITEBYTECODE=1в файл конфигурации контейнера (Dockerfile) - Добавлена переменная
ENV PYTHONUNBUFFERED=1в файл конфигурации контейнера (Dockerfile) - Добавлен файл
docker-compose.ymlдля запуска утилитыdocker compose
- Изменено имя файла логов
- Изменён скрипт автоматического развёртывания и установки бота на стороне сервера
install.zshиз-за перехода на утилитуdocker compose
- Убрана функция
create_dbиз файлаdb/database.py, т.к. созданием баз данных и ролей для них занимается утилитаdocker compose
1.2.7 — 25-08-2022
- Добавлено логгирование действий пользователей и бота в файл
- Изменена модель ведения проекта на Github (разделение на ветки, документ «Общее положение о ведении проекта»)
- Изменена инфраструктура репозитория и структура хранения файлов на сервере
- Изменён скрипт автоматического развёртывания и установки бота на стороне сервера (
install.zsh)
- Убран режим отладки (debug-режим) из prod-версии в связи с тем, что режимы были разделены по разнесеным группам
- Убрана возможность запуска бота в режиме отладки
- Убрано переключение между dev- и prod-версиями
- Убрано разделение ролей в связи с тем, что необходимость в командах разработчика отпала
- Убрана таблица для ролей в БД
- Убраны ID разработчиков в файле конфигурации окружения (
.env) - Убраны команды для разработчиков (
commands/dev.py) - Убран класс
PermissionsType, предназначенный для команд разработчиков
1.2.6 — 23-08-2022
- Добавлена поддержка БД PostgresSQL
- Добавлено прототипные версии описаний к каждому классу и функции
- Добавлена загрузка ролей в оперативную память (кеширование) для работы системы переключений версий
- Доработана полноценная версия системы переключения между версиями (
prod.иdev.) бота для разработчиков - Изменена инфраструктура репозитория и структура хранения файлов на сервере
- Изменена архитектура пользовательских команд
- Исправлена ошибка, из-за которой автоматическое развёртывание на dev-сервере не работало корректно
1.2.5 — 20-08-2022
- Добавлена прототипная версия системы переключения между версиями (production —
prod.и development —dev.) бота для разработчиков - Добавлена обработка аргументов (версия и режим отладки) для разработчиков
- Добавлена обработка последнего неотвеченного сообщения в случае обновления или падения бота
- Добавлено автоматическое развёртывание на dev-сервере Github-релиза через push с помощью Github Action
- Изменено внутреннее содержание файла
src/config.py— классCfgбыл подразделён на классыSettings,RequestIndex,PlaylistStatesв целях удобочитаемости кода
- Незначительное обновление исходного кода бота с прошлых версий
- Разностороннее оптимизация основного исполняемого файла бота —
audioBridge.py
1.2.4 — 17-08-2022
- Добавлено автоматическое развёртывание на production-сервере Github-релиза через tag с помощью Github Action
- Исправлена ошибка формата файла конфигурации окружения (
.env), из-за которойDockerотказывался загружать переменные этого файла
1.2.3 — 13-08-2022
- Расширен синтаксис команды ввода — добавлена возможность скачивать несколько треков из предоставляемого плейлиста
- Расширена возможность получения информации об обрабатываемом треке — автор и название (раньше была доступна информация лишь об авторе)
- Добавлена настройка сервера на кол-во обработчиков запросов (worker'ов), одновременно работающих с очередью запросов каждого пользователя
- Добавление обработчика кастомных пользовательских команд
- Добавлена пользовательская команда для работы с процессом загрузки (
/clear— очищение очереди запросов текущего пользователя)
- Обновлены и дополнены правила фильтрации ввода команды ("Защита от пользователя")
- Исправлено критическая ошибка, при которой еженочный перезапуск API-сервера со стороны VK вызывал падение из-за непредвиденной ошибки в классе
Vk Api Longpoll - Исправлена логическая ошибка, при которой добавление нового запроса в общую очередь приводило к тому, что запрос добавлялся не в конец общей очереди, а в конец "локальной" очереди автора
- Разностороннее обновление и оптимизация исходного кода бота
1.1.7 — 14-07-2022
- Добавлена очистка сообщений для пользователя, содержащее процесс выполнения запроса ("
Добавлено в очередь (*/5)" и сколько скачано)
- Убраны неиспользуемые обработчики событий от класса
Vk Api Longpollдля оптимизации кода
1.1.2 — 18-05-2022
- Добавлена фильтрация ввода команды ("Защита от пользователя")
- Добавлено ограничение на количество обработчиков общей очереди запросов (только 5 операций)
- Добавлено логгирование действий пользователей и бота в консоль
- Расширен синтаксис команды ввода — добавлена возможность создавать аудиофрагменты
- Отредактированы описания ошибок, выдаваемых ботом пользователям
- Исправлена ошибка, при которой при получении ботом ссылки на плейлист, происходило скачивание всего плейлиста вместо первой песни
- Исправлена критическая ошибка, при которой появление непредвиденных ошибок от библиотеки
youtube-dlвызывало падение бота — добавлен обработчик
1.0.0 — 15-04-2022
- Initial release