Project Icon

buku

命令行书签管理器和文本化个人网络

buku提供命令行界面管理书签,构建个人文本网络。主要功能包括浏览器书签导入、自动抓取网页信息、编辑器操作、多种搜索选项、失效链接快照等。采用可携带合并的数据库,保护用户隐私。此外还有图形界面和浏览器插件等扩展项目。

buku

最新发布 可用性 PyPI 构建状态 文档状态 隐私意识 许可证

buku运行中!

buku运行中!

简介

buku是一个功能强大的书签管理器和个人文本迷你网络。

对于喜欢图形界面的用户,bukuserver在本地网络服务器上提供了一个可浏览的前端界面。

当我开始编写它时,我找不到一个灵活的命令行解决方案,它具有私密、便携、可合并的数据库,同时还能与图形界面无缝集成。因此,buku应运而生。

buku可以从浏览器导入书签,或从网络获取URL的标题、标签和描述。使用你喜欢的编辑器来添加、编辑和更新书签。通过多种搜索选项(包括正则表达式和深度扫描模式)即时搜索书签,这对于处理URL特别方便。

它可以在Wayback Machine上查找损坏的链接。还有一个彩蛋功能可以随机revisit书签。

它不会进行任何跟踪、隐藏历史记录、过时记录、使用分析或定位。

要立即开始使用,请跳转到快速入门部分。buku拥有最好的文档之一。man页面附带示例。关于内部细节,请参考操作说明

buku也是一个库!有几个相关项目,包括一个浏览器插件。

目录

特性

  • 存储书签,自动获取标题、标签和描述
  • 自动从Firefox、Google Chrome、Chromium和MS Edge导入
  • 在浏览器中打开书签和搜索结果
  • 缩短、展开URL
  • 从Wayback Machine浏览缓存页面
  • 文本编辑器集成
  • 轻量级、简洁界面,自定义颜色
  • 强大的搜索选项(正则表达式、子字符串...)
  • 持续搜索,即时切换模式
  • 可移植、可合并的数据库,便于系统间同步
  • 从/向HTML、XBEL、Markdown、RSS或Orgfile导入/导出书签
  • 使用重定向(>>、>、<<)进行智能标签管理
  • 多线程全数据库刷新
  • 手动加密支持
  • Shell补全脚本,带示例的man页面
  • 注重隐私(无未经确认的用户数据收集)

安装

依赖

功能依赖
语言, SQLitePython 3.8+
HTTPScertifi, urllib3
加密cryptography
HTMLbeautifulsoup4, html5lib

要将URL复制到剪贴板,buku在Linux上使用xsel(或xclip),在OS X上使用pbcopy(默认安装),在Windows上使用clip(默认安装),在Termux(Android的终端模拟器)上使用termux-clipboard,在Wayland上使用wl-copy。如果缺少X11,则识别GNU Screen或tmux的复制粘贴缓冲区。

从包管理器安装

要从PyPI安装buku及其所有依赖项,运行:

# pip3 install buku

你也可以从包管理器安装buku。如果可用版本过时,请尝试其他安装方法。

打包状态(展开)


打包状态

未列出的打包方式:


PyPI (pip3 install buku)
● Termux (pip3 install buku)

发布包

Arch Linux、CentOS、Debian、Fedora、openSUSE Leap和Ubuntu系统可获取自动生成的软件包(仅包含命令行界面组件),这些软件包与最新稳定版本相对应。

注意:CentOS的软件仓库中可能没有python3-beautifulsoup4包。请使用pip3安装。

从源代码安装

如果您已安装git,请克隆此仓库。否则,请下载最新稳定版本开发版本风险较高)。

安装依赖项。例如,在Ubuntu上:

$ apt-get install ca-certificates python3-urllib3 python3-cryptography python3-bs4

将命令行界面组件安装到默认位置(/usr/local):

$ sudo make install

要卸载,请运行:

$ sudo make uninstall

如果您想安装到其他位置,可以使用PREFIX参数。

独立运行

buku是一个独立的工具。在包含目录中运行:

$ chmod +x buku
$ ./buku

Shell自动补全

Bash、Fish和Zsh的Shell自动补全脚本可以在auto-completion/的相应子目录中找到。请参阅您所使用的Shell的手册以获取安装说明。

使用方法

命令行选项

用法:buku [选项] [关键词 [关键词 ...]]

类似文本迷你网站的书签管理器。

位置参数:
      关键词              搜索关键词

常规选项:
      -a, --add 网址 [标签, ...]
                           为网址添加书签,标签用逗号分隔
      -u, --update [...]   更新现有书签的字段
                           接受索引和范围
                           如果没有编辑选项,则刷新标题和描述
                           如果没有参数:
                           - 与搜索一起使用时更新结果
                           - 否则刷新所有标题和描述
      -w, --write [编辑器|索引]
                           在编辑器中编辑并添加新书签
                           或在EDITOR中编辑指定索引的书签
                           如果索引为-1,则编辑最后一个书签
                           如果没有参数,在EDITOR中编辑新书签
      -d, --delete [...]   从数据库中删除书签
                           接受索引或单个范围
                           如果没有参数:
                           - 与搜索一起使用时删除结果
                           - 否则删除所有书签
      -h, --help           显示此信息并退出
      -v, --version        显示程序版本并退出

编辑选项:
      --url 关键词        书签链接
      --tag [+|-] [...]    用逗号分隔的标签
                           如果没有参数,则清除书签的标签集
                           '+'追加到标签集,'-'从标签集中移除
      --title [...]        书签标题;如果没有参数:
                           -a:不设置标题,-u:清除标题
      -c, --comment [...]  书签的注释或描述
                           如果没有参数,则清除描述
      --immutable N        在自动刷新期间禁用网页获取
                           N=0:可变(默认),N=1:不可变

搜索选项:
      -s, --sany [...]     查找与任何关键词匹配的记录
                           这是默认的搜索选项
      -S, --sall [...]     查找与所有关键词匹配的记录
                           特殊关键词 -
                           "blank":标题/标签为空的条目
                           "immutable":标题已锁定的条目
      --deep               匹配子字符串('pen'匹配'opens')
      -r, --sreg 表达式    运行正则表达式搜索
      -t, --stag [标签 [,|+] ...] [- 标签, ...]
                           按标签搜索书签
                           使用','查找与任何标签匹配的条目
                           使用'+'查找与所有标签匹配的条目
                           排除' - '后标签的条目
                           如果没有搜索关键词,则列出所有标签
      -x, --exclude [...]  忽略与指定关键词匹配的记录

加密选项:
      -l, --lock [N]       使用N次迭代(默认8次)加密数据库
      -k, --unlock [N]     使用N次迭代(默认8次)解密数据库

高级功能: --ai 自动从网络浏览器导入书签 Firefox、Chrome、Chromium、Vivaldi、Edge -e, --export 文件 将书签导出为Firefox格式的HTML 如果文件以'.xbel'结尾则导出XBEL格式 如果文件以'.md'结尾则导出Markdown格式 格式:[标题](https://github.com/jarun/buku/blob/master/url 如果文件以'.org'结尾则导出Orgfile格式 格式:*[[url][标题]] :标签: 如果文件以'.rss'结尾则导出RSS订阅 如果文件以'.db'结尾则导出buku数据库 如果选择搜索结果,则与搜索结果合并 -i, --import 文件 从文件导入书签 支持.html .xbel .json .md .org .rss .db格式 -p, --print [...] 按索引、范围显示记录详情 如果没有参数则打印所有书签 -n显示最后n条结果(类似tail) -f, --format N 限制-p或JSON搜索输出的字段 N=1:URL;N=2:URL、标签;N=3:标题; N=4:URL、标题、标签;N=5:标题、标签; N0(10、20、30、40、50)省略数据库索引 -j, --json [文件] -p和搜索的JSON格式输出。 如果缺少参数则打印到标准输出。 否则写入指定文件 --colors 颜色 设置五字母字符串的输出颜色 --nc 禁用彩色输出 -n, --count N 每页显示N条结果(默认10) --np 不显示子提示符,运行后退出 -o, --open [...] 按索引和范围浏览书签 如果没有参数则打开随机书签 --oa 立即浏览所有搜索结果 --replace 旧 新 将所有旧标签替换为新标签 如果未指定新标签则删除旧标签 --url-redirect 获取URL时,使用永久重定向后的URL (与--export结合时,旧URL作为额外元数据包含) --tag-redirect [标签] 获取导致永久重定向的URL时, 按指定模式添加标签 (如果未指定则使用'http:{}') --tag-error [标签] 获取导致HTTP错误的URL时, 按指定模式添加标签 (如果未指定则使用'http:{}') --del-error [...] 获取URL导致任何(给定的) HTTP错误时,删除/不添加它 --export-on [...] 导出受上述选项影响的记录, 包括删除的信息 (需要--update和--export;可以 提供特定的HTTP响应过滤器) --shorten 索引|URL 从tny.im服务获取缩短的url --expand 索引|URL 展开tny.im缩短的url --cached 索引|URL 从Wayback Machine浏览缓存页面 --offline 不连接网络添加书签 --suggest 添加书签时显示相似标签 --tacit 减少详细程度,跳过一些确认 --nostdin 不等待输入(必须是第一个参数) --threads N 完全刷新时的最大网络连接数 默认N=4,最小N=1,最大N=10 -V 检查可用的最新上游版本 -g, --debug 显示调试信息和详细日志

符号: > url + 评论 # 标签

提示键: 1-N 浏览搜索结果索引和/或范围 O [id|范围 [...]] 在GUI浏览器中打开搜索结果/索引 如果没有参数则切换尝试GUI浏览器 a 在浏览器中打开所有结果 s 关键词 [...] 搜索包含任一关键词的记录 S 关键词 [...] 搜索包含所有关键词的记录 d 匹配子字符串('pen'匹配'opened') r 表达式 运行正则表达式搜索 t [标签, ...] 按标签搜索;如果没有参数则显示标签列表 g 标签列表 id|范围 [...] [>>|>|<<] [记录id|范围 ...] 追加、设置、删除(全部或特定)标签 如果省略记录则按标签列表id搜索 n 显示搜索结果的下一页 o id|范围 [...] 按索引和/或范围浏览书签 p id|范围 [...] 按索引和/或范围打印书签 w [编辑器|id] 编辑并添加或更新书签 c id 将搜索结果索引处的URL复制到剪贴板 ? 显示此帮助 q, ^D, 连续两次回车 退出buku


#### 颜色

`buku`支持自定义颜色。有关如何[自定义颜色](https://github.com/jarun/buku/wiki/Customize-colors)的更多详细信息,请访问wiki页面。

### 快速入门

1. 将`VISUAL`或`EDITOR`导出指向你喜欢的编辑器。请注意,`VISUAL`优先于`EDITOR`。
2. 创建一个更方便的快捷方式。

       alias b='buku --suggest'
3. 自动从浏览器导入书签。请事先退出相关浏览器以确保数据库未被锁定。

       b --ai
4. 手动添加书签(实践操作)。

       b -w
5. 列出带数据库索引的书签。

       b -p
6. 关于GUI和浏览器集成(或与你喜欢的书签管理服务同步书签),请参阅wiki页面上的[系统集成](https://github.com/jarun/buku/wiki/System-integration)。
7. 使用fzf进行模糊搜索并在Firefox中打开选择的快速(bash/zsh)命令:

       firefox $(buku -p -f 10 | fzf)
       firefox $(buku -p -f 40 | fzf | cut -f1)

   显示书签预览的POSIX脚本:

   ```sh
   #!/usr/bin/env sh

   url=$(buku -p -f4 | fzf -m --reverse --preview "buku -p {1}" --preview-window=wrap | cut -f2)

   if [ -n "$url" ]; then
       echo "$url" | xargs firefox
   fi

示例

  1. 编辑并添加一个书签:

    $ buku -w
    $ buku -w 'gedit -w'
    $ buku -w 'macvim -f' -a https://ddg.gg 搜索引擎, 隐私
    

    第一个命令从环境变量EDITOR中选择编辑器。第二个命令以阻塞模式打开gedit。第三个命令以-f选项打开macvim,并在模板中填充URL和标签。

  2. 添加一个简单的书签: $ buku --nostdin -a https://github.com/

  3. GitHub:让我们从这里开始构建 · GitHub

https://github.com/

  • GitHub是超过9400万开发者共同塑造软件未来的地方。为开源社区做贡献,管理您的Git仓库,像专业人士一样审核代码,跟踪错误和功能,驱动您的CI/CD和DevOps工作流程,并在提交代码之前确保其安全性。

$ buku --nostdin -a https://github.com/ [错误] URL [https://github.com/] 已存在于索引2648

>: URL, +: 评论, #: 标签

标题、描述和标签将从网站获取。Buku只存储唯一的URL,如果URL已存在于数据库中,将会报错: 3. 添加一个带有标签search engineprivacy评论Search engine with perks的书签,并从网络获取页面标题

$ buku -a https://ddg.gg search engine, privacy -c Search engine with perks 336. DuckDuckGo

https://ddg.gg

  • Alternative search engine with perks

privacy,search engine

其中,>: URL, +: 评论, #: 标签 4. 添加一个带有标签search engineprivacy以及不可变自定义标题DDG的书签:

$ buku -a https://ddg.gg search engine, privacy --title 'DDG' --immutable 1 336. DDG (L)

https://ddg.gg

privacy,search engine

注意URL必须在标签之前。 5. 添加一个无标题的书签(更新时也适用):

$ buku -a https://ddg.gg search engine, privacy --title 6. 从编辑器编辑并更新书签:

$ buku -w 15012014 这将在编辑器中打开现有书签的详细信息以进行修改。必须设置环境变量EDITOR。 7. 使用新的URL、标签和评论更新索引15012014处的现有书签,从网络获取标题:

$ buku -u 15012014 --url http://ddg.gg/ --tag web search, utilities -c Private search engine 8. 仅为索引15012014处的书签获取并更新标题

$ buku -u 15012014 9. 仅更新评论为索引15012014处的书签:

$ buku -u 15012014 -c this is a new comment 也适用于--url、--title和--tag。 10. 将带有标签tag 1tag 2的书签导出为HTML、XBEL、Markdown、Orgfile或新数据库:

$ buku -e bookmarks.html --stag tag 1, tag 2 $ buku -e bookmarks.xbel --stag tag 1, tag 2 $ buku -e bookmarks.md --stag tag 1, tag 2 $ buku -e bookmarks.org --stag tag 1, tag 2 $ buku -e bookmarks.db --stag tag 1, tag 2 如果不选择搜索,则导出所有书签。 11. 从HTML、XBEL、Markdown或Orgfile导入书签:

$ buku -i bookmarks.html $ buku -i bookmarks.xbel $ buku -i bookmarks.md $ buku -i bookmarks.org $ buku -i bookmarks.db 12. 仅删除索引15012014处书签的评论

$ buku -u 15012014 -c 也适用于--title和--tag。不删除书签就无法删除URL。 13. 更新或刷新整个数据库的网页标题:

$ buku -u $ buku -u --tacit(仅显示失败和异常) 此操作可以通过解析获取的页面来更新非不可变书签的标题或描述字段。只有当获取的字段非空时才会更新字段。标签保持不变。 14. 删除索引15012014处的书签:

$ buku -d 15012014 索引15012020移至15012014 最后的索引被移至删除的索引以保持数据库紧凑。添加--tacit可以无需确认直接删除。 15. 删除所有书签:

$ buku -d 16. 删除一个范围或列表的书签:

$ buku -d 100-200 $ buku -d 100 15 200 17. 在URL、标题或标签中搜索任意关键词kerneldebugging的书签:

$ buku kernel debugging $ buku -s kernel debugging 18. 在URL、标题或标签中搜索所有关键词kerneldebugging的书签:

$ buku -S kernel debugging 19. 搜索标记为general kernel concepts的书签:

$ buku --stag general kernel concepts 20. 搜索匹配任意标签kerneldebugginggeneral kernel concepts的书签:

$ buku --stag kernel, debugging, general kernel concepts 21. 搜索匹配所有标签kerneldebugginggeneral kernel concepts的书签:

$ buku --stag kernel + debugging + general kernel concepts 22. 搜索匹配关键词helloworld,排除关键词reallife,匹配标签kerneldebugging,但排除标签general kernel conceptsbooks的书签:

$ buku hello world --exclude real life --stag 'kernel + debugging - general kernel concepts, books' 23. 按字母顺序列出所有唯一标签

$ buku --stag 24. 执行搜索并更新结果:

$ buku -s kernel debugging -u --tag + linux kernel 25. 执行搜索并删除结果:

$ buku -s kernel debugging -d 26. 使用自定义迭代次数(15)生成密钥来加密或解密数据库:

$ buku -l 15 $ buku -k 15 一次锁定和解锁实例必须指定相同的迭代次数。如果省略,默认为8。 27. 显示索引15012014和范围20-30、40-50的书签详细信息

$ buku -p 20-30 15012014 40-50 28. 显示最后10个书签的详细信息:

$ buku -p -10 29. 从数据库显示所有书签的实际索引:

$ buku -p $ buku -p | more 30. 替换标签'old tag'为'new tag':

$ buku --replace 'old tag' 'new tag' 31. 从数据库删除标签'old tag': $ buku --replace '旧标签'

  1. 添加(或删除)标签 '标签1'、'标签2'到(或从)索引为15012014的书签的现有标签中:

    $ buku -u 15012014 --tag + 标签1, 标签2 $ buku -u 15012014 --tag - 标签1, 标签2

  2. 在浏览器中打开URL索引为15012014的书签:

    $ buku -o 15012014

  3. 列出没有标题或标签的书签以便整理:

    $ buku -S blank

  4. 列出不可变标题的书签:

    $ buku -S immutable

  5. 缩短URL www.google.com 和索引为20的URL:

    $ buku --shorten www.google.com $ buku --shorten 20

  6. 在提示符下添加、删除标签(左侧为标签列表索引,右侧为书签索引):

    // 将标签列表索引4和6-9的标签添加到书签索引5和2-3的现有标签中 buku (? 获取帮助) g 4 9-6 >> 5 3-2 // 将标签列表索引4和6-9的标签设置为书签索引5和2-3的标签 buku (? 获取帮助) g 4 9-6 > 5 3-2 // 删除书签索引5和2-3的所有标签 buku (? 获取帮助) g > 5 3-2 // 从书签索引5和2-3的标签中删除标签列表索引4和6-9的标签 buku (? 获取帮助) g 4 9-6 << 5 3-2

  7. 列出带有彩色输出的书签:

    $ buku --colors oKlxm -p

  8. 在跟随所有永久重定向后添加书签,但仅当服务器没有响应错误(且没有网络故障)时:

    $ buku --add http://wikipedia.net --url-redirect --del-error 2. 维基百科

    https://www.wikipedia.org/

    • 维基百科是一个免费的在线百科全书,由世界各地的志愿者创建和编辑,由维基媒体基金会托管。
  9. 如果服务器响应永久重定向,则添加带有标签http redirect的书签,或在错误响应时添加形如http 404的标签:

    $ buku --add http://wikipedia.net/notfound --tag-redirect 'http redirect' --tag-error 'http {}' [错误] [404] 未找到 3. 未找到

    http://wikipedia.net/notfound

    http 404,http redirect

  10. 更新所有匹配搜索的书签,如果服务器响应永久重定向则更新URL,如果服务器响应HTTP错误400、401、402、403、404或500则删除书签,或在出现任何其他HTTP错误时添加形如http:{}的标签;然后将受此类更改影响的书签导出到HTML文件中,标记已删除的记录以及被重定向替换的旧URL。

    $ buku -S ://wikipedia.net -u --url-redirect --tag-error --del-error 400-404,500 --export-on --export backup.html

  11. 更多帮助:

    $ buku -h $ man buku

自动化

可以使用expect自动化交互工作流。问题#368有一个关于自动导入自动化的工作示例。

故障排除

编辑器集成

使用默认只维护一个实例并从其他实例立即返回的GUI编辑器时,可能会遇到问题。使用适当的编辑器选项以在打开新文档时阻塞调用者。有关gedit的问题,请参见问题#210

协作者

版权所有 © 2015-2024 Arun Prakash Jana

gitter聊天

贡献

缺少某个功能?这里有一个持续更新的待办事项列表,列出了已确定的任务。欢迎贡献!请遵循PR指南

另请参阅我们的文档 稳定文档

相关项目

  • bukubrow, 用于浏览器集成的WebExtension
  • oil, 边搜索边输入的命令行前端
  • buku_run, rofi前端
  • pinku, 一个Pinboard到buku的导入工具
  • buku-dmenu, 一个简单的bash dmenu包装器
  • poku, 在Pocket和buku之间同步
  • Ebuku, buku的Emacs接口
  • diigoku, Diigo的buku导入器
  • BukuBot, 带有扩展可视界面的XMPP聊天机器人

视频

媒体报道

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号