Created
July 8, 2022 18:09
-
-
Save andrewiankidd/dc6917685ca575c80bf5b4e978dbbde1 to your computer and use it in GitHub Desktop.
Userscript to download all images in a Gallerix.org set
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Gallerix Scraper | |
// @namespace http://andrewkidd.co.uk/ | |
// @version 0.1 | |
// @description Batch grab gallerix images | |
// @author You | |
// @match https://gallerix.org/storeroom/* | |
// @match https://gallerix.org/pic/* | |
// @icon https://www.google.com/s2/favicons?sz=64&domain=gallerix.org | |
// @grant GM_openInTab | |
// @grant GM_download | |
// @grant window.close | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
const sleep = seconds => new Promise(r => setTimeout(r, seconds * 1000)); | |
function log(message) { | |
console.log('[gallerix-scraper]', message) | |
} | |
// click the show all/load more button if not already clicked | |
function showAllInGallery() { | |
while (document.querySelector('button#lazy').style.display != 'none') { | |
document.querySelector('button#lazy').click() | |
} | |
} | |
// get all links that go to images in this storeroom | |
async function getAllGalleryLinks() { | |
var linkCollection = document.getElementsByTagName('a'); | |
var storeroomId = window.location.href.match(/storeroom\/([0-9]+)\//)[1]; | |
for(var i = 0; i < linkCollection.length; i++){ | |
var link = linkCollection[i].href; | |
if (link.includes(`${storeroomId}/N`)) { | |
log(`${link}?gallerix-scraper`); | |
GM_openInTab(`${link}?gallerix-scraper`); | |
await (1); | |
} | |
} | |
} | |
if (window.location.href.startsWith('https://gallerix.org/pic/') && window.location.hash.startsWith('#gallerix-scraper=')) { | |
log('Raw Image! Downloading'); | |
var downloadInfo = { | |
url: document.querySelector('a').href, | |
name: decodeURI(window.location.hash.split('#gallerix-scraper=')[1]) | |
}; | |
log(downloadInfo); | |
GM_download(downloadInfo); | |
window.close(); | |
} else if (document.querySelectorAll('div.tab-content div.pic').length) { | |
log('Gallery Page! Adding download button'); | |
// add download button | |
document.querySelector('ul.nav-tabs').insertAdjacentHTML('beforeEnd', '<li><a class="nav-link" id="gallerix-scraper" href="#"><i class="icon fa fa-download"></i></a></li>'); | |
// wait for user to click download button | |
document.querySelector('a#gallerix-scraper').addEventListener('click', function() { | |
showAllInGallery(); | |
getAllGalleryLinks(); | |
}); | |
} else if (window.location.href.endsWith('?gallerix-scraper') && document.querySelectorAll('div.tab-content p.xpic').length) { | |
log('Image View! Scraping raw image link'); | |
var artworkTitle = document.title; | |
var artworkLink = document.querySelector('a#axpicd'); | |
var tmp = artworkLink.href.split('.'); | |
var filename = `${artworkTitle}.${tmp[tmp.length-1]}` | |
log(`${artworkTitle} - ${artworkLink.href}`); | |
artworkLink.href = `${artworkLink.href}#gallerix-scraper=${filename}`; | |
artworkLink.click(); | |
window.close(); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment