javascriptgreasemonkeytampermonkeyuserscriptsfilesystem-access

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?


Solution

  • 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.