news 2026/7/17 10:07:23

shots API完全解析:自定义你的网站历史GIF生成流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
shots API完全解析:自定义你的网站历史GIF生成流程

shots API完全解析:自定义你的网站历史GIF生成流程

【免费下载链接】shots:gun: pull down the entire Internet into a single animated gif.项目地址: https://gitcode.com/gh_mirrors/sh/shots

shots是一款强大的工具,它能将整个互联网的历史变迁浓缩成单一的动画GIF。通过利用Wayback Machine的存档数据,shots可以抓取网站在不同时期的截图,过滤掉视觉相似的页面和空白页面,最终生成展示网站随时间演变的动画GIF和静态胶片图。本文将详细解析shots的API,帮助你轻松自定义网站历史GIF的生成流程。

快速开始:安装与基础使用

要开始使用shots,首先需要安装必要的依赖和工具本身。你需要先安装Python的waybackpack工具,然后通过npm安装shots。

pip install waybackpack==0.1.1 npm i shots -S

安装完成后,你可以在JavaScript代码中引入shots并调用其API。以下是一个简单的示例:

import shots from 'shots'; shots({ dest: 'resources/shots', site: 'amazon.com' });

这个简单的代码会生成一个展示亚马逊网站历史变迁的动画GIF。下面是生成的示例GIF,展示了亚马逊网站在不同时期的页面布局和设计变化:

深入了解:API选项详解

shots提供了丰富的API选项,让你可以自定义GIF生成的各个方面。下面我们将详细介绍这些选项。

输出目录(dest)

options.dest选项用于指定存储所有Wayback Machine存档页面、截图、差异文件以及最终输出GIF的目录。默认情况下,shots会使用一个临时目录。你可以通过以下方式指定自定义目录:

shots({ dest: 'my/custom/directory', site: 'example.com' }).then(dest => { console.log(`GIF生成成功,输出目录:${dest}`); });

并发级别(concurrency)

options.concurrency选项用于设置整个过程中的并发级别,决定了同时进行的截图数量或差异计算任务数量等。默认值为6,你可以根据自己的系统性能进行调整:

shots({ site: 'example.com', concurrency: 12 // 提高并发级别以加快处理速度 });

截图设置(pageres)

options.pageres选项用于配置截图的相关参数,这些参数会传递给pageres工具。默认设置如下:

{ "crop": true, "scale": 1, "sizes": ["1024x768"] }

你可以根据需要自定义这些设置,例如改变截图尺寸:

shots({ site: 'example.com', pageres: { sizes: ["1280x720", "1920x1080"], // 生成多种尺寸的GIF scale: 0.8 // 缩小截图比例 } });

网站指定(site/sites)

options.siteoptions.sites用于指定你想要处理的网站。可以是单个网站,也可以是网站数组:

// 单个网站 shots({ site: 'example.com' }); // 多个网站 shots({ sites: ['example.com', 'github.com'] });

处理阶段控制(stages)

options.stages选项允许你控制shots处理过程中的各个阶段。默认情况下,所有阶段都处于启用状态:

{ "download": true, "screenshots": true, "diffing": true, "filmstrip": true, "gif": true }

如果你只想生成GIF而不需要静态胶片图,可以这样设置:

shots({ site: 'example.com', stages: { filmstrip: false // 禁用胶片图生成阶段 } });

相似度容忍度(tolerance)

options.tolerance选项用于设置图片差异的相似度容忍度,取值范围为0到100。100表示每个截图都会被认为是不同的,而0则表示所有截图都会被认为是相同的。只有在容忍范围内的"重复"截图才会被用于构建GIF和胶片图:

shots({ site: 'example.com', tolerance: 80 // 提高容忍度,减少相似截图 });

高级应用:命令行工具

除了API之外,shots还提供了一个便捷的命令行工具。使用命令行工具,你可以快速生成网站历史GIF,而无需编写代码:

shots amazon.com -o shots/amazon -c 12 -t 65

这个命令会为amazon.com生成历史GIF,输出到shots/amazon目录,使用12的并发级别和65的相似度容忍度。命令行工具还提供了其他选项,你可以通过运行shots命令来查看完整的帮助信息:

must supply at least one site. usage: shots <site> [options] options: -c, --concurrency concurrency level (6) -o, --out, --output output directory (random) -r, --reverse reversed output, from present into the past -t, --tolerance image diff similarity tolerance, 0-100 (95) -v, --verbose verbose mode, outputs debugging information --no-diffing disables diffing stage --no-download disables download stage --no-filmstrip disables filmstrip stage --no-gif disables gif stage --no-screenshots disables screenshots stage example: shots amazon.com -o shots/amazon -c 12 -t 65 output: path/to/recording.gif

工作流程:了解shots的内部处理阶段

shots的处理过程分为多个阶段,每个阶段都有其特定的任务。了解这些阶段可以帮助你更好地使用和优化shots的性能:

  1. 下载阶段(download):为每个指定的网站运行waybackpack,从Wayback Machine下载存档页面。如果在${dest}/pages目录中找到上次的时间戳,会从该时间戳开始下载以节省时间。

  2. 截图阶段(screenshots):为每个存档页面生成截图,跳过${dest}/screenshots目录中已有的截图。

  3. 差异计算阶段(diffing):计算每个截图与前一个截图之间的差异。根据options.tolerance设置,丢弃被认为相同的截图和被认为是噪音(如页面加载失败)的截图。

  4. 胶片图生成阶段(filmstrip):创建静态的胶片图,展示网站在不同时期的变化。

  5. GIF生成阶段(gif):将筛选后的截图合成为动画GIF,展示网站的历史变迁。

调试与日志

如果你需要查看shots的详细处理过程,可以使用debug模块。只需在运行代码时设置DEBUG=shots环境变量:

DEBUG=shots node your-script.js

这将在控制台输出大量调试信息,帮助你了解shots的内部工作情况和排查问题。

注意事项

使用shots时需要注意以下几点:

  1. shots的运行时间可能较长,这取决于网站的存档数量和你的系统性能。请耐心等待,直到GIF最终写入磁盘。

  2. 你需要安装cairo bindings和imagemagick,并确保它们在你的系统路径中可用。

  3. 如果你想从源码构建shots,可以使用项目中的构建脚本:npm run build,该命令会使用babel将index.babel.js转换为index.js。

通过本文的介绍,你应该已经掌握了shots API的基本使用和高级自定义方法。现在,你可以开始使用shots来创建自己的网站历史GIF,探索互联网的演变历程了!

【免费下载链接】shots:gun: pull down the entire Internet into a single animated gif.项目地址: https://gitcode.com/gh_mirrors/sh/shots

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 10:06:39

如何快速上手Avocado-VT:从安装到运行第一个虚拟化测试

如何快速上手Avocado-VT&#xff1a;从安装到运行第一个虚拟化测试 【免费下载链接】avocado-vt Avocado-VT is a compatibility plugin that lets you execute virtualization related tests, with all conveniences provided by Avocado 项目地址: https://gitcode.com/ope…

作者头像 李华
网站建设 2026/7/17 10:05:13

GeoServer入门与实战:安装配置与中文乱码解决

1. GeoServer入门指南&#xff1a;从安装到解决中文乱码问题 GeoServer作为开源地理空间数据服务器&#xff0c;已经成为GIS领域的事实标准之一。我第一次接触GeoServer是在2013年参与一个智慧城市项目时&#xff0c;当时需要将城市规划部门的CAD数据发布成Web地图服务。经过这…

作者头像 李华
网站建设 2026/7/17 10:04:41

Conda 常用命令

Conda 常用命令适用于 Anaconda / Miniconda&#xff0c;命令完全相同初始化 # 将 conda 注册到 cmd&#xff08;安装后执行一次&#xff09; conda init cmd.exe# 将 conda 注册到 PowerShell conda init powershell验证安装 conda --version # 查看版本 conda info …

作者头像 李华
网站建设 2026/7/17 10:02:01

BitNet大模型轻量化部署与CPU优化实战

1. BitNet&#xff1a;颠覆传统的大模型轻量化方案 微软研究院推出的BitNet模型正在AI领域掀起一场革命。这个仅用1比特量化技术实现的轻量级大模型&#xff0c;最令人惊叹的特性是它能在普通CPU上流畅运行——这意味着开发者不再需要昂贵的GPU设备就能体验大模型的强大能力。 …

作者头像 李华
网站建设 2026/7/17 10:01:56

Clarity-AI API密钥安全防护与数据隐私全链路实践指南

1. 项目概述&#xff1a;为什么Clarity-AI的安全实践如此重要&#xff1f; 最近在社区里看到不少关于Clarity-AI的讨论&#xff0c;尤其是围绕API密钥泄露和数据安全的问题&#xff0c;让我觉得有必要把这块的经验系统地梳理一下。Clarity-AI作为一个功能强大的AI服务接口&…

作者头像 李华