codezjx / netease-cloud-music-dl

Netease cloud music song downloader, with full ID3 metadata, eg: front cover image, artist name, album name, song title and so on.
MIT License
501 stars 82 forks source link

TypeError: Only byte strings can be passed to C code #6

Open mac-naxin opened 7 years ago

mac-naxin commented 7 years ago

跑一下程序,遇到这样的问题,环境win7 python 3.6 PS D:\netease-cloud-music-dl> ncm -s 27256783 Traceback (most recent call last): File "C:\ProgramData\Anaconda3\Scripts\ncm-script.py", line 11, in load_entry_point('netease-cloud-music-dl==0.2.0', 'console_scripts', 'ncm')() File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\start.py", line 66, in mai n File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\downloader.py", line 15, i n download_song_by_id File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\downloader.py", line 47, i n download_song_by_song File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\api.py", line 72, in get_s ong_url File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_musicdl-0.2.0-py3.6.egg\ncm\api.py", line 33, in post request File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\encrypt.py", line 15, in e ncrypted_request File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\encrypt.py", line 24, in a es_encrypt File "c:\programdata\anaconda3\lib\site-packages\Crypto\Cipher\AES.py", line 264, in new return _create_cipher(sys.modules[name], key, mode, args, kwargs) File "c:\programdata\anaconda3\lib\site-packages\Crypto\Cipher__init__.py", line 130, in _create_cipher return modes[mode](factory, kwargs) File "c:\programdata\anaconda3\lib\site-packages\Crypto\Cipher_mode_cbc.py", line 232, in _create_cbc_cipher cipher_state = factory._create_base_cipher(kwargs) File "c:\programdata\anaconda3\lib\site-packages\Crypto\Cipher\AES.py", line 131, in _create_base_cipher expect_byte_string(key) File "c:\programdata\anaconda3\lib\site-packages\Crypto\Util_raw_api.py", line 175, in expect_byte_string raise TypeError("Only byte strings can be passed to C code") TypeError: Only byte strings can be passed to C code PS D:\wy\netease-cloud-music-dl> ncm -s http://music.163.com/song?id=27256783 Traceback (most recent call last): File "C:\ProgramData\Anaconda3\Scripts\ncm-script.py", line 11, in load_entry_point('netease-cloud-music-dl==0.2.0', 'console_scripts', 'ncm')() File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\start.py", line 66, in mai n File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\downloader.py", line 15, i n download_song_by_id File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\downloader.py", line 47, i n download_song_by_song File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\api.py", line 72, in get_s ong_url File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_musicdl-0.2.0-py3.6.egg\ncm\api.py", line 33, in post request File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\encrypt.py", line 15, in e ncrypted_request File "c:\programdata\anaconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\encrypt.py", line 24, in a es_encrypt File "c:\programdata\anaconda3\lib\site-packages\Crypto\Cipher\AES.py", line 264, in new return _create_cipher(sys.modules[name], key, mode, args, kwargs) File "c:\programdata\anaconda3\lib\site-packages\Crypto\Cipher__init__.py", line 130, in _create_cipher return modes[mode](factory, kwargs) File "c:\programdata\anaconda3\lib\site-packages\Crypto\Cipher_mode_cbc.py", line 232, in _create_cbc_cipher cipher_state = factory._create_base_cipher(kwargs) File "c:\programdata\anaconda3\lib\site-packages\Crypto\Cipher\AES.py", line 131, in _create_base_cipher expect_byte_string(key) File "c:\programdata\anaconda3\lib\site-packages\Crypto\Util_raw_api.py", line 175, in expect_byte_string raise TypeError("Only byte strings can be passed to C code") TypeError: Only byte strings can be passed to C code

codezjx commented 7 years ago

@mac-naxin Hi,大概查了一下这个问题,你本地是使用pycryptodome这个库代替了pycrypto么?在pycryptodome项目也有人报了这个问题,还是open的,估计是没兼容好pycryptohttps://github.com/Legrandin/pycryptodome/issues/35

建议先卸载pycryptodome然后重新安装指定版本的pycrypto即可