четверг, 21 мая 2009 г.

Foobar2000 и libre.fm. Учим foo_audioscrobbler работать с новым сервисом.

libre.fm - это новый сервис, который пока находится в стадии глубокого альфа-тестирования, но с амбициями на то, чтобы потеснить last.fm. Рассуждать на эту тему я небуду, а расскажу о том, как научить новые версии foo_audioscrobbler с этим ресурсом.
Все методы, которые я нашел в интернете, мне не подошли.

1) Изменение hosts. Невозможно скробблить на два сервиса одновременно.
2) Использование версии 1.3.16. Эта версия не может скробблить заголовки с радио-станций.

Для патчинга плагина нам понадобится:

  1. Любой hex-ричный редактор.
  2. Сам плагин (foo_audioscrobbler.dll)
  3. Руки прямые
Приступаем!

Копируем foo_audioscrobbler.dll в какую-нибудь папку, чтобы ничего не испортить. Открываем файл в hex-редакторе. Поиском ищем текст "post.audioscrobbler.com" (ANSI) в файле. В плагине версии 1.4.1 этот текст находится по смещению 0x00022F5F. Теперь заменяем текст "http://post.audioscrobbler.com/?hs=true&p=1.2&c=" на "http://turtle.libre.fm/?hs=true&p=1.2&c=". Так как вторая строка короче первой, то надо оставшиеся байта заменить нулями (0x00).


До


После


Теперь сохраняем файл и закрываем редактор.

Теперь пропатченный плагин надо установить. Так как будим использовать две копии одного плагина, чтобы скробблить одновременно на libre.fm и last.fm, устанавливать их придется по-хитрому, потому что их страницы в настройках будут перекрываться.
Исходный плагин уже должен быть настроен для работы с last.fm.
Для начала переносим оригинальный плагин foo_audioscrobbler.dll во временную папку, а пропатченный файл переименуем в "foo_audioscrobbler_libre.fm.dll" (иначе он испортит настройки оригинального плагина) и скопируем его в папку "папка_foobar2000\components\". Теперь запускаем Foobar2000 и на вопрос о сохранении настроек "foo_audioscrobbler.dll" отвечаем "Yes".


...и переходим на страницу настройки плагина:


Взводим флажок "Enable Audioscrobbler" и вносим в поля "Name:" и "Password:" свои логин и пароль от аккаунта на libre.fm. Чтобы заголовки песен, которые крутят на радио-станциях, тоже отправлялись, взводим флажок "Submit tracks from dynamic sources (e.g., online streams)". Закрываем окно настроек и сам проигрыватель. Теперь возвращаем на место оригинальный плагин и запускаем Foobar2000.
Теперь при проигрывании Foobar будет отправлять заголовки на оба сервиса, о чем будет свидетельствовать дублирование всех сообщений плагина в консоли ("View/Console").

Пропатченную версию плагина можно взять здесь: http://radjah.ucoz.ru/load/4-1-0-9