Pull to refresh

Слушаем музыку из Google Play Music

Reading time 4 min
Views 66K
Не так давно сервис Google Play Music стал доступен в России. За 169 рублей в месяц можно получить полный доступ. Проблема в том, что Google предоставляет возможность слушать музыку только либо с мобильных устройств, либо через браузер.
Однако многим это не подходит, к примеру мне. Поэтому в данной статье рассмотрим возможные «неофициальные» способы прослушивания музыки из Google Play Music.

Итак, в наличии имеем Raspberry Pi с установленным сервером MPD. Хотим получить возможность проигрывать удалённо любую музыку из своей фонотеки в Google Play Music на этом Raspberry Pi.

Вариант с запуском vnc-сервера с запущенным браузером не рассматриваем. Пробовал запускать chromium и midori без X-сервера и оконного менеджера, всё равно это дело очень сильно тормозит. Веб-приложение music.google.com всё таки достаточно «тяжёлое».

Официальный API для Google Play Music отсутствует, но на github'е имеется отличный Unofficial-Google-Music-API, написанный на Python. Автор этого API Simon Weber советует несколько проектов, использующих его API. Рассмотрим заинтересовавшие меня:

Помимо этих проектов можно также найти:

Стоит отметить, что все проекты написаны на Python. Ниже опишу свой опыт работы с каждым из этих проектов.


thunner


Curses-клиент. Запускает музыку через mplayer. Звучит здорово, однако не работает. Для начала пришлось переключиться на ветку, в которую внесены изменения для работы с последней версией API, версия из master неработоспособна. Но музыка всё равно играет лишь секунду, затем переключается на следующую песню. Собственно можем наблюдать следующую нерешённую проблему All-Access Songs Not Playing, значит это не только у меня.

image


GMusicFS


FUSE файловая система. При монтировании получаем иерархию директорий своей фонотеки из Google Play Music в формате
artists/<name of artist>/<albums>/<tracks>
плюс загружается cover.jpg. Что же, возможность иметь всю фонотеку в формате mp3 в директории — это просто отлично, но есть ряд печальных ограничений.
Как пишет автор, данное решение подходит только для копирования файлов себе на компьютер либо для воспроизведения простым проигрывателем, таким как mplayer. При попытке воспроизведения в более продвинутых проигрывателях могут возникать проблемы. И действительно, при попытке открыть коллекцию даже в простом mocp он начинает сильно подвисать, музыку слушать невозможно. При попытке указать директорию в качестве библиотеки для MPD получаем возможность слушать музыку, однако тэги у меня не загружались, а слушать песни с одинаковым названием «Unknown» конечно не вариант. Ещё автор отмечает отсутствие возможности воспроизвести песню с определённой позиции.

Установить GMusicFS можно при помощи pip, предварительно установив зависимости:
pip install github.com/terencehonles/fusepy/tarball/master
pip install github.com/simon-weber/Unofficial-Google-Music-API/tarball/develop
pip install github.com/EnigmaCurry/GMusicFS/tarball/master


Затем необходимо создать конфигурационный файл ~/.gmusicfs со следующим содержимым:
[credentials]
username = your_username@gmail.com
password = your_password


И можно монтировать:
mkdir -p $HOME/google_music
gmusicfs $HOME/google_music


Для размонтирования:
fusermount -u $HOME/google_music


При копировании музыки себе на компьютер все тэги корректно загружаются. Воспроизведение с помощью mplayer также работает отлично. После обновления фонотеки необходимо перемонтировать файловую систему.


GMusicProxy


В описании проекта говорится следующее: «Let's stream Google Play Music using any media-player».
Этот скрипт позволяет получать m3u-плейлисты либо mp3-файлы путём отправки специально сформированных GET-запросов.

Установить можно следующей командой:
pip install github.com/diraimondo/gmusicproxy/tarball/master


Для работы необходим device-id одного из зарегистрированных устройств. Получить список этих устройств можно следующим образом:
GMusicProxy --email <адрес> --password <пароль> --list-devices


Создаём конфиг ~/.config/gmusicproxy.cfg:
email = my.email@gmail.com
password = my-secret-password
device-id = 54bbd32a309a34ef


Запускаем:
GMusicProxy


Примеры использования с помощью консольного клиента mpc
curl -s 'http://localhost:9999/get_by_search?type=album&artist=Queen&title=Greatest%20Hits' >
/var/lib/mpd/playlists/queen.m3u

mpc load queen
mpc play


mpc clear
curl -s 'http://localhost:9999/get_new_station_by_search?type=artist&artist=Queen&num_tracks=100' |
grep -v ^# | while read url; do mpc add "$url"; done
mpc play

Примеры использования с помощью VLC
vlc 'http://localhost:9999/get_by_search?type=album&artist=Rolling%20Stones&title=tattoo&exact=no'
curl -s 'http://localhost:9999/get_all_stations?format=text&only_url=yes' | sort -R | head -n1 | vlc -


Поддерживаются самые различные запросы: получение песен, радиостанций, плейлистов,…
Из минусов стоит отметить, что все эти запросы необходимо составлять самому, а также, что тэги загружаются только при воспроизведении конкретной песни.


play-pi


Web-фронтенд на Django для доступа к фонотеке с интеграцией в MPD. Скажу лишь, что у меня возникла такая же проблема, как и с thunner'ом — воспроизводится лишь секунда.


Mopidy


Mopidy представляет из себя музыкальный сервер, который умеет «притворяться» MPD. Но самое интересное — для него есть расширение Mopidy-GMusic.
Установить Mopidy можно с помощью пакетного менеджера, а расширение следующей командой:
pip install mopidy-gmusic

Для работы понадобится опять же device-id, который можно получить либо набрав *#*#8255#*#*, либо установив приложение.
В конфиг Mopidy необходимо дописать:
[gmusic]
username = alice
password = secret
deviceid = 0123456789abcdef


После дальнейшего конфигурирования (документация здесь) получим MPD-совместимый сервер с музыкой из Google Play Music, а также с локальной коллекцией. Из MPD-клиентов без проблем заработали GMPC, Ario и pympd. Мой любимый Cantata к сожалению не подключается.




Выводы


Для копирования музыки из Google Play Music в формате mp3 отлично подойдёт GMusicFS. Для воспроизведения можно использовать Mopidy с плагином.

Я остановился на том, что запускаю одновременно MPD и Mopidy на разных портах и подключаюсь разными клиентами (Cantata и GMPC). MPD для локальной коллекции, Mopidy для Google Play Music.

Не стоит забывать, что при использовании двухфакторной аутентификации необходимо создавать пароли приложений в настройках аккаунта Google.
Tags:
Hubs:
+9
Comments 8
Comments Comments 8

Articles