又写了一个处理照片更新的脚本

2023-09-14

由于之前笔记本暴毙数据找不回,今天又重写了一个新的脚本,处理的对象是魅族手机里面的照片。因为我的小窝相册仍然有一部分图片丢失,但依旧是可以找到原图的。

这次写的脚本直接将步骤打给 GPT 来做了,它写的基本满足需求,就是有一些细节需要注意一下:

  • 遍历图片前先通过接口匹配图片的 ID
  • 使用 ExifTool 工具的时候需要覆盖原图,并设置作者名称
  • 处理好图片之后再通过接口上传完成覆盖

考虑到脚本涉及到接口数据,再加上数据丢失的经历,这次我就把它贴出来了,但隐藏了一些关键参数。

#!/bin/bash

server="https://test.paul.ren/api"
token=""

# 创建文件夹 output
mkdir -p output

# 遍历当前文件夹下的所有 jpg 文件
for file in *.jpg; do

  # 发送 GET 请求获取 JSON 数据
  response=$(curl --header "token: $token" -s "$server/media/get/?origin_name=$file")

  # 提取 id
  id=$(echo "$response" | jq -r '.data.id')

  # 如果没有 id,则跳过当前循环
  if [ -z "$id" ]; then
    echo "匹配 $file 失败"
    continue
  fi

  echo "匹配 $file 成功,id 是 $id"

  # 存储图片名到变量
  filename=$(basename "$file")

  # 判断图片是竖屏的还是横屏的
  # 使用 identify 命令判断图片的宽度和高度
  width=$(identify -format "%w" "$file")
  height=$(identify -format "%h" "$file")

  # 指定图片大小
  if [ $width -ge $height ]; then
    new_size="2000x1500"
  else
    new_size="1500x2000"
  fi

  # 使用 ImageMagick 处理图片
  convert "$file" -quality 80 -resize "$new_size" "output/$filename"

  # 使用 exiftool 抹掉图片的 gps 信息,并设置作者名称为 Paul
  exiftool -overwrite_original -gps:all= -artist="奇趣保罗" -CreatorTool= "output/$filename"
   
  # 提交该文件给服务器
  curl -X POST \
--header "token: $token" \
--location "$server/api/media/update" \
--form "id=$id" \
--form "photo=@output/$filename" \
--form 'IGNORE_UPDATE_TIME="1"'
   
done
小雨 一般
概览页 时间轴
奇趣音乐盒 技术源于 Kico Player
Emmm,这里是歌词君