前言
經過幾個小夥伴的提醒,發現個人部落格中的許多圖片都裂了無法訪問;原因就不多說,既然出現問題就得要解決。
原本我的處理方式非常簡單粗暴:找到原有的圖片重新下載下來上傳到新的可用圖床再把圖片地址替換。
這樣搞了一兩篇之後我就絕望了。。。
之前為了程式碼能在公眾號裡也有好的閱讀體驗,所以能截圖的我絕不貼程式碼,導致一篇文章多的得有十幾張圖片。
好在哪位大佬說過“以人肉XX為恥”,這種重複勞動力完全可自動化;於是便有了本次的這個工具。
它可以一行命令把你所有 Markdown
寫的內容中的圖片全部替換為新的圖床。
執行效果如下:
使用
可以直接在這個地址下載 jar 包執行:github.com/crossoverJi…
當然也可以下載原始碼編譯執行:
git clone https://github.com/crossoverJie/blog.toolbox
mvn clean package
java -jar nows-0.0.1-SNAPSHOT.jar --app.downLoad.path=/xx/img /xx/xx/path 100
複製程式碼
看執行方式也知道,其實就是用 SpringBoot
寫了一個工具用於批量下載文中出現的圖片同時上傳後完成替換。
- 其中
app.downLoad.path
是用於將下載的圖片儲存到本地磁碟的目錄。 /xx/xx/path
則是掃描.md
檔案的目錄,會遞迴掃描所有出所有檔案。- 100 則是需要替換檔案的數量,預設是按照檔案修改時間排序。
如果自己的圖片較多的話還是有幾個坑需要注意下。
執行緒數量
預設是啟動了兩個執行緒去遍歷檔案、上傳下載圖片、更新文字等內容,其中的網路 IO 其實挺耗時的,所以其實可以適當的多開些執行緒來提高任務的執行效率。
但執行緒過多也許會觸發圖床的保護機制,同時也和自己電腦配置有關,這個得結合實際情況考慮了。
所以可以通過 --app.thread=6
這樣的引數來調整執行緒數量。
圖床限制
這個是圖片過多一定是大概率出現的,上傳請求的頻次過高很容易被限流封 IP。
{"code":"error","msg":"Upload file count limit. Time left 1027 second."}
複製程式碼
目前來看是封 IP 居多,所以可以通過走代理、換網路的方式來解決。
當然如果是自搭圖床可以無視。
重試
由於我使用的是免費圖床,上傳過程中偶爾也會出現上傳失敗的情況,因此預設是有 5 次重試機制的;如果五次都失敗了那麼大概率是 IP 被封了。
即便是 ip 被封后只要換了新的 ip 重新執行程式它會自動過濾掉已經替換的圖片,不會再做無用功,這點可以放心。
圖片儲存
預設情況下,下載的圖片會儲存在本地,我也建議藉此機會自己本地都快取一份,同時名字還和文中的名字一樣,避免今後圖床徹底掛掉後連恢復的機會都沒有。
總結
這個程式的程式碼就沒怎麼講了,確實也挺簡單,感興趣的可以自己下來看看。
目前功能也很單一,自用完全夠了;看後續大家是否還有其他需求再逐漸完善吧,比如:
- 圖床上傳失敗自動切換到可用圖床。
- 整體處理效率提升。
- 任務執行過程中更好的進度展現等。
再次貼一下原始碼地址:
你的點贊與分享是對我最大的支援