将图像保存到硬盘而不提示?

IT技术 javascript greasemonkey tampermonkey userscripts filesystem-access
2021-03-03 02:34:12

我用twitter。有些人的推文包含照片,我想保存它们。

我检查了 ifttt,其中 twitter 不是触发器。因此,ifttt 无法帮助我做到这一点。

一种想法可能是使用 JavaScript。我使用 Firefox 并安装了 Greasemonkey。我可以编写在 twitter 网站上运行的 Greasemonkey 脚本 (JavaScript)。一旦我单击“转发”链接或我的脚本添加的其他按钮,我的脚本就会检查推文的内容,找到照片的 URL,并将其保存到我的磁盘中。

一个问题是如何保存图像。我在互联网上搜索。有些人使用win.document.execCommand("SaveAs"),它会显示一个“另存为”窗口。既然窗口显示了,为什么不右键单击图像并选择手动另存为?所以我不喜欢这种方法。

有什么建议?

6个回答

使用 Tampermonkey 或 Violentmonkey(Firefox 或 Chrome)时是可能的。那些用户脚本管理器添加了一个GM_download方法。

你可以这样使用它:

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http*://*/*
// @grant        GM_download
// ==/UserScript==


var arg = { url: "https://example.com/123456.jpg",
            name: "CustomFileName.jpg"
          };

GM_download(arg);

请参阅官方的 Tampermonkey 文档

的文件夹位置是什么 CustomFileName.jpg
2021-05-07 02:34:12
只要 GM_download 按预期工作,它看起来很有希望。我稍后试试,谢谢。
2021-05-13 02:34:12

Greasemonkey 不能这样做,因为普通 javascript 是禁止这样做的(出于安全原因),并且Greasemonkey API没有公开写入文件的方法(并且永远不会)。

这里有四种选择:

  1. 更新:切换到 Tampermonkey无论如何你都应该这样做然后你可以使用GM_download作为user136036他的回答中说的

    或者

  2. 安装和 使用优秀的DownThemAll插件更新: Firefox 57 取消了对此类扩展的支持)。它仍然需要单击一下,但这总比总是随意抓取文件要好,无论如何,在大多数情况下。

    或者

  3. 自己写 添加在延期。 请参阅来自 FF 附加组件的顶级大师之一的文件编写代码的这个(现已过时)答案但是“新”样式扩展仍然可以做到这一点。

    或者

  4. 使用XAMPP(或类似工具)在您的机器上运行 Web 服务器。然后,您必须编写一个 Web 应用程序,该应用程序排除传入的图像数据(或仅图像 URL)并将图像保存到磁盘。

可惜GM好像没有实施GM_download不过,它适用于 TM for Firefox。
2021-04-16 02:34:12
啊哈……顺便说一句,暗示性的标签名称,lolz。Donnow 与内部工作原理相邻,但界面明智的 GM 落后了多年......
2021-04-30 02:34:12
@brasofolo,不仅仅是没有实现。该问题被标记为Bankruptcy,这意味着 Greasemonkey 的控制器已决定永远不支持该功能。Greasemonkey 4+ 是一种可憎和可笑的东西。
2021-05-14 02:34:12

JavaScript 无法访问计算机的文件系统。

没有针对此的原生 JS 功能。否则任何站点都可以将任何内容保存到您的 PC,这将导致您的 PC 立即变得一团糟。

那将是一个选择,是的。
2021-04-19 02:34:12
所以..我应该写一个firefox插件来完成这项工作吗?好像作品越来越大了……
2021-04-30 02:34:12
@BrockAdams:不一定。有一些附加组件可以自动将文件保存到磁盘。
2021-05-04 02:34:12
你是对的,这就是为什么我在评论前加上“IIRC”。
2021-05-08 02:34:12

插件是这个的正确答案。如果您正在寻找一个框架检出Firebreath,它为您提供跨平台功能以及适用于您能想到的所有可能的浏览器,包括 IE。也很容易学

您将无法以您想要的方式执行此操作。如果浏览器允许网站将他们想要的任何内容直接保存到用户的计算机上......那么你可以想象后果。