使用 ReelGood API 在 Netflix 上搜索和过滤节目和电影
制成:
此应用程序目前已损坏 - ReelGood 已迁移到在其网站上使用 V3 API,而 V2 API 不再工作。如果您想了解如何使用新的 API 端点并贡献 PR,请这样做。
请参阅问题#5。
到目前为止,该项目仅使用模板将单页 API 结果表示为文本和图像。
没有花哨的报告或过滤。
另外,我可能会在 Vue 中重建它,而不是 Mustache。

ReelGood 是一项提供包括 Netflix 在内的许多在线服务的电视节目和电影列表的服务。
ReelGood 在其网站上有一个很棒的 GUI,可以轻松导航以进行搜索和过滤。他们还使用 API 作为其中的一部分。我想构建自己的演出指南报告和推荐列表,因此我使用客户端 JS 从他们的 API 中提取数据并将其呈现在网站上。
查看网站:
如果您不熟悉 Netlify / Lambda 函数,请参阅我的食谱。
直接测试 JSON API 端点:
克隆存储库:
$ git clone [email protected]:MichaelCurrin/netflix-assistant.git
$ cd netflix-assistant没有构建或安装步骤!
下面继续。
使用 Serverless 进行 API 请求
此应用程序无法直接执行浏览器请求 ReelGood API(在本地这没问题,但在部署的站点上您会收到错误)。 API 更改导致存在 CORS 错误。
因此,该应用程序经过重新设计,以使用 Netlify 的免费Functions功能(基于 AWS Lambda 构建)。
函数是使用简短的 JS 脚本定义的,该脚本托管在 Netlify 上。当对此函数的端点发出请求时,系统会向 ReelGood API 发出请求,并将结果作为缓存的 JSON 响应返回。
这比构建 Python 或 Node API 简单得多,因为这需要更多代码并且无法托管在 Netlify 上。
缺点是该功能只能在云端运行,不能在本地服务器上运行。
有一些方法可以解决这个问题:
http库的简短脚本来设置服务器,只需添加一行额外的行来调用某个端点上的 JS 脚本 - 这意味着您只需要一台服务器和一个端口。请注意,本地使用受到限制 - 请参阅上面的部分。
在根目录中启动 Web 服务器。
请参阅本要点中的方法或使用下面的方法。
$ python3 -m http.server在浏览器中打开。例如
该项目中有一个基本的 shell 脚本,它使用 Bash 和 cURL 从 ReelGood API 获取数据。
这种方法不是使用上面介绍的按需函数,而是从 API 中抓取数据并将其存储为 JSON 数据,如果您关心的话,可以将其保留在已部署的应用程序中或提交给版本控制。然后前端可以使用该数据 - 这会快得多,因为所有分页都已处理。以稍微陈旧的数据和查询大型静态 JSON 文件为代价。可以进行一些清理,以便 JSON 文件仅包含感兴趣的字段。
该脚本从 API 获取节目的前两页,其中 IMDB 和 ReelGood 分数高于 50%。如果您想智能分页,建议使用 Python 或类似的更高级处理 - 即替换为更高的skip值,直到没有更多页面。
运行为:
$ cd scrape
$ ./get_shows.sh然后查看out子目录下创建的JSON文件
远程设置
该存储库可以免费部署在 Netlify 上 - 作为静态网站以及用于无服务器后端调用外部 API 的 Netlify 函数。
必须为 API 请求设置 CORS 标头,但无法在 Github Pages 上设置。此外,这使用了 Netlify 上的 Function,而 GitHub Pages 不支持该功能。
在 ReelGood 的网站上,您可以查看可在 Netflix 上观看的电视节目和电影。
该页面支持过滤器参数、排序选项和显示格式选项。
显示数据是从 ReelGood API 检索的。
这是在初始页面加载、应用过滤/排序以及单击页面底部的“加载更多”时完成的。
该 API 可以免费使用,并且在其常见问题解答页面上提供了请求 API 访问的详细信息。我发现无需向他们发送电子邮件即可轻松访问该 API。我还没有找到它的文档,所以我将我所做的 GUI 选择与发出的 API 请求进行比较,并推断 API 请求上的字段如何工作以及响应字段的含义。
$.getJSON (前端)和axios (函数)来简化项目。为了避免 CORS 错误,该项目使用 Netlify 上的函数(又名 Lambda)来请求服务器端的数据,然后使数据在与浏览器请求相同的域中可用。
请参阅 Netlify 函数。
另请参阅博客文章。
本地设置可以使用 Netlify 库,或者只是基于ENV=dev或 local/remote 等标志使用原始 URL(幸运的是,即使在 Netlify 上确实如此,它也不会在本地主机上产生 CORS 错误)作为后备。
由 @MichaelCurrin 在 MIT 下发布。