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-beta52024年2月24日

691网页编程

Download history 241/week @ 2024-04-24 194/week @ 2024-05-01 28/week @ 2024-05-08 161/week @ 2024-05-15 17/week @ 2024-05-22 293/week @ 2024-05-29 774/week @ 2024-06-05 371/week @ 2024-06-12 27/week @ 2024-06-19 1/week @ 2024-06-26 35/week @ 2024-07-03 101/week @ 2024-07-17 158/week @ 2024-07-24 33/week @ 2024-07-31 1/week @ 2024-08-07

293 每月下载量
3 crate 中使用

MIT 许可证

56KB
1K SLoC

fav_corefav_cli (一个用于下载远程资源并在 protobuf 中保持本地状态的命令行工具) 的核心库。简单来说,fav_core 是构建有状态爬虫的辅助工具。

用法

fav_utilsfav_cli 提供了实用工具,目前仅支持 Bilibili(类似于中国的 YouTube)。您可以将其视为使用此 crate 的示例。

为了保存状态,而不是使用 json,此 crate 使用 protobuf,因为它更快。您需要使用 protobuf 定义数据结构,例如 此示例 (有关从 protobuf 生成的代码中派生 trait 的示例,请参阅 示例)。

Sets 包含 SetSet 包含 Res(资源)。工作流程是

  1. 获取 Sets 以刷新 Set
  2. 获取 Set 以刷新 Res
  3. 获取并拉取 Res 以下载

为了实现此工作流程并维护本地状态,fav_core 有许多有用的特质

  1. 网络助手
  • Api: 帮助定义 API
  • ApiProvider: 使应用程序能够根据 ApiKind 枚举提供 API
  • Net: 使应用程序能够使用互联网
  1. 配置
  • Config: HttpConfig + ProtoLocal 标记应用程序可以配置和持久化

  • HttpConfig: 定义默认的标题、Cookie

  1. 状态和属性
  • Sets: 遍历并获取集合的子集
  • Set: 遍历并获取资源的子集
  • Res:Meta
  • Meta: 资源元数据,Meta: Attr + Status
  • Attr:提供资源的id和标题
  • Status:资源的状态,如已保存、已获取、已跟踪和已过期
  1. 操作
  • OpsOps: AuthOps + SetsOps + SetOps + ResOps,表示应用程序可以执行所有需要的操作
  • AuthOps:用于登录和注销
  • SetsOps:用于获取信息,例如,将 English Chinese Japanese 添加为新的电影收藏集到 protobuf 中定义的 Sets
  • SetOps:用于获取信息,例如,将《雾都孤儿》、《罗马假日》、《十二怒汉》添加到 English 收藏集。
  • ResOps:用于 fetchpull,例如,从目标网站 fetch 《雾都孤儿》的id,根据获取的id将资源拉到本地磁盘。
  1. 持久性
  • PathInfo:定义存储状态和配置的位置
  • ProtoLocalProtoLocal: PathInfo + MessageFull 用于读取和写入状态和配置
  • SaveLocal:使应用程序能够下载 Res,并修改本地状态。
  1. 可视化(可选):将状态以表格形式显示
  2. 扩展方法
  • SetOpsExt: SetOps 在 sets 中批量获取集合
  • ResOpsExt: ResOps 在集合中批量获取资源
  • XXStatusExt:批量修改子项的 StatusFlags

总结来说,这个crate包含了构建有状态爬虫所需的所有特性。您可以使用 protobuf 定义数据结构以实现快速读写。使它们具有状态性、可配置性和持久性。提供了许多网络辅助工具,可以直接进行 request_jsonresquest_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