songtaste是我个人比较喜欢的一个音乐分享网站,每每歌荒的时候,总能在其中找到好听不错的歌曲,然而平心而论,网站的页面设计要比相同的其它音乐网站要差很多。

songtaste的一个主要的特点就是分享的音乐,其文件名信息之类都是上传者自定义的,更多的时候若没有文字标识,很难知道歌曲的名字等信息,而且对大多数人来说,歌曲的下载与收藏是最重要的。我作为热衷的一份子,也寻找了不少的下载工具,尝试了解下载的途径。

如果是在Windows系统下,点击试听的单曲音乐页面,可以使用多米音乐盒下载音乐,速度还是挺快的,也很稳定。

如果单说特定的下载器,首推http://duanmu.org/log/songtaste/,Wood'sBlog,其博主自己实现了一个歌曲的下载器,当时也体验过,但是好像很久没有更新了,在使用的时候时不时会有问题,歌曲有时下载不了,而且可能下载下来都是同一首歌-_-#

好在上面的软件在linux下不能运行,让自己又开始找linux下的方案,然后发现了http://www.isayme.org/python-songtaste-download.html,名叫独语者的博客,发表的文章,提供了一个简易的python脚本版本,从中发现了下载歌曲的方法所在。

啊对程序来说终于到正题了....

首先,打开songtaste网站的单曲页面的时候,会发现地址栏内容是很有规律的,例如

铜钟音乐网站有docker部署吗 铜钟音乐怎么下载音乐_脚本


例如这首《我明白》,地址是http://www.songtaste.com/song/3289902/,后面有一个明显的序号类似的标识。

我们再回到寻找歌曲的页面

铜钟音乐网站有docker部署吗 铜钟音乐怎么下载音乐_脚本_02

用试听功能,打开其播放器

铜钟音乐网站有docker部署吗 铜钟音乐怎么下载音乐_linux_03

就会在地址栏又找到那个序号,所以到现在为止,我们知道其歌曲是用id标识的,而且用http://www.songtaste.com/playmusic.php?song_id=id的值的地址就可以引用播放它。

那我们如何找到下载的地址呢

而后,在linuxshell下

wgethttp://www.songtaste.com/playmusic.php?song_id=3289902

铜钟音乐网站有docker部署吗 铜钟音乐怎么下载音乐_脚本_04


vim打开html文件

铜钟音乐网站有docker部署吗 铜钟音乐怎么下载音乐_脚本_05


会发现其中有一个functionWrtSongLine(SongID, SongName, Singer, IsBox, Idx, SongUrl,MidUrl)函数定义,在下面还有函数的具体使用,其中参数的值就暴露了我们想要的信息。

铜钟音乐网站有docker部署吗 铜钟音乐怎么下载音乐_linux_06

网站上也有专辑这样的歌曲收录的形式,其方法应该也和单曲是一样的。

有了歌曲信息,具体用什么技术来实现就不细讨论了


如果你也用chrome的话,有一个songtaste下载器的插件可以使用,不到最近好像找不到了,但是最近又无意发现一个叫做声海盗的插件,功能可谓强大到可怕,在很多音乐网站的试听,它都能从中下载歌曲,在全文章的推荐工具中,应该是最好用的了