EN
chimildic
chimildic
135 subscribers
goals
2 of 10 paid subscribers
Спонсировать новые проекты
0 of $ 110 money raised
Спонсировать новые проекты

В разработке: андроид приложение Audiolist

Конструктор плейлистов для музыкальных сервисов.
Длиннопост про функции с примерами и сбор на закрытое тестирование.
Немного предыстории
Да, еще один конструктор😁Я проверял, другое тоже делать умею)
Предыдущие проекты обладают довольно широким функционалом. Порой доходящим до очень экзотических вариантов использования. Больше всего мне нравится бесплатное определение языка, на котором исполняется трек, через отрывок текста от Musixmatch и функцию в Google Таблицах. Всё благодаря платформе Apps Script - крайне интересная и полезная.
По скромной статистике до сих пор лидирует мой первый проект - YaMuTools в виде расширения для браузера. На момент написания счетчик установок в районе 15,5 тысяч. Со временем его функции потрепало и поддержка кода фактически остановилась, но прирост пользователей сохраняется. С ним также связана забавная аномалия - много разных по реквизитам пользователей по сей день присылают донаты по 2-5 рублей. Так и не понял чем объяснить такое поведение)
Проект goofy из-за своей специфики привлек лишь пару сотен пользователей. Но расширил географию до иностранцев несмотря на документацию с русским языком. На форум приходил как минимум один диджей, который теперь автоматически собирает музыкальные сеты. Среди русскоязычных пользователей мне такие примеры неизвестны, но автообновляемых плейлистов с различных радиостанций точно прибавилось. Было бы интересно узнать в комментариях, а как вы использовали goofy?
Ключевые отличия нового приложения Audiolist
• Несколько музыкальных сервисов в единой среде
• Более продвинутый способ переноса музыки при экспорте
• Только интерфейс, без прямого программирования
• Монетизация через встроенную рекламу*
• Распространение через Google Play*
* Возможны изменения из-за третьей стороны. Приложению требуется в том числе неофициальный доступ к API музыкальных сервисов, что является потенциальным поводом для жалоб.
Принцип работы
Вам предлагается набор команд, которые необходимо комбинировать между собой. Классический сценарий: взять треки, обработать их фильтрами, сохранить в плейлист. В совокупности получается программа. Она запускается вручную из приложения, по ярлыку, по расписанию или через Tasker.
Пример: смешивание плейлистов
У Spotify есть множество обновляемых плейлистов от кураторов и автоматики. Например, the sound of *, the pulse of *, the edge of *. Вместо звездочки обычно жанр. 
Можем объединить любое количество плейлистов и персонализировать их:
• Самый важный фильтр это вычитание. Особенно вычитание истории прослушиваний. Как по треку, так и в целом исполнителю. На текущий момент приложение берет историю из Last.fm (рекомендую завести аккаунт если еще нет).
• Часто названия треков сопровождаются версией (микс, акустика, пианино). По вашему вкусу можно удалить или оставить только их. Сюда же относится алфавит (исключить кириллицу или иероглифы).
• Комбинация сортировки по популярности и выбор первых N-треков позволит получить очень популярные или наоборот малоизвестные треки.
Ниже видео с демонстрацией создания программы. Названия команд и переменных не оптимальны, но смысл передают. Довольно сложно сделать видео с одного дубля) Получился характерный пример с ошибкой, которою тут же легко исправить. 
Ошибка в том, что в выбранных плейлистах оказались мои любимые треки. Поэтому после смешивания двух переменных нарушилась пропорция 4 к 1. 
Для исправления ошибки нужно переместить команду получения любимых треков наверх и добавить переменную в команду вычитания. Поскольку программа выполняется сверху вниз - у каждой переменной своя область видимости. Поэтому без перемещения команда вычитания не увидит переменную с любимыми треками.
В результате пропорция 4 к 1 восстановлена. Также можно заметить динамику вычитания треков истории. Пока записывалось видео с правкой, музыка продолжала играть. Поэтому несколько треков с первого скриншота были удалены и за счет смешивания на их место пришли другие. Трек SNAP остался из-за скипа, который не позволил попасть ему в историю.
Пример: перенос треков между платформами
В предыдущем примере вы могли заметить, что вычитание истории Last.fm из треков Spotify прошло без команды переноса. Его на самом деле не было. Потому что для вычитания использовались имена исполнителей и названия треков. Для их получения не нужно ходить к платформам с тысячами запросов поиска с целью найти идентификатор к этой паре слов.
Отсюда возникает два важных преимущества, которые дает Audiolist:
1. Обращаться с объектами так, будто они изначально находятся в единой среде (есть нюансы, но общая цель именно в этом)
2. Сэкономить время обработки (вычитание истории за целый год прошло за секунду)
Однако явный перенос все же необходим:
• Чтобы обогатить трек новыми данными, которые не дает исходная платформа. К примеру, у Spotify есть показатель популярности трека.
• Более востребованный вариант - экспорт в плейлист другой платформы. Здесь без идентификаторов уже никуда.
Ранее в ключевых отличиях упоминался продвинутый способ переноса. Что имеется ввиду? У каждой платформы свои особенности написания названий. Если отправить запрос поиска напрямую, чаще всего результат будет не пустой. Но у треков бывают разные версии и альбомы. Кроме того, искомого трека может не быть в базе. Тогда поиск предложит другой трек. В лучшем случае того же исполнителя.
Текущий алгоритм переноса оценивает сходство между исходным треком и результатами поиска по разным параметрам. Дает каждому параметру определенный вес и считает общую вероятность. Чем больше различий, тем меньше вероятность что найден тот же трек. Таким образом решается две задачи: выбрать лучший результат (например правильную версию исполнения) и отбросить совсем не подходящие варианты.
Допустим ищем трек Abused Romance - Shine с Яндекс.Музыки в Spotify. Перейдя по ссылке вы увидите, что в альбоме два трека Shine. У первого студийное исполнение, у второго живое. И ссылка выделяет именно второй трек. При этом в названиях нет пометок о версии исполнения. 
По результатам поиска в Spotify видим, что Shine находится на 1 и 9 позиции. Причем есть пометка о живом исполнении. 
Формально поиск не ошибся. Первый результат в точности соответствует искомому по названию. Но нам известны и другие параметры, которые нельзя написать в поиск. В данном случае решающим станет очистка названий и более высокое значение вероятности у трека с 9 позиции за счет параметра продолжительности трека. Кстати, во многих случаях очистка вносит решающий вклад в поиск. Поскольку даже лишнее слово порой мешает Spotify найти ожидаемый нами трек.
У такого подхода есть недостаток в виде подбора коэффициентов. Какой вес параметра считать оптимальным, какой финальный порог вероятности нужно преодолеть. Тест переноса моих 750 любимых треков при текущих коэффициентах точно определяет потерю 8 треков (их нет в Spotify) и оставляет порядка 5 треков, которые буквально ставят в тупик. Потому что и вручную не понятно какой выбрать или удалить. При этом подавляющее большинство соответствует исходному альбому. 
Недостатки Audiolist
• Приложение подразумевает кнопочный интерфейс - это снижает гибкость алгоритмов, создаваемых в ваших программах. Особенно при сравнении с goofy. Количество комбинаций напрямую зависит от доступного списка команд, которые могу создать только я.
• Текущая версия оперирует исключительно переменными типа трек. Например, невозможно сходить к любимым исполнителям за альбомами недавних релизов. Однако редактор и команды подразумевают использование таких типов. Дело за реализацией.
• Доступно лишь две платформы Spotify и Яндекс.Музыка, не считая историю Last.fm. В целом, ядро приложения позволяет расширять и этот список.
• Косвенный недостаток это сами платформы. Spotify и Last.fm вечно "болеют" серверами, а Яндекс задушили правами так, что невозможно переносить музыку - новинок либо нет, либо скрыты для публичного поиска.
Закрытое тестирование
Количество мест ограничено из-за Spotify. Он разделил доступ к API на два режима: разработка и продакшен. Первый выдается сразу с лимитом на количество пользователей. Второй дается только после модерации Spotify. Требуют заявку с демкой, будут рассматривать ее больше месяца и не факт, что одобрят с первого раза.
При желании протестировать приложение Audiolist заполните Google Форму. Доступ будет отозван в случае отсутствия обратной связи.
Какую музыкальную платформу вы считаете основной для себя?
Spotify
13 votes
avatar
avatar
avatar
Яндекс.Музыка
8 votes
avatar
avatar
avatar
avatar
avatar
VK Музыка
Apple Music
1 vote
avatar
YouTube Music
Deezer
Tidal
1 vote
avatar
Другая (напишите в комментариях)
1 vote
avatar
24 users voted
avatar
Spoty&AM - обе используются постоянно.
Qobuz + ЯМ
жду не до ждусь
avatar
Sergey Orlov, модерация Spotify все никак не отвечает

Subscription levels

Тестировщик

$ 2,19 per month
• Поддержать разработчика

Программист

$ 4,4 per month
• Доступ к скачиванию приложения YaMuTools
Go up