Skip to content

网易云音乐歌单迁移至Spotify & OAuth 2.0 requests base class

License

Notifications You must be signed in to change notification settings

muyangye/Netease_To_Spotify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

网易云音乐歌单迁移至Spotify

3首歌/秒(Spotify API最近变慢了),保留原歌单顺序,支持任意歌单长度,全过程不产生费用

运行

  1. 命令行输入pip install -r requirements.txt
  2. 创建Spotify app(如没有)
  3. 替换config.yml里的所有值,说明如下:
    • client_id: Spotify app的Client ID
    • client_id: Spotify app的Client secret
    • redirect_uri: Spotify app的Redirect URIs中任意一个
    • spotify_playlist_name: 迁移过后在Spotify里的歌单名,如填已存在的歌单则把所有歌曲插入到歌单最前,否则先创建歌单再迁移
    • cover_image_path: 新歌单封面图路径(图像大小必须小于256 KB),如歌单已存在则不适用,默认值为repo里的"assets/netease.png"
    • netease_playlist_id: 想要迁移的网易云音乐歌单id,可通过网易云音乐Web端歌单链接拿到,比如链接为https://music.163.com/playlist?id=123456789&userid=xxxxxxxx,歌单id就是123456789
  4. 命令行输入python cli.py
  5. 浏览器弹窗提示登录Spotify
  6. 等待运行即可,命令行会显示进度,Spotify无版权的歌曲也会在命令行提示(详见下方)

"无版权"歌曲

由于之前版本经常会出现False Positive(如名字完全不同的歌被加到Spotify里),现加入year search query filter缩小搜索范围(大幅减少,不代表完全没有False Positive了),但由于网易云音乐歌曲的收录时间可能和Spotify不同,会有很多False Negative(Spotify明明有这首歌,但是程序说没有),个人歌单大概每30首1首无版权,个人认为False Negative比False Positive好处理,因为后者不易察觉,前者只需手动再加一次就好了,以下两种类型的歌曲最容易触发“无版权”:

  • 年代久远的歌,Spotify显示原发行日期而网易云音乐显示开始有版权的日期,如
    • My Love, Westlife
    • Rage Your Dream, m.o.v.e
  • 歌名在网易云音乐和Spotify不一样的歌,如
    • Best of 2012, Anthem Lights

其余无版权歌曲大概率是Spotify真没版权
为避免unicode exception,非英文的无版权歌曲会用字母提示Chuan Qi, Wang Fei

OAuth 2.0 Client

虽然用的是Spotipy库,但之前写过一个适用于所有OAuth 2.0 app获取access token的基类,只需替换OAuth2Client.py中的AUTHORIZATION_ENDPOINTACCESS_TOKEN_ENDPOINT即可,详见这篇博客 (不过抱歉是全英文的,因为本人是留学生在美国找工作所以就写了英文博客2333)

鸣谢

  • pyncm: 感谢老哥的网易云音乐API,真不理解为啥网易云音乐只开放API给合作方
  • spotipy: 本来研究了挺久OAuth 2.0写好所有raw requests的基类了,然后发现了这个。。。
  • 这个issue

About

网易云音乐歌单迁移至Spotify & OAuth 2.0 requests base class

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages