| 
									
										
										
										
											2018-01-19 13:02:27 -06:00
										 |  |  | // -*- tab-width: 4; js-indent-level: 4; -*-
 | 
					
						
							|  |  |  | // ==UserScript==
 | 
					
						
							|  |  |  | // @name         Viewcomic Scraper
 | 
					
						
							|  |  |  | // @namespace    danielrayjones
 | 
					
						
							| 
									
										
										
										
											2020-06-05 19:46:36 -05:00
										 |  |  | // @version      0.0.10
 | 
					
						
							| 
									
										
										
										
											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], | 
					
						
							| 
									
										
										
										
											2020-06-05 19:46:36 -05:00
										 |  |  |         cheat: getStuff | 
					
						
							| 
									
										
										
										
											2018-01-19 13:02:27 -06:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     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); |