const fs = require('fs')
const http = require("http");
var request = require('request')
const path = require('path')
var FormData = require('form-data');
let totalImage = []
let repeatImage =[]
let delRepeatImage = []
const randomString = (e)=> {
e = e || 32;
var t = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678",
a = t.length,
n = "";
for (var i = 0; i < e; i++) {
n += t.charAt(Math.floor(Math.random() * a))
}
return n + Date.now()
}
let getuplodOssUrl = (url) => {
console.log(url,'-------url')
return new Promise((resolve) => {
http.get(url.replace('https', 'http'), (response) => {
const UrlObj = new URL(response.headers.location)
let suffix = response.headers.location.slice(response.headers.location.lastIndexOf('.'), response.headers.location.length)
const srcobjectname =response.headers.location.replace(new RegExp(UrlObj.origin + '/', 'g'), '')
const dstobjectname = new Date().toLocaleDateString().replace(/\//g, '-').replace(/\d{1,}/g, ($0)=> $0.padStart(2,0)+ '').replace(/-/g, '') + "/" + randomString(32) + suffix
request({
url: '阿里云接口',
method: "POST",
// json: true,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
form: {
"srcbucketname": "xxx",
"srcobjectname": srcobjectname,
"dstobjectname": dstobjectname,
"destbucketname": "xxx"
}
},function(error, response, body) {
if (!error && response.statusCode == 200) {
let fileUrl = '图片替换后的域名' + dstobjectname
request({
url: fileUrl,
method: "GET",
},function(error, response, body) {
if (!error && response.statusCode == 200) {
totalImage.filter((item,index)=>{
if(item==url){
resolve(fileUrl + '?x-oss-process=image/quality,q_80/format,' + suffix.replace('.', ''))
}
})
console.log(url, '=======>>>>>>', fileUrl + '?x-oss-process=image/quality,q_80/format,' + suffix.replace('.', ''))
} else {
resolve('')
}
})
}
})
})
})
}
let getReplaceRes = (files) => {
return new Promise((resolve) => {
let obj = {}
let a3 = ''
let i = 0
files.replace(/https\:\/\/xxx\/xxx\/\w{1,}/gi,($0,$1) => {
obj[$0]= ''
totalImage.push($0)
})
totalImage.filter((item, index)=>{
if(!delRepeatImage.includes(item)){
delRepeatImage.push(item)
getuplodOssUrl(item).then(res => {
obj[item] = res
// console.log( res )
a3 = files.replace(/https\:\/\/xxx\/xxx\/\w{1,}/gi, ($0) => {
if(res) {
return obj[$0]
} else {
return $0
}
})
i++
if(Object.values(obj).length === i) {
i=0
obj = {}
resolve(a3)
}
})
}
if(repeatImage.indexOf(item)==-1 && totalImage.indexOf(item)!==totalImage.lastIndexOf(item)){
repeatImage.push(item)
}
})
console.log(totalImage,'totalImage',repeatImage,'repeatImage',delRepeatImage,'delRepeatImage')
})
}
const a = async (sourcePath) => {
const d = fs.statSync(sourcePath)
if(d.isDirectory()) {
let list = fs.readdirSync(sourcePath)
list.forEach(item => {
a(path.join(sourcePath, item))
})
} else {
let files = fs.readFileSync(sourcePath, 'utf-8')
let res = await getReplaceRes(files,sourcePath)
// console.log(res,'res----')
fs.writeFileSync(sourcePath, res, 'utf-8')
}
}
a(path.join(__dirname, 'pages/demo.js')) //pages/demo.js 页面位置
全局替换图片链接脚本
最新推荐文章于 2024-10-02 12:39:45 发布