31 个版本
0.1.4 | 2024年7月21日 |
---|---|
0.1.3 | 2024年6月16日 |
0.0.13 | 2024年6月5日 |
0.0.8 | 2024年5月16日 |
0.0.1-beta5 | 2024年2月24日 |
691 在 网页编程
293 每月下载量
在 3 crate 中使用
56KB
1K SLoC
fav_core 是 fav_cli (一个用于下载远程资源并在 protobuf 中保持本地状态的命令行工具) 的核心库。简单来说,fav_core
是构建有状态爬虫的辅助工具。
用法
fav_utils 为 fav_cli 提供了实用工具,目前仅支持 Bilibili(类似于中国的 YouTube)。您可以将其视为使用此 crate 的示例。
为了保存状态,而不是使用 json,此 crate 使用 protobuf
,因为它更快。您需要使用 protobuf 定义数据结构,例如 此示例 (有关从 protobuf 生成的代码中派生 trait 的示例,请参阅 示例)。
Sets
包含 Set
,Set
包含 Res
(资源)。工作流程是
- 获取
Sets
以刷新Set
- 获取
Set
以刷新Res
- 获取并拉取
Res
以下载
为了实现此工作流程并维护本地状态,fav_core
有许多有用的特质
- 网络助手
Api
: 帮助定义 APIApiProvider
: 使应用程序能够根据ApiKind
枚举提供 APINet
: 使应用程序能够使用互联网
- 配置
-
Config: HttpConfig + ProtoLocal
标记应用程序可以配置和持久化 -
HttpConfig
: 定义默认的标题、Cookie
- 状态和属性
Sets
: 遍历并获取集合的子集Set
: 遍历并获取资源的子集Res:Meta
Meta
: 资源元数据,Meta: Attr + Status
Attr
:提供资源的id和标题Status
:资源的状态,如已保存、已获取、已跟踪和已过期
- 操作
Ops
:Ops: AuthOps + SetsOps + SetOps + ResOps
,表示应用程序可以执行所有需要的操作AuthOps
:用于登录和注销SetsOps
:用于获取信息,例如,将English
Chinese
Japanese
添加为新的电影收藏集到 protobuf 中定义的Sets
SetOps
:用于获取信息,例如,将《雾都孤儿》、《罗马假日》、《十二怒汉》添加到English
收藏集。ResOps
:用于fetch
和pull
,例如,从目标网站fetch
《雾都孤儿》的id,根据获取的id将资源拉到本地磁盘。
- 持久性
PathInfo
:定义存储状态和配置的位置ProtoLocal
:ProtoLocal: PathInfo + MessageFull
用于读取和写入状态和配置SaveLocal
:使应用程序能够下载Res
,并修改本地状态。
- 可视化(可选):将状态以表格形式显示
- 扩展方法
SetOpsExt: SetOps
在 sets 中批量获取集合ResOpsExt: ResOps
在集合中批量获取资源XXStatusExt
:批量修改子项的 StatusFlags
总结来说,这个crate包含了构建有状态爬虫所需的所有特性。您可以使用 protobuf
定义数据结构以实现快速读写。使它们具有状态性、可配置性和持久性。提供了许多网络辅助工具,可以直接进行 request_json
和 resquest_protobuf
。并且提供了 Ext
特性,以便您可以批量获取和拉取数据或修改资源的 StatusFlags。
可以在 fav 仓库中找到示例。
变更日志
- 0.1.1 -> 0.1.2:
XXOpsExt
需要batch_size
传递,以便用户可以定义并发作业的数量。 - 0.0.X -> 0.1.X:
Ops
相关特性的方法需要Fut: Future<...>
,如果 Future 已准备好,则可以清理、优雅地关闭并返回FavCoreError::Cancel
。并且OpsExt
方法基于此处理 SIGINT,确保可靠性。
依赖项
~8–21MB
~317K SLoC