Scribd Viewer/Downloader

View or download from Scribd without an account

// ==UserScript==
// @name        Scribd Viewer/Downloader
// @namespace   0b9
// @match       *://www.scribd.com/*
// @grant       none
// @version     1.0
// @author      0b9
// @description View or download from Scribd without an account
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    let originalUrl = null;
    function redirectToEmbed() {
        const currentUrl = window.location.href;
        sessionStorage.setItem('originalUrl', currentUrl);
        const regex = /https:\/\/www\.scribd\.com\/[^/]+\/([^/]+)\/[^/]+/;
        const match = currentUrl.match(regex);

        if (match) {
            const newUrl = `https://www.scribd.com/embeds/${match[1]}/content`;
            window.location.href = newUrl;
        } else {
            alert("Error: No match");
        }
    }

    function downloadContent() {
        const contentElements = document.querySelectorAll('.text_layer .a');
        let content = '';
        contentElements.forEach(element => {
            content += element.textContent + '\n';
        });

        const blob = new Blob([content], { type: 'text/plain' });
        const url = URL.createObjectURL(blob);
        const a = document.createElement('a');
        a.href = url;
        a.download = 'scribd_content.txt';
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
        URL.revokeObjectURL(url);
    }

    function downloadContentAsPDF() {
    const savedUrl = sessionStorage.getItem('originalUrl');

    if (!savedUrl) {
        alert('Error: !savedurl');
        return;
    }

    const regex = /https:\/\/www\.scribd\.com\/(?:document|presentation)\/(\d+)\/([^\/?#]+)/;

    const match = savedUrl.match(regex);

	if (match) {
		const part1 = match[1]; // e.g. "505139221"
		const part2 = match[2]; // e.g. "xtream-codes-4"

		console.log(`doc_number: ${part1}`);
		console.log(`doc_title: ${part2}`);

		const urls = [
			`https://compress-pdf.vietdreamhouse.com/?fileurl=https://scribd.downloader.tips/pdownload/${part1}/${part2}&title=${part2}`,
			`https://compress.tacz.info/?fileurl=https://scribd.vpdfs.com/pdownload/${part1}/${part2}&title=${part2}`
		];

    const randomUrl = urls[Math.floor(Math.random() * urls.length)];
    window.location.href = randomUrl;
}
    else {
        alert('Error: Invalid URL');
    }
}

    const redirectButton = document.createElement('button');
    redirectButton.textContent = 'View Full';
    redirectButton.style.position = 'fixed';
    redirectButton.style.top = '10px';
    redirectButton.style.right = '10px';
    redirectButton.style.zIndex = '1000';
    redirectButton.style.padding = '10px';
    redirectButton.style.backgroundColor = '#4CAF50';
    redirectButton.style.color = 'white';
    redirectButton.style.border = 'none';
    redirectButton.style.borderRadius = '5px';
    redirectButton.style.cursor = 'pointer';

    redirectButton.addEventListener('click', redirectToEmbed);
    document.body.appendChild(redirectButton);


    const downloadButton = document.createElement('button');
    downloadButton.textContent = 'Download TXT';
    downloadButton.style.position = 'fixed';
    downloadButton.style.top = '50px';
    downloadButton.style.right = '10px';
    downloadButton.style.zIndex = '1000';
    downloadButton.style.padding = '10px';
    downloadButton.style.backgroundColor = '#007BFF';
    downloadButton.style.color = 'white';
    downloadButton.style.border = 'none';
    downloadButton.style.borderRadius = '5px';
    downloadButton.style.cursor = 'pointer';

    downloadButton.addEventListener('click', downloadContent);
    document.body.appendChild(downloadButton);

    const downloadPDFButton = document.createElement('button');
    downloadPDFButton.textContent = 'Download PDF';
    downloadPDFButton.style.position = 'fixed';
    downloadPDFButton.style.top = '90px';
    downloadPDFButton.style.right = '10px';
    downloadPDFButton.style.zIndex = '1000';
    downloadPDFButton.style.padding = '10px';
    downloadPDFButton.style.backgroundColor = '#FF5733';
    downloadPDFButton.style.color = 'white';
    downloadPDFButton.style.border = 'none';
    downloadPDFButton.style.borderRadius = '5px';
    downloadPDFButton.style.cursor = 'pointer';

    downloadPDFButton.addEventListener('click', downloadContentAsPDF);

    document.body.appendChild(downloadPDFButton);

})();