Skip to content

Latest commit

 

History

History
312 lines (248 loc) · 25.7 KB

File metadata and controls

312 lines (248 loc) · 25.7 KB

Changelog

Все существенные изменения данного проекта будут задокументированы в этом файле.

Формат основан на Keep a Changelog, и этот проект придерживается Semantic Versioning.

1.3.8 - 29-12-2024

Changed

  • Переконфигурирован ffmpeg для поддержки libmp3lame для решения проблемы с soundcloud

1.3.7 - 24-10-2024

Added

  • <config/bot> Добавлено поле proxy_url у Settings

Changed

  • <bot/audioWorker> Получение битрейта песни теперь производится с помощью yt-dlp, а не ffmpeg

Fixed

  • <bot/audioWorker> Обойдена блокировка youtube и других сервисов с помощью proxy

1.3.6 - 22-04-2023

Added

  • <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> Добавлена возможность загрузки песни через аккаунт самого пользователя (это необходимо как для удоства, так и для обхода лимита загружаемых песен в день)

Changed

  • <db/scripts/init_tables> Изменены типы и ограничения некоторых столбцов
  • <bot_settings> Период обновления сообщения со статусом загрузки песни уменьшен до 1 минуты
  • <bot/vkBotWorker> Изменена логика обработки нового сообщения
  • <bot/queueHandler> В функцию ack_request из <bot/audioWorker> перенесена работа над обновлением текущей очереди запросов пользователя

Deprecated

  • <bot/vkBotWorker> Изменение YouTube Shorts запроса под обычный, т.к. в обновленной версии модуля yt-dlp доабвлена их поддержка
  • <config/bot> Удаление показателя YouTube Shorts

Removed

  • <config/bot> Удалён класс показателей запросов RequestIndex
  • <keyboards/keyboard> Удалён параметр executable из-за его ненадобности

Fixed

  • <bot/vkBotWorker> Исправлена обработка прикреплённых видео. Благодаря возможности авторизации теперь их можно обрабатывать

1.3.5 - 21-03-2023

Added

  • <.dockerignore> Добавлен облегчения образа Docker
  • <.pylintrc> Включён pylint для повышения стилизации и читаемости кода
  • <bot/vkBotWorker> Добавлено игнорирование ответов пользователей на сообщения в чате для возможности общения с модератором, оставления заметок
  • <commands/init> Добавлена инициализция списка всех команд
  • <commands/command> Добавлены структуры, необходимые для описания пользовательских команд
  • <commands/init> Добавлена команда /help, выводящая список доступных команд для конкретного пользователя
  • <bot/vkBotWorker> Добавлена поддержка "клавиатурных" команд (кнопки в меню)
  • <keyboards/*> Добавлены клавиатуры

Changed

  • Изменена логика развёртывания Docker для повышения скорости
  • <config/*> Конфиг разбит на файлы
  • <config/handler> Добавлен объект WorkerTask для передачи параметров запроса пользователя
  • <audiobridge/*> Код адаптирован под использование новой структуры конфига
  • <db/scripts/init_tables> Обновлены структуры таблиц
  • <bot/vkBotWorker> Переработана обработка команд
  • Переименован в utils
  • <commands/user> Переписан под новую динамическую структуру

Deprecated

  • Удалён betterconf

Removed

  • <common/vars> Удалён из-за перехода на новую структуру конфига
  • <common/config> Удалён из-за перехода на новую структуру конфига

Fixed

  • <tools/loggerSetup> Исправлена ошибка "застывшего" времени в логах (теперь время обновляется)
  • Во всех файлах настроены единые отступы (space)

1.3.4 - 02-12-2022

Added

  • <tools/customErrors> Создан единый список ошибок yt-dlp и их ключей, для улучшения читаемости кода
  • <tools/yt_dlpShell> Создан для обработки сообщений yt-dlp
  • <bot/audioWorker> Добавлена функция _analyzeTitle для извлечения из заголовка видео названия работы (без хештегов и авторов)
  • <bot/audioWorker> Добавлена функция _getAudioBitrate для получения битрейта видео, необходимо для оценки приблизительного размера mp3 файла

Changed

  • Изменена модель Workflow над проектом, из-за недочётов предыдущей
  • Указывание версии бота перенесено из параметров запуска в конфигурационный файл bot_settings.json
  • Устаревший модуль youtube-dl заменён на активно развивающийся форк yt-dlp
  • Название класса и файла AudioTools заменено на PlaylistHandler из-за полной специализации на соответствующих задачах
  • <bot/playlistHandler> Получение элементов плейлиста было переложено на yt-dlp
  • Передача запроса теперь осуществляется в форме dict
  • <bot/vkBotWorker> Изменён размер максимально запроса (с 5 до 4)

Removed

  • <main> Удалён ArgParser из-за ненадобности
  • <bot/playlistHandler> Удалён метод _getPlaylistElements, т.к. его функцию заменил форк yt-dlp
  • <bot/audioWorker> Удалены функции _toSeconds, _getAudioInfo, _getAudioUrl из-за того, что их заменил функционал yt-dlp
  • Удален модуль youtube_dl

Fixed

  • <bot/queueHandler> Исправлена работа

1.3.3 - 16-10-2022

Fixed

  • Исправлена обработка ошибки HTTP error 404 для модуля ffmpeg
  • Доработаны рекурсивные функции

1.3.2 - 09-10-2022

Added

  • Добавлена предварительная оценка размера веса аудио перед скачиванием путём F (bits) = t (sec) * bitrate (Kb / sec)
  • Заданы коды кастомных ошибок (CustomError) для обработки преднамеренной остановки работы потока (AudioWorker)
  • Добавлено ограничение по минимальному размеру загружаемой аудиозаписи (файл должен быть не менее 50 Кб), иначе Вк ограничит загрузку
  • Автокоррекция второго аргумента при загрузке плейлиста (удаление пробелов в строке)

Changed

  • Поменян инструмент загрузки аудио (youtube-dlffmpeg) в целях оптимизации процесса и извлечения аудио-отрезка
  • Циклы while(), ранее используемые для выполнения консольной команды, заменены на рекурсивные функции для улучшения читаемости кода
  • Вынесены простые функции в ламбда-функции для улучшения читаемости кода
  • Изменены содержания сообщений с процессом выполнения запроса
  • Обновление прогресса скачивания трека теперь адекватное: оно происходит по временному таймеру в 1 минуту, а изначально период обновления рассчитывался по числу загрузки блоков песни

Fixed

  • Исправлена ошибка в функции getSeconds() при обработке запросов с временем среза

1.3.1 - 20-09-2022

Added

  • Добавлен новый конфигурационный файл bot_settings.json, в котором прописаны настройки обработки запросов пользователя и конвертации видео
  • Создан новый класс vkGroupManager.py для управления группой вк
  • Добавлена функция конвертации CHANGELOG.md в wiki формат для вк группы

Changed

  • Полностью переработана структура программы: каждый класс был вынесен в соответствующий ему модуль. Такое решение структуризирует ведение проекта и упрощает его дальнейшее развитие
  • Обработка конфига программы переписана с использованием библиотеки betterconf. Это сделано для более удобной работы с конфигурационными файлами .env и bot_settings.json
  • Прикреплённые YouTube видео стали обрабатываться как запрос, не содержащий ссылку, следовательно, будет вызываться ошибка об отсутствии в запросе ссылки

1.3.0 — 31-08-2022

Added

  • Добавлена функция в audioBridge.py vk_video_handler для получения прямой ссылки на прикреплённое видео

Changed

  • Были оптимизированы переменные контейнера PYTHONDONTWRITEBYTECODE=1 и PYTHONUNBUFFERED=1 на аналогичными по функционалу параметрами запуска -Bu в команде ENTRYPOINT

Fixed

  • Исправлена обработка видеозаписей ВКонтакте

1.2.9 — 30-08-2022

Added

  • Добавлено отсеивание запросов от пользователей, не содержащих в себе ссылки
  • Добавлена обработка видео типа YouTube Shorts

Changed

  • Был улучшен и оптимизирован принцип обработки сообщений от пользователя

1.2.8 — 27-08-2022

Added

  • Добавлена переменная ENV PYTHONDONTWRITEBYTECODE=1 в файл конфигурации контейнера (Dockerfile)
  • Добавлена переменная ENV PYTHONUNBUFFERED=1 в файл конфигурации контейнера (Dockerfile)
  • Добавлен файл docker-compose.yml для запуска утилиты docker compose

Changed

  • Изменено имя файла логов
  • Изменён скрипт автоматического развёртывания и установки бота на стороне сервера install.zsh из-за перехода на утилиту docker compose

Removed

  • Убрана функция create_db из файла db/database.py, т.к. созданием баз данных и ролей для них занимается утилита docker compose

1.2.7 — 25-08-2022

Added

  • Добавлено логгирование действий пользователей и бота в файл

Changed

  • Изменена модель ведения проекта на Github (разделение на ветки, документ «Общее положение о ведении проекта»)
  • Изменена инфраструктура репозитория и структура хранения файлов на сервере
  • Изменён скрипт автоматического развёртывания и установки бота на стороне сервера (install.zsh)

Removed

  • Убран режим отладки (debug-режим) из prod-версии в связи с тем, что режимы были разделены по разнесеным группам
    • Убрана возможность запуска бота в режиме отладки
    • Убрано переключение между dev- и prod-версиями
  • Убрано разделение ролей в связи с тем, что необходимость в командах разработчика отпала
    • Убрана таблица для ролей в БД
    • Убраны ID разработчиков в файле конфигурации окружения (.env)
    • Убраны команды для разработчиков (commands/dev.py)
    • Убран класс PermissionsType, предназначенный для команд разработчиков

1.2.6 — 23-08-2022

Added

  • Добавлена поддержка БД PostgresSQL
  • Добавлено прототипные версии описаний к каждому классу и функции
  • Добавлена загрузка ролей в оперативную память (кеширование) для работы системы переключений версий

Changed

  • Доработана полноценная версия системы переключения между версиями (prod. и dev.) бота для разработчиков
  • Изменена инфраструктура репозитория и структура хранения файлов на сервере
  • Изменена архитектура пользовательских команд

Fixed

  • Исправлена ошибка, из-за которой автоматическое развёртывание на dev-сервере не работало корректно

1.2.5 — 20-08-2022

Added

  • Добавлена прототипная версия системы переключения между версиями (production — prod. и development — dev.) бота для разработчиков
  • Добавлена обработка аргументов (версия и режим отладки) для разработчиков
  • Добавлена обработка последнего неотвеченного сообщения в случае обновления или падения бота
  • Добавлено автоматическое развёртывание на dev-сервере Github-релиза через push с помощью Github Action

Changed

  • Изменено внутреннее содержание файла src/config.py — класс Cfg был подразделён на классы Settings, RequestIndex, PlaylistStates в целях удобочитаемости кода

Fixed

  • Незначительное обновление исходного кода бота с прошлых версий
  • Разностороннее оптимизация основного исполняемого файла бота — audioBridge.py

1.2.4 — 17-08-2022

Added

  • Добавлено автоматическое развёртывание на production-сервере Github-релиза через tag с помощью Github Action

Fixed

  • Исправлена ошибка формата файла конфигурации окружения (.env), из-за которой Docker отказывался загружать переменные этого файла

1.2.3 — 13-08-2022

Added

  • Расширен синтаксис команды ввода — добавлена возможность скачивать несколько треков из предоставляемого плейлиста
  • Расширена возможность получения информации об обрабатываемом треке — автор и название (раньше была доступна информация лишь об авторе)
  • Добавлена настройка сервера на кол-во обработчиков запросов (worker'ов), одновременно работающих с очередью запросов каждого пользователя
  • Добавление обработчика кастомных пользовательских команд
  • Добавлена пользовательская команда для работы с процессом загрузки (/clear — очищение очереди запросов текущего пользователя)

Changed

  • Обновлены и дополнены правила фильтрации ввода команды ("Защита от пользователя")

Fixed

  • Исправлено критическая ошибка, при которой еженочный перезапуск API-сервера со стороны VK вызывал падение из-за непредвиденной ошибки в классе Vk Api Longpoll
  • Исправлена логическая ошибка, при которой добавление нового запроса в общую очередь приводило к тому, что запрос добавлялся не в конец общей очереди, а в конец "локальной" очереди автора
  • Разностороннее обновление и оптимизация исходного кода бота

1.1.7 — 14-07-2022

Added

  • Добавлена очистка сообщений для пользователя, содержащее процесс выполнения запроса ("Добавлено в очередь (*/5)" и сколько скачано)

Removed

  • Убраны неиспользуемые обработчики событий от класса Vk Api Longpoll для оптимизации кода

1.1.2 — 18-05-2022

Added

  • Добавлена фильтрация ввода команды ("Защита от пользователя")
  • Добавлено ограничение на количество обработчиков общей очереди запросов (только 5 операций)
  • Добавлено логгирование действий пользователей и бота в консоль

Changed

  • Расширен синтаксис команды ввода — добавлена возможность создавать аудиофрагменты
  • Отредактированы описания ошибок, выдаваемых ботом пользователям

Fixed

  • Исправлена ошибка, при которой при получении ботом ссылки на плейлист, происходило скачивание всего плейлиста вместо первой песни
  • Исправлена критическая ошибка, при которой появление непредвиденных ошибок от библиотеки youtube-dl вызывало падение бота — добавлен обработчик

1.0.0 — 15-04-2022

  • Initial release