gorniv

gorniv

На Пикабу
16 рейтинг 0 подписчиков 1 подписка 2 поста 0 в горячем
Награды:
5 лет на Пикабу
6

Новый клиент знакомого сервиса

Сначала я радовался Apple Music, потом пользовался по привычке — и в какой-то момент он меня начал раздражать. Нормальный человек воспользовался бы другим сервисом или просто смирился, но я — программист. Так на свет родилась идея написать свой клиент для Apple Music, в результате появился Meows.app.

Новый клиент знакомого сервиса Apple, Музыка, Apple music, Flutter, Длиннопост

Вступление

Самое главное ожидание от Apple Music — это возможность послушать новую музыку, хорошую новую музыку. Эту самую новую музыку я искал и в рекомендациях, и в топовых плейлистах и просил друзей расшарить мне что-нибудь новенькое.


Главные проблемы и задачи на старте работы

Три основных плейлиста рекомендаций — «Новая музыка», «Мои любимые треки», «Чилаут-микс» — обновляются один раз в неделю в разные дни, причём музыка там чаще всего была не очень для меня.


Логика подсказывала мне, что для улучшения рекомендаций мне надо активнее «лайкать» (Love) и «дизлайкать» (Dislike) песни, но Apple сделала это действие совсем не простым, а ещё я постоянно вынужден слушать песни, которые дизлайкнул. Показывать статус песни (Love, Dislike) Apple тоже не стремится.

Новый клиент знакомого сервиса Apple, Музыка, Apple music, Flutter, Длиннопост

С рекомендациями не повезло, но ведь есть ещё популярные плейлисты, скажете вы и будете отчасти правы, но есть два момента:


Эти плейлисты не так просто найти.

Российский топ — это очень своеобразный для меня список песен, а сменить страну Apple не позволяет.


В Apple Music сложно искать новую музыку.


На компьютере спасала возможность запустить скрипт пролистывания Dislike-песен, но поиску новых это не помогало, да и кнопки рейтинга запрятаны так же далеко.


Мотивация

Это далеко не первый проект, который я начал делать с пламенем в глазах, но один из немногих доведённых до релиза. Если честно — аж второй! Чтобы повысить шансы на успех, я поставил перед собой цель, вызов, челлендж — создать ИТ-продукт с помощью ежедневной работы: я каждый день делаю что-то «полезное» и пишу о проделанном.


Сразу я писал в Telegram, затем перешёл на Medium — 18 января 2019 года был написан первый отчёт (https://medium.com/it-challenge/19-01-2019-%D0%B4%D0%B5%D0%B...) , 19 января я купил доменное имя Meows.app, публичное бета-тестирование запустил 15 февраля. И 26 июля 2019 года я наконец-то опубликовал первую релизную версию приложения.


Техническая часть

Я вообще ни разу не мобильный разработчик, но так получилось, что примерно в это же время был релиз Flutter и я уже три-четыре месяца ковырял «Hello world» на нём, технология мне нравилась, так что писать новый плеер для Apple Music решил на Flutter.


Технические детали проекта:

- Код на GitLab.

- Kubernetes-кластер.

- Оркестрация: Rancher 2.

- Бэк: .Net Core.

- Фронт: Angular Universal (восьмой версии).

- База: MongoDB в кластере replicaset.

- Мобильный клиент: Flutter (сейчас только iOS).


Самые долгие технические проблемы были с переходом на Kubernetes для серверов и выбором State Management (управление состоянием) для Flutter — выбор пал на BLoC (https://github.com/felangel/bloc) . Для ускорения работы с кодом я написал плагин для VsCode (https://marketplace.visualstudio.com/items?itemName=gornivv....), который теперь экономит мне (и, надеюсь, не только мне) много времени и сил, хотя процесс развития кода стандартного шаблона страницы приложения идёт постоянно.


Самое главное и достаточно сложное — это очертить для себя рамки минимальной версии приложения. Поиск золотой середины между стабильностью, функциональностью и временем — кошмар! Постоянно хочется добавить новых возможностей, приходится буквально бить себя по рукам и вовремя останавливаться — и договариваться, что это будет сделано в рамках обновления уже после релиза.


Бесконечный список уступок самому себе. Для борьбы с откладыванием запуска мне хорошо помогает привлечение пользователей — отдаёшь на тестирование, тебе приходят отзывы, предложения, баги, и просыпается жажда — побыстрее выпустить релиз!


Результаты

У меня ещё много идей, но уже сейчас я горжусь результатом работы и пользуюсь Meows.app постоянно. Несмотря на то, что большая часть кода написана мной, огромный вклад в приложение, генерацию идей, переводы, разработку сайта, тестирование и работу с UI/UX — всё это заслуга моей любимой жены — так что наша команда состоит из двух человек!


Чуть не забыл. Ещё я задолбал всех своих друзей: у кого есть iPhone — просил установить бета-версию, а у кого нет — показывал на своём и просил дать обратную связь по работе в приложении. А если серьёзно — они очень помогли, особенно люди не из ИТ, благодаря им приложение стало гораздо дружелюбнее к людям.


Apple Music не отдаёт все плейлисты, даже через API, но я смог вытащить более восьми тысяч уникальных плейлистов, думаю, в скором времени их будет ещё больше. На основе этого списка построен первый экран приложения «Все плейлисты», по ним есть поиск и очень-очень классная кнопка Dice — игральные кости или рандом, она выбирает случайный плейлист из отфильтрованных, в выбранном плейлисте можно ещё раз нажать кнопку Dice для повторного испытания своей удачи.

Новый клиент знакомого сервиса Apple, Музыка, Apple music, Flutter, Длиннопост

Ищем рок и включаем рандом!


В Apple Music есть рекомендации, но они разбиты на категории и представлены горизонтальной прокруткой — что не очень удобно для быстрого просмотра. Нет возможности прослушать все рекомендации единым списком воспроизведения.

Новый клиент знакомого сервиса Apple, Музыка, Apple music, Flutter, Длиннопост

Рекомендации в Apple Music


Именно поэтому в Meows.app есть плейлист «Все рекомендации» и сделан более «обозримый» вариант просмотра плейлистов. Мой плейлист «Все рекомендации» сегодня состоял из 1929 песен.

Новый клиент знакомого сервиса Apple, Музыка, Apple music, Flutter, Длиннопост

Рекомендации на одном экране


Кнопки Love и Dislike спрятаны от пользователя, и почти никто их не нажимает или делает это очень редко, так как это совсем неудобно. Соответственно, Apple Music делает рекомендации в основном на основе прослушивания песен — это «подкидывание монетки для решения интегрального уравнения», и результаты оставляют желать лучшего.


Чтобы дать Apple Music больше информации о предпочтениях пользователя, кнопки Love и Dislike вынесены мной на экран проигрывания песни, и теперь Apple гораздо чаще рекомендует мне хорошие песни.


Я даже не догадывался, насколько много плейлистов в Apple Music.


Песни, отмеченные Dislike, будут автоматически исключены из списка воспроизведения — меня это очень спасает в русском «Хиты сегодня», а на основе Love Apple Music обучает свои нейронные сети предлагать вам более приятные для вас треки.


В приложении Meows.app можно выбрать страну для получения песен из плейлистов, собранных для каждой страны отдельно. Большинство таких плейлистов, находится в разделе «Популярные плейлисты». В плейлистах США — много рэпа, японские удивляют иероглифами, а чаще всего я включаю Филиппины.

Новый клиент знакомого сервиса Apple, Музыка, Apple music, Flutter, Длиннопост

Популярные плейлисты разных стран


Когда всё надоело и хочу просто приятную музыку — я включаю любимые песни. К сожалению, Apple не отдаёт списки песен пользователя, поэтому чем больше вы пользуетесь Meows.app — тем больше песен с рейтингом мы узнаем.

Новый клиент знакомого сервиса Apple, Музыка, Apple music, Flutter, Длиннопост

Любимые и нелюбимые песни


Рейтинги песен в Apple Music — очень интересная тема. Рейтинг песни привязан к SongId, но одна и та же песня может иметь десятки SongId и, соответственно, различных рейтингов, поэтому буквально перед релизом мне пришлось переписать всю работу с рейтингами, теперь песни и рейтинги привязаны к ISRC.


Например, при получении всех рекомендаций бывает около 2000 уникальных песен, на которые приходится около 5000–6000 SongId, по которым необходимо получить рейтинги (ограничение на запрос в 100 id), провести анализ результатов и установить или удалить рейтинги (если на одну песню (ISRC) есть Love и Dislike).


Кстати, нужно ли делать импорт или экспорт данных пользователя? Возможно Spotify, Last.fm или другие сервисы принимают или отдают списки песен?


Попробуйте Meows.app — найдите новую классную музыку для себя и напишите в комментарии своё мнение и идеи.


https://apps.apple.com/ru/app/id1447818958


Спасибо, что дочитали!


P.S. баги и предложения на @gorniv (например, https://t.me/gorniv) или на почту gornivv@gmail.com

Показать полностью 6
12

Goods.ru или как потратить миллионы на рекламу и программу лояльности, но забыть о главном

Первый раз о goods.ru я услышал из какой-то статьи о привлечении пользователей через рекламу в метро и отличных результатах старта агрегатора. Зайдя на сайт, я увидел крутую акцию - 20% кэшбэка, прочитал условия, понял что не все так просто... Прочитал о компании - увидел М.Видео и обещания построить агрегатор нового уровня. В общем, принял их хорошо, но мне "повезло" или "не повезло" - зависит от угла, с которого посмотреть, зайти на их список холодильников и увидеть двухкамерный холодильник за 4490 р. Ошиблись с ценой подумал я, но ... я так хотел новый холодильник, вместо моего "Саратова" на съемной квартире... я зашел иииии... купил и оплатил это чудо.

Goods.ru или как потратить миллионы на рекламу и программу лояльности, но забыть о главном Мегамаркет, Сервис, Агрегатор, Длиннопост

Мечта любого шопоголика, хороший холодильник за недорого

Была - не была решил я, откажут - не страшно, привезут - напишу какие они красавцы и молодцы, ведь у себя они указали, что продавец несет ответственность за предоставляемые данные и все это публичная оферта( пункт 1.2 - Условия заказа и доставки )

Goods.ru или как потратить миллионы на рекламу и программу лояльности, но забыть о главном Мегамаркет, Сервис, Агрегатор, Длиннопост

Условия заказа и доставки

Счастью моему не было предела, мне пришла смс о подтверждении продавцом наличия товара и его доставки в оговоренные сроки. Еще через минут пятнадцать позиция исчезла с сайта... Вот это сервис подумал я, большая серьезная компания, которая не разменивается по пустякам, да и Холодильник.ру (поставщик холодильника) тоже, видимо, не стали из-за пустяков мелочиться, круты! Отпросился с работы на вторник, чтобы принять доставку товара. Уточнил через телеграмм бот о возможности подъема холодильника на 4-ый этаж без лифта - как договоритесь с грузчиками, в условия доставки крупногабаритного груза доставка только грузовым лифтом, но не звери же там работают, чтобы оставить меня один на один с 60-ти кг. холодильником, договоримся как-нибудь.

Goods.ru или как потратить миллионы на рекламу и программу лояльности, но забыть о главном Мегамаркет, Сервис, Агрегатор, Длиннопост

Подтверждение доставки холодильника в телеграмм боте

08.10.2017 купил телефон, ради которого и заходил на сайт, 9-го числа без проблем его получил.(жду много бонусов)


День Х(10.10.2017г), мне везут холодильник! я встал в 7-30 утра, доставка же с 8-00 до 13-00, а вдруг утром приедут. До 10 утра все было тихо, а потом мне позвонили и сказали что-то невнятное про техническую ошибку и невозможность доставки сегодня... Перенесли доставку на субботу, не могу же я каждый день отпрашиваться с работы. Ну видимо что-то не успели решить с поставщиком, подумал я, фигня вопрос-мне же привезут холодильник, и всего за 3991р (цена с учетом скидки и доставки)


День Х(14.10.2017г), мне везут холодильник! Встал я в 9-00, выходной все же. В 11 позвонил: " Привезете?" - "Загрузили и везем", ответили мне. Отлично! В 13-00 я вновь почувствовал неладное... Позвонил. "У нас техническая накладка - не загрузили Ваш холодильник" (как можно забыть холодильник???) Прошу привезти сегодня, хоть в час ночи - обещают подумать и перезвонить. Через 2 часа мне перезванивают и говорят, у вас же холодильник за 3900, не привезем, в понедельник сообщат подробности - это спустя две доставки и 6 обращений поняли, что цена "неправильная". Что было на самом деле в доставке и почему не привезли - неизвестно...


В понедельник, днем, звоню узнать подробности. "Здравствуйте, что с моим заказом холодильника? Здравствуйте, была техническая ошибка, по данному штрихкоду это чайник (или тостер - не помню), вам привезти данный товар? Нет? Тогда мы(goods.ru) отменяем заказ. А как же публичная оферта, доставка, подтверждения наличия товара, время и т.д.? - мы не интернет магазин и ничего Вам не должны. Пишите письменную жалобу на service@goods.ru ." - разговор примерный и передает только общую мысль.


Пишу письмо на service@goods.ru и в Холольник.ру(поставщик), с описанием всей ситуации и ссылкой на пункты правил ( https://goods.ru/delivery-terms/ ).


Звонит руководитель отдела рекламаций - разговариваем примерно 20 минут, о том, что они "онлайн-шопинг нового уровня" (https://goods.ru/about-goods-ru/) и я понимаю, что по закону Вы может и не обязаны, но это же ваша основная работа продать и доставить, а Вы не справились ни с одной. Мне намекают, что это я такой особенный и многого хочу, а за накладку с доставкой вот Вам 1500 бонусных балов, на которые вы можете оплатить до 50% покупки...

Goods.ru или как потратить миллионы на рекламу и программу лояльности, но забыть о главном Мегамаркет, Сервис, Агрегатор, Длиннопост

ответ goods.ru

Goods.ru или как потратить миллионы на рекламу и программу лояльности, но забыть о главном Мегамаркет, Сервис, Агрегатор, Длиннопост

ответ Холодильник.Ру

Выводы: Мои ожидания были завышены, я относился к goods.ru, как к поколению новых компаний, отвечающих не только по закону, а получил просто еще один агрегатор, который до марта 2018 года ни за что не отвечает (вступление в силу поправок закона об агрегаторах). Я советую трижды подумать, связываясь с агрегаторами и покупать напрямую у интернет-магазинов, если нет большой финансовой выгоды. Несмотря на то что "goods.ru основан и поддерживается компанией «М.Видео»" они работают по совсем другим принципам.


P.S. Заказ разместил 06.10.2017, отменили заказ 16.10.2017, а деньги так и не вернули - по условиям до 30-ти дней...


P.P.S. к сожалению, мне придется продолжить тестировать сервис goods.ru - так как у меня большое количество бонусов и я финансово заинтересован.

Показать полностью 5
Отличная работа, все прочитано!