mblsha / yandex-music-mac-player

MIT License
57 stars 5 forks source link

Пожалуйста добавьте поддержку новой версии #33

Open delef opened 9 years ago

delef commented 9 years ago

Новая версия (редизайн) намного функциональнее и удобнее, возвращаюсь на старую и разочаровываюсь...

P.S. Насколько понял по-именам - русскоязычные, так что не стал писать на английском.

shamrin commented 9 years ago

@delef Спасибо за интерес! Я перестал пользоваться этой программой и перешёл на Chrome+Keysocket. Плюсы полноценного браузера перевесили проблемы с реализацией media-клавиш в Chrome. Поэтому личного интереса патчить yandex-music-mac-player у меня уже нет.

Тем не менее, если кто-нибудь напишет патч с поддержкой новой Я.Музыки, я его с удовольствием включу :-)

delef commented 9 years ago

Очень жаль, что я не пишу на Objective-C(

Спасибо за совет) Тогда пока тоже на Keysocket перескочу, может появится свободное время и на Ruby напишу, он вроде тоже неплох для создания приложений под Mac.. homebrew - показатель, хоть и консольный.

В общем, спасибо)

shamrin commented 9 years ago

@delef Я переписал эту программу, совсем не зная Objective-C :-) Оказалось, не так уж трудно научиться. XCode и Stackoverflow помогают в сложных случаях.

Скорее всего, менять много не придётся и там только кусочки на JavaScript. См. вызовы функции eval в YandexMusicAppDelegate.m: 1, 2, 3.

Ещё может помочь изучение реализации Я.Музыки в KeySocket.

shamrin commented 9 years ago

@delef По поводу переписывания на Ruby: я больше времени потратил на возню с OS X API, а не на Objective C. Не думаю, что Ruby как-то облегчит дело (возможно, даже наоборот, потому что придётся какие-то обёртки использовать).

delef commented 9 years ago

Согласен.. значит буду вникать) Есть вариант реализации приложения (полноценного) на основе "несуществующего" api яндекс.музыки) Реализация уже есть)

И.. я думаю работать быстрее будет и интерфейс под Yosemite подстроить можно, но это только задумки, которые я надеюсь реализую. Просто становится вопрос - а нужен ли вообще он, если есть KeySocket?

Попользовался им час и понял, что всё неплохо у них.

shamrin commented 9 years ago

Да, KeySocket в целом хорош, за исключением нескольких проблем:

  1. Необходимость ковыряться в настройках Хрома после установке расширения.
  2. Конфликты с VLC и другими программами, которые ловят media-клавиши. Некоторые подробности в https://github.com/borismus/keysocket/issues/78. Это проблема Хрома.
delef commented 9 years ago

Понял, учту) Спасибо)

msoap commented 9 years ago

Для себя я поправил под новую я.музыку, но только шорткаты prev/next/play/stop. Сходу не получилось достать имя трека для показа в меню. Прислать pullrequest? :)

delef commented 9 years ago

Пришли, это же уже хорошо)

А в чем проблема с именем трека? Там же только контент тега забрать..

delef commented 9 years ago
<div class="track__name-wrap">
    <a href="/album/625175/track/3591615" class="track__title link" title="Born To Die">Born To Die</a>
    <div class="track__artists"><a href="/artist/643850" class="link link_mute">Lana Del Rey</a></div>
</div>
msoap commented 9 years ago

Там хитрее, внедряется js код, который вешается на событие смены трека, чтобы сама страница оповещала приложение о смене трека и о статусе (пауза/играет).

Вот это место в YandexMusic/YandexMusicAppDelegate.m:

    // inject JavaScript handler to track playing/non-playing state
    [self eval:@"(function() { "
                   "if(window.MAC_APP_HANDLER_INSTALLED) { yamusicapp.log(\"handler already there\"); return; } "
                   "yamusicapp.log(\"installing handler\"); "
                   "yamusicapp.notify(false); "
                   "Mu.events.bind(\"pl:onPlayTrack pl:onPause pl:onResume pl:onStop\", function(f) { "
                     "var isPlaying = (f.type === \"pl:onResume\" || f.type === \"pl:onPlayTrack\"); "
                     "yamusicapp.notify(isPlaying); "
                   "}); "
                   "window.MAC_APP_HANDLER_INSTALLED = true; "
                "})();"];

Поэтому, кстати, у меня еще не меняется иконка и название в меню (Play/Pause)

msoap commented 9 years ago

Без учета статусов/имени трека - https://github.com/mblsha/yandex-music-mac-player/pull/34