15 个版本 (8 个不兼容版本)

0.9.0 2024 年 3 月 20 日
0.8.0 2024 年 2 月 28 日
0.6.1 2023 年 12 月 1 日
0.6.0 2023 年 11 月 30 日

#314文本处理

Download history 30/week @ 2024-04-02 1/week @ 2024-04-23 56/week @ 2024-07-02

每月 56 次下载

Apache-2.0GPL-3.0+

375KB
7.5K SLoC

Bogrep – 搜索你的书签

Latest Version Build Status codecov

Bogrep 会下载并缓存你的书签(不包含图片或视频),使用 Bogrep CLI 进行全文搜索。

bogrep -i "reed-solomon code"

Bogrep mockup

安装 Bogrep

crates.io 安装 Bogrep

# Build and install bogrep binary to ~/.cargo/bin
cargo install bogrep

要更新 bogrep 到新版本,请再次运行 cargo install bogrep。0.x 版本将不向后兼容,并预计会有破坏性变更。如果您在运行 Bogrep 时遇到问题,请删除 Bogrep 的配置目录(参见 支持的操作系统)。

github.com 安装 Bogrep

git clone [email protected]:quambene/bogrep.git
cd bogrep

# Build and install bogrep binary to ~/.cargo/bin
cargo install --path .

使用方法

设置和缓存安装到配置路径,首次运行 Bogrep 后。配置路径取决于您的操作系统(参见 支持的操作系统)。

# Import bookmarks from selected sources
bogrep import

# Fetch and cache bookmarks
bogrep fetch

# Search your bookmarks in full-text search
bogrep <pattern>

要模拟书签导入,请使用 bogrep import --dry-run

bogrep [OPTIONS] [PATTERN]
Options:
  -v, --verbose...          
  -m, --mode <MODE>         Search the cached bookmarks in HTML or plaintext format [possible values: html, text]
  -i, --ignore-case         Ignore case distinctions in patterns
  -l, --files-with-matches  Print only URLs of bookmarks with matched lines
  -h, --help                Print help
  -V, --version             Print version

获取帮助

# Check version
bogrep --version

# Print help
bogrep --help

# Print help for subcommands
bogrep config --help
bogrep import --help
bogrep fetch --help

导入书签

以下浏览器支持从书签导入

  • Firefox(JSON 和 JSONlz4 格式)
  • Chromium(JSON 格式)
  • Chrome(JSON 格式)
  • Edge(JSON 格式)
  • Safari(plist 格式)

如果书签文件没有被bogrep import检测到,您可以通过以下方式手动配置:

bogrep config --source ~/path/to/bookmarks/file

过滤书签文件夹

过滤要导入的书签文件夹。多个文件夹用逗号分隔

bogrep config --source "my/path/to/bookmarks_file.json" --folders dev,science,articles

忽略URL

忽略特定的URL。这些URL的内容将不会被获取和缓存。

忽略视频或音乐平台的URL可能很有用,因为这些平台通常不包含grep相关的文本。

# Ignore one or more urls
bogrep config --ignore <url1> <url2> ...

获取底层 URL

获取受支持网站的底层URL

bogrep config --underlying <url1> <url2> ...

例如,如果有一个特定的URL,如https://news.ycombinator.com/item?id=00000000被书签,则会获取并缓存其底层的文章。

支持的域名有

  • news.ycombinator.com
  • reddit.com

比较网站

获取多个URL的缓存和获取网站之间的差异,并显示更改

bogrep fetch --diff <url1> <url2> ...

管理内部书签

如果您需要将特定URL添加到搜索索引中,请使用bogrep add子命令。

# Add URLs to search index
bogrep add <url1> <url2> ...

# Remove URLs from search index
bogrep remove <url1> <url2> ...

# Add URLs to search index and fetch content from URLs
bogrep fetch <url1> <url2> ...

请求节流

从同一主机获取书签的操作被保守地节流,但也可以在settings.json中进行配置,通常位于您的家目录中的~/.config/bogrep

{
    "cache_mode": "text",
    "max_concurrent_requests": 100,
    "request_timeout": 60000,
    "request_throttling": 3000,
    "max_idle_connections_per_host": 10,
    "idle_connections_timeout": 5000
}

request_throttling是同一主机请求之间的等待时间(毫秒)。

为了加快获取速度,将max_concurrent_requests设置为例如1000。可用的最大套接字数量取决于您的操作系统。运行ulimit -n以显示系统允许的最大打开套接字数量。

有关可用设置,请参阅https://docs.rs/bogrep/latest/bogrep/struct.Settings.html

支持的操作系统

Bogrep假设并创建配置路径在

  • $HOME/.config/bogrep,适用于Linux,
  • $HOME/Library/Application Support/bogrep,适用于macOS,
  • C:\Users\<Username>\AppData\Roaming/bogrep,适用于Windows,

在您的家目录中存储settings.jsonbookmarks.jsoncache文件夹。

您可以通过环境变量BOGREP_HOME配置配置路径。

测试

# Run unit tests and integration tests
cargo test

# Run unit tests
cargo test --lib

# Run integration tests
cargo test --test '*'

依赖关系

~19-33MB
~532K SLoC