通過幾個小夥伴的提醒,發現我的博客中的許多圖片都裂了沒法訪問;緣由就很少說,既然出現問題就得要解決。java
本來個人處理方式很是簡單粗暴:找到原有的圖片從新下載下來上傳到新的可用圖牀再把圖片地址替換。git
這樣搞了一兩篇以後我就絕望了。。。github
以前爲了代碼能在公衆號裏也有好的閱讀體驗,因此能截圖的我毫不貼代碼,致使一篇文章多的得有十幾張圖片。shell
好在哪位大佬說過「以人肉XX爲恥」,這種重複勞動力徹底可自動化;因而便有了本次的這個工具。json
它能夠一行命令把你全部 Markdown
寫的內容中的圖片所有替換爲新的圖牀。緩存
運行效果以下:網絡
能夠直接在這個地址下載 jar 包運行:github.com/crossoverJi…app
固然也能夠下載源碼編譯運行:工具
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
寫了一個工具用於批量下載文中出現的圖片同時上傳後完成替換。spa
app.downLoad.path
是用於將下載的圖片保存到本地磁盤的目錄。/xx/xx/path
則是掃描 .md
文件的目錄,會遞歸掃描全部出全部文件。若是本身的圖片較多的話仍是有幾個坑須要注意下。
默認是啓動了兩個線程去遍歷文件、上傳下載圖片、更新文本等內容,其中的網絡 IO 其實挺耗時的,因此其實能夠適當的多開些線程來提升任務的執行效率。
但線程過多也許會觸發圖牀的保護機制,同時也和本身電腦配置有關,這個得結合實際狀況考慮了。
因此能夠經過 --app.thread=6
這樣的參數來調整線程數量。
這個是圖片過多必定是大機率出現的,上傳請求的頻次太高很容易被限流封 IP。
{"code":"error","msg":"Upload file count limit. Time left 1027 second."}
複製代碼
目前來看是封 IP 居多,因此能夠經過走代理、換網絡的方式來解決。
固然若是是自搭圖牀能夠無視。
因爲我使用的是免費圖牀,上傳過程當中偶爾也會出現上傳失敗的狀況,所以默認是有 5 次重試機制的;若是五次都失敗了那麼大機率是 IP 被封了。
即使是 ip 被封后只要換了新的 ip 從新執行程序它會自動過濾掉已經替換的圖片,不會再作無用功,這點能夠放心。
默認狀況下,下載的圖片會保存在本地,我也建議藉此機會本身本地都緩存一份,同時名字還和文中的名字同樣,避免從此圖牀完全掛掉後連恢復的機會都沒有。
這個程序的代碼就沒怎麼講了,確實也挺簡單,感興趣的能夠本身下來看看。
目前功能也很單一,自用徹底夠了;看後續你們是否還有其餘需求再逐漸完善吧,好比:
再次貼一下源碼地址:
你的點贊與分享是對我最大的支持