Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Save images to hard disk WITHOUT prompt?

I use twitter. Some people's tweets contain photos and I want to save them.

I checked ifttt, where twitter is not a trigger. Thus, ifttt cannot help me do it.

One idea is probably to use JavaScript. I use Firefox and installed Greasemonkey. I can write a Greasemonkey script (JavaScript) running on twitter website. Once I click "retweet" link or other button added by my script, my script examines the content of the tweet, find the URL of the photo, and save it to my disk.

One problem is how to save the image. I searched the Internet. Some use win.document.execCommand("SaveAs"), and it will show a "save as" window. Now that the window shows, why not just right click the image and choose save as manually? So I don't like the method.

Any suggestions?

like image 768
Gqqnbig Avatar asked Nov 29 '12 13:11

Gqqnbig


5 Answers

It is possible when using Tampermonkey or Violentmonkey (Firefox or Chrome). Those userscript managers have added a GM_download method.

You can use it like this:

// ==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);

See the official Tampermonkey documentation.

like image 191
user136036 Avatar answered Oct 23 '22 12:10

user136036


Greasemonkey cannot do this, because ordinary javascript is forbidden to do this (for security reasons), and the Greasemonkey API does not expose a method to write files (and never will).

Here are four alternatives:

  1. Update: Switch to Tampermonkey, which you should do anyway. Then you can use GM_download as user136036 said in his answer.

    or

  2. Install and use the excellent DownThemAll add-on (Update: Firefox 57 withdrew support for this kind of extension). It still requires one click, but that's better than always grabbing a file willy nilly, in most cases anyway.

    or

  3. Write your own addon extension. See this (now obsolete) answer for file-writing code from one of the top gurus of FF add-ons. But "new" style extensions can still do this.

    or

  4. Use XAMPP (or similar) to run a web server on your machine. You will then have to write a web application that excepts incoming image data (or just the image URL) and saves the image to disk.

like image 28
Brock Adams Avatar answered Oct 23 '22 11:10

Brock Adams


JavaScript does not have access to the computer's file system.

There is no native JS functionality for this. Otherwise any site would be able to save anything to your PC, which would result in your PC getting messed up in no time.

like image 2
Cerbrus Avatar answered Oct 23 '22 11:10

Cerbrus


You won't be able to do this in the way that you would like. If browsers allowed websites to save whatever content they wanted directly to the user's computer... well you can imagine the consequences.

like image 1
Levi Botelho Avatar answered Oct 23 '22 10:10

Levi Botelho


Plugin is the right answer for this. If you are looking for a framework checkout Firebreath it gives you cross platform capability as well as works on all possible browser you can ever think of, including IE. Its easy to learn too

like image 1
chipmunk Avatar answered Oct 23 '22 10:10

chipmunk