简介
这是一个很小的本地程序,我们开发这个程序增强 Maoxian 的能力。
注意: 如果你只是为了修改 MaoXian 的默认下载目录,则完全没有必要安装『本地程序』,请查看这里查看如何修改默认下载位置。
公告
ruby 的最新版本(2.7.0)对之前的接口有一些不兼容,这会导致裁剪网页的时候,图片无法下载成功。如果你安装的 ruby 是 2.7.0
以上,则需要安装 0.2.3
以上的「本地程序」才能正常使用。
主要功能
- 默认
- 下载文件 (用于绕过浏览器的下载功能,从而避免与下载管理软件发生冲突)
- 删除裁剪信息 (让我们可以删除裁剪历史的同时,删除其对应的文件)
- 刷新裁剪历史 (当你有两个裁剪源(比如:一台电脑上的两个浏览器或两台电脑上的浏览器)并且想让浏览器上的裁剪历史保持最新的时候,这一项非常有用。)
- Vnote
- 以 Vnote 的存储格式,存储裁剪下来的 Markdown 文件。当你对接上 Vnote 后,就可以在 Vnote 上管理你裁剪下来的文件。详情请看这里
安装
安装依赖
该软件依赖于 Ruby, 所以我们要先安装 Ruby,请安装 2.4.1
以上版本。
Linux / Mac 用户
很可能系统就自带了 ruby,请用命令 ruby -v
查看。罗嗦一句,如果你是命令行新手,不知道如何运行命令。没关系,每个人都是从新手过来的,不要看到命令行就害怕。请利用搜索引擎学习如何运行命令(比如:搜索 Mac 系统如何运行命令),再走下面的流程。
如果输出的是 ruby 的版本信息,则说明你的系统已经安装了 ruby, 否则请到 ruby 官网 进行安装
Windows 用户
请到 这里 下载安装包,提醒一下,这里直接下载 WITHOUT DEVKIT
下面的版本即可。安装的时候确保勾选上
- 把 ruby 添加到环境变量(该项必须勾选,否则「本地程序」无法正常启动)。
- 使用 UTF-8 作为外部编码 (强烈建议你勾选该项,这样你在跨系统同步文件时候,才不会发生乱码问题)。
最好在安装成功后,验证一下。通过 Win+R 调出运行窗口 > 输入 cmd
回车 > 输入 ruby -v
回车 。如果输出的是 ruby 的版本信息,则说明 ruby 安装成功,并且已经添加到环境变量。
下载软件包
请根据你的系统信息和浏览器类型, 下载对应的软件包
当前版本 0.2.12
- Linux
- Mac
- Windows
解压软件包
这一步骤里的解压位置,即『本地程序』的安装位置,需保证浏览器有权限访问该位置。
- Linux 用户,请解压到用户目录下,以避免权限相关的问题。以下命令解压到
~/.local/apps
目录下,你可自行调整其位置。
mkdir -p ~/.local/apps
unzip ~/Downloads/maoxian-web-clipper-native-linux-chromium.zip -d ~/.local/apps/maoxian-web-clipper-native
- Mac 用户,请解压到
/Applications
目录,以避免权限相关问题。
unzip ~/Downloads/maoxian-web-clipper-native-linux-chromium.zip -d /Applications/maoxian-web-clipper-native
- Windows 用户
额,使用任何你喜欢的解压软件,把它解压到用户目录下的某个文件夹(由于是直接打包的文件,没有打包根文件夹), :D
安装软件
注: 如果你的浏览器是基于 Chromium 或 Firefox 开发的浏览器,请使用这里的安装教程。
进入你的『本地程序』文件夹里,然后:
- 在 Linux 或 Mac 上,直接运行
./install.sh
进行安装 - 在 Windows 上,直接双击
install.bat
(注意:你点击后,会发现有个命令窗口跳出来,程序会进行安装,安装完成后会显示:”press any key to continue” 则直接按下 Enter 键就好了。 )
这一步骤做的事情是:把『本地程序』的当前位置告知给浏览器。当 MaoXian 扩展需要和『本地程序』交互时,浏览器就可以找到『本地程序』的位置。所以安装过后,就不要移动,删除或重命名『本地程序』文件夹了。 如果你非要移动,或重命名『本地程序』文件夹,你需要再运行一遍安装脚本,告诉浏览器新的『本地程序』位置。
配置下载路径
在开始使用之前,我们需要先配置,下载路径,也就是裁剪下来的文件存储的目录(等同于浏览器的下载目录)
编辑 config.yaml
的 data_dir
的值, (随便用一个文本编辑器就可编辑)
config.yaml
这个文件必须是 UTF-8 的编码格式。 如果你是在 Windows 上的话,别用记事本打开,找一个能正确处理换行符的编辑器(比如 notepad++
)。并且确保你保存的编码格式为 UTF-8 (有的编辑器在 Windows 上的默认编码格式不是 UTF-8,这点需要注意)。
注意: 配置的下载路径必须真实存在,『本地程序』启动时会检查该路径,不存在,则启动失败
Linux / Mac 例子
# config.yaml
environment: 'production'
data_dir: '/home/jack/clippings'
# avariable handler: 'default', 'vnote_v1'
msg_handler: 'default'
windows 例子
# config.yaml
environment: 'production'
data_dir: 'e:\jack\clippings'
msg_handler: 'default'
注意上方的 msg_handler
目前支持兩個值 default
和 vnote_v1
。如果你要對接 Vnote ,那麼請點擊這裏,查看如何對接。
查看状态并启用
请重启你的浏览器后,到 扩展设置页面 > 本地程序 小节查看当前状态。
- 请先查看『权限』那一小节,你需要授权一个权限,根据页面提示,如果还没有授权,则点击『授予权限』按钮进行授权。
- 授权成功后,查看『当前状态』那一小节,如果能看到 「本地程序」的版本号,则 MaoXian 扩展已经和 「本地程序」对接上了。如果显示的是错误信息,请查看下方 常见错误 小节,排查错误。
- 确保对接上后,请勾选下方的 启用该处理程序 。
在两者对接上,并且「本地程序」已启用后。就可以使用「本地程序」了,比如到 扩展设置页面 > 存储设置 选用「本地程序」来下载裁剪结果。
注: 如果你需要在浏览器上预览你裁剪下来的文件, 我们强烈建议你 允许 MaoXian 访问本地网址,以便可以方便地查看裁剪下来的文件。
卸载软件
Linux 或 Mac 直接运行 ./uninstall.sh
脚本,再删除掉整个程序目录。
在 Windows 上,直接双击 uninstall.bat
,再删除掉整个程序目录。
更新软件
- 先备份 Native App 目录下的
config.yaml
(复制到别的地方) - 卸载 Native App
- 在本页面下载最新版本,再解压软件包
- 用你备份的
config.yaml
覆盖解压出来的文件夹的 config.yaml. - 安装新的程序
运用最新的配置
有些用户更改了 config.yaml 里的配置,却发现扩展并没有马上应用最新的配置信息。这是属于正常现象,因为『本地程序』只在浏览器启动它时,才会去读取配置。你可以到 设置页面 > 本地程序
那里,点击『重新加载』按钮来加载最新的配置。你也可以通过重启浏览器的方法加载最新配置。
常见问题
一般情况下,当你的 ruby 版本是正确的(大于2.4.1),并且已经将其添加到环境变量里。并且配置文件 config.yaml 里面的存储路径是真实存在的路径,「本地程序」会和 MaoXian 对接成功。如果你仔细走完了上面的安装流程,还是无法对接上的话。 请检查日志文件:tmp/app.log (在安装目录下) 是否存在,若存在则可以使用任何文本编辑器打开它进行进一步排查。
在进行下面检查之前,你得确保你至少运行过安装脚本,并且到 扩展设置页面 > 本地程序 页面查看过状态信息,并且其显示的是某个错误信息。
情况A:可以找到日志文件
找到日志文件意味着:「本地程序」已经由浏览器启动,并产生日志。
如果在日志文件中,发现错误:”(./config.yaml): invalid trailing UTF-8 octet at line xxx column xxx“,则表示你的配置文件的编码格式不是 UTF-8 ,则重新把配置文件 config.yaml 另存为 UTF-8 编码格式,即可修复。修复完后,在 扩展设置 > 本地程序 页面上,点击『重新加载』按钮。
如果在日志文件中,发现错误: “Config Invalid, data_dir not exist: xxxxx” ,则表示你配置文件 config.yaml 里面的 data_dir 配置的路径,在你的系统中是不存在的。则你需要新建对应的文件夹或者配置一个存在的路径。修复完后,在 扩展设置 > 本地程序 页面上,点击『重新加载』按钮。
若遇到其他错误信息,请寻求帮助
情况B:找不到日志文件
请根据 扩展设置 > 本地程序 页面上的错误信息,对应下文进行排查。
Firefox (火狐)浏览器
错误信息:
ErrorMessage: NativeApp: DisconnectErr:No such native application maoxian_web_clipper_native
可能原因:
- 你还没有安装「本地程序」(即没有运行安装脚本),【请先安装】
- 你的浏览器是基于 Firefox 开发的浏览器,并且它没有对一些目录做兼容,你需要按照这个教程来:基于Chromium 或 Firefox 开发的浏览器如何安装『本地程序』。
错误信息:
ErrorMessage: NativeApp: DisconnectErr:An unexpected error occurred
可能原因:
- 你安装过后,「本地程序」文件夹的位置或名字发生了变化。 【请再运行一次安装脚本】
错误信息:
ErrorMessage: Unknown Error
可能原因:
- 浏览器找不到 ruby 【请确保 ruby 已安装,并已经添加到环境变量,详见:确定和解决浏览器找不到 ruby】
- 浏览器无权访问「本地程序」【请检查「本地程序」的路径权限,详见:确定是否「本地程序」路径有权限问题】
错误信息:
ErrorMessage: LogErr, Permission denied @ rb_sysopen - /xxx/xxx/xxx/tmp/app.log
原因:
- ruby 无权限创建 logger 文件【请检查「本地程序」的路径权限】
Chromium/Chrome (谷歌)浏览器
错误信息:
ErrorMessage: this.API.connectNative is not a function
原因:
- 有时候 Chromium/Chrome 在你授权给 「本地程序」通信的权限后,该权限无法立即生效。【请重启浏览器,以使其生效】
错误信息:
ErrorMessage: NativeApp: DisconnectErr:Specified native messaging host not found.
可能原因:
- 你还没有安装「本地程序」(即没有运行安装脚本),【请先安装】
- 你安装过后,「本地程序」文件夹的位置或名字发生了变化。 【请再运行一次安装脚本】
- 你的浏览器是基于 Chromium 开发的浏览器,并且其没有对一些目录做兼容,你需要按照这个教程来:基于Chromium 或 Firefox 开发的浏览器如何安装『本地程序』。
错误信息:
ErrorMessage: NativeApp: DisconnectErr:Native host has exited.
可能原因:
- 浏览器找不到 ruby 【请确保 ruby 已安装,并已经添加到环境变量,详见:确定和解决浏览器找不到 ruby】
- 浏览器无权访问「本地程序」【请检查「本地程序」的路径权限,详见:确定是否「本地程序」路径有权限问题】
错误信息:
ErrorMessage: LogErr, Permission denied @ rb_sysopen - /xxx/xxx/xxx/tmp/app.log
原因:
- ruby 无权限创建 logger 文件【请检查「本地程序」的路径权限】
确定和解决浏览器找不到 ruby
1) ruby 安装不正确。
请确保当你运行 ruby -v
的时候,可以得到正确的 ruby 版本。如若不是,则重新安装即可。请确保 ruby 已经添加到环境变量里。
2) 虽然 ruby 安装成功,但是浏览器无法找到它。
这种情况一般发生在 Mac 或 Linux 用户身上,如果你采用的是源码安装的方式,你可能会碰到此问题。
如何确认
可以通过从命令行启动浏览器的方式来确认,比如运行 /usr/bin/chromium-browser
命令,然后再到 扩展设置页面 > 本地程序 页面,再查看命令行的输出,可以看到类似 “/usr/bin/env: ‘ruby’: No such file or directory” 这样的错误信息。
如何解决
把 main.rb (安装目录下) 第一行的 “/usr/bin/env ruby” 改成 ruby 的绝对路径,比如 “/home/jack/ruby-2.5.0/bin/ruby”。 或者是创建一个软链接到 /usr/bin 目录下,比如: ln -s /home/jack/ruby-2.5.0/bin/ruby /usr/bin/ruby
。
确定是否「本地程序」路径有权限问题
0)先关闭浏览器。
1)找到浏览器的位置,比如在 Linux 上通过 whereis chromium
。
2) 使用命令行的方式启动浏览器,如:运行命令 /usr/bin/chromium
,启动浏览器,再到 MaoXian 设置页面查看「本地程序」的状态,观察到错误后,查看命令行有没有相关错误信息。
如果有权限问题,一般可以观察到: Operation not permitted
或者 Permission denied
语句,如下面的 Chromium 的命令行输出:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Operation not permitted
ruby: Operation not permitted -- /Users/test/Downloads/maoxian-web-clipper-native/main.rb (LoadError)
一般为整个路径的某个目录权限不允许,则把本地程序复制到别的地方(参考解压软件包那一小节),即可修复。
寻求帮助?
- 请到 项目 issue 页 ,先进行搜索,看有无相关问题。
- 如果搜索完还无法解决,请在 项目 issue 页 ,给开发者提个issue,或者发邮件到(i [DOT] mika [AT] tutanota [DOT] com 请将 [DOT] 替换为英文句号:”.”,将[AT] 替换为邮件符号:”@”,并删除所有空格),若你无法访问项目 issue 页面(无法搜索相关问题),也可通过发送邮件寻求帮助。
- 为了更有效地沟通,请提供以下信息:
- 环境信息:系统名字,浏览器名字,ruby 版本,「本地程序」版本。
- 设置 > 本地程序 页面上的错误信息。
- 能否查看到日志文件。若有,记得把日志内容带上。