苹果音乐很烂。 我们不要在这里争吵。 自Apple Music发行以来,我已经为它付费(减去强制性的免费试用),而我厌倦了糟糕的用户体验,严重缺乏更新和使用该服务的糟糕经历。 如果有人对Apple的软件质量下降提出异议,请将Apple Music放在脸上10天,他们将被转换。 我可以几天来抱怨它如何永久性破坏我的音乐收藏或它与iTunes的集成程度如何,但我将其留给另一篇文章。 现在,我正在帮助遇到类似挫败感的任何人迁移(返回)到Spotify,他们有望张开双臂接受我们。
将我的Apple Music库迁移到Spotify的现有解决方案要么不存在,要么太昂贵,要么不起作用。 我不想遍历我的大图书馆中的每个曲目,在Spotify上找到它并将其添加到我的播放列表中。 这与我所相信的一切背道而驰:如果您必须将重复的任务执行到无聊的地步,请使其自动化。 所以我做了我擅长的事情,并且敲出了几行代码。 多曲 出生于。
多曲
Polytunes是一个开源命令行工具,它将为您完成繁重的工作。 您只需配置它即可与您的音乐库对话,然后让它完成搜索曲目,将其添加到播放列表中,删除重复曲目等工作。 它使事情变得轻而易举,但确实需要一些命令行知识和一些设置。 希望在将来,我们可以提供某种用户界面,但是目前,这是在命令行上迁移音乐库的指南。
首先,让我们安装Polytunes。 您需要安装npm和Node.js v6.0.0(或更高版本)。 我们通过npm安装polytunes :
$ npm install -g polytunes
接下来,我们需要配置用于与您的音乐库进行通信的驱动程序 。
配置您的Apple Music库
Apple Music驱动程序通过从iTunes资料库导出文件中提取数据来工作。 要导出库,请打开iTunes并转到“文件”>“库”>“导出库”,然后将XML文件保存在您会记得的地方(尝试使用桌面)。

现在,请记住该XML文件的路径,稍后将需要它。
配置您的Spotify库
我假设此时您已经拥有一个Spotify帐户,并对其进行了尝试,并想知道您为什么离开了。 与Spotify交流非常棘手。 Spotify有一个很棒的Web API,我们可以使用它来处理您的音乐库,但是它使用了非常复杂的登录流程调用OAuth。 至少可以说,它对CLI应用程序并不十分友好 。 我们需要手动生成API令牌,使我们可以与Spotify的API进行对话并迁移您的库。
- 创建您的Spotify客户端。
我们需要让Spotify知道我们将与其进行通信,并且为此,我们必须在Spotify开发人员门户中创建一个应用程序 。 请注意,这将为我们提供客户ID和密码。 应用程序的细节无关紧要,只是我们会使用它。

2. 获取我们的请求箱。
一旦我们尝试通过应用程序登录,Spotify登录流程就需要在线服务器与之对话。 由于我们只是一个低级的CLI应用程序,因此我们没有那么豪华。 出于此简单导入的目的,我们可以使用一个简单的免费在线服务来为我们执行此操作,称为RequestB.in。 Request Bin为我们提供了一个随机URL,并保存了到达该URL的所有请求,供我们返回并检查。 这很有用,因为一旦我们完成登录请求,Spotify API需要一个URL来存储登录信息。
转到http://requestb.in并获取唯一的bin URL。
3. 添加我们的重定向URI。
现在,回到Spotify开发人员门户,我们在应用程序上添加唯一的请求bin URL(不带“?inspect”后缀!)作为重定向URI 。 将更改保存到您的应用程序。

4. 获取我们的OAuth代码。
现在,我们需要获取代码,以进行OAuth流程的下一步。 我们需要我们的客户ID(可以从Spotify开发人员门户上的应用程序页面获得)和请求容器URL,以将它们插入以下URL(替换“ ”和“ ”):
https://accounts.spotify.com/authorize?client_id=
&redirect_uri = &response_type = code&scope = playlist-read-private%20playlist-read-collaborative%20playlist-modify-public%20playlist-modify-private%20user-library-read%20user-library-modify%20user-read-private
将修改后的URL粘贴到浏览器中,应该会出现一个Spotify登录或授权页面。 登录到您的帐户并授权您的应用程序,您应该被重定向到我们唯一的请求容器,该请求容器仅显示一个很大的“确定”页面。 不要关闭页面! 在您的浏览器中复制URL,它应包含一个长代码,例如:
http://requestb.in/w5keyyw5?code=AQBwsoJYWFvF0n7XDNWtS1rRYjAvuqD3p-wTIyoLjYMUM0HCtwUMPpzfyhXeahsfXdDauiHDFY0gEUjbiWnd9PQV9eAXxSvgVb31u3WLVUTRNq9w0jR-hg5zE9IOO_U41gcFfdi-9mku3pl7QnxE2f0_qOcPBok-5Cu_EzFtsWeAl-tMJGfgVJreaM0otdfValZlu
这是代码正在寻找的难题的最后一部分。 现在,我们将该令牌发送到Spotify API(POST请求),我们应该具有访问权限。
5. 将代码发布到Spotify API。
快到了,诺言。 现在,我们拥有访问所需的所有数据。
- Spotify开发人员门户上应用程序页面上的客户端ID和客户端密钥 。
- 从第3步请求Bin URL。
- 步骤4中的OAuth 代码 。
我们通过cURL请求将这些令牌发送到Spotify API。 在数据中填写以下字段并执行命令。
$ curl -X POST \
-d grant_type =授权码\
-d代码=\
-d redirect_uri = \
-d client_id = \
-d client_secret =
https://accounts.spotify.com/api/token
您应该获得以下数据的成功响应:
{
“ access_token”:“ BQAoW1Xfake_JiTGoDh -... FaCbrk5TRFhEHzdvDukyQ”,
“ expires_in”:3600,
“ refresh_token”:“ AQC3aSDyORjSUxdQ -... 0bhHBw1T0fdsdf45DWZLc8U”,
“ token_type”:“承载者”
}
refresh_token是之后的版本。 它看起来应该比上面更长。 有了refresh_token,客户端密钥和id ,我们现在可以完全访问Spotify API for Polytunes。
我们可以通过两种方式配置Polytunes,但是为了方便起见,我们将使用环境路由。 创建一个名为“ .env ”的文件,并将您的令牌添加到通过上述步骤获得的文件中。 .env文件的内容:
导出SPOTIFY_CLIENT_ID =
出口SPOTIFY_CLIENT_SECRET =
出口SPOTIFY_REFRESH_TOKEN =
现在,我们要做的就是从源文件中配置Polytunes。 试试看,并使用“ library”命令测试配置:
$ source .env
$ polytunes库-d spotify播放列表
[*]获取Spotify播放列表。
-> 2015年由adriancooney创建。 (1tKQSuYWtJAgtJ4TYwH2g3)
->库由adriancooney创建。 (3in3LhDqQdR9LdYoxHI8ga)
->由adriancooney创建的房子。 (5c2V6EsYWXELjjunNTFpE5)
->由adriancooney创建的Groover。 (3svlOvf9y6dsHt3x6ijZ2q)
将您的Apple Music库导入Spotify
现在所有的辛苦工作已经结束,让Polytunes休息一下。 让我们启动导入器,使其在您的库中运行。 Polytunes会将所有播放列表从iTunes资料库复制到Spotify资料库。 对于此步骤,我们将从头开始需要您的Apple Music库导出文件的路径(用以下命令替换“ ”):
$ polytunes import --from apple --to spotify --apple-library
拿起一杯咖啡,随它去吧。 Polytunes会检查是否已经添加了歌曲,因此您可以根据需要多次运行以上命令,并且不会添加任何重复项。 如果您只想复制特定的播放列表,则可以在一个用空格分隔的列表中按名称指定它们(有关更多信息,请参见“ polytunes –help”)。 导入程序会尝试将歌曲与Spotify数据库进行匹配,有时并不总是这样(因为Spotify没有权限或不知道曲目),因此它将跳过这些曲目。
[*]收集库。
[*]从Apple库导入到Spotify库。
[*]导入Apple播放列表:“音乐”
->跟踪导入到Spotify库的The Chemical Brothers的“有时我感觉如此冷清”。
->跟踪The Weeknd导入到Spotify库中的“山丘”。
->跟踪Danny Brown导入到Spotify库中的“ Dip”。
-! 在Spotify的Apple Library播放列表中,KAYTRANADA演唱的《 Drive Me Crazy(feat。Vic Mensa)》中的曲目没有匹配结果。
做完了! 现在,您的音乐库将自动导入到Spotify。 借助此类应用程序,它可以为更自由的音乐库铺平道路,该音乐库不属于任何第三方服务,而是属于您 。 希望在将来,我们可以将该服务联机,并为所有音乐播放器添加更多驱动程序。 现在,请关闭iTunes,再也不会返回。