...

понедельник, 21 октября 2013 г.

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

Не так давно сервис 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 https://github.com/terencehonles/fusepy/tarball/master

pip install https://github.com/simon-weber/Unofficial-Google-Music-API/tarball/develop

pip install https://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 https://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</blockquote>

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.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



Комментариев нет:

Отправить комментарий