比如你有一大波歌曲列表, 比如是iTunes里面的歌单或者是Spotify里面的歌单, 然后你想把他们都收藏在虾米里面, 怎么办?

让我们一起, 走进虾米®.

首先你要想办法弄出这样一个格式的歌单: 歌名 空格 歌手比如放在excel里面:

然后新建一张精选集, 新建了以后, 在一个很不起眼的地方, 点击”添加歌曲”

吐槽下UX啊, 对于一个新建的歌单, 添加歌曲几乎是最重要的一步吧, 为什么不做的突出一点呢?

然后选导入列表

把你刚才弄好的列表复制进去, 点击导入列表. 然后你会发现虾米已经自动匹配了所有的歌曲. 

但是奇葩的是, 下一步怎么添加呢?  点击歌曲的名字是跳转到了歌曲的页面, 总不可能一个一个点开, 跳转, 再添加吧?

其实, 你鼠标在这个界面上晃一晃, 就会发现: 这个列表里面其实是有”试听”和”添加”两个按钮的, 只是他们并没有显示出来.

隐藏了各个按钮的导入界面

为什么没有显示出来呢? 查看源码, 是因为这些button使用的背景图片已经不在了

不在无所谓, 就算在的话, 我们也不可能一个一个点击添加吧. 我自己准备的歌单有200首, 难道要我点200次? 这个方案显然不能scale嘛.

程序员的特点就是懒. 既然不想手点, 那就靠电脑点吧. 打开console, 执行以下语句:

$("#importContainer.song_list a.add").click()

然后, 如果运气好的话, 你会发现所有的歌已经被添加了.  但是我发现, 有的歌就是死活添加不了, 甚至你手动到歌曲页面去添加也不行, 比如这首”broken strings”

就是辣么任性. 

好吧. 我们换个思路. 不能添加, 但是我们可以试听啊. 试听的意思, 就是这些歌曲会被添加到那个播放的页面, 然后你会发现在播放的页面, 其实是提供批量操作的:

好了, 那么问题就转换为“如何把所有歌曲添加到试听列表”.

答案也在那个隐藏了各个按钮的导入界面之中. 我们在console里执行这个语句:

$("#importContainer.song_list a.play").click()

稍等一会, 你会发现歌曲都被添加到播放的页面里面去了. 这里有两点注意:

  1. 播放器的页面最好提前打开, 不然有的浏览器会默认不自动弹出那个播放页面
  2. 一次不要弄太多歌, 估计虾米应该是做了一些限制. 我在短时间内”试听”了100首歌左右, 发现任何歌曲都不能试听了. 怎么办呢? 换个浏览器就可以了. 当然, 虾米的这个试听限制也是有时限的, 过一段时间就解封了.

然后你就知道怎么办了吧, 添加到精选集或者是收藏就随便你了. 

####后记 国内音质不错的云音乐, 在美国还能用的, 基本上就是网易云音乐和虾米了.

网易云音乐算是后起之秀.  因为虾米的歌单的封闭, 网易云音乐竟然在某一版app中还提供了导入虾米音乐的功能 (后来可能是由于版权问题去掉了). 可是问题是, 虾米是没有开放API的 (较真的是, 算开放了一点点), 那么网易云音乐是怎么导入你的音乐的呢? 它的方法是要求你输入虾米的账号和密码, 那么显然是通过后台利用你的信息登录去抓取的. 

方便是方便, 但是大家不觉得不安全吗? 有了你的用户名和密码, 网易是想干嘛就干嘛啊.  后来, 也是有各种民间 兵器来导出虾米歌单到网易云音乐. 


后头一看, 这里面说明了什么问题呢?

  1. 歌单这种东西, 说到底应该是属于人民的. 你不能靠挟持歌单来试图留存用户.
  2. 只要你把功能做到在网页上可以用, 那么就总有办法用javascript去自动化所有用户能做的事情. 仿效Atwood那句名言:

“凡是用户在网页上能做的事情, 都将被javascript自动化”