AIMP Forum
AIMP for Windows => Предложения / Suggestions => Интеграция с сервисами / Integration with external services => Topic started by: RomaKoks on November 06, 2020, 12:17:01
-
Задумка в том, чтобы реализовать функционал, существующий во многих стриминговых сервисах - автоплейлисты.
Учитывая что с Last.FM интеграция уже есть и достаточно хорошая, то реализовать данный функционал логично на базе Last.FM на информации о сходстве исполнителей (она на Last.FM есть в почти прозрачно открытом виде).
Также у меня есть выгрузка (https://cloud.mail.ru/public/4pQG/4vvNREAoG (https://cloud.mail.ru/public/4pQG/4vvNREAoG), https://cloud.mail.ru/public/AdRq/2ENhVhYct (https://cloud.mail.ru/public/AdRq/2ENhVhYct)) большого количества связных исполнителей с GPM, которую при необходимости могу привести к нужному формату.
Самую простую реализацию вижу как изменение априорной вероятности при шаффле у треков, имеющих схожих исполнителей/тегов last.fm с выбранным треком. Несомненно можно пойти дальше, но уже это было бы очень круто.
-
уже есть в некотором виде
Что-то более навороченное реализовать сложнее, т.к. плеер работает с вашими локальными файлами, а не с мировой базой данных
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=65762.0;attach=62404)
-
В простейшем виде это уже работает - просто создайте плейлист по жанру
-
Это все немного не то. Для создания папок необходимо много ручной работы + дубликация файлов. Жанры "пляшут" и зачастую слишком "общи". Идея заключается в том, что внутри конкретного множества треков (плейлиста/смарт-плейлиста/папки/целиком локальной фонотеки) иметь возможность управляющего воздействия на порядок случайного воспроизведения треков таким образом, чтобы в этом порядке воспроизведения подряд идущие треки были "ближе по духу".
-
Таким образом все что нужно - ползунок "агрессивности" этого воздействия, который будет отражать дисбаланс априорного распределения вероятностей (насколько он отличен от равномерного), при наличии матча схожего исполнителя/трека/тега итп.
-
По-моему, слишком частная задача - управлять рандомом на основе похожестей last.fm.
Вот смарт-плейлист на основе похожестей - это была бы фича пожалуй. А уже в нём обычный рандом использовать.
-
Как раз ваша задача слишком частная, которая решается вышеупомянутой с выставленной "агрессивностью" на максимум.
-
По поводу локальной фонотеки и мировой базы данных:
Первичный граф (ПГ) "связности", покрывающий большинство локальных фонотек (при условии заполненных тегов), можно получить из выгрузки GPM.
При "развертывании" у локального пользователя ПГ фильтруется, путем удаления отсутствующих в локальной фонотеке исполнителей.
Далее для исполнителей, имеющихся у пользователя, но отсутствующих в ПГ кидаются запросы в Last.FM и граф обновляется.
Таким образом каждый пользователь aimp не будет "вешать" Last.FM запросами, а только обновлять свой граф.
По поводу вероятностей, я имел ввиду апостериорные. То есть действие, аналогичное тому, что на скриншоте от (https://www.aimp.ru/forum/index.php?action=dlattach;topic=65762.0;attach=62404)
предполагается от какого-то конкретного одного трека.
-
Постарался тут (https://cloud.mail.ru/public/ReuP/3wjaBwXvz) объяснить и показать на примере как это может работать. Будет здорово, если разработчики меня услышат, чем смогу - помогу в реализации.
-
Вы написали довольно много текста, вернее кода. Возможно, какие-то детали я упустил, т.к. код читать сложнее, нежели объяснение "на пальцах".
Короче говоря, (на сколько я понял) можно продолжить вашу мысль таким образом - можно попросить сам last.fm подобрать к текущему треку похожих исполнителей / треков - далее, плеер сможет посмотреть свою локальную базу на наличие чего-либо похожего и подправить правила смарт-плейлиста "на лету".
-
Короче говоря, (на сколько я понял) можно продолжить вашу мысль таким образом - можно попросить сам last.fm подобрать к текущему треку похожих исполнителей / треков - далее, плеер сможет посмотреть свою локальную базу на наличие чего-либо похожего и подправить правила смарт-плейлиста "на лету".
Не читал ни код, ни текст, но именно такой сценарий у меня в голове возник, как способ реализации.
Разве что не правила смарт-плейлиста править, а делать подходящую выборку, по похожим_исполнителям и запускать случайный трек из этой выборки.
Хотя да, менять правила смарт-плейлиста - это ещё более изящный способ.
Таким образом случайность трека может задавать сам пользователь, посредством нажатия на одноименную кнопку.
А так же сможет на лету отключать подборку похожих исполнителей и слушать составленный плейлист.
-
Но ведь может быть сценарий не только случайного проигрывания похожих исполнителей.
-
Но ведь может быть сценарий не только случайного проигрывания похожих исполнителей.
описывайте другие сценарии
-
Тупо хочу находить похожести и слушать в том порядке, как мне угодно.
Или массово редактировать теги у всех похожих исполнителей.
-
Тупо хочу находить похожести и слушать в том порядке, как мне угодно.
Или массово редактировать теги у всех похожих исполнителей.
То есть сценарий с правкой смарт-плейлиста вам подойдёт.
-
Разве что не правила смарт-плейлиста править, а делать подходящую выборку, по похожим_исполнителям и запускать случайный трек из этой выборки.
Мы не меняем МОЩНОСТЬ (количество треков), мы меняем вероятность каждого трека, который рекомендуем, а потом запускаем шаффл. Те рано или поздно отыграют все треки, но сначала в очередь будет попадать больше "подходящих".
-
можно попросить сам last.fm подобрать к текущему треку похожих исполнителей / треков - далее, плеер сможет посмотреть свою локальную базу на наличие чего-либо похожего
да
и подправить правила смарт-плейлиста "на лету".
не совсем, если отталкиваемся от реализации в рамках смарт-плейлиста, то:
1) нужно реализовать в смарт-плейлисте возможность нежесткого (вероятностного) удовлетворения правилам, чтобы в начале этого результирующего плейлиста было то, что наиболее подходит под правила. Тут к правилам нужно добавить соответствующий им ползунок "жесткости удовлетворения".
2) возможность того, чтобы в качестве "сида" для смарт-плейлиста выступал трек. То есть параметры для сравнения по правилам берутся из тегов выбранного трека.
2) в набор правил добавить правила:
- похожести исполнителей по версии Last.FM
- популярности трека по версии Last.FM