提交 91b965fa 编写于 作者: M muwoo

Merge branch 'feat-new'

......@@ -55,17 +55,6 @@
<div class="title">长按以下设置的毫秒响应</div>
<a-slider :step="100" v-model:value="config.superPanel.mouseDownTime" :min="200" :max="1000" />
</div>
<div class="setting-item">
<div class="title">百度搜索配置</div>
<a-form :label-col="{ span: 3 }" :wrapper-col="{ span: 14 }">
<a-form-item label="appid">
<a-input v-model:value="config.superPanel.baiduAPI.appid" />
</a-form-item>
<a-form-item label="key">
<a-input v-model:value="config.superPanel.baiduAPI.key" />
</a-form-item>
</a-form>
</div>
<img width="100%" src="https://static.91jkys.com/upload/202107/02/fa4a5c614234409fb32ddda70cb900aa.jpg" />
</div>
<div v-if="currentSelect[0] === 2">
......
......@@ -79,6 +79,50 @@
display: flex;
align-items: center;
}
.spinner {
padding-left: 10px;
}
.spinner > div {
width: 10px;
height: 10px;
background-color: #ddd;
border-radius: 100%;
display: inline-block;
-webkit-animation: bouncedelay 1.4s infinite ease-in-out;
animation: bouncedelay 1.4s infinite ease-in-out;
/* Prevent first frame from flickering when animation starts */
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.spinner .bounce1 {
-webkit-animation-delay: -0.32s;
animation-delay: -0.32s;
}
.spinner .bounce2 {
-webkit-animation-delay: -0.16s;
animation-delay: -0.16s;
}
@-webkit-keyframes bouncedelay {
0%, 80%, 100% { -webkit-transform: scale(0.0) }
40% { -webkit-transform: scale(1.0) }
}
@keyframes bouncedelay {
0%, 80%, 100% {
transform: scale(0.0);
-webkit-transform: scale(0.0);
} 40% {
transform: scale(1.0);
-webkit-transform: scale(1.0);
}
}
</style>
<script src="./index.js" type="module"></script>
<body>
......@@ -87,10 +131,22 @@
<span class="img"><img src="./assets/logo.png" /></span>
<span class="text" v-if="selectData.text && selectData.text.length">选择的文本 {{selectData.text.length}} 个</span>
</div>
<div class="translate" v-if="selectData.translate">
<div class="trans-item" v-for="trans in selectData.translate">
<div>{{trans.src}}</div>
<div>n. {{trans.dst}}</div>
<div class="spinner" v-if="loading">
<div class="bounce1"></div>
<div class="bounce2"></div>
<div class="bounce3"></div>
</div>
<div class="translate" v-if="selectData.translate && !loading">
<div>{{selectData.translate.src}}</div>
<div v-if="selectData.translate.basic">
<div v-for="item in selectData.translate.basic.explains">
{{item}}
</div>
</div>
<div v-else>
<div v-for="item in selectData.translate.transition">
{{item}}
</div>
</div>
</div>
<div @click="() => commonClick(op, selectData.fileUrl)" class="options-item" v-for="op in targetOptions">
......
const {ipcRenderer, nativeImage, remote, clipboard} = require('electron')
const md5 = require("md5");
const rp = require("request-promise");
const isChinese = require('is-chinese');
const path = require('path');
const fs = require('fs');
const { spawn } = require ('child_process');
const mineType = require("mime-types");
const opConfig = remote.getGlobal('opConfig');
new Vue({
el: '#app',
data: {
......@@ -66,6 +62,7 @@ new Vue({
]
},
targetOptions: [],
loading: false,
},
created() {
// 简单唤起超级面板
......@@ -74,9 +71,9 @@ new Vue({
const ext = path.extname(this.selectData.fileUrl);
// 剪切板只有文本时,显示翻译
if (!this.selectData.fileUrl) {
this.loading = true;
const word = this.selectData.text;
const isCh = isChinese(word);
this.translate(word, isCh ? 'en' : 'zh');
this.translate(word);
this.targetOptions = JSON.parse(JSON.stringify(this.options.translate));
(this.selectData.optionPlugin || []).forEach(plugin => {
plugin.features.forEach(fe => {
......@@ -172,20 +169,20 @@ new Vue({
},
methods: {
translate(msg, to) {
const {appid, key} = opConfig.get().superPanel.baiduAPI;
if (!appid || !key) return;
const q = msg;
const salt = parseInt(Math.random() * 1000000000); //加盐
const sign = md5(appid + q + salt + key); //生成签名
translate(msg) {
const params = encodeURI(
`q=${q}&from=auto&to=${to}&appid=${appid}&salt=${salt}&sign=${sign}`
`q=${msg}&keyfrom=neverland&key=969918857&type=data&doctype=json&version=1.1`
);
const options = {
uri: `https://fanyi-api.baidu.com/api/trans/vip/translate?${params}`,
uri: `http://fanyi.youdao.com/openapi.do?${params}`,
};
return rp(options).then((res) => {
this.$set(this.selectData, 'translate', JSON.parse(res).trans_result)
this.$set(this.selectData, 'translate', {
...JSON.parse(res),
src: msg,
});
}).finally(() => {
this.loading = false;
})
},
commonClick(item, fileUrl) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册