Skip to content

Instantly share code, notes, and snippets.

@NO-ob
Last active February 18, 2021 10:31
Show Gist options
  • Save NO-ob/5f4608063ac0596037f398257d97ed47 to your computer and use it in GitHub Desktop.
Save NO-ob/5f4608063ac0596037f398257d97ed47 to your computer and use it in GitHub Desktop.
hentai.cafe dl script
// ==UserScript==
// @name Hentai.Cafe DL
// @namespace http://tampermonkey.net/
// @version 1.1
// @description try to take over the world!
// @author You
// @match https://hentai.cafe/hc.fyi/*
// @require https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jszip-utils/0.0.2/jszip-utils.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.js
// @grant GM_xmlhttpRequest
// ==/UserScript==
(function() {
'use strict';
let mangaName = document.querySelector("div.x-column.x-sm.x-1-2.last > h3" ).textContent;
let readerURL = document.querySelector("a.x-btn.x-btn-flat.x-btn-rounded.x-btn-large").href;
readerURL = readerURL.split("en/0/1/")[0] + "/en/0/1/";
console.log(readerURL);
let pageCount;
let imageURLS = [];
let failedURLS = [];
let dlButton = document.createElement("div");
dlButton.setAttribute("class","x-btn x-btn-flat x-btn-rounded x-btn-large");
dlButton.setAttribute("id","dlButton");
dlButton.innerHTML = "Download";
document.querySelector("div.x-column.x-sm.x-1-2.last > p").appendChild(dlButton);
document.getElementById("dlButton").addEventListener("click", getImages);
function getImages(){
GM_xmlhttpRequest ( {
method: "GET",
url: readerURL + "page/" + 1,
responseType: "html",
onload: (res) => {
console.log(readerURL + "page/" + 1);
let page = document.createElement("div");
console.log(page.responseText);
page.innerHTML = res.responseText;
imageURLS[0] = page.querySelector("div.inner > a > img.open").src;
pageCount = page.querySelectorAll("div.topbar_right > div > ul.dropdown > li").length;
console.log(imageURLS[0]);
let baseURL = imageURLS[0].slice(0,imageURLS[0].lastIndexOf("/")+1);
let ext = imageURLS[0].slice(imageURLS[0].lastIndexOf(".")+1);
let zip = new JSZip();
let count = 0;
for (let i = 1; i <= pageCount ; i++ ){
if (pageCount > 100 && i <= 9){
imageURLS[i] = baseURL + "00" + i + "." + ext;
} else if ((i < 10)||(pageCount > 100 && i <= 99)){
imageURLS[i] = baseURL + "0" + i + "." + ext;
} else {
imageURLS[i] = baseURL + i + "." + ext;
}
GM_xmlhttpRequest ( {
method: "GET",
url: imageURLS[i],
responseType: "arraybuffer",
onload: (res) => {
zip.file(i + "." + ext, res.response, { binary: true });
count++;
console.log(imageURLS[i] + " Snatched");
if (count == pageCount){
zip.generateAsync({ type: 'blob' }).then(function(content) {
saveAs(content, mangaName + ".cbz");
});
}
}
});
}
}
});
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment