9 个稳定版本
1.1.4 | 2021年3月15日 |
---|---|
1.1.3 | 2021年3月9日 |
1.1.2 | 2021年2月28日 |
1.1.1 | 2021年2月27日 |
1.0.3 | 2021年2月9日 |
#56 在 #book
每月 30 次下载
62KB
1.5K SLoC
书架 - 一个小巧且模块化的媒体管理器
书架 是为了管理媒体而制作的,主要是书籍。模块需要由用户(或从互联网上获取)制作并使用,以从网站上抓取数据,从而获取元数据和下载整个书籍和其他项目。
这是我制作来学习 Rust 的。 这完全不是因为我想有一种方式来抓取书籍如漫画等在线内容并在以后阅读。 它主要是为了管理书籍,但也可以用于管理任何媒体。
使用方法
添加和下载新项目
# Add to index (but don't download) item using module `example_mod` with code `12345`
bookshelf add -m example_mod -c 12345
# Add to index and download item from URL
bookshelf download -u https://example.com/book/12345
在索引中搜索
# Search for items whose titles begin with "The", are made by "John Doe" have
# the "sci-fi" and "comedy" but not "horror" genre
bookshelf search -t "^The.*" -a "John Doe" -g "sci-fi,comedy" -b "horror"
# Search in favorites fir books by either "Jane Smith" or "Bob Ross" and of genre "romance" or "comedy"
bookshelf search -f -a "Jane Smith,Bob Ross" -g "romance,comedy" --broad_search
获取项目信息
# Get item handled by module `example_mod` with code `12345`
bookshelf info -m example_mod -c 12345
更新项目
# Toggle favorite for book handled by `example_mod` with id `1234`
bookshelf update -m example_mod -c 12345 -f
# Update book with new title, author and genre
bookshelf update -m example_mod -c 12345 -t "New title" -a "Alice" -g "comedy,horror"
下载保存的项目
# Download everything saved in index
bookshelf pull
# Download items handled by `example_mod` and created by "Bob"
bookshelf pull -m example_mod -a "Bob"
删除项目
# Remove item from index and favorites, as well as its downloaded files
bookshelf rm -m example_mod -c 12345
列出可用的模块
bookshelf modules
导入/导出书架
# Export current index to yaml file
bookshelf export -f index.yaml
# Import yaml index file to current index
bookshelf import -f index.yaml
文本用户界面模式
要在 TUI 模式下启动 bookshelf,只需不带参数运行 bookshelf
。
Down
/j
: 向下移动Up
/k
: 向上移动ctrl-D
: 向下移动 50%ctrl-U
: 向上移动 50%Home
: 移动到顶部End
: 移动到底部F
: 切换收藏(将项目添加到/从收藏中删除)y
: 复制(复制)项目(模块和代码)到剪贴板o
: 打开项目w
: 将内容写入索引文件ft/
fa
/fg
: 根据标题正则表达式/作者/类型过滤et/
ea
/eg
: 编辑标题/作者/类型Esc
: 取消过滤/编辑
配置
目前,可以在书架中设置以下设置(及其默认值)在 .yaml
"index_file": "~/.config/bookshelf/index"
"modules_dir": "~/.config/bookshelf/modules"
"data_dir": "~/.config/bookshelf/data"
书籍和其他项目存储在 data_dir
中的自己的目录中。
创建新模块
模块可以用任何语言编写。只需将其制作成可执行文件并放置在模块目录中即可使用。由于每个网站都有自己的获取元数据和下载项目的方式,所以模块通常独立处理这些操作,而很少需要书架的帮助。
模块应该能够处理以下命令
your_mod 检查$URL
给定一个URL,该模块会打印出一个 1
(可能带或不带换行符),如果该URL可以被模块处理,否则打印 0
your_mod 代码$URL
给定一个URL,该模块会打印出标识项目的代码。
your_mod url$CODE
给定一个代码,该模块会打印出项目的URL。
your_mod 元数据$CODE
打印带有提供代码的项目标题、作者和类型。这三个信息分别位于不同的行上,作者和类型用逗号分隔。例如
Rust for noobs
John Doe,Jane Smith
education,programming
your_mod 下载$CODE
该模块使用提供的代码下载书籍。在这种情况下,不需要输出,所有操作都由模块完成。所有输出都被 bookshelf
忽略,所以可以打印任何内容。
your_mod 媒体
打印由该模块处理的项目的媒体类型,例如:jpg
、png
、pdf
、txt
、mp3
、mp4
。这是为了实现(待实施)的功能,即使用其他程序打开下载的文件。
其他
许可:GNU GPLv3
依赖项
~6–8.5MB
~152K SLoC