Pull to refresh

Android last.fm скробблер WAIL Beta теперь Open Source

Reading time 4 min
Views 12K
Привет. Примерно полгода назад я запилил Android приложение для скробблинга проигрываемой в разных плеерах музыки в last.fm.

Уже несколько месяцев у меня нет времени развивать этот проект, поэтому я решил открыть его исходники (репозиторий на гитхабе).

Я пишу этот пост на Хабр с небольшой надеждой на то, что здесь есть люди, которым было бы интересно развивать WAIL дальше, добавлять новые фичи, фиксить баги и просто участвовать в оупен-сорс проекте Android приложения :)

Кратко о last.fm: это сервис для любителей послушать музыку, главная фича которого заключается в том, что вы можете передавать инфомацию о треках, которые вы слушаете, а last.fm на основе этого будет предлагать вам других исполнителей, друзей, концерты исполнителей, которых вы слушаете (кстати офигенно, первый раз сходил на концерт именно по рекомендации last.fm).

Скриншоты для поддержания интереса




Кратко о возможностях WAIL:
  • Перехват событий (броадкаст интентов) о проигрывании музыки из различных плееров и скробблинг этой информации в last.fm
  • Обновление #nowplaying на last.fm
  • Оффлайн работа (когда появится доступ к сети — WAIL отправит информацию в last.fm)
  • Минималистичный UI в Holo стиле (хотя на Android L тоже неплохо смотрится)
  • Возможность звуковых уведомлений о скробблинге трека или о пропуске трека (если по различным условиям трек игнорируется приложением)
  • Список обработанных треков
  • И еще по мелочи :)


Еще немного скриншотов:





Теперь про архитектуру приложения для тех, кому интересно будет покопаться внутри



  • WAIL — What am I listening
  • 1) Главная часть WAIL — BroadCastRecevierы, которые ловят интенты от музыкальных приложений
  • 2) Вторая главная часть WAIL — WAILService, которому передают информацию о треках, он уже решает что с ними делать — скробблить, обновить #nowplaying и прочее
  • 3) Внутренняя SQLite база данных, в частности TracksDBHelper, сюда WAIL записывает обработанные треки, соответственно, эта БД позволяет работать оффлайн. WAILService периодически проходится по этой информации и отправляет её в last.fm
  • 4) Ну и собственно UI: Все построено на фрагментах, есть поддержка верстки для планшетов


Что в приоритете по фичам



  • Поддержка RemoteControllerClient — это API для медиаплееров, гораздо лучше, чем обработка интентов т.к. на него есть хоть какой-то стандарт. Кстати, ваш экран блокировки использует именно этот API для отображения и управления проигрываемой музыкой. У меня есть кое-какие наработки по этому направлению, но все осложняется практически полным отсутствием документации от гугла по этой теме. Суть поддержки RemoteControllerClient в том, что WAIL автоматически сможет обрабатывать ВСЕ музыкальные плееры, которые используют этот API
  • Вывод текущего обрабатываемого трека на главном экране — многие пользователи не понимают, обрабатывает ли сейчас WAIL какой-то трек или нет… В общем, фича нужная и полезная
  • Вывод уведомлений о скробблинге, обновлении #nowplaying в статус бар
  • Настройки для отключения скробблинга в зависимости от типа подключения к сети (мобильные сети/wifi)
  • Можете свободно предлагать свои пожелания в issues на гитхабе


Кому может быть интересно покопаться в WAIL


  • Опытным Android разработчикам, которые хотят показать свое мастерство в Open Source проекте :)
  • Начинающим Android разработчикам, которым я предлагаю делать небольшие фиксы/фичи и потихонько осваивать Android development на реальной практике с выходом в Google Play к реальным пользователям
  • Тем пользователям WAIL, которые по совместительству являются Android или Java разработчиками и хотят что-то изменить в приложении :)


Если вы решили помочь WAIL


1) Во-первых — большое спасибо, как от меня, так и от пользователей :)

2) Во-вторых, я написал небольшое wiki на тему стайлгайдов по коммитам, по git flow и стайлгайдам по исходникам и ресурсам проекта, пожалуйста, прочитайте его, оно коротенькое.

3) В-третьих — да, успешно смерженные пулл-реквесты от вас попадут в Google Play!

4) Я буду мейтенером проекта, периодически проверяя пулл-реквесты, буду помогать проекту как разработчик, когда будет время. Релизы в Google Play будут делаться по мере развития проекта, я бы хотел делать частые релизы, чтобы быстро получать фидбек от пользователей и выстраивать планы на следующие релизы

5) Если хотите начать с легкого — придумайте небольшое issue, например фикс иконки или перевод на понятный вам язык, заведите issue на гитхабе, потом сделайте пулл-реквест с фиксом/фичей и всё :)

Всем спасибо за внимание, надеюсь, WAIL будет развиваться и жить дальше :)

Ссылка на гитхаб WAIL Beta — Android last.fm scrobbler

P.S.
Если вы посмотрите гитхаб, вы увидите, что там очень мало коммитов. Это связанно с тем, что в приватном репозитории лежали ключи с паролями, которыми я подписываю приложения (фейл, согласен), я решил не доверять git filter-branch и bfg и просто создал новый репозиторий перенеся исходники и убрав приватные данные, около ~250 коммитов потеряно.
Кроме того, в приложении опубликованы ключи к last.fm api, да на гитхабе. Но блин, декомпилировать Android приложение и достать все эти данные совсем не сложно, да и усложнять разработку другим людям тем, что им придется регистрироваться на last.fm в разделе разработчиков, получать ключи я бы не хотел, пожалуйста, не используйте их для плохих намерений :)


Пост не в «Я пиарюсь» по причине того что: 1) Проект оупен-сорсный 2) Он абсолютно не коммерческий, сделан с душой для тех, кому приложение полезно 3) Если модераторы Хабра посчитают, что пост надо перенести в «Я пиарюсь» — ок

P.P.S
Естественно, код не идеальный… Сейчас я бы переписал половину, но в целом, архитектура гибкая и расширяемая :)

Готов ответить на вопросы в комментариях к статье.
Tags:
Hubs:
+26
Comments 19
Comments Comments 19

Articles