QQ音乐爬虫(NodeJs)

编程入门 行业动态 更新时间:2024-10-10 03:23:38

QQ音乐<a href=https://www.elefans.com/category/jswz/34/1770264.html style=爬虫(NodeJs)"/>

QQ音乐爬虫(NodeJs)

一、创建一个文件夹

 

  例如我创建在D:\code\qq-music

  在文件目录打开cmd

  在cmd中执行 npm init 项目初始化

  然后安装一些工具包: 

  npm i request -s

  npm i querystring -s

  在目录下创建一个Music的文件夹用于存储下载的音乐文件

 

二、直接上代码  D:\code\qq-music\qqMusic.js

const request = require('request');
const fs = require('fs'); //文件模块
const querystring=require("querystring");

const downMusic = function(UrlJsonObj){
const baseUrl = "http://124.232.155.157/amobile.music.tc.qq/";
for(var attr in UrlJsonObj){
const musicJsonObj = UrlJsonObj[attr];
const songname = musicJsonObj.songname;
const songUrl = musicJsonObj.songUrl;
request(baseUrl+songUrl).pipe(fs.createWriteStream('./Music/'+songname+'.m4a'))
}
};

const makeMusicJsonArray = function(songJsonArray){
const baseUrl = ".fcg";
let UrlJsonObj = {};
songJsonArray.map(function(musicInfo){
const songname = musicInfo.songname;
const songmid = musicInfo.songmid;
const url = baseUrl+"?"+querystring.stringify(musicInfo.params);
request(url, function (error, response, body) {
const BodyJson = JSON.parse(body);
let musicInfo = {
songname : this.songname
};
musicInfo["songUrl"] = BodyJson["req_0"]["data"]["midurlinfo"][0]["purl"];
UrlJsonObj[this.songmid] = musicInfo;
if(Object.getOwnPropertyNames(UrlJsonObj).length == songJsonArray.length){
this.downMusic(UrlJsonObj)
}
}.bind({
songname : songname,
songmid : songmid,
downMusic : downMusic
}));
});
};

下面标红的是我在这个页面找到的歌曲清单接口


const queryMusicList = function(){
request('.fcg?tpl=3&page=detail&date=2018_41&topid=26&type=top&song_begin=0&song_num=300&g_tk=5381&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq&needNewCode=0', function (error, response, body) {
if(response.statusCode == 200){
body = JSON.parse(body);
const songList = body.songlist;
let songJsonArray = [];
songList.map(function(songDetail){
songDetail = songDetail.data;
const songJsonObj = {
'albumname' : songDetail.albumname,
'albummid' : songDetail.albummid,
'singer': songDetail.singer[0]["name"],
'songname': songDetail.songname,
'songmid': songDetail.songmid,
'songtype': songDetail.songtype
};

const musicParams = {
"req":{
"module":"CDN.SrfCdnDispatchServer",
"method":"GetCdnDispatch",
"param":{
"guid":"1111",
"calltype":0,
"userip":""
}
},
"req_0":{
"module":"vkey.GetVkeyServer",
"method":"CgiGetVkey",
"param":{
"guid":"1111",
"songmid":[songDetail.songmid],
"songtype":[songDetail.songtype],
"uin":"0",
"loginflag":1,
"platform":"20"
}
},
"comm":{
"uin":0,
"format":"json",
"ct":20,
"cv":0
}
};
var params = {
loginUin : 0,
hostUin : 0,
format : 'jsonp',
inCharset: 'utf8',
outCharset: 'utf-8',
notice: 0,
platform: 'yqq',
needNewCode: 0,
data: encodeURI(JSON.stringify(musicParams))
};
songJsonObj["params"] = params
songJsonArray.push(songJsonObj)
});
makeMusicJsonArray(songJsonArray);

}
});
};

queryMusicList();

三、运行代码
node qqMusic.js

PS:纯粹是娱乐一下,打发休息时间

转载于:.html

更多推荐

QQ音乐爬虫(NodeJs)

本文发布于:2024-02-07 08:12:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754494.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爬虫   音乐   QQ   NodeJs

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!