返回首頁 

Bulk Export Dropbox Image URLs to Clipboard (2023)

Extracts image URLs from a Dropbox page and copies them to the clipboard when a button is clicked.

// ==UserScript==// @name         Bulk Export Dropbox Image URLs to Clipboard (2023)// @version      3.2// @description  Extracts image URLs from a Dropbox page and copies them to the clipboard when a button is clicked.// @author       sharmanhall// @supportURL   https://github.com/tyhallcsu/dropbox-image-url-extractor/issues/new// @namespace    https://github.com/tyhallcsu/dropbox-image-url-extractor// @homepageURL  https://github.com/tyhallcsu/dropbox-image-url-extractor// @license      MIT// @connect      greasyfork.org// @connect      sleazyfork.org// @connect      github.com// @connect      openuserjs.org// @match        https://www.dropbox.com/*// @grant        GM_setClipboard// @grant        GM_log// @compatible   chrome// @compatible   firefox// @compatible   edge// @compatible   opera// @compatible   safari// @run-at       document-idle// @icon         https://cfl.dropboxstatic.com/static/metaserver/static/images/favicon-vfl8lUR9B.ico// ==/UserScript==(function() {'use strict';const SECONDS_TO_WAIT_FOR_SCROLL = 1; // adjust as neededconst DOWNLOAD_URL_REPLACEMENT = '?raw=1';// function to get all image link elementsfunction getImageLinks() {const imageLinks = document.querySelectorAll('a.dig-Link.sl-link--file[href*="dl=0"]');return Array.from(imageLinks).map(link => link.getAttribute('href').replace(/\?dl=0$/, DOWNLOAD_URL_REPLACEMENT));}// function to scroll to the bottom of the page and wait for new images to loadasync function waitForImagesToLoad() {window.scrollTo(0, document.body.scrollHeight);await new Promise(resolve => setTimeout(resolve, SECONDS_TO_WAIT_FOR_SCROLL * 1000));}// create an array to hold the image URLslet imageUrls = [];// add a button to the page that will copy the image URLs to the clipboard when clickedconst copyButton = document.createElement('button');copyButton.classList.add('dig-Button', 'dig-Button--primary', 'dig-Button--standard', 'copy-urls-button');copyButton.textContent = 'Copy all URLs';copyButton.style.position = 'fixed';copyButton.style.bottom = '20px';copyButton.style.right = '20px';copyButton.style.zIndex = '9999';document.body.appendChild(copyButton);// add a click event listener to the buttoncopyButton.addEventListener('click', async function() {let finished = false;let numUrls = 0;while (!finished) {// scroll to the bottom of the page and wait for new images to loadawait waitForImagesToLoad();// get the newly loaded image URLsconst newImageUrls = getImageLinks().filter(url => !imageUrls.includes(url));imageUrls.push(...newImageUrls);// check if all images have been loadedfinished = newImageUrls.length === 0;numUrls += newImageUrls.length;}// join the image URLs into a string separated by newlinesconst imageUrlString = imageUrls.join('\n');// copy the image URL string to the clipboardGM_setClipboard(imageUrlString, 'text');// disable the button and change the text to indicate that the URLs have been copiedcopyButton.disabled = true;copyButton.textContent = `${numUrls} URL(s) copied to clipboard`;// enable the button again after 3 secondssetTimeout(function() {imageUrls = [];copyButton.disabled = false;copyButton.textContent = 'Copy all URLs';}, 3000);});})();