kana/plugins/GravatarCache.js

48 lines
1.6 KiB
JavaScript
Raw Normal View History

2022-09-24 23:38:57 +08:00
import fs from 'fs'
import axios from 'axios'
import crypto from 'crypto'
2022-02-19 05:58:58 +08:00
const 镜像站列表 = [
'gravatar.loli.net', // loli.net
'sdn.geekzu.org', // 极客族公共加速服务
'cravatar.cn', // Cravatar - 中国的公共头像服务
'gravatar.inwao.com', // 「公益」Gravatar 韩国免费高速镜像源|支持负载均衡 - inwao blog
'gravatar.loli.top', // 自建Gravatar国内+全球镜像加速服务 | 城南旧事 (loli.top)
'gravatar.zeruns.tech', // Gravatar头像介绍 镜像地址大全 - Zeruns's Blog
'secure.gravatar.com', // Gravatar 官网
]
var 头像来源 = 0
2022-09-24 23:38:57 +08:00
function getGravatar(email, size=128) {
let str = email ? crypto.createHash('md5').update(email.toLowerCase()).digest('hex') : 'default'
2022-02-19 05:58:58 +08:00
let 本地路径 = './data/avatar/' + str + '.jpg'
let 网络路径 = `https://${镜像站列表[头像来源]}/avatar/${str}.jpg?s=${size}&d=mm&r=g`
2022-09-24 23:38:57 +08:00
if (!fs.existsSync(本地路径)) {
axios({ url:网络路径, responseType: 'arraybuffer' }).then(({data}) => {
fs.writeFileSync(本地路径, data, 'binary')
}).catch(error => {
2022-02-19 05:58:58 +08:00
头像来源++
2022-09-24 23:38:57 +08:00
console.log(error)
if (头像来源 <= 镜像站列表.length) getGravatar(email, size)
console.log("下载头像完毕")
})
2022-02-19 05:58:58 +08:00
}
}
export default {
// 激活插件方法
activate() {
2024-06-06 20:40:05 +08:00
const dirname = './data/avatar/'
fs.mkdirSync(dirname, { recursive: true })
2022-02-19 05:58:58 +08:00
},
// 禁用插件方法
deactivate() {
// 停用插件并删除目录
},
// 向头像获取方法插入替换
getGravatar, // 获取头像(如果不存在自动从网络下载)
}