文章目录[隐藏]
虽然好像没什么用的样子……平时写着玩的。
温州方言数据库是温州市图书馆建设的,收录温州本土方言词汇与语音信息的数据库。但是其界面杂乱而且仅支持IE浏览器播放音频,所以咱就写了个油猴脚本。数据库链接请点击我。
温州方言数据库修正 – 使用前
温州方言数据库修正 – 使用后
猴赛雷啊!以下是代码:
// ==UserScript==
// @name 温州方言数据库音频播放修正
// @namespace http://kaaass.net/
// @version 0.1
// @description 修正温州方言数据库不能播放音频
// @author KAAAsS
// @match http://wzhzy.wzlib.cn/wzh/*
// @grant none
// @require https://code.jquery.com/jquery-2.1.4.min.js
// ==/UserScript==
(function() {
'use strict';
$(function(){
/*
模板
*/
var modal = '<nav class="navbar navbar-default">'+
' <div class="container-fluid">'+
' <div class="navbar-header">'+
' <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">'+
' <span class="sr-only">Toggle navigation</span>'+
' <span class="icon-bar"></span>'+
' <span class="icon-bar"></span>'+
' <span class="icon-bar"></span>'+
' </button>'+
' <a class="navbar-brand" href="//wzlib.cn/">温州市图书馆</a>'+
' </div>'+
' <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">'+
' <ul class="nav navbar-nav">'+
' <li class="active"><a href="/">温州话资源库 <span class="sr-only">(current)</span></a></li>'+
' </ul>'+
' <form action="Result.aspx" method="get" class="navbar-form navbar-right">'+
' <div class="form-group">'+
' <input name="SearchEdit" type="text" class="form-control" placeholder="输入需要查询的内容">'+
' <select name="SearchTypeC" class="form-control">'+
' <option>单字</option>'+
' <option>词汇</option>'+
' </select>'+
' </div>'+
' <button type="submit" class="btn btn-default">搜索</button>'+
' </form>'+
' </div>'+
' </div>'+
'</nav>'+
'<div class="container-fluid text-center" style="margin-top:30px; margin-bottom:40px;">'+
' <h1>温州方言数据库检索系统</h1>'+
'</div>';
if (location.search === '') {
modal += '<ol class="breadcrumb" style="width: 85%; margin-left: auto; margin-right: auto; margin-bottom: -15px;">'+
' <li><a href="//wzlib.cn/">温州市图书馆</a></li>'+
' <li><a href="/">温州话资源库</a></li>'+
' <li class="active">温州方言数据库检索系统</li>'+
'</ol>';
} else {
modal += '<ol class="breadcrumb" style="width: 85%; margin-left: auto; margin-right: auto; margin-bottom: -15px;">'+
' <li><a href="//wzlib.cn/">温州市图书馆</a></li>'+
' <li><a href="/">温州话资源库</a></li>'+
' <li><a href="/wzh">温州方言数据库检索系统</a></li>'+
' <li class="active">检索结果</li>'+
'</ol>';
}
/*
引入bootstrap
*/
function getParam(key) {
function GetRequest() {
var url = location.search;
var theRequest = {};
if (url.indexOf("?") != -1) {
var str = url.substr(1);
var strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=strs[i].split("=")[1];
}
}
return theRequest;
}
return GetRequest()[key];
}
var mode = (getParam('SearchTypeC') === '%E8%AF%8D%E6%B1%87') + 1;
console.debug('当前请求模式:'+['单字','词汇'][mode - 1]);
$('head').append('<link href="http://v3.bootcss.com/dist/css/bootstrap.min.css" rel="stylesheet">')
.append('<link href="data:text/css;charset=utf-8," data-href="http://v3.bootcss.com/dist/css/bootstrap-theme.min.css" rel="stylesheet" id="bs-theme-stylesheet">')
.append('<style>html, body, * { font-family: "Microsoft YaHei" ! important; }</style>');
$.getScript('//cdn.bootcss.com/bootstrap/2.3.2/js/bootstrap.min.js');
$('br,span').remove();
$('table').addClass('table').addClass('table-striped').css('width','85%').css('margin-left','auto').css('margin-right','auto');
$('body').prepend(modal);
$('.style12').width('220px');
$('form').addClass('form-inline');
$('select').addClass('form-control').children('option:eq('+(mode-1)+')').attr('selected','selected');
$('input[type=text]').addClass('form-control');
$('input[type=submit]').addClass('btn').addClass('btn-primary');
/*
修正音频播放
*/
function appendAudio($dest, url) {
$dest.append('<audio controls height="30" width="50"><source src="'+url+'" type="audio/x-wav"><embed height="30" width="50" src="'+url+'"></audio>');
}
function getToneEntry(tone) {
return '.' + (10 - tone) + ';';
}
function replaceEntry(org) {
org = org.replace(/11|22|33|44|55/g,function(met){return {'11':'1','22':'2','33':'3','44':'4','55':'5'}[met];});
return org.replace(/1|2|3|4|5/g,function(met){return {'1':getToneEntry(1),'2':getToneEntry(2),'3':getToneEntry(3),'4':getToneEntry(4),'5':getToneEntry(5)}[met];});
}
$('.style15').each(function(i, el){
if (i===0) return;
$(el).html(replaceEntry($(el).text()));
});
$('.style17').each(function(i, el){
if (i===0) return;
var url = $(el).children('object').children('param[name=Filename]').val();
console.debug('解析声音文件:'+url);
$(el).children().remove();
appendAudio($(el),url);
});
});
})();
Coursera.org是非常适合学习的地方,然而有些课程没有中文字幕。其实看懂英文还是没有问题的,只不过课程有时候会出现一些专有名词和术语,这就很烦恼了。在学nand2tetris我就觉得听术语好痛苦啊,比如muiltiplexer多路复用器,贼恐怖。所以我就做了一个自动从英语字母中提取单词并过滤简单单词的油猴脚本!过滤的话采用的是布隆过滤器,不过可惜的是我还没找到足够好的基础词汇表(包含变形)。翻译词汇采用有道的API,速度很不错。
Word tips for Coursera
Word tips for Coursera
代码如下:
// ==UserScript==
// @name Word tips for Coursera
// @namespace http://kaaass.net/
// @version 0.1
// @description try to take over the world!
// @author KAAAsS
// @match https://www.coursera.org/learn/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var word_len = 3000;
window.onload = function() {
$("<style>#right-dict {width:270px;margin-top:50px;position:fixed;left:0px;bottom:10px;color: #535353;background-color: rgba(163,148,128,0.05);z-index:99;}</style>").appendTo('head');
$('<div id="right-dict">悬浮~</div>').appendTo('body');
var bloom, last = "";
function should_search(str) {
if (str === null || str === '' || str.length < 3) {
return false;
}
return !bloom.test(str);
}
function rep_dot(str) {
str = str.replace(/[\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g,"");
str = str.replace(/[A-Z][a-z]*/g,"");
return str.replace(/\s+/g,",").split(',');
}
function fetch_bloom(len, callback) {
$.get('https://kaaass.net/static/worddata/bloom'+len+'_256_256.json', function(data){
bloom = new BloomFilter(data, 3);
callback();
});
}
function get_req_words(str) {
var org_word = rep_dot(str), words = [], word;
for (var i in org_word) {
word = org_word[i];
if (should_search(word))
words.push(word);
}
return words;
}
function get_explain(str, callback){
$.ajax({
dataType: 'jsonp',
url: "https://fanyi.youdao.com/openapi.do?keyfrom=youdao111&key=60638690&type=data&version=1.1&doctype=jsonp&callback=?&q="+str,
async: false,
success: function(data){
if (!data) return "未找到释义!";
if (!('translation' in data)) return "未找到释义!";
callback(str, data.translation);
}
});
}
function task() {
var $active = $('.active.highlighted');
if ($active === null) return;
var str = $active.text(), words, result = "", total = 0;
if (str == last) return;
last = str;
words = get_req_words(str);
var append_str = function (word, data) {
result += "<p><strong>" + word + "</strong>: " + data + "</p>";
if (++total == words.length) {
console.debug(result);
$('#right-dict').html(result);
}
};
for (var i in words) {
get_explain(words[i], append_str);
}
}
$.getScript('https://kaaass.net/static/bloomfilter/bloomfilter.js', function() {
fetch_bloom(word_len, function(){
window.task = task;
window.setInterval("task()", 500);
});
});
};
})();