Greasy Fork is available in English.

百度小说下载

生成下载按钮,导出成TXT文件

// ==UserScript==
// @name         百度小说下载
// @namespace    https://boxnovel.baidu.com/
// @version      1.0
// @description  生成下载按钮,导出成TXT文件
// @author       Lennon
// @match        https://boxnovel.baidu.com/boxnovel/*
// @require      http://code.jquery.com/jquery-2.1.1.min.js
// @run-at       document-end
// @icon         https://www.baidu.com/favicon.ico
// ==/UserScript==
(function () {
    'use strict';

    var myAwesomeScript = document.createElement('script');
    myAwesomeScript.setAttribute('src', 'https://code.jquery.com/jquery-2.1.1.min.js');
    document.head.appendChild(myAwesomeScript);

    setTimeout(function () {
        var url = 'https://boxnovel.baidu.com/boxnovel/wiseapi/chapterContent';
        var gid = getQueryVariable('gid');
        var cid = getQueryVariable('cid');
        var title = '';
        if (document.querySelectorAll('.header')[1]) {
            title = document.querySelectorAll('.header')[1].textContent;
        } else if (document.querySelector('title')) {
            title = document.querySelector('title').textContent;
        }

        var content = '';
        getContent(cid);

        function getContent(next_cid) {
            if (!next_cid) {
                return;
            }

            $.ajax({
                url: url,
                data: {
                    bookid: gid,
                    cid: next_cid,
                },
                async: false,
                dataType: 'json',
                type: 'GET',
                success: function (res) {
                    content += `${res.data.title}\n`;
                    res.data.content.forEach(function (value) {
                        content += `${value}\n`;
                    });
                    content += `\n\n`;

                    if (!res.data.pt.next_cid) {
                        addDownloadButton(`${title}.txt`, content);
                        return;
                    }

                    setTimeout(function () {
                        getContent(res.data.pt.next_cid);
                    }, 100);
                }
            });
        }

        function addDownloadButton(filename, text) {
            var element = document.createElement('a');
            element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
            element.setAttribute('download', filename);
            element.innerText = '下载TXT';
            document.body.prepend(element);
        }

        function download(filename, text) {
            var element = document.createElement('a');
            element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
            element.setAttribute('download', filename);

            element.style.display = 'none';
            document.body.appendChild(element);

            element.click();
        }

        function getQueryVariable(variable) {
            var query = window.location.search.substring(1);
            var vars = query.split('&');
            for (var i = 0; i < vars.length; i++) {
                var pair = vars[i].split('=');
                if (pair[0] === variable) {
                    return pair[1];
                }
            }
            return (false);
        }
    }, 3000);
})();