and3rson / clay

Awesome standalone command line player for Google Play Music.
GNU General Public License v3.0
157 stars 11 forks source link

macOS support? #28

Open jostyee opened 6 years ago

jostyee commented 6 years ago

Hi,

I tried to install clay via pipy:

$ pip install --user clay-player
Collecting clay-player
  Downloading https://files.pythonhosted.org/packages/50/52/b9300f4c27db1d8446e3031c3d5680e35a32b5faca8363fb5740e0c228fa/clay-player-1.0.2.tar.gz (220kB)
    100% |████████████████████████████████| 225kB 1.5MB/s
Collecting gmusicapi (from clay-player)
  Downloading https://files.pythonhosted.org/packages/7e/61/0197710459390dd6470e536438a111f57e811725b66e7c162c50ec5acda8/gmusicapi-11.0.1.tar.gz (170kB)
    100% |████████████████████████████████| 174kB 1.4MB/s
Collecting PyYAML (from clay-player)
  Downloading https://files.pythonhosted.org/packages/4a/85/db5a2df477072b2902b0eb892feb37d88ac635d36245a72a6a69b23b383a/PyYAML-3.12.tar.gz (253kB)
    100% |████████████████████████████████| 256kB 3.6MB/s
Collecting urwid (from clay-player)
  Downloading https://files.pythonhosted.org/packages/c7/90/415728875c230fafd13d118512bde3184d810d7bf798a631abc05fac09d0/urwid-2.0.1.tar.gz (604kB)
    100% |████████████████████████████████| 614kB 3.2MB/s
Collecting codename (from clay-player)
  Downloading https://files.pythonhosted.org/packages/c8/44/682d39480678b0d3a07c7c7c08e5c102e4807938ed9d126a77e21be00afd/codename-1.1.tar.gz
Collecting validictory!=0.9.2,>=0.8.0 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/4f/ca/80c04ee324233dacca3258153e7c71fc667fe032e0b21bae788f83fe4103/validictory-1.1.2-py2.py3-none-any.whl
Collecting decorator>=3.3.1 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/bc/bb/a24838832ba35baf52f32ab1a49b906b5f82fb7c76b2f6a7e35e140bac30/decorator-4.3.0-py2.py3-none-any.whl
Collecting mutagen>=1.34 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/2c/6a/0b2caf9364db074b616b1b8c26ce7166a883c21b0e40bd50f6db02307afe/mutagen-1.40.0.tar.gz (917kB)
    100% |████████████████████████████████| 921kB 12.8MB/s
Collecting requests!=1.2.0,!=2.12.0,!=2.12.1,!=2.12.2,!=2.18.2,!=2.2.1,!=2.8.0,!=2.8.1,>=1.1.0 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/49/df/50aa1999ab9bde74656c2919d9c0c085fd2b3775fd3eca826012bef76d8c/requests-2.18.4-py2.py3-none-any.whl (88kB)
    100% |████████████████████████████████| 92kB 519kB/s
Collecting python-dateutil!=2.0,>=1.3 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/cf/f5/af2b09c957ace60dcfac112b669c45c8c97e32f94aa8b56da4c6d1682825/python_dateutil-2.7.3-py2.py3-none-any.whl (211kB)
    100% |████████████████████████████████| 215kB 1.8MB/s
Collecting proboscis>=1.2.5.1 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/3c/c8/c187818ab8d0faecdc3c16c1e0b2e522f3b38570f0fb91dcae21662019d0/proboscis-1.2.6.0.tar.gz
Collecting protobuf>=3.0.0 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/eb/a7/042722bc48082f6b02498ebdf4e64a6d1b4543271d4f2f495641f429c56d/protobuf-3.5.2.post1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (1.2MB)
    100% |████████████████████████████████| 1.2MB 978kB/s
Collecting oauth2client>=1.1 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/82/d8/3eab58811282ac7271a081ba5c0d4b875ce786ca68ce43e2a62ade32e9a8/oauth2client-4.1.2-py2.py3-none-any.whl (99kB)
    100% |████████████████████████████████| 102kB 865kB/s
Collecting mock>=0.7.0 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/e6/35/f187bdf23be87092bd0f1200d43d23076cee4d0dec109f195173fd3ebc79/mock-2.0.0-py2.py3-none-any.whl (56kB)
    100% |████████████████████████████████| 61kB 844kB/s
Collecting appdirs>=1.1.0 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/56/eb/810e700ed1349edde4cbdc1b2a21e28cdf115f9faf263f6bbf8447c1abf3/appdirs-1.4.3-py2.py3-none-any.whl
Collecting gpsoauth>=0.2.0 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/96/a1/2b366c602ee081def4dd80624581dfa8eb23d20c5a51f8a2591c40fa8d41/gpsoauth-0.4.1.tar.gz
Collecting MechanicalSoup>=0.4.0 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/85/82/f9bfaedadc0abd8c1800cdc70fb4f35f28387a6a596fc9ae464fc4ebdcad/MechanicalSoup-0.10.0.tar.gz
Collecting six>=1.9.0 (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Collecting future (from gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/00/2b/8d082ddfed935f3608cc61140df6dcbf0edea1bc3ab52fb6c29ae3e81e85/future-0.16.0.tar.gz (824kB)
    100% |████████████████████████████████| 829kB 12.3MB/s
Collecting certifi>=2017.4.17 (from requests!=1.2.0,!=2.12.0,!=2.12.1,!=2.12.2,!=2.18.2,!=2.2.1,!=2.8.0,!=2.8.1,>=1.1.0->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/7c/e6/92ad559b7192d846975fc916b65f667c7b8c3a32bea7372340bfe9a15fa5/certifi-2018.4.16-py2.py3-none-any.whl (150kB)
    100% |████████████████████████████████| 153kB 1.4MB/s
Collecting idna<2.7,>=2.5 (from requests!=1.2.0,!=2.12.0,!=2.12.1,!=2.12.2,!=2.18.2,!=2.2.1,!=2.8.0,!=2.8.1,>=1.1.0->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/27/cc/6dd9a3869f15c2edfab863b992838277279ce92663d334df9ecf5106f5c6/idna-2.6-py2.py3-none-any.whl (56kB)
    100% |████████████████████████████████| 61kB 820kB/s
Collecting urllib3<1.23,>=1.21.1 (from requests!=1.2.0,!=2.12.0,!=2.12.1,!=2.12.2,!=2.18.2,!=2.2.1,!=2.8.0,!=2.8.1,>=1.1.0->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/63/cb/6965947c13a94236f6d4b8223e21beb4d576dc72e8130bd7880f600839b8/urllib3-1.22-py2.py3-none-any.whl (132kB)
    100% |████████████████████████████████| 133kB 920kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests!=1.2.0,!=2.12.0,!=2.12.1,!=2.12.2,!=2.18.2,!=2.2.1,!=2.8.0,!=2.8.1,>=1.1.0->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
    100% |████████████████████████████████| 143kB 3.3MB/s
Requirement already satisfied: setuptools in /usr/local/lib/python3.6/site-packages (from protobuf>=3.0.0->gmusicapi->clay-player) (39.2.0)
Collecting pyasn1-modules>=0.0.5 (from oauth2client>=1.1->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/e9/51/bcd96bf6231d4b2cc5e023c511bee86637ba375c44a6f9d1b4b7ad1ce4b9/pyasn1_modules-0.2.1-py2.py3-none-any.whl (60kB)
    100% |████████████████████████████████| 61kB 1.2MB/s
Collecting rsa>=3.1.4 (from oauth2client>=1.1->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/e1/ae/baedc9cb175552e95f3395c43055a6a5e125ae4d48a1d7a924baca83e92e/rsa-3.4.2-py2.py3-none-any.whl (46kB)
    100% |████████████████████████████████| 51kB 810kB/s
Collecting httplib2>=0.9.1 (from oauth2client>=1.1->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/fd/ce/aa4a385e3e9fd351737fd2b07edaa56e7a730448465aceda6b35086a0d9b/httplib2-0.11.3.tar.gz (215kB)
    100% |████████████████████████████████| 225kB 3.2MB/s
Collecting pyasn1>=0.1.7 (from oauth2client>=1.1->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/a0/70/2c27740f08e477499ce19eefe05dbcae6f19fdc49e9e82ce4768be0643b9/pyasn1-0.4.3-py2.py3-none-any.whl (72kB)
    100% |████████████████████████████████| 81kB 1.0MB/s
Collecting pbr>=0.11 (from mock>=0.7.0->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/2d/9d/7bfab757977067556c7ca5fe437f28e8b8843c95564fca504de79df63b25/pbr-4.0.3-py2.py3-none-any.whl (98kB)
    100% |████████████████████████████████| 102kB 1.3MB/s
Collecting pycryptodomex>=3.0 (from gpsoauth>=0.2.0->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/11/8d/05bcf8e039e989c0dd4a645a66e5fcda873718b2ff8350c7d77c3b1f2a20/pycryptodomex-3.6.1-cp36-cp36m-macosx_10_6_intel.whl (7.2MB)
    100% |████████████████████████████████| 7.2MB 1.2MB/s
Collecting beautifulsoup4 (from MechanicalSoup>=0.4.0->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/9e/d4/10f46e5cfac773e22707237bfcd51bbffeaf0a576b0a847ec7ab15bd7ace/beautifulsoup4-4.6.0-py3-none-any.whl (86kB)
    100% |████████████████████████████████| 92kB 509kB/s
Collecting lxml (from MechanicalSoup>=0.4.0->gmusicapi->clay-player)
  Downloading https://files.pythonhosted.org/packages/a4/7c/0c333ccdaa04628b4df46d36b8a700d7810ffecd1371de796e2403fe9380/lxml-4.2.1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (8.7MB)
    100% |████████████████████████████████| 8.7MB 2.7MB/s
Building wheels for collected packages: clay-player, gmusicapi, PyYAML, urwid, codename, mutagen, proboscis, gpsoauth, MechanicalSoup, future, httplib2
  Running setup.py bdist_wheel for clay-player ... done
  Stored in directory: /Users/yee/Library/Caches/pip/wheels/ff/00/83/46771d16a1479f37df8d8c0f3bf21763bc7717757884cef418
  Running setup.py bdist_wheel for gmusicapi ... done
  Stored in directory: /Users/yee/Library/Caches/pip/wheels/55/7f/d7/b52f089e6ba2338b310c69bece8fc2ef69d8fc256fe5473b9e
  Running setup.py bdist_wheel for PyYAML ... done
  Stored in directory: /Users/yee/Library/Caches/pip/wheels/03/05/65/bdc14f2c6e09e82ae3e0f13d021e1b6b2481437ea2f207df3f
  Running setup.py bdist_wheel for urwid ... done
  Stored in directory: /Users/yee/Library/Caches/pip/wheels/34/06/50/24011714e101b5ad8518c69175d117a257413e3c15a92983f0
  Running setup.py bdist_wheel for codename ... done
  Stored in directory: /Users/yee/Library/Caches/pip/wheels/e4/9a/3d/a5f9cd89a5f5d27c0de1871d8103ede68a5219347e04d6ecca
  Running setup.py bdist_wheel for mutagen ... done
  Stored in directory: /Users/yee/Library/Caches/pip/wheels/2f/1e/3a/dec0a88f9acba1652136c423069c44cb7a70a450836e8ee775
  Running setup.py bdist_wheel for proboscis ... done
  Stored in directory: /Users/yee/Library/Caches/pip/wheels/8c/c9/82/8aa441245194f414659baab25a4f6b3b0d604822c0aff8fb7c
  Running setup.py bdist_wheel for gpsoauth ... done
  Stored in directory: /Users/yee/Library/Caches/pip/wheels/a2/14/fc/0754368beb9f2fc1515b7974c23261eac42bd305ff94c6ea4e
  Running setup.py bdist_wheel for MechanicalSoup ... done
  Stored in directory: /Users/yee/Library/Caches/pip/wheels/c1/a9/bf/39517dddf45f347a7ec6ab44c72c9d18cf2b15cdb365380a35
  Running setup.py bdist_wheel for future ... done
  Stored in directory: /Users/yee/Library/Caches/pip/wheels/bf/c9/a3/c538d90ef17cf7823fa51fc701a7a7a910a80f6a405bf15b1a
  Running setup.py bdist_wheel for httplib2 ... done
  Stored in directory: /Users/yee/Library/Caches/pip/wheels/1b/9c/9e/1f6fdb21dbb1fe6a99101d697f12cb8c1fa96c1587df69adba
Successfully built clay-player gmusicapi PyYAML urwid codename mutagen proboscis gpsoauth MechanicalSoup future httplib2
Installing collected packages: validictory, decorator, mutagen, certifi, idna, urllib3, chardet, requests, six, python-dateutil, proboscis, protobuf, pyasn1, pyasn1-modules, rsa, httplib2, oauth2client, pbr, mock, appdirs, pycryptodomex, gpsoauth, beautifulsoup4, lxml, MechanicalSoup, future, gmusicapi, PyYAML, urwid, codename, clay-player
Successfully installed MechanicalSoup-0.10.0 PyYAML-3.12 appdirs-1.4.3 beautifulsoup4-4.6.0 certifi-2018.4.16 chardet-3.0.4 clay-player-1.0.2 codename-1.1 decorator-4.3.0 future-0.16.0 gmusicapi-11.0.1 gpsoauth-0.4.1 httplib2-0.11.3 idna-2.6 lxml-4.2.1 mock-2.0.0 mutagen-1.40.0 oauth2client-4.1.2 pbr-4.0.3 proboscis-1.2.6.0 protobuf-3.5.2.post1 pyasn1-0.4.3 pyasn1-modules-0.2.1 pycryptodomex-3.6.1 python-dateutil-2.7.3 requests-2.18.4 rsa-3.4.2 six-1.11.0 urllib3-1.22 urwid-2.0.1 validictory-1.1.2

but can't start it:

$ clay
Traceback (most recent call last):
  File "/Users/yee/Library/Python/3.6/bin/clay", line 7, in <module>
    from clay.app import main
  File "/Users/yee/Library/Python/3.6/lib/python/site-packages/clay/app.py", line 16, in <module>
    from clay.player import player
  File "/Users/yee/Library/Python/3.6/lib/python/site-packages/clay/player.py", line 16, in <module>
    from clay import vlc, meta
  File "/Users/yee/Library/Python/3.6/lib/python/site-packages/clay/vlc.py", line 199, in <module>
    dll, plugin_path  = find_lib()
  File "/Users/yee/Library/Python/3.6/lib/python/site-packages/clay/vlc.py", line 191, in find_lib
    dll = ctypes.CDLL('libvlc.dylib')
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ctypes/__init__.py", line 348, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(libvlc.dylib, 6): image not found

how can I resolve this problem? there was a (maybe) related issue: https://github.com/oaubert/python-vlc/issues/37

ValentijnvdBeek commented 6 years ago

I think that it is the bug in the VLC bindings generator that you found above which was only fixed after we generated our copy.

I'll update our bindings in the ratings branch but I would need you to check whether that fixes the issue since I don't own any OS X machines.

jostyee commented 6 years ago

https://github.com/and3rson/clay/commit/67d9f97897eb3ee1c40c7cb54814e18e0a4f1658 doens't work...

$ git checkout ratings
Branch 'ratings' set up to track remote branch 'ratings' from 'origin'.
Switched to a new branch 'ratings'
(clay)

$ virtualenv --system-site-packages --prompt="(clay) " .env
Using base prefix '/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/yee/dev/repo/clay/.env/bin/python3.6
Not overwriting existing python script /Users/yee/dev/repo/clay/.env/bin/python (you must use /Users/yee/dev/repo/clay/.env/bin/python3.6)
Installing setuptools, pip, wheel...done.
(clay)

$ source .env/bin/activate
(clay)

$ pip install -r requirements.txt
Requirement already satisfied: gmusicapi==10.1.2 in ./.env/lib/python3.6/site-packages (from -r requirements.txt (line 1)) (10.1.2)
Requirement already satisfied: PyYAML==3.12 in ./.env/lib/python3.6/site-packages (from -r requirements.txt (line 2)) (3.12)
Requirement already satisfied: urwid==2.0.0 in ./.env/lib/python3.6/site-packages (from -r requirements.txt (line 3)) (2.0.0)
Requirement already satisfied: codename==1.1 in ./.env/lib/python3.6/site-packages (from -r requirements.txt (line 4)) (1.1)
Requirement already satisfied: 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 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (2.18.4)
Requirement already satisfied: oauth2client>=1.1 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (4.1.2)
Requirement already satisfied: future in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (0.16.0)
Requirement already satisfied: gpsoauth>=0.2.0 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (0.4.1)
Requirement already satisfied: validictory!=0.9.2,>=0.8.0 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (1.1.2)
Requirement already satisfied: MechanicalSoup>=0.4.0 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (0.10.0)
Requirement already satisfied: six>=1.9.0 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (1.11.0)
Requirement already satisfied: python-dateutil!=2.0,>=1.3 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (2.7.3)
Requirement already satisfied: proboscis>=1.2.5.1 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (1.2.6.0)
Requirement already satisfied: protobuf>=3.0.0 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (3.5.2.post1)
Requirement already satisfied: mutagen>=1.34 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (1.40.0)
Requirement already satisfied: decorator>=3.3.1 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (4.3.0)
Requirement already satisfied: mock>=0.7.0 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (2.0.0)
Requirement already satisfied: appdirs>=1.1.0 in ./.env/lib/python3.6/site-packages (from gmusicapi==10.1.2->-r requirements.txt (line 1)) (1.4.3)
Requirement already satisfied: urllib3<1.23,>=1.21.1 in ./.env/lib/python3.6/site-packages (from 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->gmusicapi==10.1.2->-r requirements.txt (line 1)) (1.22)
Requirement already satisfied: certifi>=2017.4.17 in ./.env/lib/python3.6/site-packages (from 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->gmusicapi==10.1.2->-r requirements.txt (line 1)) (2018.4.16)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in ./.env/lib/python3.6/site-packages (from 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->gmusicapi==10.1.2->-r requirements.txt (line 1)) (3.0.4)
Requirement already satisfied: idna<2.7,>=2.5 in ./.env/lib/python3.6/site-packages (from 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->gmusicapi==10.1.2->-r requirements.txt (line 1)) (2.6)
Requirement already satisfied: rsa>=3.1.4 in ./.env/lib/python3.6/site-packages (from oauth2client>=1.1->gmusicapi==10.1.2->-r requirements.txt (line 1)) (3.4.2)
Requirement already satisfied: pyasn1-modules>=0.0.5 in ./.env/lib/python3.6/site-packages (from oauth2client>=1.1->gmusicapi==10.1.2->-r requirements.txt (line 1)) (0.2.1)
Requirement already satisfied: httplib2>=0.9.1 in ./.env/lib/python3.6/site-packages (from oauth2client>=1.1->gmusicapi==10.1.2->-r requirements.txt (line 1)) (0.11.3)
Requirement already satisfied: pyasn1>=0.1.7 in ./.env/lib/python3.6/site-packages (from oauth2client>=1.1->gmusicapi==10.1.2->-r requirements.txt (line 1)) (0.4.3)
Requirement already satisfied: pycryptodomex>=3.0 in ./.env/lib/python3.6/site-packages (from gpsoauth>=0.2.0->gmusicapi==10.1.2->-r requirements.txt (line 1)) (3.6.1)
Requirement already satisfied: lxml in ./.env/lib/python3.6/site-packages (from MechanicalSoup>=0.4.0->gmusicapi==10.1.2->-r requirements.txt (line 1)) (4.2.1)
Requirement already satisfied: beautifulsoup4 in ./.env/lib/python3.6/site-packages (from MechanicalSoup>=0.4.0->gmusicapi==10.1.2->-r requirements.txt (line 1)) (4.6.0)
Requirement already satisfied: setuptools in ./.env/lib/python3.6/site-packages (from protobuf>=3.0.0->gmusicapi==10.1.2->-r requirements.txt (line 1)) (39.2.0)
Requirement already satisfied: pbr>=0.11 in ./.env/lib/python3.6/site-packages (from mock>=0.7.0->gmusicapi==10.1.2->-r requirements.txt (line 1)) (4.0.3)
neovim 0.2.6 requires greenlet, which is not installed.
neovim 0.2.6 requires msgpack>=0.5.0, which is not installed.
(clay)

$ ./clay/app.py
Traceback (most recent call last):
  File "./clay/app.py", line 16, in <module>
    from clay.player import player
  File "./clay/player.py", line 16, in <module>
    from clay import vlc, meta
  File "./clay/vlc.py", line 203, in <module>
    dll, plugin_path  = find_lib()
  File "./clay/vlc.py", line 194, in find_lib
    ctypes.CDLL('libvlccore.dylib')
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ctypes/__init__.py", line 348, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(libvlccore.dylib, 6): image not found
(clay)
luistoledo commented 6 years ago

I have the same issue. This are my tests and hypotesis. I may helps somebody

First, checks the dylib defined on vlc.py (/clay/vlc.py#L179)

$ otool -L /Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib /Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib: @rpath/libvlc.dylib (compatibility version 12.0.0, current version 12.0.0) @rpath/libvlccore.dylib (compatibility version 10.0.0, current version 10.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4) /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)

From python console I try the following:

import ctypes d=ctypes.CDLL('/Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib') Traceback (most recent call last): File "", line 1, in File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ctypes/init.py", line 348, in init self._handle = _dlopen(self._name, mode) OSError: dlopen(/Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib, 6): Library not loaded: @rpath/libvlccore.dylib Referenced from: /Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib Reason: image not found

My guess is that ctypes does not follows @rpath on .dylib osx's symbolic links. (I've made some experiments with install_name_tool but only broke dylib 😔)

itsthejoker commented 5 years ago

I'm experiencing the same thing. I'll try to take a look, but no guarantees.

victorfontes commented 5 years ago

The fix that worked for me was: https://github.com/oaubert/python-vlc/issues/37#issuecomment-363491486

But now I get "illegal hardware instruction" (Im building from source)

ValentijnvdBeek commented 5 years ago

@victorfontes

Thanks for that tip, I'll look into it.

I am guessing the bug is still on the part of VLC or another of our dependencies? Clay is pure Python so I don't think that there is much room for us to have illegal hardware instructions so it must be something written in CPython.

Also, complete aside but I noticed it after posting, but I am the only who gets profoundly uncomfortable with getting the label collaborator besides their name?