// ==UserScript== // @name Easy Voa Listen and write // @namespace http://fengwang.org.cn // @version 0.4 // @description voa enhance listen to write // @author wangfeng // @require http://code.jquery.com/jquery-1.9.1.js // @require https://cdn.jsdelivr.net/jsdiff/1.4.0/diff.min.js // @match http://www.easyvoa.com/*/* // @match http://www.51voa.com/*/* // @grant none // @downloadURL https://update.greasyfork.icu/scripts/18152/Easy%20Voa%20Listen%20and%20write.user.js // @updateURL https://update.greasyfork.icu/scripts/18152/Easy%20Voa%20Listen%20and%20write.meta.js // ==/UserScript== /* jshint -W097 */ 'use strict'; /* shortcut: ctrl+c : 播放/暂停 ctrl+m : 标记播放起始位置 ctrl+z : 退回起始位置重新播放 ctrl+< : 回退5秒 ctrl+> : 快进5秒 ctrl+; : 慢速30% ctrl+' : 快速30% */ window.JsDiff = JsDiff; function addGlobalStyle(css) { var head, style; head = document.getElementsByTagName('head')[0]; if (!head) { return; } style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } function displayShortCuts(){ var shortKeys = { "ctrl+c" : "播放/暂停", "ctrl+m" : "标记播放起始位置", "ctrl+z" : "退回起始位置重新播放", "ctrl+<" : "回退5秒", "ctrl+>" : "快进5秒", "ctrl+;" : "慢速30%", "ctrl+'" : "快速30%" }; var lis = []; for(var k in shortKeys){ lis.push('
  • '+k+':'+shortKeys[k]+'
  • '); } var html = '

    快捷键:

    '; $('#playbar').after($(html)); } function main(){ var page = 'easyvoa'; if(location.host == 'www.51voa.com'){ page='51voa'; } if(page == 'easyvoa'){ var audioUrl = $('#playbar a').attr('href'); var contentParas = $('#content_main p'); }else if(page == '51voa'){ var audioUrl = $('#mp3').attr('href'); var contentParas = $('#content p'); } if(!audioUrl) return; addGlobalStyle('del { text-decoration: none; color: #b30000; background: #fadad7;} ins { background: #eaf2c2; color: #406619; text-decoration: none;} .enhance-toolbar-wrapper{max-width:800px;}'); $('#playbar').after($('
    '+ ''+ '
    '+'' )); displayShortCuts(); contentParas.toggle(); var audio=$('audio')[0]; var textarea = $('textarea'); var markTime = 0; var span = 5; var rateSpan = 0.3; $('#content_top_ad').remove(); $("#btnTogglePara").click(function(){ $('.diff-result').show().html(JsDiff.convertChangesToXML(JsDiff.diffWords(textarea.val(),contentParas.text()))); contentParas.toggle(); }); $('body').keydown(function(e){ if(e.ctrlKey && e.keyCode == 67){ if(audio.paused){ audio.play(); }else{ audio.pause(); } return false; }else if(e.ctrlKey && e.keyCode == 77){ markTime = audio.currentTime audio.pause(); return false; }else if(e.ctrlKey && e.keyCode == 90){ audio.currentTime = markTime audio.play(); return false; }else if(e.ctrlKey && e.keyCode == 188){ audio.currentTime -= span; audio.play(); return false; }else if(e.ctrlKey && e.keyCode == 190){ audio.currentTime += span; audio.play(); return false; }else if(e.ctrlKey && e.keyCode == 186){ audio.playbackRate -= rateSpan; audio.play(); return false; }else if(e.ctrlKey && e.keyCode == 222){ audio.playbackRate += rateSpan; audio.play(); return false; } }); } main();