Calendar Feeds:一切的起点

发布: (2026年2月11日 GMT+8 16:34)
5 分钟阅读
原文: Dev.to

Source: Dev.to

当我住在贝尔法斯特时,我有一个问题:我想知道 Strand 电影院正在上映什么,而不必记得去查看他们的网站。我想在日历里查看下周五,看看是否有值得去看的影片。

于是我写了一个爬虫,抓取上映列表,将其转换为结构化格式,并生成了一个 ICS 文件。那是 2023 年 6 月。这个工作流——获取、转换、输出——仍然是 Clusterflick 今天所有功能的基础。

当前设置

我现在在 Google 日历中拥有 14 个电影院的日历订阅。当我想查看上映情况时,只需打开其中几个——例如 BFI、Castle Cinema、Genesis Cinema 和 Prince Charles Cinema——来制定周末计划。买票时,我只需把相应的事件复制到我的个人日历中。

添加订阅非常简单,只需把 URL 粘贴到 Google 日历即可。如果你想自己尝试,📅 data‑calendar repo 中包含了每个场馆的说明和订阅链接。

事件详情

每个日历事件包括:

  • 场馆名称和地点(让 Google Maps 知道你要去哪里)
  • 指向原始列表页面的链接
  • 电影标题(按照电影院的排片方式)
  • 我们设法提取的任何元数据:导演、演员、剧情简介

在所有这些信息下面,我们会加入与 The Movie Database (TMDB) 的匹配,提供:

  • 正式标题和年份
  • 概要介绍
  • 返回 TMDB 的链接以获取更多信息

事件标题本身保持电影院原始的排片标题。

示例:Prince Charles Cinema 下周排片 📆

订阅会反映场馆特有的标题。例如,Prince Charles Cinema 列出 “Troll 2 (aka Best Worst Movie)”,而我们在 TMDB 中匹配到 Troll 2,订阅中仍显示原始标题,同时提供 TMDB 链接。

处理时长

电影院的排片通常只提供开始时间,鲜少标明影片时长,而时长对于日历事件是必需的。

  • 起初,我默认所有影片为 90 分钟
  • 如果列表中包含时长,则使用该时长。
  • 由于我们对 96 % 以上的影片在 TMDB 中完成匹配,可以直接从 TMDB 拉取实际时长。

因此,一部 2 小时 20 分钟的影片会在日历中显示为 2 小时 20 分钟的事件。虽然没有考虑通常约 20 分钟的预告片时长,但已足够用于安排晚间观影。

架构优势

日历订阅在 转换 步骤之后直接生成,绕过了网站所需的更复杂逻辑:

  • 网站 必须:

    • 将多个场馆的放映合并为统一的电影条目
    • 缓存 TMDB 查询以避免速率限制
    • 获取丰富的元数据(完整演员表、剧组、海报、预告片)
    • 为每部电影生成静态页面
  • 日历订阅 直接跳过这些步骤。它们只是:“这是该场馆声明的上映内容,采用你的日历应用能识别的格式。” 过程如下:

  1. 获取列表
  2. 转换为结构化数据
  3. 生成 ICS 文件

为什么重要

这仍然是整个项目中最简单、最具个人价值的输出。其余的一切——网站、电影匹配、LLM 辅助的歧义消除——都是在此基础上发展而来的。

我最初只是想在不访问网站的情况下查看电影院的排片。两年后,我仍然每周使用这些订阅。其余的 Clusterflick 正是因为这件事足够有用而不断扩展的。

0 浏览
Back to Blog

相关文章

阅读更多 »

MinIO 仓库不再维护

注意:此仓库不再维护。 替代方案: - AIStor Free https://min.io/download — 完整功能的独立版,供社区使用。