因为版权听歌变得麻烦起来,所以直接一次性搜索4个平台(QQ,网易,酷狗,酷我)的音乐。(有些歌四个平台都无版权,只好在YouTube上听了)
源码作者禁止转载,这是他的链接: 网址链接
至于功能如何实现的,他的视频讲的很清楚了。
不过他的源码中,酷狗音乐和酷我音乐的功能已经不能使用了。我进行了修改。
修改后可使用代码:代码下载 其中网易云音乐调用js文件放到代码同目录下即可。
我测试了下,开启多线程和不开的时间都差不多。所以没开。
同样前端HTML:
<div id="music" class="white_content">
<a style="float: left" href="javascript:void(0)"
onclick="document.getElementById('music').style.display='none';document.getElementById('fade').style.display='none'">点这里关闭本窗口</a>
<input style="float: left" type="text" id="mcontent" name="搜索内容">
<button style="float: left" type="button" id="mcommit_btn" value="搜索">搜索</button>
<p style="margin: 0px 10px;"> -----爬虫大约运行20-30s,请耐心等待。切勿重复提交。-----</p>
<div id="music_player" class="player">
</div>
<table id="mtset" style="font-size:14px ; float: left" border="2px">
<thead>
<tr>
<th>音乐源</th>
<th>歌曲名称</th>
<th>歌手名称</th>
<th>试听链接(打开即可下载)</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
jQuery:
$("#mcommit_btn").click(function () {
$("#mtset tbody").html("");
$.ajax({
url: 'music',
type: 'post',
data: {content: $('#mcontent').val()},
//headers:{"X-CSRFToken":$.cookie("csrftoken")},
success: function (data) {
console.log(data);
for (var i = 0; i < data.length; i++) {
var bu = 'commit_btn' + i;
str = "<tr><td>" + data[i][0] + "</td><td>" + data[i][1] + "</td><td>" + data[i][2] + "</td><td> <audio controls><source src='" + data[i][3] + "' type='audio/mpeg'> </audio></td>></tr>";
$("#mtset").append(str);
}
},
error: function (data) {
alert(data.status)
}
}
)
});
views.py:爬音乐的代码太长了,直接复制进views里即可,这里只写返回前端的代码。
def music(request):
text = request.POST.get("content")
name = text
table = start(name) (调用音乐程序)
return JsonResponse(list(table), json_dumps_params={'ensure_ascii': False}, safe=False)
还有一点,爬取后要将数据中所有空格删除,否则返回前端会导致链接失效。
.replace(' ', '')
urls.py:
path('music', views.music, name='music'),
现在即可在网页上搜索音乐,可以试听,也可下载。