dimayakovlev.ru


scrobblerlog.php

Полезный инструмент для пользователей плееров Apple iPod, использующих онлайн сервисы сбора статистики прослушиваний треков, например Last.fm или listenbrainz.org.

scrobblerlog.php это консольный PHP скрипт, создающий лог истории прослушиваний музыкальных треков на плеере iPod. Лог создаётся на основе данных, полученных скриптом из двух плейлистов, предварительно экспортированных пользователем из iTunes. Формат данных лога соответствует формату данных файла .scrobbler.log, используемому для сохранения истории прослушивания прошивкой аудиоплееров Rockbox.

Лог представляет собой TSV-файл с полями данных в следующем порядке:

  1. исполнитель;
  2. альбом;
  3. название трека;
  4. номер трека в альбоме;
  5. продолжительность трека в секундах;
  6. источник прослушивания (используется значение “P”);
  7. метка времени прослушивания трека.

Использование scrobblerlog.php

Шаг 1. Настройка iTunes

Включите опцию “Prevent iPods, iPhones, and iPads from syncing automatically” во вкладке “Devices” окна настроек iTunes “Edit > Preferences”.

Отключение автоматической синхронизации между iPod и iTunes требуется для поддержания оригинального состояния истории прослушивания треков в базе данных плеера при его подключении к iTunes. Если настройка не включена, iTunes автоматически синхронизирует базы данных, после чего история прослушиваний плеера будет недействительна.

Шаг 2. Синхронизация iPod с iTunes

Выполните синхронизацию iPod с iTunes вручную. Каждая синхронизация трактуется как обнуление базы данных iPod: с момента синхронизации начинается ведение новой истории прослушивания треков в плеере.

После завершения синхронизации экспортируйте эталонный (reference) плейлист. Для этого на странице iPod в iTunes выберите стандартный плейлист Music и экспортируйте его в текстовый файл через меню “File > Library > Export Playlist…“.

Важно сохранить полученный файл до следующей синхронизации.

Шаг 3. Обычное использование iPod

Используйте iPod в обычном режиме. Плеер можно подключать к компьютеру для подзарядки при запущенном iTunes, если выполнена настройка, описанная в шаге 1.

Шаг 4. Создание лога из истории прослушиваний iPod

Подключите iPod к iTunes, но не выполняйте синхронизацию. Экспортируйте стандартный плейлист iPod “Music”, так же, как делали это в шаге 2. Этот файл будет разностным (difference) плейлистом, содержащим текущее состояние историю прослушиваний iPod.

Обязательно задайте для разностного плейлиста имя файла, отличное от имени эталонного плейлиста. Если эталонный плейлист будет перезаписан, история прослушиваний будет потеряна.

Имея файлы эталонного (reference) и разностного (difference) плейлистов, выполните в консоли команду для запуска scrobblerlog.php:

php scrobblerlog.php -r=/path/to/reference/playlist -d=/path/to/difference/playlist -l=/path/to/log

Сравнив данные из эталонного и разностного плэйлистов, скрипт сформирует лог истории прослушивания и сохранит его в лог-файл по указанному адресу. Если указанный лог-файл уже существует, он не будет перезаписан, новые данные будут добавлены к уже существующим. Теперь для передачи истории прослушивания онлайн сервису, используйте любой скробблер, поддерживающий работу с файлами .scrobbler.log.

Аргументы scrobblerlog.php

scrobblerlog.php принимает следующие аргументы:

  • -r, --reference - путь к файлу эталонного плейлиста, обязательный аргумент;
  • -d, --difference - путь к файлу разностного плейлиста, обязательный аргумент;
  • -l, --log - путь к файлу лога, не обязательный аргумент. Если аргумент не задан, лог выводится в консоль;
  • -o, --overwrite - включает перезапись лог-файла, не обязательный аргумент. Применяется только с аргументом -l. Перезаписывает существующий лог-файл новыми данными, а не добавляет их;
  • -s, --silent - включает тихий режим работы скрипта, не обязательный аргумент. Применяется только с аргументом -l. Отключает вывод в консоль информационных сообщений, сообщения об ошибках будут выведены;
  • -t, --timeshift - включает сдвиг времени прослушивания для повторяющихся треков, не обязательный аргумент. Если аргумент не задан, повторяющиеся треки будут иметь одну метку времени, соответствующую времени последнего прослушивания трека;
  • -z, --timezone - задаёт временную зону для вычисления меток времени, не обязательный аргумент. Допустимые значения аргумента перечислены в перечне поддерживаемых временных зон PHP. Если аргумент не задан, используется временная зона из текущих настроек PHP;
  • -h, --help - выводит справку по использованию скрипта и завершает его работу, не обязательный аргумент.

Репозиторий scrobblerlog.php.