refactor: better source code framework

This commit is contained in:
JuanZoran
2023-03-04 22:46:57 +08:00
parent cbf47ebdaa
commit 7dbf3b17be
11 changed files with 8 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
local baidu = require('Trans').conf.engine.baidu
local appid = baidu.appid
local appPasswd = baidu.appPasswd
local salt = tostring(math.random(bit.lshift(1, 15)))
local uri = 'https://fanyi-api.baidu.com/api/trans/vip/translate'
if appid == '' or appPasswd == '' then
error('请查看README, 实现在线翻译或者设置将在线翻译设置为false')
end
local post = require('Trans.util.curl').POST
local function get_field(word, isEn)
local to = isEn and 'zh' or 'en'
local tmp = appid .. word .. salt .. appPasswd
local sign = require('Trans.util.md5').sumhexa(tmp)
return {
q = word,
from = 'auto',
to = to,
appid = appid,
salt = salt,
sign = sign,
}
end
---返回一个channel
---@param word string
---@return table
return function(word)
local isEn = word:isEn()
local query = get_field(word, isEn)
local result = {}
post(uri, {
data = query,
headers = {
content_type = "application/x-www-form-urlencoded",
},
callback = function(str)
local ok, res = pcall(vim.json.decode, str)
if ok and res and res.trans_result then
result[1] = {
title = { word = word },
[isEn and 'translation' or 'definition'] = res.trans_result[1].dst,
}
if result.callback then
result.callback(result[1])
end
else
result[1] = false
end
end,
})
return result
end
-- NOTE :free tts:
-- https://zj.v.api.aa1.cn/api/baidu-01/?msg=我爱你&choose=0&su=100&yd=5
-- 选择转音频的人物女生1 输入0 女生2输入5男生1 输入1男生2 输入2男生3 输入3

View File

@@ -0,0 +1,47 @@
local _, db = pcall(require, 'sqlite.db')
if not _ then
error('Please check out sqlite.lua')
end
-- INFO : init database
local path = require('Trans').conf.db_path
local dict = db:open(path)
vim.api.nvim_create_autocmd('VimLeavePre', {
once = true,
callback = function()
if db:isopen() then
db:close()
end
end
})
return function(word)
local res = (dict:select('stardict', {
where = { word = word, },
keys = {
'word',
'phonetic',
'definition',
'translation',
'pos',
'collins',
'oxford',
'tag',
'exchange',
},
limit = 1,
}))[1]
if res then
res.title = {
word = res.word,
oxford = res.oxford,
collins = res.collins,
phonetic = res.phonetic,
}
end
return res
end

View File

@@ -0,0 +1,74 @@
local GET = require("Trans.util.curl").GET
return function(word)
local isEn = word:isEn()
local result = {}
local uri = ('https://v.api.aa1.cn/api/api-fanyi-yd/index.php?msg=%s&type=%d'):format(word, isEn and 2 or 1)
GET(uri, {
callback = function(str)
local ok, res = pcall(vim.json.decode, str)
if not ok or not res or not res.text or isEn and res.text:isEn() then
result[1] = false
return
end
result[1] = {
title = { word = word },
[isEn and 'translation' or 'definition'] = res.text,
}
if result.callback then
result.callback(result[1])
end
end
})
return result
end
-- local youdao = require("Trans").conf.engine.youdao
-- local uri = 'https://openapi.youdao.com/api'
-- local salt = tostring(math.random(bit.lshift(1, 15)))
-- local appid = youdao.appid
-- local appPasswd = youdao.appPasswd
-- local post = require('Trans.util.curl').POST
-- local function get_field(word)
-- -- local to = isEn and 'zh-'
-- local len = #word
-- local curtime = tostring(os.time())
-- local input = len > 20 and
-- word:sub(1, 10) .. len .. word:sub(-10) or word
-- -- sign=sha256(应用ID+input+salt+curtime+应用密钥)
-- local hash = appid .. input .. salt .. curtime .. appPasswd
-- local sign = vim.fn.sha256(hash)
-- return {
-- q = word,
-- from = 'auto',
-- to = 'zh-CHS',
-- signType = 'v3',
-- appKey = appid,
-- salt = salt,
-- curtime = curtime,
-- sign = sign,
-- }
-- end
-- return function(word)
-- -- return result
-- -- local field = get_field(word)
-- -- local output = post(uri, {
-- -- body = field,
-- -- })
-- -- if output.exit == 0 and output.status == 200 then
-- -- local result = vim.fn.json_decode(output.body)
-- -- if result and result.errorCode == 0 then
-- -- --- TODO :
-- -- end
-- -- end
-- end