您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
TTS for sentence list, hide English translations
// ==UserScript== // @name TTS jpdb // @namespace http://tampermonkey.net/ // @version 0.11 // @description TTS for sentence list, hide English translations // @author chaiknees // @match https://jpdb.io/review* // @icon https://www.google.com/s2/favicons?domain=jpdb.io // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; let voice; let lines = []; function speakIn( nv ) { voice = nv; } function read( text ) { let voiceline = new SpeechSynthesisUtterance( text ); voiceline.rate = 0.8; voiceline.voice = voice; voiceline.onend = function( event ) { console.log( `Had fun in ${event.elapsedTime} seconds.` ); if ( lines.length > 0 ) { read( lines.shift() ); }; }; window.speechSynthesis.speak( voiceline ); } function takeSententences() { for (let elem of Array.from(document.querySelectorAll('.answer-box .sentence, .used-in .jp')).slice(0, 2)) { let words = []; for (let node of Array.from(elem.childNodes)) { if (node.nodeType === Node.TEXT_NODE) { words.push( node.textContent ); } else if ( node.tagName === 'RUBY' ) { words.push( node.childNodes[ 0 ].textContent ); } else if ( node.tagName === 'SPAN' ) { words.push( node.textContent ); } } lines.push( words.join( '' ) ); } } function hideTranslation() { document.querySelector('#show-checkbox-examples').checked = true; for (let elem of Array.from(document.querySelectorAll('.used-in .en, .sentence-translation'))) { elem.style.color = '#222'; elem.addEventListener('mouseover', function(event) { event.target.style.color = 'darkgray'; }); elem.addEventListener('mouseout', function(event) { event.target.style.color = '#222'; }); } } hideTranslation(); let voiceReady = false; window.speechSynthesis.onvoiceschanged = function() { let voices = window.speechSynthesis.getVoices().filter( function( voice ) { return voice.lang == 'ja-JP'; } ); speakIn( voices[ 0 ] ); voiceReady = true; }; let word = ''; setInterval(function() { let nv = document.querySelector('.answer-box a.plain').textContent; if ( nv !== word && voiceReady ) { word = nv; takeSententences(); setTimeout(() => read( lines.shift() ), 750); } }, 250); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址