You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.5 KiB
59 lines
1.5 KiB
import fs from 'fs' |
|
import request from 'request' |
|
import { nanoid } from 'nanoid' |
|
|
|
let fileName = './data/user-SUNMENG333.json' |
|
let saveFileStr = fs.readFileSync(fileName, 'utf8') |
|
let inputData = JSON.parse(saveFileStr) |
|
let saveFilePath = './imgs/' |
|
|
|
const downloadImage = async (src, dest) => { |
|
console.log('下载:', src) |
|
return new Promise((resolve) => { |
|
request.head(src, (err) => { |
|
if (err) { |
|
console.log(err) |
|
return |
|
} |
|
src && |
|
request(src) |
|
.pipe(fs.createWriteStream(dest)) |
|
.on('close', () => { |
|
setTimeout(() => resolve(true), 1500) |
|
}) |
|
}) |
|
}) |
|
} |
|
|
|
async function test3(list) { |
|
let url = list.pop() |
|
if (url.includes('http')) { |
|
let name = nanoid() + '.png' |
|
await downloadImage(url, saveFilePath + name) |
|
return [name] |
|
} |
|
return [url] |
|
// fs.writeFileSync(fileName, JSON.stringify(inputData, null, 2)); |
|
} |
|
|
|
inputData = inputData.slice(0, 70) |
|
console.log(inputData.length) |
|
for (let i = 0; i < inputData.length; i++) { |
|
let v = inputData[i] |
|
console.log(`处理:第${i}个视频:`, v.desc) |
|
|
|
if (v.video?.play_addr?.url_list) { |
|
v.video.play_addr.url_list = [v.video.play_addr.url_list.pop()] |
|
} |
|
try { |
|
if (v.video?.cover?.url_list) { |
|
v.video.cover.url_list = await test3(v.video?.cover?.url_list) |
|
} |
|
if (v.video?.animated_cover) { |
|
delete v.video.animated_cover |
|
} |
|
fs.writeFileSync(fileName, JSON.stringify(inputData, null, 2)) |
|
} catch (e) { |
|
console.log('出错了', e) |
|
} |
|
}
|
|
|