番剧新闻聚合收集器

一套番剧新闻聚合收集器由 SchedulerRss、(各网站的)Index Agent、(各网站的)Merge Agent 组成,有些情况下需要 Description AgentExtractorGenerator Agent

Huginn 及相关概念

Huginn 是基于 Ruby on Rails 开发的在线自动化任务执行服务。用户通过配置一系列的 Agent,可以执行一系列的自动化任务。这些 Agent 创建、消费事件,并且根据一个直观的图表将这些事件传递给另一个 Agent。 Huginn 支持大量的 Agent 种类,这里仅对使用到的 Agent 作简单介绍:

另外,Huginn 支持将 Agent 归为一组 Scenario 进行统一的操作,例如启用/禁用、删除、导入、分享等。

Scheduler

Scheduler 为数据收集的触发端,是一个 Commander Agent。对于上季、当季与下季番剧每半小时触发一次,其余按小时分布在 24 个小整点。超过 6 年的 Scheduler 将被删除。不使用 Scheduler Agent 是因为 Scheduler Agent 不支持手动运行。

Index Agent

Index Agent 为新闻索引端,是一个 Website Agent,用于解析新闻索引。通常由 Scheduler 触发,本身不直接作为 Huginn 的计划任务执行。一般分两种。

适用于聚合式新闻页面的 Index Agent 格式如下:

适用于分离式新闻页面的 Index Agent 格式如下:

ExtractorGenerator Agent

ExtractorGenerator Agent 是一个 JavaScript Agent,用于生成正文解析器。这个部分一般只用于正文解析器不唯一的情况。通常格式如下:

Description Agent

Description Agent 为新闻正文解析端,是一个 Website Agent。这个部分只用于分离式新闻收集。通常格式如下:

与ExtractorGenerator Agent配套使用则使用此固定Description Agent:

Merge Agent

Merge Agent 为新闻收集的整合端,是一个 JavaScript Agent,用于将 Index AgentDescription Agent(若有)的数据转换为 RSS 可接受的格式。Index Agent 与 Description Agent 的格式可以与示例不同,但 Merge Agent 的输出格式必须相同。通常格式如下:

有时也会将上面的 JavaScript Agent 优化为一个 Event Formatting Agent :

Rss

Rss 为数据的收集端,是一个 Data Output Agent,用于收集所有 Merge Agent 提供的事件并整合为一个 RSS 源。通常格式如下:

命名相关

推荐命名格式为:{{季度ID}}-{{番剧名}}-{{Agent名}},其中季度 ID 为季度开始的月份的六位数字缩写。例如,202101-工作细胞!!-Merge

Scenario 相关

每个季度需要的所有 Agent 需要全部归入一个 Scenario,推荐命名格式为:{{季度ID}}-Rss

为了方便整理所有 Scheduler,需要将所有 Scheduler 归入一个 Scenario,推荐命名为:RssScheduler