Litres Download Button

Adds a button to download an open book for reading with an active Litres subscription

// ==UserScript==
// @name         Litres Download Button
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  Adds a button to download an open book for reading with an active Litres subscription
// @author       Grok
// @match        https://www.litres.ru/static/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Функция для формирования URL скачивания
    function generateDownloadUrl() {
        const currentUrl = window.location.href;
        // Удаляем префикс /static/or4/view/or.html?baseurl=
        let downloadUrl = currentUrl.replace('/static/or4/view/or.html?baseurl=', '');
        // Удаляем параметры после &art=
        downloadUrl = downloadUrl.split('&art=')[0];
        return downloadUrl;
    }

    // Функция для добавления кнопки
    function addDownloadButton() {
        // Проверяем, что мы на странице чтения
        if (!window.location.href.includes('/static/or4/view/or.html')) {
            console.log('Не страница чтения книги');
            return;
        }

        // Формируем URL для скачивания
        const downloadUrl = generateDownloadUrl();

        // Создаем кнопку
        const downloadButton = document.createElement('a');
        downloadButton.textContent = 'Скачать книгу';
        downloadButton.href = downloadUrl;
        downloadButton.style.position = 'fixed';
        downloadButton.style.top = '1px';
        downloadButton.style.left = '50%';
        downloadButton.style.transform = 'translateX(-50%)';
        downloadButton.style.padding = '10px 15px';
        downloadButton.style.backgroundColor = '#28a745';
        downloadButton.style.color = '#fff';
        downloadButton.style.textDecoration = 'none';
        downloadButton.style.borderRadius = '5px';
        downloadButton.style.zIndex = '1000';
        downloadButton.setAttribute('download', '');

        // Добавляем кнопку на страницу
        document.body.appendChild(downloadButton);
    }

    // Ждем загрузки страницы и добавляем кнопку
    window.addEventListener('load', addDownloadButton);
})();