Auto-Downloder Chrome Extension

September 18th, 2021
comments, tech
Let's say you want Chrome to automatically download pieces of pages, such as Facebook comments. How could you do it? I recently wanted to do this and couldn't find docs, so here's what I did.

  1. Make a folder somewhere for a browser extension.

  2. In that folder, make manifest.json with contents like:

    {
      "name": "Downloader",
      "description": "Downloads stuff",
      "version": "1.0",
      "manifest_version": 3,
      "permissions": [
        "activeTab",
        "downloads"
      ],
      "background": {
        "service_worker": "background.js"
      },
      "content_scripts": [{
        "matches": [
          "https://example.com/path/*",
        ],
        "js": ["content_script.js"]
      }]
    }
    
  3. In content_script.js put:

    // This file extracts what you want from the page
    // and asks the background script to save it.
    
    // You write the code to extract what you want.
    const yourStringToSave =
      yourFunctionToExtractFromPage();
    
    chrome.runtime.sendMessage(
        /* extension id not needed */ undefined,
        [fileNameToUse,
         yourStringToSave]);
    
  4. In background.js put:

    // This file receives messages from the content
    // script and puts them in your Dowloads folder.
    
    function makeDataUrl(body) {
      // We use a data: url because Chrome has
      // trouble with object URLs in Incognito.
      return "data:application/json;base64," +
        btoa(unescape(encodeURIComponent(body)));
    }
    
    chrome.runtime.onMessage.addListener(
      function(message) {
        const fname = message[0];
        const body = message[1];
    
        chrome.downloads.download({
          conflictAction: "overwrite",
          filename: fname,
          url: makeDataUrl(body),
        });
      });
    
  5. Visit chrome://extensions

  6. Enable Developer Mode

  7. Click the "Load unpacked" and select the extension directory

  8. If you need it in Incognito, click "Details" on the extension card and then enable "Allow in Incognito".

Example code: github.

(And, yes, this is how Facebook comments are back.)

Comment via: facebook, lesswrong

Recent posts on blogs I like:

Pay For Fiction

Against piracy

via Thing of Things February 29, 2024

When Nurses Lie to You

When the nurse comes to give you the flu shot, they say it won't hurt at all, right? And you trust them. Then they give you the shot, and it hurts! They lied to you. A lot of nurses lie to children about shots and blood draws. Part of it is they probabl…

via Lily Wise's Blog Posts February 28, 2024

How I build and run behavioral interviews

This is an adaptation of an internal doc I wrote for Wave. I used to think that behavioral interviews were basically useless, because it was too easy for candidates to bullshit them and too hard for me to tell what was a good answer. I’d end up grading eve…

via benkuhn.net February 25, 2024

more     (via openring)