EnableCopy_Lush Story

Add a red button for the site:www.lushStories.com, and click to remove the copy restriction. Add smart Read button to listen stories(Chrome,Esc to cancel & Space to psuse/resume.).

As of 2020-03-08. See the latest version.

// ==UserScript==
// @name         LushStories.com-去除文章选择、复制限制;添加朗读/听书功能
// @name:en      EnableCopy_Lush Story
// @namespace    yoursatan
// @version      0.0.6
// @description  在阅读界面添加一个Enable Copy按钮,点击即可进行选择、复制,可划词以配合有道翻译;添加 Smart Read 按钮,实现语音朗读/听书功能,Esc-结束朗读;空格-暂定/继续(360安全浏览器急速模式(已测试),Chrome浏览器);
// @description:en    Add a red button for the site:www.lushStories.com, and click to remove the copy restriction. Add smart Read button to listen stories(Chrome,Esc to cancel & Space to psuse/resume.).
// @author       yorusatan
// @include      http*://www.lushstories.com/*
// @grant        none
// @require      https://code.jquery.com/jquery-2.1.4.min.js
// @license      MIT License
// ==/UserScript==
// v0.0.6 完善 Smart Read 功能:Esc-结束朗读;空格-暂定/继续  ——2020-3-8
// v0.0.5 添加 Smart Read 按钮,实现语音朗读/听书功能  ——2020-3-8
// v0.0.4 修改介绍文字 -2020-3-7
// v0.0.3 更新按钮样式,统一按钮风格  ——2020-3-7
// v0.0.2 实现基本功能,点击可选,可复制,可划词使用有道翻译 ——2020-3-4
// v0.0.1 添加 Enable Copy 按钮,更改文章样式  ——2020-3-3
(function() {
    'use strict';

    $(".blockselect").css({"-moz-user-select": "-moz-text",
    "-khtml-user-select": "text",
    "-webkit-user-select": "text",
    "user-select": "text"});
    $("#printer").css({"-moz-user-select": "-moz-text",
    "-khtml-user-select": "text",
    "-webkit-user-select": "text",
    "user-select": "text"});
     $(".onoffswitch").css({"-moz-user-select": "-moz-text",
    "-khtml-user-select": "text",
    "-webkit-user-select": "text",
    "user-select": "text"});
    $( ".story" ).wrap( "<div id='newCont'></div>" );
    $("#breadcrumb").append('<a id="btnEnableCopy" type = "button" href = "#" title = "Enable Copy"  style="color:black;background:#e60022; width:150px;display: run-in ;padding: 0 5px;text-align:center ;font: 150% Trebuchet MS; border: 1px solid #e60022;-moz-border-radius: 3px;-webkit-border-radius: 3px;border-radius: 3px; height: 20px;">Enable Copy</a>');
    $("#breadcrumb").append('<a id="btnSmartRead" type = "button" href = "#" title = "Smart Read"  style="color:black;background:#e60022; width:150px;display: run-in ;margin:0 5px; padding: 0 5px;text-align:center ;font: 150% Trebuchet MS; border: 1px solid #e60022;-moz-border-radius: 3px;-webkit-border-radius: 3px;border-radius: 3px; height: 20px;">Smart Read</a>');
    $("#btnEnableCopy").hover(function(){
        $("#btnEnableCopy").css({"color":"white"});
    },function(){
        $("#btnEnableCopy").css({"color":"black"});
    });
     $("#btnSmartRead").hover(function(){
        $("#btnSmartRead").css({"color":"white"});
    },function(){
        $("#btnSmartRead").css({"color":"black"});
    });
    $("#btnEnableCopy").click(function(){
        var storyAll = $(".story").html()
        $("#sticky-col").remove()
        $(".story").remove();
        $("#newCont").append(storyAll);
        $("#newCont").css("width","125%");
        $(".storycontent").css({"font-family":"sans-serif","font-size":"1.5em","line-height":"1.8em","font-weight":300});
    });


// 朗读
var speaker = new window.SpeechSynthesisUtterance();
    speaker.rate = 1.24;
    speaker.lang = "en-US";
    speaker.voiceURI = "Microsoft Zira Desktop - English (United States)";

    // 多次尝试再for循环中无法循环朗读,故添加flag步进;利用setInterval进行循环。
    var flag = 1;
    $("#btnSmartRead").click(function (){
       // event.preventDefault();
        var storyAllRead = $(".storycontent").html().replace(/<br\s*\/?>/gi,"\n").replace(/\n(\n)*( )*(\n)*\n/g,"\n").replace(/\&nbsp;/g,"").split(/\n/);
        var countPara = storyAllRead.length;

        var reading = setInterval(function() {
        if(!window.speechSynthesis.speaking && flag < countPara -1 ){
             speaker.text = storyAllRead[flag].replace(/\s+/g," ").trim();
            window.speechSynthesis.speak(speaker)
            flag +=1;
        } else if(flag >= countPara -1) {
            window.speechSynthesis.cancel();
            clearInterval(reading);
            flag = 1;
            alert("The story is finished");
        }
        },500);
        // 监听键盘
        $(document).keyup(function(event) {
            if(event.keyCode == 27 || event.keyCode == 116) {
                window.speechSynthesis.cancel();
                clearInterval(reading);
                flag = 1;
            }

        });
    });
    // 监听键盘
    $(document).keyup(function(event) {
        event.preventDefault();
        if(event.keyCode == 32) {
            if(window.speechSynthesis.speaking) {
                window.speechSynthesis.pause();
            }
            if(window.speechSynthesis.paused ){
                window.speechSynthesis.resume();
            }
        }
    });

})();