- hello,大家晚上好,我是你们的老朋友 Lorin。
- 最近发布文章遇到了一个很难受的问题,我自己本地写文章使用的是有道云笔记,导致图片无法再其它平台同步,导致自己需要苦逼的将每张图片都要上传一次,因为不再自己的图床,手动搬了几天可把自己恶心坏了,那么出现问题就得解决问题,总不能解决提出问题的人吧!!!
懒惰是科技进步的最强的动力
- 正所谓懒惰是科技进步的第一生产力,没办法只能自己写一个脚本先解决图片的问题。
- 解决思路大致就是扫描目录的下的所有文件,匹配出文件中所有需要进行处理的链接,然后使用配置的 cookie 将图片下载到本地,然后再上传的自己的文件服务器,最后用自己文件服务器的链接替换掉文章中的原始链接。
- 为了使用方便使用 bash 脚本实现,完整代码如下:
bash
#!/bin/bash
# 解析函数,根据参数名称提取对应的值
function get_query_param() {
local param_name="$1"
local query_string="$2"
local param_value=$(echo "$query_string" | grep -oP "(?<=${param_name}=)[^&]+")
echo "$param_value"
}
# 设置参数
source_dir="./test" # 指定源目录
output_dir="./test/out" # 指定输出目录
# 替换为需要的 Cookie
cookie="xxxxxx"
# 替换为上传服务器的地址
upload_server="xxx.cc"
# 创建输出目录
mkdir -p "$output_dir"
# 遍历指定目录下的所有 Markdown 文件
find "$source_dir" -type f -name "*.md" | while read -r markdown_file; do
echo "处理文件: $markdown_file"
# 从文件中提取所有正则表达式匹配的 URL
urls=$(grep -oE 'https://junqiu.cc/temp-photos/w2XZqYjgmN. https://junqiu.cc/temp-photos/r64zNV6LDI.)
# 创建输出文件路径
output_file="$output_dir/$(basename https://junqiu.cc/temp-photos/r64zNV6LDI.)"
# 复制 Markdown 文件到输出目录
cp -f https://junqiu.cc/temp-photos/r64zNV6LDI. "$output_file"
# 遍历匹配的 URL
for url in $urls; do
echo "下载并上传 URL: $url"
redirected_url=$(curl -s -L -b "Cookie: $cookie" -w %{url_effective} -o /dev/null "$url")
echo "解析重定向地址成功:$redirected_url"
# 解析文件名
originfilename=$(get_query_param "download" "$redirected_url")
filename="$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1).${originfilename##*.}"
echo "获取文件名成功:$filename"
# 使用 curl 下载重定向后的文件
curl -L -b "Cookie: $cookie" "$redirected_url" -o "$output_dir/$filename"
# 这个需要在服务器配置公钥 或者 使用 sshpass 配置密码
# 使用 ssh 秘钥 和 sftp 上传文件到 Nginx 服务器目录下
sftp "root@${upload_server}:html/temp-photos" <<EOF
put "$output_dir/$filename"
bye
EOF
# 获取 FTP 服务器上的新 URL
new_url="https://${upload_server}/temp-photos/$filename"
echo "重新生成 URL: $new_url"
# 在 Markdown 文件中替换链接为新的 URL
sed -i "s|$url|$new_url|g" "$output_file"
done
done
echo "任务处理完成!"
- 执行一下,大功告成:
我还可以再懒一点
- 虽然这样已经解决了大部分问题,但是每次写完文章都要各个去上传还是让我这个懒人受不了,得让科技再进步一下。
- 因此,我决定找找有没有文章多平台同步工具,很遗憾的是有一个但是作者已经停更了,那么没有就只能造一个了,如果有相同需求的小伙伴可以私聊给我提提意见,预计下个月出第一个版本。
思路
-
目前的主要思路还是通过 web 端实现,然后同步到其它平台,中间会做一些格式转换和优化,web 端第一个版本仅会支持 markdown。
-
最后,写作不易,大家多多点赞关注支持一下作者,非常感谢。