上一篇準備了兩年的 Semo,今天正式跟你們見面中,已經首次跟你們介紹了 Semo,相信你們看完以後應該仍是一頭霧水,不知道 Semo 究竟是個什麼東東,爲何要用,有學 Semo 的時間,本身不是也能夠擼出一個命令行工具麼?因此,本篇仍是不打算講 Semo 的原理,仍是再講講應用吧,今天給你們講講另外一個用 Semo 寫的插件:semo-plugin-read
。html
相信不少小夥伴對掘金都是大大點讚的,裏面有各類大神,大牛寫的長文教程,極大的下降了新手入門的門檻,面對一篇又一篇長文,你是否有收藏的衝動呢(好比收藏到有道雲筆記)?雖然網上有各類文摘工具,可是仍是想要 Markdown
版本,不像語雀,掘金貌似拿不到原文 Markdown,因此,這就是今天介紹的插件的開發初衷,固然實際開發之後就有點收不住了,:)git
整個開發過程,做者一點衝擊核心問題的想法都沒有,就是想整合,找最好的工具,解決個人問題。因此,首先要找一個能分析出網頁主體 HTML
的包,而後再找一個 HTML
轉 Markdown
的包,最後,再把 Markdown
轉成想要的格式。github
固然提及來簡單,可是,每一步都是個坎,今天不具體講遇到的坑,就跟你們說說這東西怎麼用,若是感興趣能夠去看看倉庫代碼:semo-plugin-read-mono,之後有時間能夠拆解一下。web
必需要安裝 Semo 命令行工具 @semo/cli
和 semo-plugin-read
這個插件:npm
npm i -g @semo/cli semo-plugin-read
複製代碼
可選的,咱們能夠安裝一些 read 的插件,這裏能看出插件分兩種,一種是格式相關的,一種是數據源相關的,後面假設這些插件都安裝過了。瀏覽器
semo-plugin-read-extend-domain-jianshu
semo-plugin-read-extend-domain-juejin
semo-plugin-read-extend-domain-mp
semo-plugin-read-extend-domain-zhihu
semo-plugin-read-extend-format-editor
semo-plugin-read-extend-format-epub
semo-plugin-read-extend-format-mobi
semo-plugin-read-extend-format-puppeteer
semo-plugin-read-extend-format-wechat
複製代碼
因爲還在頻繁的開發,因此具體選項可能將來還會有變化。bash
$ semo read help
semo read [url]
Parse and read a url or a md file with your favorate format.
Options:
--format, -F Output format, use --available-formats to see all supported formats, default: markdown.
[默認值: "markdown"]
--clipboard, -C Input from clipboard
--proxy, -P Proxy images to prevent anti-hotlinking.
--port Web server port. [默認值: 3000]
--domain Set source input from which domain, without protocol and www.
--title Prepend title, use no-title to disable.
--footer Append footer, use no-footer to disable. [默認值: true]
--toc Include TOC
--rename, -R New name, with extension.
--output, -O Location for output.
--available-formats, -A List all supported formats
複製代碼
$ semo read --available-formats
Supported formats: --format=[FORMAT]
格式 : 說明 : 別名
markdown : Markdown 格式 : md
debug : 查看識別到的中間 HTML 結果 :
console : 終端直接輸出 :
clipboard : 輸出到剪切板 :
editor : Markdown 的編輯器 基於國產的 Vditor :
epub : EPUB 格式,基於 Pandoc :
mobi : MOBI 格式,基於 Calibre 的 ebook-convert :
pdf : PDF 格式,基於 puppeteer :
png : PNG 格式,基於 puppeteer :
jpeg : JPEG 格式,基於 puppeteer : jpg
html : Markdown 轉 HTML 格式,基於 puppeteer :
wechat : 基於 Markdown 的微信公衆號文章編輯器,基於國產的 Markdown Nice :
複製代碼
看到 markdown, html 這些還好理解,哪些什麼 wechat 究竟是什麼鬼?這個,後面會給你們展現。微信
如今有什麼靜態博客工具,咱們不只能夠用來作博客,也能夠用來作資料庫,裏面的每篇文章能夠都是大牛的文章(固然這種就不建議你實際部署到網上了,本身看能夠),用這個插件能夠幫你搞定。markdown
我這裏隨便找了一篇掘金的文章,你們也能夠試試別的:dom
semo read https://juejin.im/post/5ee6c7ae6fb9a047e374ac47 --format=markdown
複製代碼
這裏的 --format=markdown
因爲是默認值,也能夠不寫,這樣執行之後,順利的話,你就能在當前目錄找到以文章 title 命令的 Markdown
文檔了。
若是不想存放到當前目錄,能夠用 --output
指定位置,若是不想每次都指定一遍,你就能夠用 Semo 的全局配置來設置了,好比個人配置是:
semo-plugin-read:
output: /Users/semo/Downloads/webclips
複製代碼
也能夠用命令行作到這一點:
semo config set semo-plugin-read.output /Users/semo/Downloads/webclips -g
複製代碼
其餘選項也能夠這麼搞,只要是你不常常改的選項,並且即便這裏設置了,只要命令執行時傳的參數仍是優先的。
若是你不是用靜態博客工具或者 Github 參數來收集資料,你可能也用不到存儲的 Markdown 文件,若是用有道雲筆記來存 Markdown 也是很香的,我們能夠這樣傳參:
semo read https://juejin.im/post/5ee6c7ae6fb9a047e374ac47 --format=clipboard
複製代碼
若是你們以爲每次輸入命令時還得輸入地址,太麻煩,那麼不填也能夠,可是須要把地址放到剪切板
semo read --clipboard --format-clipboard
複製代碼
這樣就是一個從剪切板取地址,處理後再存到剪切板的效果了,另外,這裏輸入的剪切板不只能夠是 URL,弄一段 HTML 也是能夠的。
那必須得安排,這裏爲了保證生成 PDF 的效果,沒有采用瀏覽器內的得打印保存 PDF 的方案,而是用 Puppeteer
的特性,先渲染再導出的,跟其餘方案相比,PDF 的分頁通常不會有切割內容斷字的狀況。
semo read https://juejin.im/post/5ee6c7ae6fb9a047e374ac47 --format=pdf
複製代碼
同時,這裏也支持生成 png, jpeg 和 html 文檔。
說實話,自動解析的效果不是百分之百有效的,因此最好仍是校對和修改一下,若是你手頭沒有趁手的 'Markdown' 編輯器(雖然這種狀況幾乎不存在),這裏能夠給你提供一個
semo read https://juejin.im/post/5ee6c7ae6fb9a047e374ac47 --format=editor --proxy
複製代碼
因爲掘金的同窗開啓了防盜鏈,本地起的 Web 服務在預覽時顯示不出來圖像,加了 --proxy
就能夠了把那些圖片都代理一下,就能顯示出來了。
安排,必須安排。其實掘金有至關的小夥伴都已經用 mdnice.com
的編輯器了,這裏給你們一個離線版,用法和上面的 editor 相似。
semo read https://juejin.im/post/5ee6c7ae6fb9a047e374ac47 --format=wechat --proxy
複製代碼
這裏有點兒沒弄好,首次打開會白屏,再刷新一下就行了。
這個編輯器仍是很不錯的,若是就是想隨手謝謝 Markdown,也能夠不傳 URL
semo read --format=wechat
複製代碼
若是嫌每次輸入 --format=wechat
太麻煩,能夠把這個寫到全局配置:
semo config set format wechat -g
複製代碼
這樣之後,直接 semo read
就開啓了一個 Mardown 編輯器,是否是很爽呀?
Books
軟件讀 epub
格式的電子書這裏是基於 pandoc
從 Markdown 生成的,若是沒安裝能夠裝一下先。
brew install pandoc
semo read https://juejin.im/post/5ee6c7ae6fb9a047e374ac47 --format=editor --epub --toc
複製代碼
這裏是基於 Calibre
的 ebook-convert
生成的,須要先安裝 Calibre
semo read https://juejin.im/post/5ee6c7ae6fb9a047e374ac47 --format=editor --mobi
複製代碼
這裏有的 BUG,ebook-convert
不支持解析遠程圖片,這個很不方便,因此推薦你們先轉換成 epub
格式,而後再把 epub
轉成 mobi
ebook-convert a.epub b.mobi
複製代碼
debug
和 console
這兩種都是把解析結果輸出到命令行,用處不是很大,就不細說了。
除了掘金,也能夠試試別的網頁,好比 csdn
, 博客園
或者一些大牛的私人博客等等,不支持的主要是那些Ajax 渲染的文章,好比 infoq
。另外,能識別的也不必定識別的很完美,須要經過 read 的 domain 插件作解析的預處理和後處理,都是一些正則替換,這部分還有不少工做要作,後面會重點把你們經常使用的幾個網站的解析規則弄好,也須要你們的支持和幫助。
雖然做者在這個項目上也投入了不少時間,可是更重要的是驗證和展現 Semo
的能力,好比這裏能夠看出 Semo
能夠實現插件,以及插件的插件的效果, 不少時候 Semo
的能力擴展都是用實際的業務場景倒逼出來的,因此歡迎你們使用,和給我提意見。
--- 特別鳴謝在本文中出場的這篇掘金文章,雖然是隨便找的,也是緣分
目前沒有弄公衆號,微信羣什麼的,弄了一個釘釘羣,你們感興趣的同窗能夠加一下,有問題能夠在裏面交流。