// ==UserScript== // @name Scribd Book Downloader // @namespace http://tampermonkey.net/ // @version 0.1.1 // @description Scribd Book and Document Downloader // @author https://github.com/jtrancozo/scribd-downloader // @match https://*.scribd.com/* // @icon https://www.google.com/s2/favicons?domain=scribd.com // @grant none // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/438869/Scribd%20Book%20Downloader.user.js // @updateURL https://update.greasyfork.icu/scripts/438869/Scribd%20Book%20Downloader.meta.js // ==/UserScript== (function() { let bookName = document.title; let url = document.location.href; const styles = "#app-wrapper { position: fixed; bottom: 10px; left: 10px; z-index: 9999; }"+ "#app-wrapper .btn-app {display: inline-block; padding: 10px 20px; margin-right: 15px; background: #fd4343; color: #fff; font-size: 14px; font-weight: bold; border-radius: 5px; display:none; }"; const styleSheet = document.createElement("style"); styleSheet.type = "text/css"; styleSheet.innerText = styles; document.head.appendChild(styleSheet); // btn wrapper const wrapper = document.createElement('DIV'); wrapper.id = 'app-wrapper'; document.body.appendChild(wrapper); // Btn Download const btn = document.createElement('A'); btn.innerText = 'Download Content'; btn.id = 'btn-download'; btn.className = 'btn btn-app'; btn.href = "javascript:;" wrapper.appendChild(btn); const btn_print = document.createElement('SPAN'); btn_print.innerText = 'Print'; btn_print.id = 'btn-print'; btn_print.className = 'btn-app'; wrapper.appendChild(btn_print); // Book const book = document.createElement('DIV'); book.id = 'book'; document.body.appendChild(book); // Next Page Arrow const next = document.querySelector('.page_right.next_btn'); function createBook () { const book_w = document.querySelector('#column_container .reader_column.left_column > div').style.width; const book_h = document.querySelector('#column_container .reader_column.left_column > div').style.height; // const book_w = 585; // const book_h = 765; let css = "
"; book.style.cssText = `width: ${book_w}px; height: auto;`; book.innerHTML = css; } const initBookScrapper = function () { createBook(); let pages = getPageCounter(); // let pageBefore = 1; function loop () { // pageBefore = pages.atual; setTimeout(() => { clonePageContent(); next.click(); pages = getPageCounter(); if (pages.atual < pages.total) { // if (pages.atual < 20) { loop(); } else { // fixColumnsHeight(); } // console.log(pages.atual); }, 2000); } loop(); } const clonePageContent = function () { convertImages(); let pageLeft = document.querySelector('#column_container .reader_column.left_column'); let pageRight = document.querySelector('#column_container .reader_column.right_column'); book.append(pageLeft.cloneNode(true)); book.append(pageRight.cloneNode(true)); } const convertImages = function () { let imgs = document.querySelectorAll('#column_container img'); for (let img of imgs) { if (img.naturalWidth == 1 && img.naturalHeight == 1) { img.style.display = 'none !important'; img.remove(); } const newImg = getBase64Image(img); img.src = newImg; } } const nextPage = function () { } const getPageCounter = () => { let text = document.querySelector('.page_counter').innerText; text = text.split(' '); return { atual: parseInt(text[1]), total: parseInt(text[3]) } } const getBase64Image = function (img) { var canvas = document.createElement("canvas"); canvas.width = img.naturalWidth; canvas.height = img.naturalHeight; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0); var dataURL = canvas.toDataURL("image/jpeg", 1); // return '