#书签 #toml #rocket #工具 #搜索引擎

nightly app bun

智能书签工具,通过运行自定义命令从浏览器地址栏打开网址

1 个不稳定版本

0.1.0 2020年7月16日

#20 in #书签

GPL-3.0-or-later

13KB
242

bunny

智能书签工具,通过运行自定义命令从浏览器地址栏打开网址

是什么?

"智能书签"?这是什么?我也一样。想象一下,这是一个非常快、非常优雅(如果你愿意的话)的方式将网址输入到浏览器中。你不需要写 reddit.com/r/programmerhumor,你只需写 rd r programmerhumor 就可以轻松地被重定向到你喜欢的娱乐。

这受到了以下 Facebook的文章 的启发

如何使用

  • 克隆仓库(尚未在crates.io上发布)
  • 构建它
  • 运行服务器
  • 为浏览器创建一个自定义搜索引擎并将其指向服务器

服务器在主目录(~/bookmarks.toml)中查找包含所有书签的文件

编写书签(bookmarks.toml

该引擎很简单,所有内容都是用toml格式编写的,以便于阅读

  • 书签文件由books组成,它们可以有任何你选择的名称、一个别名和一个默认网址
[twitter]
alias = "tw"
default = "https://twitter.com"
  • 文件中的每个book都有一个pages。每个页面都有一个名称、一个前缀和一个网址
[twitter]
alias = "tw"
default = "https://twitter.com"

[twitter.pages]
search = { prefix = "NONE", url = "https://twitter.com/search?q={encoded}" }
profile = { prefix = "@", url = "https://twitter.com/{raw}" }
  • 每个url都可以包含特殊键,用于处理传递给命令的数据。

考虑以下命令:tw rust lang。以下是键和它们对给定数据的处理。prefix将被移除,我们剩下处理rust lang

  • {default} - 将替换为book的默认网址 => https://twitter.com
  • {encoded} - 将对数据进行URL编码 => rust%20lang
  • {raw} - 将原始数据传递而不进行编码 => rust lang
  • {0} - 将传递数据的第一个 => rust
  • {1} - 将传递数据的第二个 => lang
    • 目前总共有多达 4 个段,因为感觉更多的段数会太多。这些可以用来创建更多自定义命令,例如,一个 Reddit 命令
    [reddit]
    alias = "rd"
    default = "https://reddit.com"
    
    [reddit.pages]
    whatever = { prefix = "NONE", url = "https://reddit.com/{0}/{1} }
    
    • 上面的命令可以作为 rd r programmerhumor 来访问一个 subreddi,或者作为 rd u programmerhumor 来访问一个用户

前缀

URL 前缀可以是任何你想要的内容,它用于区分每个命令。你可以在搜索时使用 -s,或者如果不喜欢快捷键,可以使用完整的 search

你甚至不需要在前缀和命令之间使用空格.

-sheyooo 如果前缀被定义为 -s,则会被分割成 -s heyooo

还有一个特殊的前缀,NONE,表示命令不会期望前缀,并将所有给定数据编码到 URL 中。

完整的示例可以在 示例文件 中查看

依赖

~9MB
~186K SLoC