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
499 stars 81 forks source link

Windows下某些符号导致保存时报错 #7

Closed demostars closed 7 years ago

demostars commented 7 years ago

如歌曲ID 454069168

·17 song name:ты любил её ?!
Traceback (most recent call last):
  File "C:\Users\Administrator\Miniconda3\Scripts\ncm-script.py", line 11, in <module>
    load_entry_point('netease-cloud-music-dl==0.2.0', 'console_scripts', 'ncm')()
  File "C:\Users\Administrator\Miniconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\start.py", line 75, in main
  File "C:\Users\Administrator\Miniconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\start.py", line 41, in download_playlist_songs
  File "C:\Users\Administrator\Miniconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\downloader.py", line 51, in download_song_by_song
  File "C:\Users\Administrator\Miniconda3\lib\site-packages\netease_cloud_music_dl-0.2.0-py3.6.egg\ncm\downloader.py", line 85, in download_file
OSError: [Errno 22] Invalid argument: 'C:\\Users\\Administrator\\.ncm\\download\\dalebotbeats - ты любил её ?!.mp3'

可否跳过处理,最后反馈?

感谢~

demostars commented 7 years ago

补充下,发现原因不是语言,是符号。。文件名似乎不能有 ? ...

demostars commented 7 years ago

歌单最多下载1000首限制是网易接口限制么?

codezjx commented 7 years ago

@demostars 对的,在Windows下\/:*?"<>|都是非法字符,统一用正则处理,都替换为空格了。在Mac上是允许这种字符的,之前一直没留意。拉下代码重装一次再测试下,谢啦。

codezjx commented 7 years ago

@demostars 歌单列表用的是这个api: http://music.163.com/api/playlist/detail?id=playlistId 直接替换最后面的歌单id,然后在浏览器直接get一下看看是否只返回的1000首?我是遍历里面的歌来下载的。

还有,居然有>1000首歌的歌单?兄弟你这是搞事情啊~_~

demostars commented 7 years ago

@codezjx 将近5k首...

chenyue404 commented 7 years ago

超过了可以手动分割成多个歌单……