AIMP Forum

Разное => Предложения (архив) / Suggestions (archive) => Архив / Archive => Реализовано в AIMP v5.40 / Implemented in AIMP v5.40 => Topic started by: th30d0r on December 16, 2024, 22:11:59

Title: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: th30d0r on December 16, 2024, 22:11:59
Здравствуйте!

Прошу рассмотреть возможность добавления поддержки Maloja (https://github.com/krateng/maloja) в плагин Scrobbler.

О сервисе:
Maloja - это открытый self-hosted сервис для скробблинга музыки, который:

Предлагаемые варианты интеграции:

Вариант 1: Кастомный URL для ListenBrainz

Вариант 2: Полная интеграция Maloja

Это расширит возможности плагина и позволит пользователям сохранять историю прослушиваний на собственных серверах.

Документация по API:
Code: [Select]
POST /apis/mlj_1/newscrobble
Title: Re: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: Алексей Долматов on December 16, 2024, 22:40:31
Глянул, судя по описанию, для скроблинга нужно поднимать свой сервер. Сомневаюсь, что многие пользователи станут это делать. Для разработчика плеера ещё нужно изучить способ авторизации, т.е. достаточно будет, как сейчас, открывать указанный пользователем сайт или иначе делать интеграцию.
Title: Re: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: th30d0r on December 16, 2024, 23:26:25
Спасибо за ответ! Хотел бы уточнить несколько моментов:

Да, я поднял Maloja для своих нужд. При этом, будучи пользователем AIMP уже больше 15 лет, я не планирую переходить на медиасерверы типа Navidrome, несмотря на их расширенные возможности интеграций с различными self-hosted сервисами - AIMP для меня остаётся наиболее удобным плеером.

В ходе тестирования я обнаружил, что существующий ListenBrainz API в плагине Scrobbler полностью совместим с Maloja - при простом перенаправлении запросов с api.listenbrainz.org на мой инстанс (my.domain/apis/listenbrainz/1/submit-listens) скробблинг работает корректно. Авторизация также работает по стандартному протоколу ListenBrainz.

Поэтому предлагаю минимальное изменение - добавить возможность указывать пользовательский URL в настройках ListenBrainz. Я не думаю, что это потребует серьезных изменений в коде плагина.
Title: Re: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: Artem on December 17, 2024, 00:08:39
У меня такой вопросик: а в чем тогда смысл? если сервис доступен только локально. Насколько я понимаю, главный смысл last.fm и им подобным сервисам - рекомендовать тебе новую музыку, похожую на то, что ты слушаешь. Без внешней поддержки и пользовательской кооперации это все работать не сможет. Или я ошибаюсь?
Title: Re: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: th30d0r on December 17, 2024, 00:26:13
Цель сбора музыкальной статистики для меня немного другая. Во-первых, это возможность собирать и анализировать свою историю прослушиваний со всех устройств в одном месте, включая мобильные. Во-вторых, текущая ситуация показала необходимость независимых решений - например, Last.fm уже блокировался в России в марте 2023 года (сейчас доступ восстановлен), и подобное может повториться с любым внешним сервисом в любой момент.

Именно поэтому я стараюсь переходить на self-hosted решения, где данные полностью под моим контролем и не зависят от внешних факторов. Рекомендации музыки - это хорошо, но для меня важнее стабильный доступ к собственной истории прослушиваний.

К тому же, добавление возможности указать кастомный URL в настройках - это минимальное изменение в плагине, которое даст выбор заинтересованным пользователям, никак не затрагивая тех, кто предпочитает стандартные сервисы вроде Last.fm или ListenBrainz.
Title: Re: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: Artem on December 17, 2024, 10:25:58
Вот, попробуйте: https://disk.yandex.ru/d/4T-5gzQw3LrZ2g
Title: Re: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: th30d0r on December 17, 2024, 22:04:06
Спасибо за тестовый билд! Протестировал работу плагина с Maloja и обнаружил пару моментов для улучшения:

1. В текущей версии в API Endpoint нужно указывать полный путь 'https://my.domain/apis/listenbrainz/1', что не совсем интуитивно. Предлагаю изменить логику так, чтобы пользователь указывал только домен (например, https://my.domain), а путь '/apis/listenbrainz/1' добавлялся автоматически.

2. Поле "имя пользователя" лучше убрать из формы, так как для авторизации в Maloja используется только токен, а имя пользователя не требуется. Из-за этого сейчас возникают лишние запросы к `/user/{username}/listen-count`.

После настройки правильного API Endpoint'а скробблинг работает корректно - треки успешно отправляются и записываются в базу данных Maloja.

Если нужны дополнительные тесты или есть вопросы по интеграции - готов помочь.
Title: Re: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: Artem on December 17, 2024, 22:12:32
а путь '/apis/listenbrainz/1' добавлялся автоматически.

а при разворачивании сервера это не настраивается?
Title: Re: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: Artem on December 17, 2024, 22:15:40
Из-за этого сейчас возникают лишние запросы к `/user/{username}/listen-count`.

У меня этот апи используется, чтобы показать текущую статистику. Это как-то можно выцепить?
Title: Re: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: th30d0r on December 17, 2024, 22:56:50
По первому вопросу:
Нет, в текущей версии Maloja этот путь `/apis/listenbrainz/1` жёстко зашит в код и не настраивается через переменные окружения или конфигурацию. В моём случае через Traefik (аналог nginx) как reverse proxy весь сервис разворачивается на `scrobble.${DOMAIN}`, где доступны и веб-интерфейс, и все API эндпоинты как части единого приложения.

По статистике:
К сожалению, получить статистику через ListenBrainz API в Maloja не получится - этот endpoint (/user/{username}/listen-count) не реализован и всегда будет возвращать
Code: [Select]
{"code": 200, "error": "Invalid Method"}Статистика в Maloja доступна только через веб-интерфейс или через нативный API (/apis/mlj_1/), но не через ListenBrainz-совместимый API.
Title: Re: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: Artem on December 17, 2024, 23:13:39
Обновил сборку: https://disk.yandex.ru/d/Gh2Z9hjN28cPWg
Title: Re: Предложение: Добавление поддержки Maloja в плагин Scrobbler
Post by: th30d0r on December 17, 2024, 23:37:02
Всё отлично работает, огромная благодарность