2018-01-19 13:02:27 -06:00
|
|
|
// -*- tab-width: 4; js-indent-level: 4; -*-
|
|
|
|
|
// ==UserScript==
|
|
|
|
|
// @name Viewcomic Scraper
|
|
|
|
|
// @namespace danielrayjones
|
2020-06-05 14:48:01 -05:00
|
|
|
// @version 0.0.9
|
2018-01-19 13:02:27 -06:00
|
|
|
// @description Scrape comics from viewcomic.com
|
|
|
|
|
// @author Dan Jones
|
|
|
|
|
// @match http://viewcomic.com/*
|
|
|
|
|
// @grant none
|
|
|
|
|
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js
|
2020-06-05 14:09:47 -05:00
|
|
|
// @require https://bowercdn.net/c/konami-code-1.3.2/src/jquery.konami.min.js
|
2018-10-04 21:25:06 -05:00
|
|
|
// @require https://bowercdn.net/c/jszip-3.1.5/dist/jszip.min.js
|
2018-01-19 13:02:27 -06:00
|
|
|
// ==/UserScript==
|
|
|
|
|
|
2018-10-04 21:25:06 -05:00
|
|
|
/* global jQuery, JSZip */
|
2020-06-05 14:48:01 -05:00
|
|
|
/* jshint esversion: 6 */
|
2018-08-17 19:09:14 +00:00
|
|
|
|
|
|
|
|
(function($) {
|
2018-01-19 13:02:27 -06:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
$(window).konami({
|
|
|
|
|
code: [71,69,84],
|
|
|
|
|
eventName: 'konami.get'
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$(window).on('konami.get', getStuff);
|
|
|
|
|
|
|
|
|
|
function getStuff() {
|
2018-04-16 11:12:51 -05:00
|
|
|
let i = 0;
|
|
|
|
|
|
|
|
|
|
let path = location.pathname.split('/');
|
|
|
|
|
let end = path.pop();
|
|
|
|
|
while (!end && path.length) {
|
|
|
|
|
end = path.pop();
|
|
|
|
|
}
|
|
|
|
|
let name = end ? end : 'comic';
|
|
|
|
|
|
2018-04-16 11:26:23 -05:00
|
|
|
let imgs = $('div.pinbin-copy img.picture, div.pinbin-copy img.hoverZoomLink').toArray();
|
2018-04-16 11:22:10 -05:00
|
|
|
console.log(imgs);
|
2018-04-16 11:12:51 -05:00
|
|
|
|
2018-10-04 21:25:06 -05:00
|
|
|
let cbz = new JSZip();
|
|
|
|
|
|
|
|
|
|
function downloadCbz() {
|
|
|
|
|
cbz.generateAsync({type: 'blob'})
|
|
|
|
|
.then(blob => {
|
|
|
|
|
let title = name.replace(/-/g, ' ').replace(/\b([0-9]{4})\b/, '($1)');
|
|
|
|
|
|
|
|
|
|
let $el = $('<a>');
|
|
|
|
|
$(document.body).append($el);
|
|
|
|
|
$el.attr('href', URL.createObjectURL(blob));
|
|
|
|
|
$el.attr('download', `${title} (viewcomic) (Danjones).cbz`);
|
|
|
|
|
$el.get(0).click();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2018-04-16 11:12:51 -05:00
|
|
|
function getOne() {
|
2018-10-04 21:25:06 -05:00
|
|
|
if (!imgs || !imgs.length) {
|
|
|
|
|
downloadCbz();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2018-04-16 11:12:51 -05:00
|
|
|
let img = imgs.shift();
|
|
|
|
|
console.log(img.src);
|
|
|
|
|
|
2018-04-16 11:42:00 -05:00
|
|
|
fetch(img.src).then(resp => resp.blob()).then(blob => {
|
2018-10-04 21:25:06 -05:00
|
|
|
cbz.file(name + '-' + (i < 10 ? '00' : '0' ) + i + '.jpg', blob);
|
2018-04-16 11:12:51 -05:00
|
|
|
|
2018-04-16 11:42:00 -05:00
|
|
|
i = i+1;
|
2018-10-04 21:25:06 -05:00
|
|
|
setTimeout(getOne, 0);
|
2018-04-16 11:42:00 -05:00
|
|
|
});
|
2018-04-16 11:12:51 -05:00
|
|
|
}
|
2018-10-04 21:25:06 -05:00
|
|
|
|
2018-04-16 11:12:51 -05:00
|
|
|
getOne();
|
2018-01-19 13:02:27 -06:00
|
|
|
}
|
2018-08-17 19:09:14 +00:00
|
|
|
})(jQuery);
|