axelerometer / web.archive.org - override save form settings

// ==UserScript==
// @name         web.archive.org - override save form settings
// @description  override/restore "Save Page Now" form settings
// @namespace    https://github.com/axelerometer
// @version      2026-01-25
// @author       axelerometer
// @match        https://web.archive.org/save
// @icon         https://www.google.com/s2/favicons?sz=64&domain=archive.org
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
  'use strict';

  function setCheckboxChecked(id, checked) {
    const el = document.getElementById(id);
    if (el && el.type === 'checkbox') {
      el.checked = checked;
    } else {
      console.log("Field is not a checkbox: " + id);
    }
  }

  setCheckboxChecked('capture_outlinks', true);
  setCheckboxChecked('capture_all', false); // Save error pages (HTTP Status=4xx, 5xx)
  setCheckboxChecked('capture_screenshot', true);
  setCheckboxChecked('wm-save-mywebarchive', true);
  setCheckboxChecked('email_result', true);

  // Save & restore previous URL in web-save-url-input
  const urlInputId = 'web-save-url-input';
  const storageKey = 'web-save-url-input-last';
  const urlInput = document.getElementById(urlInputId);
  if (urlInput) {
    // Restore previous value if field is empty
    const prev = localStorage.getItem(storageKey);
    if (prev && !urlInput.value) {
      urlInput.value = prev;
    }
    // Save value on change/input
    urlInput.addEventListener('change', function() {
      localStorage.setItem(storageKey, urlInput.value);
    });
    urlInput.addEventListener('input', function() {
      localStorage.setItem(storageKey, urlInput.value);
    });
    // Optionally, save on form submit
    if (urlInput.form) {
      urlInput.form.addEventListener('submit', function() {
        localStorage.setItem(storageKey, urlInput.value);
      });
    }
  }
})();