-
-
Save JamesSkemp/dcce1f258e35997eb8ca714031ec414d to your computer and use it in GitHub Desktop.
Humble bundle book bundles - download all books at once
This file contains 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
/* | |
Forked from https://gist.github.com/zuazo/a91ecbb97b90ef3ef9ce8caf361199a2 | |
Which was forked from https://gist.github.com/p0kR/95e05e689be4e59b1b8fb6e383b9e25a | |
After purchasing a humble book bundle, go to your download page for that bundle. | |
Open a console window on the page and paste in the below JavaScript. | |
JamesSkemp fork changes: | |
- Fix ZIP file downloads. | |
- Add Chrome URLs to setting pages. | |
- Add configurable delay between downloads. | |
note that if you are in chrome, chrome will not download the pdfs for you by default, to fix this | |
Settings (chrome://settings) --> Advanced --> Privacy and security --> Content settings --> PDF documents --> Download PDF files instead of automatically opening them in Chrome --> Turn ON | |
chrome://settings/content/pdfDocuments | |
Settings (chrome://settings) --> Advanced --> Downloads --> Ask where to save each file before downloading --> Turn OFF | |
chrome://settings/downloads | |
*/ | |
var pattern = /(MOBI|PRC|ZIP|EPUB|PDF( ?\(H.\))?|CBZ|Download)$/i; | |
var nodes = document.getElementsByTagName('a'); | |
// Delay after starting a download, in ms. | |
const downloadDelay = 3000; | |
const timer = ms => new Promise(res => setTimeout(res, ms)) | |
async function startSearching() { | |
for (i in nodes) { | |
var a = nodes[i]; | |
if (a && a.text && pattern.test(a.text.trim())) { | |
download(a.attributes['href'].value, i); | |
// Wait x milliseconds before looking for additional downloads. | |
await timer(downloadDelay); | |
} | |
} | |
} | |
function download(url, i) { | |
var iframe = document.createElement('iframe'); | |
iframe.id = "dl_iframe_" + i; | |
iframe.style.display = "none"; | |
document.getElementsByTagName('body')[0].appendChild(iframe); | |
iframe.src = url; | |
console.log('iframe set to', url) | |
} | |
startSearching(); |
This file contains 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
/* | |
Bonus: Get book/game titles dumped to the console. | |
*/ | |
const gameInfo = document.getElementsByClassName("gameinfo"); | |
const gameTitles = []; | |
for (i in gameInfo) { | |
var game = gameInfo[i]; | |
if (game && typeof game === 'object') { | |
let gameTitle = game.getElementsByClassName("title"); | |
if (gameTitle) { | |
gameTitles.push(gameTitle[0].innerText); | |
} | |
} | |
} | |
console.log(gameTitles.sort().join('\r\n')); | |
console.log(`${gameTitles.length} items`); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment