Слушаем музыку из 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 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.
    • +9
    • 62.5k
    • 8
    Share post

    Similar posts

    Comments 8

      +2
      Всё это интересно, но чем не подходит вариант установить Google music manager и скачивать треки на локальную машину?
      Он, конечно, еще корявый, но свою задачу выполняет.
      P.S. Спасибо за статью
        0
        Хотелось иметь возможность потокового воспроизведения напрямую из Google Play Music без скачивания файлов себе.
          0
          И собственно, если я не ошибаюсь, сервис позволяет скачивать только купленные либо загруженные ранее песни. Вроде как нельзя просто добавить любую песню в фонотеку, а затем скачать её?
            0
            Это так. Скачать можно только купленные треки.
            Я не покупал полный доступ и сказать как себя ведет менеджер при открытом доступе сказать не могу.
          0
          Еще для Amarok есть скрипт.
            +2
            Для Mac OS есть клевый G-Ear.
            image
              0
              Он теперь есть и для Windows.
                0
                Ну спустя-то ~4 года.

            Only users with full accounts can post comments. Log in, please.