您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Books in one list
// ==UserScript== // @name zelluloza_one_list // @namespace https://zelluloza.ru/grub // @description Books in one list // @include https://zelluloza.ru/books/* // @include http://zelluloza.ru/books/* // @version 0.1 // @run-at document-end // ==/UserScript== var isStoped = false; /* * copy book window */ var bookBlock = document.createElement('div'); bookBlock.style.width = '800px'; bookBlock.style.height = '200px'; bookBlock.contentEditable = 'true'; bookBlock.style.overflow = 'scroll'; bookBlock.style.resize = 'both'; bookBlock.hidden = true; bookBlock.style.border = '2px solid white'; /* * copy book menu */ var copyMenu = document.createElement('div'); copyMenu.innerHTML = 'CopyBook: '; copyMenu.style.position = 'fixed'; copyMenu.style.zIndex = 999; copyMenu.style.display = 'block !important'; copyMenu.style.border = '4px solid yellow'; copyMenu.style.backgroundColor = "black"; copyMenu.style.color = 'white'; copyMenu.style.width = '100%'; copyMenu.id = 'oneListMenu'; /* * flip button */ var flipButton = document.createElement('button'); flipButton.innerHTML = 'Flip copy'; flipButton.onclick = function() { flipBookBlock(); }; /* * clear button */ var clearButton = document.createElement('button'); clearButton.innerHTML = 'Clear'; clearButton.onclick = function() { clearCopyBook(); }; /* * input field for dellay */ var dellayInput = document.createElement('input'); var dellayField = document.createElement('span'); var dellayName = document.createElement('span'); dellayName.innerHTML = 'dellay: '; dellayField.appendChild(dellayName); dellayField.appendChild(dellayInput); dellayField.type = 'number'; dellayInput.defaultValue = 1500; /* * run button */ var runButton = document.createElement('button'); runButton.innerHTML = 'Run'; runButton.id = 'oneListButton'; runButton.onclick = function() { clearCopyBook(); setTimeout(function() { inBookBegin() }, 2000); setTimeout(function() { copyBook(getBookCanvas(), 0) }, 4000); isStoped = false; changeStatus(statusVal.running); }; /* * interrupt button */ var stopButton = document.createElement('button'); stopButton.innerHTML = 'Stop'; stopButton.onclick = function() { isStoped = true; }; /* * status */ var statusBar = document.createElement('span'); var statusName = 'status: '; var statusVal = { 'stopped' : 'stopped', 'running' : 'running', 'done' : 'done' }; statusBar.style.color = 'orange'; statusBar.style.border = '3px solid grey'; var progressBar = document.createElement('span'); var progressBarName = 'progress: '; progressBar.style.color = 'orange'; progressBar.style.border = '3px solid grey'; setProgress('none'); /* * flip */ function flipBookBlock() { if(bookBlock.hidden) bookBlock.hidden = false; else bookBlock.hidden = true; } function createControlMenu() { copyMenu.appendChild(runButton); copyMenu.appendChild(stopButton); copyMenu.appendChild(flipButton); copyMenu.appendChild(clearButton); copyMenu.appendChild(dellayField); copyMenu.appendChild(statusBar); copyMenu.appendChild(progressBar); copyMenu.appendChild(bookBlock); addElemToBody(copyMenu); changeStatus(statusVal.stopped); } function getBookProgress() { return document.getElementById('bookpg').innerHTML; } function changeStatus(status) { statusBar.innerHTML = statusName + status; } function setProgress(progress) { progressBar.innerHTML = progressBarName + progress; } function addElemToBody(newElem) { var bodyTag = document.getElementsByTagName('body')[0]; var bodyTagChilds = bodyTag.getElementsByTagName('*'); bodyTag.insertBefore(newElem, bodyTagChilds[0]); } function getBookCanvas() { var pagesCanvas = document.getElementsByTagName('canvas')[0]; console.log('get canvas id: ' + pagesCanvas.id); return pagesCanvas; } function getImgFromCanvas(bookCanvas) { var img = bookCanvas.toDataURL(); return img; } function toNextPageDown() { var rightButton = document.getElementsByClassName('boxb2')[1]; rightButton.click(); console.log('toNextPageDown'); } function rexp100Perc(str) { var re = /100\%.*/; console.log('100 perc is ' + re.test(str) ); return re.test(str); } function lastPage() { var progressText = getBookProgress(); var arr = progressText.split('/'); var leftPageNum = +arr[0].split('-')[1]; var rightPageNum = +arr[1]; console.log('leftPageNum ' + leftPageNum); console.log('rightPageNum ' + rightPageNum); return leftPageNum === rightPageNum; } function isPageEnd() { var progressText = document.getElementById('bookpg').innerHTML; var isEnd = rexp100Perc(progressText); console.log('is end ' + isEnd); return isEnd; } function clearCopyBook() { bookBlock.innerHTML = ""; } function inBookBegin() { var beginButton = document.getElementsByClassName('boxb3')[0]; beginButton.click(); } function copyBook(bookCanvas, i) { if(isStoped) { changeStatus(statusVal.stopped); return; } setProgress(getBookProgress()); copyPage(bookCanvas, i); console.log('page numb: ' + i); if( !lastPage() ) { setTimeout(function() { toNextPageDown(); i++; copyBook(bookCanvas, i); }, dellayInput.value); } else { setTimeout(function() { changeStatus(statusVal.done) }, 2100); } } function copyPage(bookCanvas, i) { var image = new Image(); image.id = i; image.src = getImgFromCanvas(bookCanvas); printPage(image); } function printPage(page) { bookBlock.appendChild(page); } function testBlock() { lastPage(); } window.onload = function() { testBlock(); createControlMenu(); };