上一篇准备了两年的 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
的能力扩展都是用实际的业务场景倒逼出来的,因此欢迎你们使用,和给我提意见。
--- 特别鸣谢在本文中出场的这篇掘金文章,虽然是随便找的,也是缘分
目前没有弄公众号,微信群什么的,弄了一个钉钉群,你们感兴趣的同窗能够加一下,有问题能够在里面交流。