Только что пришли с зеленого сайта? — расслабьтесь: здесь не будет зеленого. Кстати, у нас новинка: теперь Жанет работает в Google Chrome.
Что это?
Очень много людей слушают музыку вконтакте. Не меньше людей любят скробблить свои прослушивания на Last.fm. Janeth vkontakte-scrobbler создан для того, чтобы совместить эти два пристрастия. Если вы не пользуетесь ни тем, ни другим, информация на этой странице может быть для вас неинтересна.
Собственно говоря, эта штука есть user-скрипт (расширение) для браузеров Opera, Firefox и Google Chrome, которое автоматически отправляет информацию о прослушанных композициях на сервер Last.fm. Разумеется, «listening-now» оповещения тоже отправляются.
Пока что скробблер находится в альфа-версии, так что возможны всякие разные глюки. Просьба сообщить о них в комментариях к заметке вконтакте. И проверяйте появление обновлений здесь на сайте почаще (текущая версия в заголовке страницы).
Скриншоты
Разве не прелесть?
- работает в Firefox, Opera, а теперь еще и в Google Chrome (до версии 4.0).
Совместимость с Оперой было делом приоритетным. Знаете ли, из 1200 строк кода код для Оперы занимает 500.
- не требует ввода пароля
А значит, это можно не думать о безопасности.
- надежен в условиях нестабильного соединения
Скробблер сам переподключится, когда ему нужно будет что-нибудь отправить.
- правильно отслеживает длительность проигрывания
Если нажмете паузу — счетчик остановится. Вы скажете, это естесственно, но другой аналогичный скрипт не учитывает пауз!
- загружает дополнительную информацию о треке и показывает вместе с обложкой альбома прямо вконтакте
Почему бы и не насладиться красивыми картинками, пока музыка играет?..
О безопасности
Хорошей новостью будет то, что скрипт вообще не запрашивает вашего пароля ни от вконтакте, ни от Last.fm (и, стало быть, нигде не хранит и никуда не отправляет). Не то, что я просто вам это обещаю, любой может сам проверить это, так как исходники полностью открыты.
Применение
Собственно говоря, делать ничего не надо. Установите скрипт, слушайте музыку, получайте рекомендации на Last.fm, смотрите статистику. Оно будет работать само.
Однако пытливому читателю, я все же расскажу чуть-чуть подробнее. Лишь только вы установите скрипт и загрузите любую страницу с аудиозаписями вконтакте в правом верхнем углу (или ниже меню, если это страница профиля или группы) появится значок Last.fm. Он бывает:
серым, если еще не подключился к серверу
Если кликнуть, он начнет подключаться.
серым анимированным, когда идет процесс соединения с сервером
красным с крестиком, если при подключении произошла ошибка
Если кликнуть, он попробует подключиться снова.
желтым с вопросиком, если вы не залогинились на last.fm.
Если кликнуть, вы окажетесь на страничке входа на last.fm.
синим, когда все прошло хорошо и скробблер готов, простите, скробблить
Если кликнуть, вы попадете в свой профиль на Last.fm.
Когда вы слушаете песню рядом отображается забавная иконка
(анимированная, пока песня играет, и остановленная во время паузы).
А во всплывающей подсказке к ней пишут, сколько времени осталось играть песни до того, как она заскробблится.
После отправки на сервер информации о том, что вы прослушали песню,
появится галочка или крестик, показывающие, успешно ли все прошло.
Если кликнуть во время проигрывания на вышеупомянутую забавную иконку, можно отредактировать автора и название композиции, которые будут отправлены на last.fm, а также форсировать или отменить отправку.
Установка
Проверено, Жанет работает в Opera 9.6/10, Firefox 3 (Greasemonkey 0.8) и еще в Google Chrome 2.0 и 3.0 (но не в 4.0). Впрочем, если у вас другая версия браузера все равно попробуйте — скорее всего, все будет нормально.
В будущем возможно портирование скробблера под IE и Safari. Если вы JS-разработчик, можете этим заняться. А если нет, просто заходите почаще ;).
Итак, внимание, главная кнопка:
Firefox
- Установите расширение Greasemonkey.
- Перейдите по ссылке «Установить» выше и согласитесь на установку скрипта.
- ???
- profit ;)
После этого на страницах с аудиозаписями вконтакте появится кнопочка Last.fm, и при проигрывании будет отображаться статус скробблера.
Opera
Здесь чуть посложнее.
- Сначала создайте папку, в которую будете складывать user-скрипты, в любом удобном месте.
- Кликните кнопку «Установить» выше и сохраните скрипт в выбранную папку.
- Затем откройте окно настроек Оперы (Tools — Preferences или Инструменты — Настройки) и на вкладке Advanced (Дополнительно) в разделе Content (Содержимое) кликните кнопку «Javascript options» («Настроить JavaScript»). В появившемся окне в поле User Javascript files (Папка пользовательских файлов Javascript) выберите ту папку, которую создали на первом шаге.
Google Chrome
В последних альфа-билдах Хрома скрипт не работает из-за ужесточения политики безопасности. Решение этой проблемы пока не планируется.
- Нам потребуется свежий Chrome. Текущая публичная финальная версия 2.0 подойдет.
- Для начала, отредактируйте ярлык Хрома для запуска с поддержкой User Scripts: в свойствах ярлыка во вкладке Ярлык в поле объект
после полного пути к chrome.exe укажите через пробел
«--enable-user-scripts». - Перейдите в папку
%LOCALAPPDATA%\Google\Chrome\User Data\Default(напрмер, через Пуск — Выполнить) и создайте там папкуUser Scripts. - Кликните кнопку «Установить» выше и сохраните скрипт в только что созданную папку.
- После перезапуска Chrome при помощи того самого отредактированного ярлыка Жанет займется своим делом.
Что ожидается и текущие проблемы
- откуда еще поскробблим?? Пишите!
- foo_scrobblecharts?
- совместимость с Safari.
Остальные известные мне проблемы уже решены. Так что присылайте отчеты о багах и запросы на дополнительные возможности в комментарии.
История версий
Бета 5 (2009-06-27)
- поддерживается vk.com. Спасибо Никите Дубинкину за указание на проблему и патч.
Бета 4 (2009-06-27)
- багфикс насчет русских названий треков
- отображение информации о версии по клику на серый значок скробблера
Бета 3 (2009-05-26)
- багфикс для ФФ
Бета 2 (2009-05-24)
- Совместимость с новым интерфейсом поиска вконтакте
- Поддержка Google Chrome
- И еще, спасибо Павлу Мельникову за поддержку скрипта пока мне было не до того
Бета 1 (2009-04-07)
- Получен client identifier. Можно и бетой назваться ;)
- При обновлении в FF не забудьте удалить старую версию (а не то у вас будет два скробблера установлено)
Альфа 6 (2009-03-28)
- теперь скробблер называется Janeth. Вообще практика называть программы женскими именами очень сексуальна. Спасибо Антону Че за придумывание такого прекрасного называния, и Евгению Геращенко за убеждение меня, что оно прекрасно.
- сэкономлена память
- сообщения об ошибках ближе к пользователю
- переписан Requester
Альфа 5 (2009-03-19)
- minor bug-fixes
Альфа 4 (2009-03-18)
- трек-инфо при скробллинге больше уезжает из поля зрения
- большие обложки теперь не вылезают куда не следует
- красивая кнопочка Установить
- мелкие багфиксы
- подвинул album-art ближе к названию альбома, а не названию трека
- редактирование автора-названия для отправки (кликните значок играющего трека)
- скробблим со стен
- возможность включить/выключить скробблер
- больше не даем пользователю подключаться по собственному желанию
- возможность отменить или повторить неудачный скробблинг
- сильно переделана архитектура: убрал рисование кнопочек из объекта scrobbler, и хранение состояния из conn
- добился еще большей надежности. Ни один трек не будет забыт
Альфа 3 (2009-03-03)
- аааааа… В FF в имени исполнителя дважды экранировались пробелы. Теперь все хорошо.
- еще пара каких-то мелочей
Альфа 2 (2009-03-01)
- появилась загрузка картинок альбома и информации о произведении с Last.fm
- написан нормальный текст здесь, руководство по использованию и установке
- решена проблема с анимацией в Firefox: иногда значок воспроизведения замирает
Альфа 1 (2009-02-28)
- Первый релиз. Что еще сказать?
Код
Если вы JS-программист, никто вам не мешает что-нибудь в этом скрипте изменить, так как лицензия — LGPL. Особенно приветствуется, если вы портируете его под Chrome, Safari или IE (для них есть свои Greasemonkey движки). С хромом и сафари должно быть все несложно. Также приветствуется отправка патчей мне на email (cyril7NOSPAM@NOSPAMgmail.com)
Мне в данный момент лень описывать как это все работает. Перечислю лишь объекты, задействованные в процессе:
- scrobbler — объект, инкапсулирующий поведение на странице вконтакте. Когда музыку включают/выключают, у него вызываются соответствующие методы. Он ответственен за то, чтобы создавать объекты Track и отправлять им соответствующие внешние события.
- scrobbler.fm. Он инкапсулирует сервис Last.fm. Логинит, когда надо, когда надо ставит запрос в очередь, склонен парсить ответы ласт.фма. В него слудует со временем передвинуть хранение состояния из scrobbler.fm.conn.
- ScrobblerIcon демонстрирует значок ласт.фма и отображает статус соединения. Является observer'ом scrobbler.fm'а.
- PlayingIcon отображает статус проигрываемого трека. Является observer'ом Track'а.
- AdvancedControl инкапсулирует интерфейс редактирования информации о треке и управления его скробблингом (то, что отображается по клику на PlayingIcon). Является observer'ом Track'а.
- InfoPanel — панелька с информациейй о композиции. Следит за Track'ом.
- Track инкапсулирует проигрываемый трек.
- scrobbler.fm.conn. Инкапсулирует соединение. Бывает разным для Оперы и для FF. Все потому что Опера не разрешает кросс-доменных запросов даже из UserJS (и, видимо, не разрешит). FF-ный conn работает просто и естесственно — вызовами GM_xmlhttpRequest. Оперный — ужасно запутанным образом делает запросы в Iframe'ах, передавая данные через window.name. Для этого использует вспомогательный объект Requester, который в свою очередь возвращает данные через самопальный Deferred. Кто разберется в таких дебрях — большой молодец.
Таким образом браузерно-специфичной частью является fm.conn. Он зависит от способа отправки асинхронных запросов. Таким образом, меняя его можно заставить скробблер работать в других браузерах.
Сайто-специфичными являются scrobbler, ScrobblerIcon, PlayingIcon, AdvancedControl и InfoPanel. Для того, чтоб скробблер работал на других сайтах (кроме вконтакте) надо реализовать интерфейс scrobbler и, опционально, объекты отображающие состояние.
Что еще почитать
- проект на Google Code
- моя заметка вконтакте, где я жду ваших комментариев
- группа про last.fm вконтакте (они там спали и видели такой скрипт)
- другой скробблер vkontakte (но он хреновый: ненадежный, просит пароль, не совместим с оперой, неправильно считает время воспроизведения)
- прекрасный скрипт, чтобы напрямую ходить по внешним ссылкам (под Оперой лучше его дополнить этим).
- лучшие скачивалки: видео, а для аудио все безобразные — свою напишу
- про Greasemonkey
- про UserJS



