前言
之前博客打开总是卡半天,虽然使用了第三方的vercel CDN
, 还将文章封面压缩过,但是静态资源加载依然缓慢,没办法,为了兼容美观和速度,只能上CDN了,了解过后,发现虽然国内有一些不错的性价比亚太CDN,但是未备案的域名也用不了怪不得(xingpingcn/enhanced-FaaS-in-China CDN资源都是台湾啥的),退而求其次,选择一种比较冒险的方法——白嫖大厂图床
正文
寻找稳定的不删图或者少删图的大厂图床
在论坛经过搜索之后,对大佬Linuors 收集的国内的大厂图床很感兴趣,老哥也很爽快,直接就给了上传接口,摸索了一下,发现都是一些不设置人机验证,访问比较快的接口,感谢大佬!由于不想滥用导致被封,还是不暴露接口信息了
抓取POST请求
除了大佬给的接口,自己也在网上找到一些套壳的大厂公益图床
,这些图床大多隐藏了原始接口,但是图片实实在在的上传到了大厂的图床上,也返回了一样的链接,像这一种就比较直接,可以直接复制原始上传信息,利用AI工具筛选,找到有用的认证信息,接入自己的图床
还有一种,比如微博和阿里经常使用不直接对post请求返回url,而是先返回特殊(可能base64)编码过的图片数据,如果可以预览的话,再刷新一次,复制图片链接可以看到直链,这种要么上传的原始数据大多都是返回的编码数据不好分析,要么弯弯绕绕,有好几次请求,而且认证信息实名或者过期时间很短,干脆放弃。
上传图片
最后在大佬的带领下找到了好些不错的接口,jd,美团,4399等等……再将他们整合起来形成了一个python脚本,使用request发送POST请求对指定的图片集体上传,返回json格式的链接列表,以后如果一个图片挂了,也能迅速更换其他备用源,由于防止滥用,也不便公开。
py脚本已经上传到了RN服务器,以后少量图片可以通过alist上传,之后一键运行python脚本获取链接,大量图片建议先在本地加个前缀,批量重命名。
图片展示
图片只要上传了,有效期就只能看厂家心情了,58图床当天上传的就马上全删了,不过还是有一批备用,方便以后寻找资源和快速更换链接,随意建了一个静态图片资源站,显示一些经常使用的图片和大厂图床的链接,最不济全挂了,也还有服务器根目录返回的图片背锅,图片展示
也可以转webp
格式或者avif
新兴压缩少损格式使用,比png小得多。
实际使用
这一篇文章的封面是24,那就找24的链接进行替换,包括双引号
现在初次加载就快的多了
修复后的文章初始模板
先生成随机数作为图片id,再直接从对应json文件读取相应字段的链接填入
---
title: "{{ replace .Name "-" " " | title }}"
slug:
description:
keywords:
date: {{ .Date }}
lastmod: {{ .Date }}
draft: false
toc: true
weight: false
imgid: {{ $id := string (add 1 (mod (now.UnixNano) 26)) }}{{ if lt (len $id) 2 }}0{{ end }}{{ $id }}
image: {{ $jsonFile := printf "static/images/random/%02s.json" $id }}{{ with os.ReadFile $jsonFile }}{{ $json := . | unmarshal }}{{ index $json "4399" }}{{ end }}
license:
comments: false
summary: 小tips……😋
categories: [suibi]
tags: [日常]
ai: false
---
# 前言
1
# 正文
1
补充
图片格式处理工具
目前主要使用3种方式,第一种最直接,直接改后缀名(能用就行),第二种使用特殊工具
FileConverter.exe,转格式,压缩成webp都很方便,第三种使用开源工具,转换成新兴的avif格式,来自论坛的AvifGo (有时间可以自己下载下来改一下)
图片名批处理
使用自己写的name.bat
,支持前缀,序号,后缀重命名(如果有重复命名就先加一个前缀,让文件夹没有和需要的一样的命名)
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
:: 提示用户输入前缀
set /p "prefix=请输入文件名前缀(直接回车则只用数字命名): "
:: 提示用户输入起始数字
set /p "start_num=请输入起始数字(直接回车默认从01开始): "
:: 提示用户是否需要统一后缀
set /p "change_ext=是否需要统一修改后缀?(Y/N,直接回车默认N): "
if /i "!change_ext!"=="Y" (
set /p "new_ext=请输入新的后缀名(例如:jpg): "
:: 确保后缀名前有点
if not "!new_ext:~0,1!"=="." set "new_ext=.!new_ext!"
)
:: 如果用户没有输入起始数字,设置默认值为1
if "!start_num!"=="" (
set "start_num=1"
set "num_length=2"
) else (
:: 移除开头的0以获取实际数值
set "actual_num=!start_num!"
for /f "tokens=* delims=0" %%a in ("!start_num!") do set "actual_num=%%a"
if "!actual_num!"=="" set "actual_num=0"
:: 计算原始输入的长度作为格式长度
set "num_length=0"
set "temp_str=!start_num!"
:strlen_loop
if not "!temp_str!"=="" (
set /a num_length+=1
set "temp_str=!temp_str:~1!"
goto strlen_loop
)
:: 设置实际的起始数字
set "start_num=!actual_num!"
)
:: 设置图片所在文件夹路径(默认为当前文件夹)
set "folder=."
:: 设置计数器为用户输入的起始数字
set /a count=!start_num!
:: 添加一个文件计数器
set /a files_processed=0
:: 先创建临时文件列表
dir /b /a-d "%folder%\*.jpg" "%folder%\*.png" "%folder%\*.gif" "%folder%\*.jpeg" > temp_files.txt 2>nul
:: 从临时文件列表读取并重命名
for /f "usebackq delims=" %%f in ("temp_files.txt") do (
:: 构建新文件名
set "newname="
:: 如果前缀不为空,添加前缀和连字符
if not "!prefix!"=="" (
set "newname=!prefix!-"
)
:: 构建数字部分,根据指定长度补零
set "padded_num=000000!count!"
set "formatted_num=!padded_num:~-%num_length%!"
set "newname=!newname!!formatted_num!"
:: 获取文件扩展名或使用新的后缀
if /i "!change_ext!"=="Y" (
set "ext=!new_ext!"
) else (
set "ext=%%~xf"
)
:: 重命名文件
ren "%%f" "!newname!!ext!"
:: 计数器加1
set /a count+=1
:: 已处理文件数加1
set /a files_processed+=1
)
:: 删除临时文件
del temp_files.txt
echo 重命名完成!
echo 共处理了 %files_processed% 个文件
pause