3 posts tagged

Spotify

Заметка о клиенте Spotify

Клиент представляет собой приложение на основе Chromium Embedded Framework. Почему не Electron? Потому что свой протокол. В остальном, это HTML + CSS + JavaScript. Логика работы и представление конкретных разделов хранится в spa-файлах (видимо, от Single Page Application), которые, на самом деле, являются zip-файлами:

$ cd /Applications/Spotify.app/Contents/Resources/Apps
$ ls -la
total 44432
drwxr-xr-x  41 levaminov  staff     1394 May  1 16:25 .
drwxr-xr-x  48 levaminov  staff     1632 Apr 10 14:31 ..
-rw-r--r--   1 levaminov  staff   472763 Apr 10 13:59 about.spa
<...>
-rw-r--r--   1 levaminov  staff   358401 Apr 10 14:00 zlogin.spa
$ unzip browse.spa -d browse
$ cd browse
$ ls -la
total 6472
drwxr-xr-x   6 levaminov  staff      204 May  1 16:15 .
drwxr-xr-x  42 levaminov  staff     1428 May  1 16:15 ..
-rw-rw-r--   1 levaminov  staff  3302195 Apr 22 13:32 bundle.js
drwxrwxr-x   4 levaminov  staff      136 Apr 10 13:59 css
-rw-r--r--   1 levaminov  staff      232 Apr 10 13:59 index.html
-rw-rw-r--   1 levaminov  staff     1632 Apr 10 13:59 manifest.json

Модуль zlink описывает общее представление клиента – базу, остальные, в большинстве случаев, описывают контент каких-то отдельных блоков (чарты, о программе, настройки клиента, профиль пользователя).

Кэш, пользовательские данные:

cd ~/Library/Application\ Support/Spotify/

Логи по компонентам интерфейса:

cd ~/Library/Logs/Spotify/

Запуск клиента в режиме отладки:

/Applications/Spotify.app/Contents/MacOS/Spotify --remote-debugging-port=9222

Открываем http://localhost:9222/json, копируем devtoolsFrontendUrl, открываем в Chrome что-то в духе http://localhost:9222/devtools/inspector.html?ws=localhost:9222/devtools/page/7afc75eb-5eb6-4ac7-a300-b5e56cbb59db

Описание технологий, стоящих за клиентом:

Не лишним будет упомянуть и технический блог Spotify Labs.

2017   Spotify
2016   Music   Spotify