Files
Melo/src/common/utils/musicMeta/downloader.js
T
2022-10-29 11:36:35 +08:00

72 lines
2.2 KiB
JavaScript

const http = require('http')
const https = require('https')
const fs = require('fs')
const sendRequest = (url) => {
const urlParse = new URL(url)
const httpOptions = {
method: 'get',
host: urlParse.hostname,
port: urlParse.port,
path: urlParse.pathname + urlParse.search,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
},
}
// console.log(httpOptions)
return url.protocol === 'https:'
? https.request(httpOptions)
: http.request(httpOptions)
}
module.exports = (url, filePath) => {
return new Promise((resolve) => {
sendRequest(url)
.on('response', response => {
// console.log(response.statusCode)
if (response.statusCode !== 200 && response.statusCode != 206) {
response.destroy(new Error('failed'))
return
}
response
.pipe(fs.createWriteStream(filePath))
.on('finish', () => {
// console.log('finish')
if (response.complete) {
// console.log('complete')
// meta.APIC = picPath
// handleWriteMeta(meta, filePath)
resolve(true)
} else {
resolve(false)
fs.unlink(filePath, err => {
if (err) console.log(err.message)
})
}
}).on('error', err => {
// console.log('response error')
if (err) console.log(err.message)
fs.unlink(filePath, err => {
if (err) console.log(err.message)
})
resolve(false)
})
})
.on('error', err => {
if (err) console.log(err.message)
// delete meta.APIC
// handleWriteMeta(meta, filePath)
resolve(false)
})
.end()
})
}
// const url = 'https://y.gtimg.cn/music/photo_new/T002R500x500M000000nfgwP0D6qxd.jpg'
// // const url = 'http://p4.music.126.net/-U2K8GKlASCSXK0cRre1gA==/109951163188718762.jpg'
// const picPath = require('path').join(__dirname, 'test.jpg')
// module.exports(url, picPath).then((sucee) => {
// console.log(sucee)
// })