首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从静态API获取最新的GIF文件

从静态API获取最新的GIF文件
EN

Stack Overflow用户
提问于 2022-04-08 03:31:27
回答 2查看 137关注 0票数 0

如何检查来自API的当前GIF是否与从同一个API端点保存的当前GIF不同?

有一个API提供一个GIF文件的可视化天气预报数据。这是API:https://api.met.gov.my/static/images/swirl-latest.gif。此静态GIF不时更新。

的情况:我正在尝试获取这个GIF并将它保存在我的DB中,这样我就可以有一系列GIF来显示天气随时间的变化。我现在的堆栈是Nodejs、MeteorJs、MongoDB和React。

问题:我不知道GIF更新的频率有多高,以便调度cron作业来获取新更新的GIF。我可以为每一个n第四分钟/小时设置一个cron作业,以便从API中获取GIF,但是如何确定最新获取的GIF是否与DB中以前获取的GIF相同或不同,从而避免重复?

潜在解决方案:由于GIF基本上是一系列图像,所以可能有一种方法来比较两个GIF的相似性。但我不知道该怎么做。找到一个npm包吉夫特,它基本上可以解析GIF并返回一些有关GIF的信息,例如(摘自包的GitHub页面):

代码语言:javascript
运行
复制
{
    // The color table lookup index for each pixel
    pixels: [...],
    // the dimensions of the gif frame (see disposal method)
    dims: {
        top: 0,
        left: 10,
        width: 100,
        height: 50
    },
    // the time in milliseconds that this frame should be shown
    delay: 50,
    // the disposal method (see below)
    disposalType: 1,
    // an array of colors that the pixel data points to
    colorTable: [...],
    // An optional color index that represents transparency (see below)
    transparentIndex: 33,
    // Uint8ClampedArray color converted patch information for drawing
    patch: [...]
 }

由于上述API中的GIF可能具有相同的维度,所以我考虑使用pixelscolorTable作为两个GIF之间的比较点。但我不确定这是否会产生我想要的结果,即确定这两个GIF是否相同。

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2022-04-08 08:43:56

从上一个gif和当前获取的值中创建一个散列,您可以看到是否有任何不同。您也可以检查is文件的大小,但在我看来,使用散列检查更准确。

票数 1
EN

Stack Overflow用户

发布于 2022-04-08 09:23:33

罗比·哈恩的想法更通用,而且会奏效。

但在这种情况下,还有其他一些方法也会奏效。我已经检查了给定的URL,下面的两个想法是可行的。

您可以检查响应-标头的last-modified-field -是否与您在x分钟前的请求中获得的时间戳不同,然后保存新映像,否则丢弃它(因为它与您已经存储的图像相同)。

或者,您可以使用包含存储在数据库中的最新.gif的时间戳的If-Modified-Since-Header来请求.gif。然后服务器要么返回一个304 - not modified (在这种情况下没有新的.gif可用),要么返回更新的图片。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71791385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档