记录下typora上传图片到Git

236 阅读1分钟

前言

生活、工作中一直使用markdown记录一些东西,所以我就使用了Typora。Typora中上传图片不是很方便,我想通过自定义命令将图片上传到git,不想额外下载PicGo之类的工具。于是参考其他大佬们的方法,自己尝试着写了一下上传的shell脚本。

Git地址

直接贴代码

#!/bin/bash

# 本地仓库路径
LOCAL_REPO_PATH=[Your local Repo path]

# 远程仓库路径
# Git
REMOTE_REPO_PATH=[Your remote Repo path]
## 或者Gitee
# REMOTE_REPO_PATH=[Your remote Repo path]

# 日志文件地址
LOG_FILE="${LOCAL_REPO_PATH}/typora_upload.log"


# 清除日志
> ${LOG_FILE}

# 遍历文件路径
for file_path in "$@"
do
  # 校验文件路径
  if [ ! -n "${file_path}" ] ; then
      echo "Usage: imgup [image path]"
      exit 1
  fi

  # 切换至本地仓库的目录
  cd ${LOCAL_REPO_PATH} || { echo "Failed to change directory to ${LOCAL_REPO_PATH}" >> ${LOG_FILE}; exit 1; }

  # 获取文件名
  file_name=$(basename "${file_path}")

  # 复制文件至本地仓库目录
  cp "${file_path}" "${LOCAL_REPO_PATH}/src/${file_name}" && { echo "Copy ${file_path} to ${LOCAL_REPO_PATH}/src/${file_name}" >> ${LOG_FILE}; }  || { echo "Failed to copy ${file_path} to ${LOCAL_REPO_PATH}/src/${file_name}" >> ${LOG_FILE}; exit 1; }

  # 通过git bash上传到远程仓库
  git add . >> ${LOG_FILE} 2>&1 && git commit -m "${file_name}" >> ${LOG_FILE} 2>&1 && git push -u origin master >> ${LOG_FILE} 2>&1

  # 判断git命令是否失败
  if [ $? -ne 0 ]; then
    echo "Git operation failed. Check ${LOG_FILE} for details."
    exit 1
  fi

  # 根据域名处理上传后的文件url
  if [[ "${REMOTE_REPO_PATH}" =~ ^https://github.com ]]; then
    # Git
    echo "${REMOTE_REPO_PATH}/src/${file_name}?raw=true"
  elif [[ "${REMOTE_REPO_PATH}" =~ ^https://gitee.com ]]; then
    # Gitee
    echo "${REMOTE_REPO_PATH}/src/${file_name}"
  else
    echo "Unknown repository '${REMOTE_REPO_PATH}'. Check ${LOG_FILE} for details." >> ${LOG_FILE}
  fi
done

使用

我是macos,所以没有考虑windows中该如何处理。

使用时只需git clone仓库,然后将scripts/upload.sh中的变量LOCAL_REPO_PATHREMOTE_REPO_PATH替换成自己的。由于网络原因,也可以使用Gitee仓库,访问速度会快一些。它跟Git仓库的区别是预览文件的路径规则不同。

然后打开Typora的设置,按图中标注的顺序配置即可。

image.png

效果如下

upload.gif