xlspider
Version:
nodejs's web spider tools
92 lines (86 loc) • 2.51 kB
JavaScript
const https = require('https')
const fs = require('fs')
const { join } = require('path')
/**
* @function 获取所有英雄名称
*
* @param {string} url 请求的URL地址
* @return {Promise}
*/
function getAllHero(url){
return new Promise((resolve, rejects) => {
let rawData = ''
https.get(url, res => {
res.on('data', chunk => {
rawData += chunk
})
res.on('end', () => {
const parsedData = JSON.parse(rawData)
const hero = parsedData.hero || []
let outContent = ''
hero.forEach(obj => {
const { heroId, name } = obj
outContent += `${heroId}:${name} `
})
resolve(outContent)
})
}).on('error', e => {
rejects(e)
})
})
}
/**
* @function 获取选中英雄皮肤列表
*
* @param {string} heroId 请求的URL地址
* @return {Promise}
*/
function getHeroSkin(heroId){
const heroinfo_url = `https://game.gtimg.cn/images/lol/act/img/js/hero/${heroId}.js`
return new Promise((resolve, rejects) => {
https.get(heroinfo_url, res => {
let content = ''
res.on('data', chunk => {
content += chunk
})
res.on('end', () => {
const skinList = JSON.parse(content).skins
resolve(skinList)
})
}).on('error', e =>{
rejects(e.message)
})
})
}
/**
* @function 保存英雄图片
*
* @param {string} heroTitle 请求的URL地址
* @param {string} name 皮肤名称
* @param {string} imgLink 皮肤图片地址
* @return {undefined}
*/
function saveImg(heroTitle, name, imgLink){
https.get(imgLink, res => {
res.setEncoding('binary')
let buf = ''
res.on('data', chunk => {
buf += chunk
})
res.on('end', () => {
fs.writeFile(`${__dirname}/${heroTitle}/${name}.jpg`, buf, "binary", function(err){
if(err){
console.log("下载失败 fail");
}
console.log(name + "下载成功 success!");
});
})
}).on('error', err => {
console.error(err.message);
})
}
module.exports = {
getAllHero,
getHeroSkin,
saveImg
}