mopidy / mopidy-gmusic

DEPRECATED (Mopidy extension for playing music from Google Play Music)
https://mopidy.com
Apache License 2.0
214 stars 60 forks source link

gmusic in ncmpcpp media library? #166

Closed samiconductor closed 3 years ago

samiconductor commented 7 years ago

I'm using gmusic over MPD with ncmpcpp and I wondered if there was any way to add my google music library to the media library view (see screenshot). I'm guessing not and that the media library is your local media only. Can you trick it with something like

[local]
library = gmusic

Either way, mopidy plus gmusic is awesome!!! Thanks so much.

screenshot from 2017-01-20 22-55-08

Here's my deets:

$ ncmpcpp --version
ncmpcpp 0.7

optional screens compiled-in:
 - tag editor
 - tiny tag editor
 - artist info
 - outputs
 - visualizer
 - clock

encoding detection: enabled
built with support for: curl fftw ncurses taglib unicode
$ sudo mopidyctl deps
Running "/usr/bin/mopidy --config /usr/share/mopidy/conf.d:/etc/mopidy/mopidy.conf deps" as user mopidy
Executable: /usr/bin/mopidy
Platform: Linux-4.4.34-v7+-armv7l-with-debian-8.0
Python: CPython 2.7.9 from /usr/lib/python2.7
Mopidy: 2.1.0 from /usr/lib/python2.7/dist-packages
  Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
  requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
  tornado>=3.2: 3.2.2 from /usr/lib/python2.7/dist-packages
Mopidy-GMusic: 2.0.0 from /usr/local/lib/python2.7/dist-packages
  gmusicapi>=10.1: 10.1.0 from /usr/local/lib/python2.7/dist-packages
    validictory>=0.8.0,!=0.9.2: 1.1.0 from /usr/local/lib/python2.7/dist-packages
    decorator>=3.3.1: 4.0.11 from /usr/local/lib/python2.7/dist-packages
    mutagen>=1.34: 1.36 from /usr/local/lib/python2.7/dist-packages
    requests>=1.1.0,!=1.2.0,!=2.2.1,!=2.8.0,!=2.8.1: 2.4.3 from /usr/lib/python2.7/dist-packages
    python-dateutil>=1.3,!=2.0: 2.6.0 from /usr/local/lib/python2.7/dist-packages
      six>=1.5: 1.10.0 from /usr/local/lib/python2.7/dist-packages
    proboscis>=1.2.5.1: 1.2.6.0 from /usr/local/lib/python2.7/dist-packages
    protobuf>=3.0.0: 3.1.0.post1 from /usr/local/lib/python2.7/dist-packages
      six>=1.9: 1.10.0 from /usr/local/lib/python2.7/dist-packages
      setuptools: 5.5.1 from /usr/lib/python2.7/dist-packages
    oauth2client>=1.1: 4.0.0 from /usr/local/lib/python2.7/dist-packages
      httplib2>=0.9.1: 0.9.2 from /usr/local/lib/python2.7/dist-packages
      pyasn1>=0.1.7: 0.1.9 from /usr/local/lib/python2.7/dist-packages
      six>=1.6.1: 1.10.0 from /usr/local/lib/python2.7/dist-packages
      rsa>=3.1.4: 3.4.2 from /usr/local/lib/python2.7/dist-packages
        pyasn1>=0.1.3: 0.1.9 from /usr/local/lib/python2.7/dist-packages
      pyasn1-modules>=0.0.5: 0.0.8 from /usr/local/lib/python2.7/dist-packages
        pyasn1>=0.1.8: 0.1.9 from /usr/local/lib/python2.7/dist-packages
    mock>=0.7.0: 2.0.0 from /usr/local/lib/python2.7/dist-packages
      six>=1.9: 1.10.0 from /usr/local/lib/python2.7/dist-packages
      funcsigs>=1: 1.0.2 from /usr/local/lib/python2.7/dist-packages
      pbr>=0.11: 1.10.0 from /usr/local/lib/python2.7/dist-packages
    appdirs>=1.1.0: 1.4.0 from /usr/local/lib/python2.7/dist-packages
    gpsoauth>=0.2.0: 0.4.0 from /usr/local/lib/python2.7/dist-packages
      pycryptodomex>=3.0: 3.4.3 from /usr/local/lib/python2.7/dist-packages
      requests: 2.4.3 from /usr/lib/python2.7/dist-packages
    MechanicalSoup>=0.4.0: 0.6.0 from /usr/local/lib/python2.7/dist-packages
      beautifulsoup4: 4.5.3 from /usr/local/lib/python2.7/dist-packages
      six>=1.4: 1.10.0 from /usr/local/lib/python2.7/dist-packages
      requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
    six>=1.9.0: 1.10.0 from /usr/local/lib/python2.7/dist-packages
    future: 0.16.0 from /usr/local/lib/python2.7/dist-packages
  cachetools>=1.0: 2.0.0 from /usr/local/lib/python2.7/dist-packages
  setuptools: 5.5.1 from /usr/lib/python2.7/dist-packages
  requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
  Mopidy>=1.0: 2.1.0 from /usr/lib/python2.7/dist-packages
    Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
    requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
    tornado>=3.2: 3.2.2 from /usr/lib/python2.7/dist-packages
  Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
Mopidy-Local-SQLite: 1.0.0 from /usr/lib/python2.7/dist-packages
  Mopidy>=1.1: 2.1.0 from /usr/lib/python2.7/dist-packages
    Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
    requests>=2.0: 2.4.3 from /usr/lib/python2.7/dist-packages
    tornado>=3.2: 3.2.2 from /usr/lib/python2.7/dist-packages
  Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/dist-packages
  uritools>=1.0: 1.0.1 from /usr/lib/python2.7/dist-packages
    ipaddress>=1.0.6: 1.0.14 from /usr/lib/python2.7/dist-packages
    ipaddress>=1.0.6: 1.0.14 from /usr/lib/python2.7/dist-packages
GStreamer: 1.4.4.0 from /usr/lib/python2.7/dist-packages/gi
  Detailed information: 
    Python wrapper: python-gi 3.14.0
    Relevant elements:
      Found:
        uridecodebin
        souphttpsrc
        appsrc
        alsasink
        osssink
        oss4sink
        pulsesink
        id3demux
        id3v2mux
        lamemp3enc
        mad
        mpegaudioparse
        vorbisdec
        vorbisenc
        vorbisparse
        oggdemux
        oggmux
        oggparse
        flacdec
        flacparse
        shout2send
      Not found:
        flump3dec
        mpg123audiodec
samiconductor commented 7 years ago

Hm. It looks like the jump_to_media_library with ~ on any track pulls that artist, their albums, and all their tracks into this media library view. I was hoping to have my whole gmusic library in that view all the time but it looks like you only get what you pick. Closing this. Thanks again!

screenshot 2017-01-21 00 47 51
belak commented 7 years ago

This should work... I'll take a closer look tomorrow

samiconductor commented 7 years ago

Oh interesting. It's probably a config issue on my part.

$ sudo mopidyctl config
Running "/usr/bin/mopidy --config /usr/share/mopidy/conf.d:/etc/mopidy/mopidy.conf config" as user mopidy
[core]
cache_dir = /var/cache/mopidy
config_dir = /etc/mopidy
data_dir = /var/lib/mopidy
max_tracklist_length = 10000
restore_state = false

[logging]
color = true
console_format = %(levelname)-8s %(message)s
debug_format = %(levelname)-8s %(asctime)s [%(process)d:%(threadName)s] %(name)s\n  %(message)s
debug_file = /var/log/mopidy/mopidy-debug.log
config_file = /etc/mopidy/logging.conf

[audio]
mixer = software
mixer_volume = 
output = autoaudiosink
buffer_time = 

[proxy]
scheme = 
hostname = 
port = 
username = 
password = 

[gmusic]
enabled = true
username = sam.simmons86@gmail.com
password = ********
bitrate = 160
deviceid = 
all_access = false
refresh_library = 1440
refresh_playlists = 60
radio_stations_in_browse = true
radio_stations_as_playlists = false
radio_stations_count = 
radio_tracks_count = 25

[local-sqlite]
enabled = false  ; Extension disabled by user config.

[mpd]
enabled = true
hostname = 0.0.0.0
port = 6600
password = ********
max_connections = 20
connection_timeout = 60
zeroconf = Mopidy MPD server on $hostname
command_blacklist = 
  listall
  listallinfo
default_playlist_scheme = m3u

[http]
enabled = true
hostname = 127.0.0.1
port = 6680
static_dir =
zeroconf = Mopidy HTTP server on $hostname

[stream]
enabled = true
protocols = 
  http
  https
  mms
  rtmp
  rtmps
  rtsp
metadata_blacklist = 
timeout = 5000

[m3u]
enabled = true
base_dir =
default_encoding = latin-1
default_extension = .m3u8
playlists_dir = /var/lib/mopidy/playlists

[softwaremixer]
enabled = true

[file]
enabled = true
media_dirs = 
  $XDG_MUSIC_DIR|Music
  ~/|Home
excluded_file_extensions = 
  .jpg
  .jpeg
show_dotfiles = false
follow_symlinks = false
metadata_timeout = 1000

[local]
enabled = false  ; Extension disabled by user config.
samiconductor commented 7 years ago

Hm, it looks like all_access was not enabled by default. Forcing enabling didn't fix it. But I am part of a family plan and all access not being automatically true leads me to believe my subscription looks different via the API.

MoritzMaxeiner commented 7 years ago

I have the same issue. Media library view in ncmpcpp is empty upon startup and only shows the current track's context once I play a track and jump to it in the media library via "~"; never the full media library. I also do not have all_access (and cannot enable it). If I add some tracks via mopidy's local extensions, they are shown properly in ncmpcpp's media library view, so this does seem to be a gmusic extension issue.

The only way for me to start a track is to go through ncmcpp's "Browse" -> "[Google Music]" -> "[Albums]/[Artists]/[Radio]/[Tracks]"

$ ncmpcpp --version
ncmpcpp 0.7.7
$ mopidy deps
Executable: /home/calrama/.local/bin/mopidy
Platform: Linux-4.9.7-gentoo-x86_64-Intel-R-_Core-TM-_i5-5200U_CPU_@_2.20GHz-with-gentoo-2.2.1
Python: CPython 2.7.12 from /usr/lib64/python2.7
Mopidy: 2.1.0 from /home/calrama/.local/lib64/python2.7/site-packages
  tornado>=3.2: 4.4.2 from /home/calrama/.local/lib64/python2.7/site-packages
    singledispatch: 3.4.0.3 from /home/calrama/.local/lib64/python2.7/site-packages
      six: 1.10.0 from /usr/lib64/python2.7/site-packages
    certifi: 2017.1.23 from /usr/lib64/python2.7/site-packages
    backports_abc>=0.4: 0.5 from /home/calrama/.local/lib64/python2.7/site-packages
  requests>=2.0: 2.12.5 from /usr/lib64/python2.7/site-packages
  Pykka>=1.1: 1.2.1 from /home/calrama/.local/lib64/python2.7/site-packages
  setuptools: 33.1.1 from /usr/lib64/python2.7/site-packages
Mopidy-GMusic: 2.0.0 from /home/calrama/.local/lib64/python2.7/site-packages
  requests>=2.0: 2.12.5 from /usr/lib64/python2.7/site-packages
  cachetools>=1.0: 2.0.0 from /home/calrama/.local/lib64/python2.7/site-packages
  gmusicapi>=10.1: 10.1.1 from /home/calrama/.local/lib64/python2.7/site-packages
    validictory!=0.9.2,>=0.8.0: 1.1.0 from /home/calrama/.local/lib64/python2.7/site-packages
    decorator>=3.3.1: 4.0.11 from /home/calrama/.local/lib64/python2.7/site-packages
    mutagen>=1.34: 1.36.2 from /home/calrama/.local/lib64/python2.7/site-packages
    requests!=1.2.0,!=2.12.0,!=2.12.1,!=2.12.2,!=2.2.1,!=2.8.0,!=2.8.1,>=1.1.0: 2.12.5 from /usr/lib64/python2.7/site-packages
    python-dateutil!=2.0,>=1.3: 2.6.0 from /home/calrama/.local/lib64/python2.7/site-packages
      six>=1.5: 1.10.0 from /usr/lib64/python2.7/site-packages
    proboscis>=1.2.5.1: 1.2.6.0 from /home/calrama/.local/lib64/python2.7/site-packages
    protobuf>=3.0.0: 3.1.0 from /usr/lib64/python2.7/site-packages
      six>=1.9: 1.10.0 from /usr/lib64/python2.7/site-packages
      setuptools: 33.1.1 from /usr/lib64/python2.7/site-packages
    oauth2client>=1.1: 4.0.0 from /home/calrama/.local/lib64/python2.7/site-packages
      httplib2>=0.9.1: 0.10.3 from /home/calrama/.local/lib64/python2.7/site-packages
      rsa>=3.1.4: 3.4.2 from /home/calrama/.local/lib64/python2.7/site-packages
        pyasn1>=0.1.3: 0.1.9 from /usr/lib64/python2.7/site-packages
      pyasn1>=0.1.7: 0.1.9 from /usr/lib64/python2.7/site-packages
      pyasn1-modules>=0.0.5: 0.0.8 from /home/calrama/.local/lib64/python2.7/site-packages
        pyasn1>=0.1.8: 0.1.9 from /usr/lib64/python2.7/site-packages
      six>=1.6.1: 1.10.0 from /usr/lib64/python2.7/site-packages
    mock>=0.7.0: 2.0.0 from /home/calrama/.local/lib64/python2.7/site-packages
      funcsigs>=1; python_version < "3.3": 1.0.2 from /home/calrama/.local/lib64/python2.7/site-packages
      six>=1.9: 1.10.0 from /usr/lib64/python2.7/site-packages
      pbr>=0.11: 1.10.0 from /home/calrama/.local/lib64/python2.7/site-packages
    appdirs>=1.1.0: 1.4.0 from /home/calrama/.local/lib64/python2.7/site-packages
    gpsoauth>=0.2.0: 0.4.0 from /home/calrama/.local/lib64/python2.7/site-packages
      pycryptodomex>=3.0: 3.4.3 from /home/calrama/.local/lib64/python2.7/site-packages
      requests: 2.12.5 from /usr/lib64/python2.7/site-packages
    MechanicalSoup>=0.4.0: 0.6.0 from /home/calrama/.local/lib64/python2.7/site-packages
      requests>=2.0: 2.12.5 from /usr/lib64/python2.7/site-packages
      beautifulsoup4: 4.5.3 from /usr/lib64/python2.7/site-packages
      six>=1.4: 1.10.0 from /usr/lib64/python2.7/site-packages
    six>=1.9.0: 1.10.0 from /usr/lib64/python2.7/site-packages
    future: 0.16.0 from /home/calrama/.local/lib64/python2.7/site-packages
  Pykka>=1.1: 1.2.1 from /home/calrama/.local/lib64/python2.7/site-packages
  Mopidy>=1.0: 2.1.0 from /home/calrama/.local/lib64/python2.7/site-packages
    tornado>=3.2: 4.4.2 from /home/calrama/.local/lib64/python2.7/site-packages
      singledispatch: 3.4.0.3 from /home/calrama/.local/lib64/python2.7/site-packages
        six: 1.10.0 from /usr/lib64/python2.7/site-packages
      certifi: 2017.1.23 from /usr/lib64/python2.7/site-packages
      backports_abc>=0.4: 0.5 from /home/calrama/.local/lib64/python2.7/site-packages
    requests>=2.0: 2.12.5 from /usr/lib64/python2.7/site-packages
    Pykka>=1.1: 1.2.1 from /home/calrama/.local/lib64/python2.7/site-packages
    setuptools: 33.1.1 from /usr/lib64/python2.7/site-packages
  setuptools: 33.1.1 from /usr/lib64/python2.7/site-packages
GStreamer: 1.8.3.0 from /usr/lib64/python2.7/site-packages/gi
  Detailed information: 
    Python wrapper: python-gi 3.20.1
    Relevant elements:
      Found:
        uridecodebin
        souphttpsrc
        appsrc
        alsasink
        pulsesink
        id3demux
        id3v2mux
        lamemp3enc
        mad
        mpegaudioparse
        vorbisdec
        vorbisenc
        vorbisparse
        oggdemux
        oggmux
        oggparse
        flacdec
        flacparse
      Not found:
        osssink
        oss4sink
        flump3dec
        mpg123audiodec
        shout2send
mopidy config
[core]
cache_dir = $XDG_CACHE_DIR/mopidy
config_dir = $XDG_CONFIG_DIR/mopidy
data_dir = $XDG_DATA_DIR/mopidy
max_tracklist_length = 10000
restore_state = false

[logging]
color = true
console_format = %(levelname)-8s %(message)s
debug_format = %(levelname)-8s %(asctime)s [%(process)d:%(threadName)s] %(name)s\n  %(message)s
debug_file = mopidy.log
config_file =

[audio]
mixer = software
mixer_volume = 
output = pulsesink
buffer_time = 

[proxy]
scheme = 
hostname = 
port = 
username = 
password = 

[mpd]
enabled = true
hostname = 127.0.0.1
port = 6600
password = 
max_connections = 20
connection_timeout = 60
zeroconf = Mopidy MPD server on $hostname
command_blacklist = 
  listall
  listallinfo
default_playlist_scheme = m3u

[http]
enabled = true
hostname = 127.0.0.1
port = 6680
static_dir =
zeroconf = Mopidy HTTP server on $hostname

[stream]
enabled = true
protocols = 
  http
  https
  mms
  rtmp
  rtmps
  rtsp
metadata_blacklist = 
timeout = 5000

[m3u]
enabled = true
base_dir = ~/Music
default_encoding = latin-1
default_extension = .m3u8
playlists_dir = ~/Music/Playlists

[softwaremixer]
enabled = true

[file]
enabled = true
media_dirs = 
  $XDG_MUSIC_DIR|Music
  ~/|Home
excluded_file_extensions = 
  .jpg
  .jpeg
show_dotfiles = false
follow_symlinks = false
metadata_timeout = 1000

[local]
enabled = true
library = json
media_dir = ~/Music
scan_timeout = 1000
scan_flush_threshold = 100
scan_follow_symlinks = false
excluded_file_extensions = 
  .directory
  .html
  .jpeg
  .jpg
  .log
  .nfo
  .png
  .txt

[gmusic]
enabled = true
username = ********
password = ********
bitrate = 320
deviceid = ********
all_access = false
refresh_library = 1440
refresh_playlists = 60
radio_stations_in_browse = true
radio_stations_as_playlists = false
radio_stations_count = 
radio_tracks_count = 25
belak commented 7 years ago

I don't have enough tracks I have uploaded to test this sort of thing effectively (I almost exclusively use All Access), so any help with this would be great.

I have a feeling the browse artists just isn't returning the uploaded tracks.

dabluecaboose commented 7 years ago

Not sure if this is terribly useful, but when I toggle the sort method in the library view I get the error

MPD: "listallinfo" has been disabled in the server

belak commented 7 years ago

Ah, that's the error I was expecting. That's an issue with how ncmpcpp requests songs... it's usually not enabled by default because it's really inefficient. You can change the default view of the library and (I think) it uses a different command.

I don't remember which one works properly, but some of how ncmpcpp does things doesn't work well with mopidy.

muldvang commented 7 years ago

I have the same problem with ncmpcpp. I'm using All Access exclusively.

The problem also appears with mpc. mpc list artist only returns artists from my local extension and none of the artists from my Google Play Music library.

DelusionalLogic commented 7 years ago

From looking at the mopidy documentation it looks like you have to implement get_distinct in the LibraryProvider to handle list requests from mpd.

makrLL commented 6 years ago

I know this is an old issue but has anyone managed to figure it out?

ofwinterpassed commented 5 years ago

I would also love to get this working.

ZacJoffe commented 5 years ago

Running into this same problem, would love a fix.

Sounds like it's more a problem on ncmpcpp's side?

6ixisgood commented 4 years ago

This was bothering me so I took a look at implementing get_distinct as suggested earlier. Seems to work.

jodal commented 3 years ago

Closing because Google Play Music has been shut down, and this project is being discontinued.