Similar websites to novelcrow.com?

adolfhipster

Newbie
Sep 7, 2017
89
78
As the title states, im looking for similar websites to with entire comics hosted on the site (and not served via external hosting sites) for scraping purposes.

If anyone has any good websites, please drop the link below :)
Thanks in advance
 
  • Like
Reactions: dussalant

Nadekai

Well-Known Member
Aug 18, 2021
1,810
4,483
Nice one, seems to be mainly for japanese comics? Havent looked to thoroughly through it yet though so might be wrong.
It contains other too, but you gotta filter for that. Since the overwhelming number is japanese.
 

adolfhipster

Newbie
Sep 7, 2017
89
78
Still looking for more sites;

Here's some i found



If anyone wants tampermonkey/greasemonkey scripts to download entire albums at once just say so and i will post here
 
  • Like
Reactions: dussalant

Asswecant1231

Newbie
Sep 24, 2020
27
18
Still looking for more sites;

Here's some i found



If anyone wants tampermonkey/greasemonkey scripts to download entire albums at once just say so and i will post here
Hey man I know this is an ancient thread but if you are still around can you post the script you are using? Thx a lot.
 

adolfhipster

Newbie
Sep 7, 2017
89
78
Hey man I know this is an ancient thread but if you are still around can you post the script you are using? Thx a lot.
Here is one for 8muses.xxx (been a long time i since i used it, and going to that site now it says im blocked so cant rest it)


Code:
// ==UserScript==
// @name         8Muses Downloader
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://8muses.xxx/comics*/issue-*/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=8muses.xxx
// @grant        GM_download
// @run-at       document-end
// ==/UserScript==

function waitForElm(selector) {
    return new Promise(resolve => {
        if (document.querySelectorAll(selector)) {
            return resolve(document.querySelectorAll(selector));
        }

        const observer = new MutationObserver(mutations => {
            if (document.querySelectorAll(selector)) {
                resolve(document.querySelectorAll(selector));
                observer.disconnect();
            }
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    });
}
function downloadImage(url, filename, comicName, comicChapter) {
    GM_download({
        url: url,
        name: "8muses\\" + comicName.replace(/[\/\\:*?"<>]/g, "") + "\\" + comicChapter + "\\" + filename,
        saveAs: false
    });
}
function addGenericButton(downloadEvent) {
    let btn = document.createElement("button");
    btn.style.cssText = "position:fixed;top:0px;left:0px;background-color:red;z-index:9999;";
    btn.innerText = "Download All";
    btn.onclick = downloadEvent;
    document.body.appendChild(btn);
}
function splitLastOccurrence(str, substring) {
  const lastIndex = str.lastIndexOf(substring);

  const before = str.slice(0, lastIndex);

  const after = str.slice(lastIndex + 1);

  return [before, after];
}

(function() {
    waitForElm('.c-tile').then((elms) => {
        addGenericButton(function()
        {
            let comicInfo = document.querySelector("h1").innerText;
            let comicName = splitLastOccurrence(comicInfo, "-")[0].trim();
            let comicChapter = splitLastOccurrence(comicInfo, "-")[1].trim().split(" ")[1].trim();
            let elms = document.querySelectorAll(".c-tile");

            for (let i = 0; i < elms.length; i++) {
                const img = elms[i].firstElementChild.firstElementChild;
                let filename = /[^/]*$/.exec(img.src)[0];
                downloadImage(img.src, filename, comicName, comicChapter);
            }
        });

        unsafeWindow.downloadAll = function()
        {
            let comicInfo = document.querySelector("h1").innerText;
            let comicName = comicInfo.split("-")[0].trim();
            let comicChapter = comicInfo.split("-")[1].trim().split(" ")[1].trim();
            let elms = document.querySelectorAll(".c-tile");

            for (let i = 0; i < elms.length; i++) {
                const img = elms[i].firstElementChild.firstElementChild;
                let filename = /[^/]*$/.exec(img.src)[0];
                downloadImage(img.src, filename, comicName, comicChapter);
            }
        }
    });
})();


and here is the script for milftoon.xxx, again, either im blocked or the site is closed

Code:
// ==UserScript==
// @name         milftoon.xxx Downloader
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://milftoon.xxx/comics/*/issue-*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=milftoon.xxx
// @grant        GM_download
// @run-at       document-end
// ==/UserScript==

function waitForElm(selector) {
    return new Promise(resolve => {
        if (document.querySelectorAll(selector)) {
            return resolve(document.querySelectorAll(selector));
        }

        const observer = new MutationObserver(mutations => {
            if (document.querySelectorAll(selector)) {
                resolve(document.querySelectorAll(selector));
                observer.disconnect();
            }
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    });
}
function downloadImage(url, filename, comicName, comicChapter) {
    GM_download({
        url: url,
        name: "milftoon\\" + comicName.replace(/[\/\\:*?"<>]/g, "") + "\\" + comicChapter + "\\" + filename,
        saveAs: false
    });
}
function addGenericButton(downloadEvent) {
    let btn = document.createElement("button");
    btn.style.cssText = "position:fixed;top:0px;left:0px;background-color:red;z-index:9999;";
    btn.innerText = "Download All";
    btn.onclick = downloadEvent;
    document.body.appendChild(btn);
}

(function() {
    waitForElm('.page-break').then((elms) => {
        addGenericButton(function()
        {
            let comicInfo = document.querySelector("h1").innerText;
            let comicName = comicInfo.split("-")[0].trim();
            let comicChapter = comicInfo.split("-")[1].trim().split(" ")[1].trim();
            let elms = document.querySelectorAll(".page-break");

            for (let i = 0; i < elms.length; i++) {
                const img = elms[i].firstElementChild;
                let filename = /[^/]*$/.exec(img.src)[0];
                downloadImage(img.src, filename, comicName, comicChapter);
            }
        });
        unsafeWindow.downloadAll = function()
        {
            let comicInfo = document.querySelector("h1").innerText;
            let comicName = comicInfo.split("-")[0].trim();
            let comicChapter = comicInfo.split("-")[1].trim().split(" ")[1].trim();
            let elms = document.querySelectorAll(".page-break");

            for (let i = 0; i < elms.length; i++) {
                const img = elms[i].firstElementChild;
                let filename = /[^/]*$/.exec(img.src)[0];
                downloadImage(img.src, filename, comicName, comicChapter);
            }
        }
    });
})();