#media #module #book #download #index #manager #website

app bookshelf

一个小巧且模块化的媒体管理器

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 次下载

GPL-3.0 许可证

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

TUI

  • 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 媒体

打印由该模块处理的项目的媒体类型,例如:jpgpngpdftxtmp3mp4。这是为了实现(待实施)的功能,即使用其他程序打开下载的文件。

其他

许可:GNU GPLv3

依赖项

~6–8.5MB
~152K SLoC