购买电影票算法

这个 Dart 项目包含了一个在电影院选择更好座位位置的算法。
它还包含了一个机器人,可以使用此算法在此页面上购买电影票。

算法

算法位于 lib/algorithm.dart。该算法基于近距离的座位簇,因为在
某些影院,座位本身就隔了一个座位(作为健康预防措施),
所以将近距离的座位簇作为结果也是一个有效的答案。该方案也适用于
所有座位都可用的影院。

用户的首选座位排是输入;算法将从该排开始。在该排中,它会找到
最靠近房间中心的座位簇,如果座位簇的距离不超过
用户输入的距离,则将其视为有效。如果无效,则转到下一排,如果有效,
则获取该排中其他座位簇的距离,并将它们归类为有效,前提是它们不超过
用户输入的距离。所有有效的座位簇会与中心的座位簇合并,然后重复此过程
直到获得足够的座位以满足用户的需求。

待办事项(欢迎贡献)

  • 如果在找不到有效座位簇的情况下,应获取
    所有座位簇到中心的距离,并选择所有靠近0的座位。在这种情况下,不再有连续的座位,
    那么就购买房间里最好的座位簇,无论它们是否连续。

机器人

该机器人主要有两个部分:查找电影和购买电影票。

在查找电影部分,您需要向机器人提供电影标题的某些关键字。
机器人会搜索电影,如果找不到,它会刷新屏幕。当找到电影后,它会转到
购买电影票部分。这一部分曾用于购买预售票(电影在午夜出现时)。

购买电影票部分,通过界面导航选择时间和座位类型。
在选择座位时,它会爬取房间的座位图,并将其传递给算法,该算法会返回
正确的座位。机器人选择座位,并继续浏览直到购买。

待办事项(欢迎贡献)

  • 将每次导航(页面)进行分割,以便在发生错误时只需刷新页面并
    从该部分开始,而不是完全重新启动机器人(当前)。
  • 除了上述几点,还需要进行更好的错误处理,并改进机器人以支持
    页面中断或页面加载缓慢。

用法

该机器人使用 puppeteer 在页面中进行导航,因此在
首次运行时,它将在仓库根目录(.local-chromium /)下载一个chromium 版本,
因此首次执行可能需要一些时间。

要运行它,您需要已安装 dart 并运行以下命令

dart bin/cine_ticket_bot.dar

GitHub

查看 Github