轻小说文库下载

在书籍目录页添加下载链接,并优化部分小说的在线阅读功能(插图章节的单独处理)

当前为 2020-07-23 提交的版本,查看 最新版本

// ==UserScript==
// @name         轻小说文库下载
// @namespace    wenku8Haoa
// @version      1.0
// @description  在书籍目录页添加下载链接,并优化部分小说的在线阅读功能(插图章节的单独处理)
// @author       HaoaW
// @match        https://www.wenku8.net/*
// @match        http://www.wenku8.net/*
// @connect      dl.wenku8.com
// @require      http://code.jquery.com/jquery-3.5.1.min.js
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function() {
    'use strict';
    //替换所有
    String.prototype.replaceAll= function(exp,newStr){
        return this.replace(new RegExp(exp,"gm"),newStr);
    };
    //标记含有html代码的行
    var htmlLine = function(txt){
        return 'c1ef6520'+ txt +'1a5219e9b2b0';
    };
    //格式化内容
    var contentFormat = function(txt){
        //设置章节名样式
        let txtTmp = txt.replaceAll(/^ {2}\S+.*$/,
            function(match){
                return htmlLine('<br/><div style="background:#e4e1d8" id="title">'+ match.trim() +'</div>');
            }
        );
        txtTmp = $('<div></div>').text(txtTmp).html();
        txtTmp = txtTmp.replaceAll(/ /,'&nbsp;');
        txtTmp = txtTmp.replaceAll(/(c1ef6520).*(1a5219e9b2b0)/,
            function(match){
                return $('<div></div>').html(match.replaceAll(/(&nbsp;)/,' ').replace('c1ef6520','').replace('1a5219e9b2b0','')).text();
            }
        );
        txtTmp = txtTmp.replaceAll(/[\r\n]+/,'<br/>');
        return txtTmp;
    };
    //格式化图片
    var imgFormat = function(txt){
        let imgResultRoot = $('<div></div>');

        let imgRoot = $('<div></div>').html(txt);
        $('.divimage',imgRoot).each(function(){
                let jqthis = $(this);
                let imgURL = jqthis.attr('title');//取得图片url
                let itemEle = $('<div class="divimage"><a target="_blank"><img border="0" class="imagecontent" /></a></div>');
                $('a',itemEle).attr('href',imgURL);
                $('img',itemEle).attr('src',imgURL);

                imgResultRoot.append(itemEle);
        });

        return imgResultRoot.html();
    }

    //目录页面或内容会声明章节变量。
    if('undefined' == typeof chapter_id || undefined===chapter_id) return;
    //本书编号 article_id

    //目录页面章节id定义为 '0'
    if('0' == chapter_id){//在章节名之后添加下载链接
        //书名
        let aname = $('#title').text();
        //添加全本下载链接
        let allDLink = 'http://dl.wenku8.com/down.php?type=utf8&id='+article_id+'&fname='+aname;
        let allaEle = '<a href="'+allDLink+'">&nbsp;&nbsp;全本下载(utf-8)</a>';
        $('#title').append(allaEle);

        $('.vcss').each(function(){
            let jqthis = $(this);
            let vname = jqthis.text();
            let nextChapter = jqthis.parent().next().children().first();
            let vid = $('a',nextChapter).attr('href').split('.')[0];
            //vid = (Number(vid)-1).toString();//部分文章无法使用章节减1来下载,直接使用章节可以下载(下载内容使用-1时章节名包含小说名,不-1不包含小说名)

            let dlink = 'http://dl.wenku8.com/packtxt.php?aid='+article_id+
                '&vid='+vid+'&aname='+aname+'&vname='+vname+'&charset=utf-8';
            let aEle = '<a href="'+dlink+'">&nbsp;&nbsp;下载(utf-8)</a>'
            jqthis.append(aEle);
        });
        return;
    }
    if('0' != chapter_id){//内容页面
        //如果包含一个内容为 'null'的span则判定为版权限制
        if($('#contentmain span').first().text().trim() == 'null'){
            //设置下一页和上一页快捷键到目录页
            preview_page = next_page = index_page;
            $('#content').text('正在下载,请稍候...');
            let chapterTitle = $('#title').text();
            //标题含有"插图"则判定为插图章节
            if(-1 != chapterTitle.indexOf('插图')){
                let dlink = 'http://dl.wenku8.com/pack.php?aid='+article_id+
                                                '&vid='+chapter_id;
                GM_xmlhttpRequest({
                    method :'GET',
                    url :dlink,
                    onload :function(response){
                            if(response.statusText == "OK"){
                                let formatImg = imgFormat(response.responseText);
                                $('#content').html(formatImg);
                            }else{
                                $('#content').text('下载失败');
                            }
                        },
                });
            }else{
                let dlink = 'http://dl.wenku8.com/packtxt.php?aid='+article_id+
                                '&vid='+chapter_id;
                GM_xmlhttpRequest({
                    method :'GET',
                    url :dlink,
                    onload :function(response){
                            if(response.statusText == "OK"){
                                let formatTxt = contentFormat(response.responseText);
                                $('#content').html(formatTxt);
                                //$('#content').text(response.responseText);
                            }else{
                                $('#content').text('下载失败');
                            }
                        },
                });
            }
        }
    }
    // Your code here...
})();