【工具】有道云笔记图片自动迁移脚本

  • 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。

  • 最后,写作不易,大家多多点赞关注支持一下作者,非常感谢。

相关推荐
程序员爱钓鱼8 分钟前
Python编程实战 · 基础入门篇 | 什么是Python
后端·python
Mintopia12 分钟前
⚡当 Next.js 遇上实时通信:Socket.io 与 Pusher 双雄传
前端·后端·全栈
ZhengEnCi12 分钟前
ObjectUtils.isEmpty 完全指南-从入门到精通的 Java 空值判断利器
java·后端
凯哥197012 分钟前
Supabase Edge Functions 开发指南
后端
tangdou36909865515 分钟前
可怕!我的Nodejs系统因为日志打印了Error 对象就崩溃了😱 Node.js System Crashed Because of Logging
前端·javascript·后端
廖广杰15 分钟前
Oauth2.0 授权码模式认证流程
后端
BlackQid19 分钟前
深入理解指针Part4——字符、数组与函数指针变量
c++·后端
Postkarte不想说话22 分钟前
FreeBSD配置Jails
后端
但求无bug22 分钟前
Java中计算两个日期的相差时间
后端
小傅哥22 分钟前
新项目完结,Ai Agent 智能体、拖拉拽编排!
前端·后端