自動化替換 Markdown 中的本地圖片引用
懶是第一生產力。——沃茲基芐德
我寫 Markdown 有個習慣,總是將引用到的圖片(截圖或保存的)先壓縮,然后上傳到圖床(云存儲)上,生成外鏈,然后在 Markdown 中引用。因為國內的云存儲服務訪問速度相對 GitHub 較快,同時在使用 Markdown 源文件時,不必連同圖片一起傳送或移動。
因此就催生了該半自動化工具腳本( GitHubd 傳送門 )的誕生。
實現的效果如下:
幾點說明
- 圖片壓縮 :本文直接調用的是 TinyPNG 站點的 API,該站提供的壓縮服務還是不錯的,圖片壓縮率高,且壓縮前后顯示效果差別很小。對于開發者而言,該網站上相關文檔也是相當齊全的。
- 圖片上傳 :我選擇的是 LeanCloud ,因為之前剛開始接觸云存儲選擇了這個,后來就一直用了,國內的還可以選擇七牛的云存儲提供商( LeanCloud 文件存儲實際用的也是七牛),都有相關的開發文檔的。
- 本地數據庫存儲 :腳本中會將文件的 hash 值和 url 儲存到本地數據庫 ImageInfo.db 中,避免相同問題多次壓縮上傳。
簡單流程圖
使用
1. 安裝環境和依賴
- Python 2.7 環境,自行搜索
-
安裝 tinify package,遇到問題可以看 TinyPNG – API Reference :
pip install --upgrade tinify
-
安裝 leancloud-sdk package,遇到問題可以看 LeanCloud Python Doc :
pip install leancloud-sdk
or
easy_install leancloud-sdk
2. 填寫你申請的相關 API KEY(在 replace_image_in_md.py 文件中填寫)
TINY_API_KEY = "your_tiny_png_api_key"
LEAN_CLOUD_API_ID = "your_lean_cloud_app_id"
LEAN_CLOUD_API_KEY = "your_lean_cloud_api_key"
3. 編寫你的 Markdown 文件 并 引用本地圖片文件,如下圖所示:
this is a image

4. 使用自動化腳本:
python replace_image_in_md.py your.md output.md
執行完之后,本地圖片的引用將會被替換成壓縮后的圖片的外鏈( url ),如下圖所示:
this is a image
)
小技巧
如果你是 Linux 或 OS X 用戶,你可以將該腳本放在一個固定的位置,然后在你的 .bashrc 或者 .zshrc 中添加類似下面的 alias:
alias lzmd="python ~/Develop/tools/lazymd/replace_image_in_md.py"
然后在你需要使用腳本的時候,在任何地方打開終端,輸入 lzmd 即可:
lzmd your.md output.md
最后
感謝基友 Brucezz 在開發中提供的幫助。
第一次發 Python 開源項目,本身 Python 就比較菜,如果你有任何建議或意見,請在 GitHub 提 issue 或 pr,或者評論給我留言,謝謝~
來自: http://laobie.github.io/python/2016/04/24/replace-image-file-in-markdown.html
本文由用戶 danelchern 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!