Пользователь
0,0
рейтинг
11 июля 2014 в 12:43

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

Привет. Примерно полгода назад я запилил 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
Естественно, код не идеальный… Сейчас я бы переписал половину, но в целом, архитектура гибкая и расширяемая :)

Готов ответить на вопросы в комментариях к статье.
@Artem_zin
карма
16,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (19)

  • –1
    Скажите, а в чём мотивация? Я однажды пользовался last.fm, но не помню, в чём цель скробблинга и какие именно преимущества он дает.
    Да, и каков текущий статус Last.fm? Они не собираются прекращать деятельность/продаваться/закрывать API?
    Возможно, есть смысл ориентироваться на другие сервисы (какие-нибудь open-source аналоги, если они существуют)?
    • +1
      Например для меня основной профит в ласте в том, что я ничего особо не делаю, просто слушаю музыку и потом периодически захожу на сайт просматриваю рекомендации новой музыки и концертов, составленные на основании того, что уже наскроблено. Очень удобно, хочу я вам сказать, особенно с концертами.
      • 0
        Ага, рекомендации значит. Это меня как раз интересовало. Каково их качество?
        • 0
          Достаточное. У меня больше ста тысяч скробблов, и большую часть времени в рекомендациях достаточно годные вещи.
        • 0
          Меня устраивает, с помощью них нашёл немало групп, которые смело записываю в любимые, но могу быть и отклонения, т.к. они основываются, на сколько я понимаю, на метках к исполнителям: например я слушаю в основном хардкор(не электронный, а который ответвление панка), так вот этот стиль весьма и весьма многолик — несколько групп помеченных таким тегом могут разительно отличаться друг от друга на столько, что в их музыке может не быть вообще схожих черт.

          В общем рекомендую вам попробовать.
    • +2
      Вот кстати да, хороший вопрос…

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

      Текущий статус last.fm: вроде как недавно (пару месяцев назад) они обновили UI сайта, вроде как раздел вакансий живой, набирают людей. Надеюсь, они будут развиваться дальше. Про закрытие API пока ничего не слышал

      Есть открытые аналоги, например Libre.fm, в принципе, добавить поддержку этого сервиса в WAIL — дело пары вечеров

      Спрашивайте, если есть еще вопросы :)
  • 0
    Любопытная деталь: wail (англ.) — вопить, выть (http://slovari.yandex.ru/wail/перевод)

    Название было выбрано случайно или намеренно? Не смущает несколько негативный оттенок значения этого слова?
    • 0
      WAIL —
      What am I listening

      В посте есть объяснение.
      • 0
        Да, виноват, первый вопрос был глупым. А что со вторым?
        Не смущает несколько негативный оттенок значения этого слова?
        • 0
          Меня, как пользователя, нет.
          Артема, как разработчика, думаю, тоже нет. Подождем ответа)
          • +3
            WAIL выбранно намеренно, при выборе я знал перевод, подумал, что будет запоминаемым :)
  • 0
    А чем официальное приложение не угодило?
    • +2
      Думается, тем, что оно в дизайне еще живет в эпохе 2.2-2.3, скробблит небольшое количество плееров (не знаю точно, может вообще только проигрываемые через себя). Оно страшное. И не обновляется почти. Да, в нем и любимые композиции, больший функционал. Но все же.
  • 0
    Пользуюсь этим github.com/tgwizard/sls/ вполне устраивает. Скробблерам, как по мне, не нужен никакой интерфейс, кроме ввода данных аккаунта Last.fm
    • +1
      Я тоже с него начал, но все таки хотелось красивое простое приложение с человеческим интерфейсом, можно сказать, что внешний вид Simple Last.fm Scrobbler стал мотиватором сделать WAIL Beta :)
  • 0
    Было бы хорошо поддержку AIMP, а то что-то они не особо хотят прикручивать ее.
  • 0
    Скажите, а есть подобный open source для iOS?
  • 0
    Скажите, а все проигрыватели которые заявлены как поддерживаемые вы проверяли?
    Глянул на реализацию поддержки Amazon Music — она не будет работать.

    Вот только что установил проверить (может что-то упустил) — действительно, не работает.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.