Meridius 13.0
Meridius 13.0
Очень сложный патч в плане разработки. О сложностях и компромиссах я напишу ниже. Если не будет никаких критических багов, то я возьму перерыв. Я знаю, что Meridius не загружался пару дней вообще, но я не мог выпустить хотфикс моментально, потому что работа над 13 патчем кипела вовсю и заниматься фиксом предыдущего я особо не хотел, о чём я бесчеловечно попросил потерпеть до обновления.
Обработка аудио и кэширование.
Теперь, даже если в ссылках на аудио в самом ВК произойдут изменения, Meridius можно будет легко адаптировать к этим изменениям. Раньше я вручную искал расположение полного файла на серверах ВК, но на этот раз с несколькими файлами, которые расположились по какому-то абсолютно новому пути, это сталось невозможным, поэтому было решено рассмотреть другую тактику. По умолчанию наша любимая социальная сеть выдаёт ссылки на потоковые m3u8 файлы, в которые записаны ссылки на .ts файлы (спасибо Эппл за эту "невероятную" технологию). Этих файлов может быть очень много, а конкретное число зависит от длины самого трека. Эти файлы необходимо скачать и "сложить" их вместе в цельный .mp3 файл. Для этого нужен FFmpeg - утилита с открытым исходным кодом для обработки медиафайлов. Если вы наткнётесь на подобный тип файлов, Meridius вас оповестит в подсказке, где нужно будет всего лишь нажать кнопку "установить" или же вы можете заранее установить его через настройки. Обработка и кэширование занимает 3 секунды. Итак, что происходит за эти 3 секунды:
- Парсится m3u8 файл, собирая все ссылки и данные воедино.
- Автоматически получается ключ дешифровки.
- Все .ts файлы качаются в папку m3u8, которую Meridius создаёт автоматически в корне приложения.
3.а. Если .ts файл зашифрован ключом, то бинарное содержимое файла расшифровывается с помощью вышеупомянутого ключа. - С помощью FFmpeg все "кусочки" собираются воедино в цельный .mp3 файл без потери качества.
- Все .ts файлы автоматически удаляются, чтобы не занимать места на жёстком диске, а бинарное содержимое выходного файла передаётся в Meridius в кодировке base64, которое в свою очередь кэшируется в папку %appdata%/meridiusreborn/SongsCache после чего и сам итоговый файл удаляется.
То есть данная обработка нужна лишь единожды, если файл не находится в кэше. Давайте уясним ещё пару моментов.
Q: Почему сохраняется base64, а не бинарное содержимое файла в чистом виде, ведь так один файл может сэкономить на 30% меньше месте на жёстком диске?
A: Это так. Больше скажу, я убил два дня на разработку собственного аудиодвижка, который умел бы работать с этим так, как есть, но для работы этого потребовалось дополнительных 100 МБ ОЗУ. Это никуда не годится, поэтому это были два дня работы впустую. В ходе тестов я пришёл к выводу, что даже хранение аудиозаписей на диске в чистом виде с дальнейшим преобразованием в base64 потребляет больше системных ресурсов, чем того хотелось бы, поэтому самое компромиссное решение появилось само собой - запись base64 в файлы с дальнейшим чтением из них. Я понимаю насколько дорого место на SSD, так как сам являюсь владельцем SSD, поэтому мой небольшой совет - установите все системные папки, такие как %appdata%, %temp%, загрузки, документы и прочее на HDD.
Q: Скачивать аудио и плейлисты по-прежнему можно?
A: Да. Если вам попадается аудио, которое нужно обработать, Meridius даст вам знать, если вы до сих пор не установили FFmpeg. Но есть и другая сторона медали, для скачивания плейлистов наличие FFmpeg обязательно, так как, допустим, среди 1000 аудио, может попасться даже пусть одна или две, которым необходим FFmpeg, не хотелось бы их пропускать, вее~еерно?
Данный метод может работать нестабильно, поэтому не злитесь, а лучше сообщайте мне, если какой-то аудиофайл не обработался, я буду разбираться в причинах и устранять по возможности.
Двухфакторная аутентификация
Причина, по которой многие обходят Meridius стороной является отказ выключать двухфакторную авторизацию в настройках безопасности. Действительно, это выглядит крайне подозрительно. Если бы разработчиком был не я, то я бы сам себе не поверил в свои же намерения. Но это правильно. Я не могу доказать, что происходит с вашими данными, пока не опубликую исходный код приложения, словно кот в коробке. Но тем не менее, поддержка двухфакторной аутентификации появилась и она полностью работает. Работает даже код, присланный администрацией ВК или по СМС (я до сих пор не понимаю по какому принципу VK решает, в какой момент что прислать). Стопроцентная работоспособность авторизации гарантирована в случае, если вы используете приложения для генерации кодов, такие как Google Authenticator или в Telegram. Переавторизация каждые 2 часа больше не нужна. Письма на почту и в уведомление на телефон пересатнут наконец-то приходить в повальном количестве в день. В очередной раз я хочу выразить слова благодарности проекту EasyVK, который как нельзя кстати сделал это возможным и пользователям Meridius, которые ради него отключали двухфакторную авторизацию, держа свой аккаунт в опасности. Больше этого не потребуется. После включения двухфакторной авторизации в настройках безопасности, перезапустите Meridius и введите все необходимые данные ещё раз. Вас попросит два кода - один для обычных функций VK, второй - для HTTP-клиента, который ответственен за работу с аудио.
Сервер
Данный пункт рекомендуется к прочтению айтишникам, остальным по желанию. Meridius под капотом теперь имеет собственный сервер, основой которой послужила библиотека Fastify. В настройках вы можете задать порт, а также включить/выключить сервер, но больше пока что и не нужно. Суть - существуют GET Endpoints и WebSocket Endpoints. Вы можете посмотреть список доступных эндпоинтов, запустив сервер. GET Endpoints выдают результаты по запросу к нему, будь то аудио, плейлист и прочее. Если вы в этом разбираетесь, мне нет смысла объявлять, зачем это нужно. Гораздо интереснее работают WebSocket Endpoints, которые постоянно выдают актуальный результат без необходимости повторяющихся запросов. Пока что таких эндпоинтов всего лишь два - текущий трек и время трека, но в дальнейшем планирется добавление большего количества актуальных данных. О том, как к ним (вебсокетам) подключаться и в дальнейшем оперировать с данными, читайте документацию или туториалы вашего языка программирования. Благодаря этому вы можете связать ваше приложение и Meridius.
Внешний вид
- Вторичный цвет поменялся, теперь он будет оттенком красного. Могут быть ещё изменения этого оттенка, так что особо не привыкайте.
- Верхняя панель имела слишком много пустого места, что выглядело очень плохо. Было решено от неё избавиться и перенести все элементы на левое меню. Едиственным нерешённым моментом остался поиск, если вы не расширяли левое меню, он расположен в контекстном меню пункта "обзор". Не очень удобно, понимаю, но ничего другого я не придумал. Другое дело, выглядит очень даже красиво, если это меню расширить.
- Очередь воспроизведения была переработа полностью. Не только визуально. Теперь, если вы хотите послушать трек следующим, который уже есть в очереди, он просто сдвинется. Так просто логичней.
- Полноэкранный режим был немного изменён.
- Очередь воспроизведения, оповещения теперь имеют свои выдвижные контекстные меню, что освобождает от лишнего клика по иконкам.
- Полоска громкости так же обзавелась новым слайдбаром. Внедрение продолжается.
Остальное
- В настройки добавлен пункт "инструменты разработки". Если у вас возникает какая-нибудь ошибка или что-то не подгружается, опишите мне проблему в ЛС и приложите скрин ошибки, которая при этом возникает, так мне будет проще понять суть ошибки.
- Electron обновлён до свежей версии 10.1.
- Повышена стабильность загрузки главной страницы.