跟打器开源问题
很长时间没有更新了。有些有能力的爱好者想要我开源一下跟打器。前不久,我把老版跟打器的源码放到了 Github 上面。感兴趣的同学,可以去下载看看。
主页地址:
https://github.com/taliove/tygdq
这个版本的跟打器是 2012 年开发的,至2013年年初结尾。
中途基本上就没有更新了。很多代码都非常的初级,毕竟这是我的第一个作品。
很长时间没有更新了。有些有能力的爱好者想要我开源一下跟打器。前不久,我把老版跟打器的源码放到了 Github 上面。感兴趣的同学,可以去下载看看。
主页地址:
https://github.com/taliove/tygdq
这个版本的跟打器是 2012 年开发的,至2013年年初结尾。
中途基本上就没有更新了。很多代码都非常的初级,毕竟这是我的第一个作品。
这个版本做了很久,但是一直没有发布。期间出去旅游了一趟,各位群友仍然很热心在跟我提,如果有需要测试的话,可以找他们。感谢你们的付出,这一版本得以如此快的出来
看到有很多人提到的 索引和长度必须引用该字符串内的位置 的问题,已经修复,请重新下载解决。
「添雨跟打器」中的核心功能之一——「词库管理」。这是一个大类。包含有词库添加、删除、自动提示,智能学习,理论码长等功能。用户在跟打过程中,如何以方便,快捷的方式提示给用户?这是一个产品体验上的问题。
早在「老版添雨跟打器」之中,@hwj 帮忙制作了「提词器」。使用的技术很简单,就是在 RichTextBox 上显示 Label ,用来划出不同的线条,颜色。但是缺点很明显。
FARR 全称 Find And Run Robot。在快速启动软件属于排名靠前的。最强大的地方在于它的完全自定义。用户可以完全根据自己的喜好修改这款软件。而且有极其丰富的插件支持。几乎支持大部分流行语言如C#、JavaScript、C++等
经常关注 善用佳软,也经常关注快速启动。老实讲,我使用过善用佳软推荐的Altrun,使用过好几个年头。也一直期待着它的更新。但是几年过去了,仍然没有。因为这款软件虽然极其好用,也小巧。但是偶发性崩溃,配置丢失问题,是不能忍受的。
FARR 是我的备选,从未用过。于今年开始正式使用。我所需要的快速启动应该能够满足的需求是搜索、快速定位文件、即时翻译、计算以及打开收藏文件等。 Altrun 的主要功能便是“收藏”、“打开”和“快速定位”。它只此三个功能,便可以傲视群雄。 FARR在这三点上便不如。但是 FARR 优势在于搜索及其丰富的插件以实现你需要的功能。
废话不多说了。开始讲述制作翻译插件的内容。我使用的是 ecaradec 在 FARR论坛 写的怎样使用 Javascript 开发 FARR 插件的教程。
使用 Javascript 开发的插件放置在目录 Plugins\CZB_pack。
在其下新建文件夹:Plugins\CZB_pack\Taliove_Translate
在新文件夹下新建文件:fsubscript.js 最好直接拷贝插件目录下其它文件夹的这个文件
文件 fsubscript.js 内输入代码:
plugins["Taliove_Translate"] = {
version: "1.0",
lastChange: new Date(fso.GetFile(currentDirectory + "\\fsubscript.js").DateLastModified).toDateString(),
displayName: "添雨翻译",
directory: currentDirectory,
icon: currentDirectory + "\\icon.ico", //此图片放在你的插件目录下即可
aliasstr: "fy",
description: "即时翻译",
help: currentDirectory + "\\..\\help.html#open:[[Taliove Translate]]:HideMainMenu"
};
上述代码中的 aliasstr 为你的命令。当前设置为 fy 。即使用 fy xxx 来翻译xxx的内容。
本插件使用的是百度翻译,前往百度翻译申请接入,然后下载百度翻译的 JS SDK ,将其中的 md5.js 拷贝到插件目录。接下来在 fsubscript.js 文件中插入如下代码:
(function () {
var name = "Taliove_Translate";
var js = plugins[name];
var fyResult = "";
var init = false;
js.search = function onSearchBegin(querykey, explicit, queryraw, querynokeyword, modifierstring, triggermethod) {
if (!explicit) return;
var reg = new RegExp("^fy");
var word = queryraw.replace(reg, "").trim();
if (word) {
var jsStr = "<p>翻译:" + word + "</p>" +
"<p>结果:<span id='result'></span></p>" +
"<script src='http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js'></script>" +
"<script src='" + js.directory + "/md5.js'></script>" +
"<script src='" + js.directory + "/func.js'></script>" +
"<script type='text/javascript'>" +
"$('#result').text('正在翻译,请稍候...');" +
"fy('" + word + "').done(function(msg){" +
"$('#result').text(msg);" +
"});" +
"</script>";
showHTML(jsStr);
} else {
showHTML("请输入完整的值");
}
};
}());
在插件目录新增文件 func.js ,代码如下:
function getType(obj) {
return obj == null ?
String(obj) :
{
"[object Array]": "array",
"[object Boolean]": "boolean",
"[object Date]": "date",
"[object Function]": "function",
"[object Number]": "number",
"[object Object]": "object",
"[object RegExp]": "regexp",
"[object String]": "string"
}[Object.prototype.toString.call(obj)] || "object";
}
function fy(query, from, to) {
var appid = '';//你接入百度翻译后的appid
var key = '';//你接入百度翻译后的key
var salt = (new Date).getTime();
from = from || 'auto';
to = to || 'auto';
var str1 = appid + query + salt + key;
var sign = MD5(str1);
var def = $.Deferred();
$.ajax({
url: 'http://api.fanyi.baidu.com/api/trans/vip/translate',
type: 'get',
dataType: 'jsonp',
data: {
q: query,
appid: appid,
salt: salt,
from: from,
to: to,
sign: sign
},
success: function (data) {
var result = data["trans_result"];
if (result) {
def.resolve(result[0]["dst"]);
return;
}
def.resolve('翻译失败');
},
error: function () {
def.resolve("翻译失败");
}
});
return def.promise();
}
至此,可以呼出 FARR 控制台,输入 fy 翻译,即可看到结果显示。