quantenschaum writes

I am on Ubuntu 14.04.5 LTS amd64 with Upmpdcli 1.2.9 libupnpp 0.15.1 (compiled from sources) and updated gmusicapi, Python 2.7.6

sudo pip install gmusicapi -U
Requirement already up-to-date: gmusicapi in /usr/local/lib/python2.7/dist-packages
Requirement already up-to-date: validictory!=0.9.2, >=0.8.0 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: decorator >=3.3.1 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: mutagen >=1.18 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: requests!=1.2.0,!=2.2.1,!=2.8.0,!=2.8.1, >=1.1.0 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: python-dateutil!=2.0, >=1.3 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: proboscis >=1.2.5.1 in ./.local/lib/python2.7/site-packages (from gmusicapi)
Requirement already up-to-date: oauth2client >=1.1 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: mock >=0.7.0 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: appdirs >=1.1.0 in ./.local/lib/python2.7/site-packages (from gmusicapi)
Requirement already up-to-date: gpsoauth >=0.2.0 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: MechanicalSoup >=0.4.0 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: pyopenssl in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: ndg-httpsclient in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: pyasn1 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: six >=1.9.0 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: future in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: protobuf<=3.0.0b2, >=2.6.1 in /usr/local/lib/python2.7/dist-packages (from gmusicapi)
Requirement already up-to-date: httplib2 >=0.9.1 in /usr/local/lib/python2.7/dist-packages (from oauth2client >=1.1- >gmusicapi)
Requirement already up-to-date: rsa >=3.1.4 in /usr/local/lib/python2.7/dist-packages (from oauth2client >=1.1- >gmusicapi)
Requirement already up-to-date: pyasn1-modules >=0.0.5 in /usr/local/lib/python2.7/dist-packages (from oauth2client >=1.1- >gmusicapi)
Requirement already up-to-date: funcsigs >=1; python_version < "3.3" in /usr/local/lib/python2.7/dist-packages (from mock >=0.7.0- >gmusicapi)
Requirement already up-to-date: pbr >=0.11 in /usr/local/lib/python2.7/dist-packages (from mock >=0.7.0- >gmusicapi)
Requirement already up-to-date: pycryptodomex >=3.0 in /usr/local/lib/python2.7/dist-packages (from gpsoauth >=0.2.0- >gmusicapi)
Requirement already up-to-date: beautifulsoup4 in /usr/local/lib/python2.7/dist-packages (from MechanicalSoup >=0.4.0- >gmusicapi)
Requirement already up-to-date: cryptography >=1.3.4 in /usr/local/lib/python2.7/dist-packages (from pyopenssl- >gmusicapi)
Requirement already up-to-date: setuptools in /usr/local/lib/python2.7/dist-packages (from protobuf<=3.0.0b2, >=2.6.1- >gmusicapi)
Requirement already up-to-date: idna >=2.0 in /usr/local/lib/python2.7/dist-packages (from cryptography >=1.3.4- >pyopenssl- >gmusicapi)
Requirement already up-to-date: enum34 in /usr/local/lib/python2.7/dist-packages (from cryptography >=1.3.4- >pyopenssl- >gmusicapi)
Requirement already up-to-date: ipaddress in /usr/local/lib/python2.7/dist-packages (from cryptography >=1.3.4- >pyopenssl- >gmusicapi)
Requirement already up-to-date: cffi >=1.4.1 in /usr/local/lib/python2.7/dist-packages (from cryptography >=1.3.4- >pyopenssl- >gmusicapi)
Requirement already up-to-date: pycparser in /usr/local/lib/python2.7/dist-packages (from cffi >=1.4.1- >cryptography >=1.3.4- >pyopenssl- >gmusicapi)

gmusic in configured in upmpdcli and I can access the media server, browse into gmusic, but when I reach a folder containing actual tracks I get an error

:2:src/httpfs.cxx:290::Failed reading /usr/local/share/upmpdcli/icon.png : open/stat: errno: 2 :
:2:src/httpfs.cxx:290::Failed reading /usr/local/share/upmpdcli/icon.png : open/stat: errno: 2 :
CMDTALK: gmusic-app.py: Gmusic running
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$'}]
/usr/local/lib/python2.7/dist-packages/Cryptodome/Math/_Numbers_gmp.py:230: UserWarning: implicit cast to 'char *' from a different pointer type: will be forbidden in the future (check that the types are as you expect; use an explicit ffi.cast() if they are correct)
  _gmp.gmp_snprintf(buf, c_size_t(buf_len), b("%Zd"), self._mpz_p)
Dispatching to 'root', args: {}
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/root_situations'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/root_situations'}]
Dispatching to 'root_situations', args: {}
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/situation/Naeqeny7hrktur63amdhcqomxp4'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/situation/Naeqeny7hrktur63amdhcqomxp4'}]
Dispatching to 'situation_view', args: {'situation_id': 'Naeqeny7hrktur63amdhcqomxp4'}
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/situation/Nuct2a6ks5wy6t6ilimr2vznyya'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/situation/Nuct2a6ks5wy6t6ilimr2vznyya'}]
Dispatching to 'situation_view', args: {'situation_id': 'Nuct2a6ks5wy6t6ilimr2vznyya'}
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/dynstation/Lrhfimezsrzullagdt4ekhlfh24'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/dynstation/Lrhfimezsrzullagdt4ekhlfh24'}]
Dispatching to 'dynstation_view', args: {'radio_id': 'Lrhfimezsrzullagdt4ekhlfh24'}
create_curated: sid c803a3e7-2e7c-3c78-8afe-571782f997be
terminate called after throwing an instance of 'std::runtime_error'
  what():  Type is not convertible to string

quantenschaum writes

:4:src/mpdcli.cxx:128::MPDCLi::openconn: mpd protocol version: 0.19.16
:4:libupnpp/upnpplib.cxx:155::LibUPnP: Using IP 192.168.222.10 port 49265
:5:src/httpfs.cxx:246::read_protocolinfo data: [http-get:*:audio/dsf:*,http-get:*:audio/x-dsf:*,http-get:*:audio/dsd:*,http-get:*:audio/x-dsd:*,http-get:*:audio/dff:*,http-get:*:audio/x-dff:*,http-get:*:audio/wav:*,http-get:*:audio/wave:*,http-get:*:audio/x-wav:*,http-get:*:audio/x-aiff:*,http-get:*:audio/mpeg:*,http-get:*:audio/x-mpeg:*,http-get:*:audio/mp1:*,http-get:*:audio/aac:*,http-get:*:application/flac:*,http-get:*:audio/flac:*,http-get:*:audio/x-flac:*,http-get:*:audio/m4a:*,http-get:*:audio/mp4:*,http-get:*:audio/x-m4a:*,http-get:*:audio/vorbis:*,http-get:*:audio/x-vorbis:*,http-get:*:audio/x-vorbis+ogg:*,http-get:*:audio/ogg:*,http-get:*:audio/x-ogg:*,http-get:*:audio/x-scpls:*,http-get:*:video/mp4:*]
:4:src/httpfs.cxx:292::Failed reading /usr/share/upmpdcli/icon.png : open/stat: errno: 2 :
:4:libupnpp/device/device.cxx:423::UpnpDevice::addService: [urn:upnp-org:serviceId:ContentDirectory]
:4:libupnpp/device/device.cxx:423::UpnpDevice::addService: [urn:upnp-org:serviceId:ConnectionManager]
:4:src/main.cxx:702::Entering event loop
:4:src/main.cxx:706::Media server event loop
:4:libupnpp/device/device.cxx:318::UPNP_CONTROL_ACTION_REQUEST: Browse. Params: <?xml version="1.0"? >
<u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1" >
<ObjectID >0</ObjectID >
<BrowseFlag >BrowseDirectChildren</BrowseFlag >
<Filter >*</Filter >
<StartingIndex >0</StartingIndex >
<RequestedCount >16</RequestedCount >
<SortCriteria ></SortCriteria >
</u:Browse >

:4:src/mediaserver/contentdirectory.cxx:288::ContentDirectory::actBrowse:  ObjectID 0 BrowseFlag BrowseDirectChildren Filter * StartingIndex 0 RequestedCount 16 SortCriteria
:4:libupnpp/device/device.cxx:318::UPNP_CONTROL_ACTION_REQUEST: GetProtocolInfo. Params: <?xml version="1.0"? >
<u:GetProtocolInfo xmlns:u="urn:schemas-upnp-org:service:ConnectionManager:1" ></u:GetProtocolInfo >

:4:src/conman.cxx:95::UpMpdConMan::getProtocolInfo
:4:libupnpp/device/device.cxx:318::UPNP_CONTROL_ACTION_REQUEST: Browse. Params: <?xml version="1.0"? >
<u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1" >
<ObjectID >0$gmusic$</ObjectID >
<BrowseFlag >BrowseDirectChildren</BrowseFlag >
<Filter >*</Filter >
<StartingIndex >0</StartingIndex >
<RequestedCount >16</RequestedCount >
<SortCriteria ></SortCriteria >
</u:Browse >

:4:src/mediaserver/contentdirectory.cxx:288::ContentDirectory::actBrowse:  ObjectID 0$gmusic$ BrowseFlag BrowseDirectChildren Filter * StartingIndex 0 RequestedCount 16 SortCriteria
:4:src/mediaserver/contentdirectory.cxx:55::ContentDirectory::pluginFactory: for gmusic
:4:src/mediaserver/contentdirectory.cxx:69::ContentDirectory: host 192.168.222.10 port 49265
:4:src/mediaserver/cdplugins/plgwithslave.cxx:199::PlgWithSlave: starting httpd on port 49149
:4:src/mediaserver/cdplugins/cmdtalk-fixed.cpp:62::CmdTalk::startCmd
:4:src/execmd-fixed.cpp:454::ExecCmd::startExec: (1|1) /usr/share/upmpdcli/cdplugins/gmusic/gmusic-app.py
CMDTALK: gmusic-app.py: Gmusic running
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$'}]
CMDTALK: gmusic-app.py: processmessage: processor raised: [cannot concatenate 'str' and 'NoneType' objects]
:2:src/mediaserver/cdplugins/cmdtalk-fixed.cpp:117::CmdTalk: bad line in filter output: [warning: could not import appdirs; will use current directory
]
:4:src/execmd-fixed.cpp:274::ExecCmd: killpg(13136, SIGTERM)
:2:src/mediaserver/cdplugins/plgwithslave.cxx:375::PlgWithSlave::browse: slave failure

quantenschaum writes

I entered the 4 gmusic\* setting again abnd then got

CMDTALK: gmusic-app.py: Gmusic running
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$'}]
/usr/local/lib/python2.7/dist-packages/Cryptodome/Math/_Numbers_gmp.py:230: UserWarning: implicit cast to 'char *' from a different pointer type: will be forbidden in the future (check that the types are as you expect; use an explicit ffi.cast() if they are correct)
  _gmp.gmp_snprintf(buf, c_size_t(buf_len), b("%Zd"), self._mpz_p)
Dispatching to 'root', args: {}
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/my_music'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/my_music'}]
Dispatching to 'my_music', args: {}
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/user_albums'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/user_albums'}]
Dispatching to 'user_albums', args: {}
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/user_albums'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/user_albums'}]
Dispatching to 'user_albums', args: {}
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/user_albums'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/user_albums'}]
Dispatching to 'user_albums', args: {}
CMDTALK: gmusic-app.py: pCmdTalkProcessor.process: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/album/Bkhllbidrvfl6aeh6o6eksjudue'}]
CMDTALK: gmusic-app.py: browse: [{u'cmdtalk:proc': 'browse', u'flag': 'children', u'objid': '0$gmusic$/album/Bkhllbidrvfl6aeh6o6eksjudue'}]
Dispatching to 'album_view', args: {'album_id': 'Bkhllbidrvfl6aeh6o6eksjudue'}
terminate called after throwing an instance of 'std::runtime_error'
  what():  Type is not convertible to string
Aborted (core dumped)

quantenschaum writes

On another machine running Xenial and Python 2.7.12 it is working correctly.

quantenschaum writes

On A raspberry pi with minibian jessie and Python 2.7.9, compiled form source with gmusicapi 10.0.1 it is working, too.

quantenschaum writes

I tried installing it from the above PPA in a docker container based on xenial. It works. Maybe a Python issue.

medoc92 writes

I get the same errors on trusty. I guess that the reason may be this warning from pip when I installed:

Running setup.py (path:/tmp/pip_build_root/gmusicapi/setup.py) egg_info for package gmusicapi
    /tmp/pip_build_root/gmusicapi/setup.py:17: RuntimeWarning: gmusicapi does not officially support versions below Python 2.7.9
      "Python 2.7.9", RuntimeWarning)

Maybe there is something else to this, but for now I’ll just add a warning to the download page that python 2.7.9 or better is needed.

medoc92 writes

And many thanks for taking the time to investigate and report this issue !