博客增加附件系统与自定义Markdwon
# 附件系统
很早之前我就对企业微信API感兴趣,特别是邮件系统,我还用他的邮件系统搞过公共邮箱服务(后面因为限制与诸多不便所以不玩了)
这次我看到了他的微盘系统
正好我之前看到其他人的博客都有一个资源分享的服务
于是我灵机一动,打算用这个免费的微盘做一个资源分享储存
## 搭建
我创建了API应用的专属盘,然后上传了几个文件进去,再直接curlAPI,确定端点无误,开始写完整的代码
可就在最终Web实现时我却犯难了。
企业微信的DownloadAPI返回的是需要cookies认证是下载链接,需要带上cookies再访问url才能下载文件,这直接增加了开发难度,我只能再套了一层EdgeOne作为代理
不过还好,我用了一层边缘函数将请求参数转为回源cookies,终于成功搭建好了资源分享站
现在直接访问博客下/pan路径就可以使用了。
## 吐槽
为什么企业微信必须要限制IP,还不给搞IP端白名单?密钥有那么容易泄露吗,边缘函数节点那么多,我现在已经至少在后台添加了21个IP了,接下来可能还要继续面对IP的更新,我真的服了wwww🤣
# 自定义Markdown
## Github仓库
我添加了一个格式``

它可以直接渲染为Github仓库外链,并且通过GithubAPI请求仓库实时信息。
代码示例:
```
marked.setOptions({
breaks: true,
gfm: true,
renderer: {
image: function(href, title, text) {
// 检测GitHub仓库引用格式: 
const githubMatch = href.match(/^github\/([\w-]+\/[\w.-]+)$/i);
if (githubMatch) {
return `<!-- GITHUB_REPO_START:${githubMatch[1]} -->`;
}
// 检测文件下载格式: 
const fileMatch = href.match(/^file\/([^,]+),([^,]+),([^,]+)$/);
if (fileMatch) {
const [, name, type, fileid] = fileMatch;
return `<!-- FILE_DOWNLOAD_START:${name}|${type}|${fileid} -->`;
}
// 否则使用原始渲染器
return originalRenderer.call(this, href, title, text);
}
}
```
## 附件
没错,为了与新开发的附件系统做一个适配,我还做了一个自定义解析,可以直接在文章中添加下载卡片,点击后直接下载,非常方便。
示例:``

评论 (0)