Skip to content

Commit

Permalink
Merge pull request #52 from zthxxx/master
Browse files Browse the repository at this point in the history
fix(api): 修复新版 api 没有单词详细释义问题
  • Loading branch information
wensonsmith authored Feb 5, 2020
2 parents 46823ab + 13e3122 commit b84a5fb
Show file tree
Hide file tree
Showing 14 changed files with 376 additions and 93 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.vscode
.log
99 changes: 77 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,63 +6,117 @@ YoudaoTranslate | 有道翻译

## 一、 特性

### 1. 中英文互翻
### 1. 中英文互翻自动判断

### 2. 按住`cmd` +`回车` 即可发音,这样不会关闭窗口。在音标上直接回车也可以播放发音并会关闭窗口。
### 2. Hotkey 常用

- 快捷键双击 `` (可以在 Hotkey 中修改)可以翻译选中内容

-`` + `space` 可以直接唤出翻译输入框,方便直接手动输入

### 3. 按住 ``+`↩︎` 即可发音 (使用系统自带的 say),这样不会关闭窗口。在音标上直接回车也可以播放发音并会关闭窗口。

按住 ``+`↩︎` 也能发音,调用有道语音 api,速度会慢一点;两者口音不一样。

![screenshot_3](screenshot/screenshot_3.png)

### 3. 输入 `yd *` 可以查询最近的查询记录
### 4. 在选项上`↩︎`回车可以复制翻译结果

### 5. 输入 `yd *` 可以查询最近的查询记录

![transalte_history](screenshot/translate_history.gif)

### 4. 在选项上回车可以复制翻译结果

### 5. 翻译结果上按 `Shift` 可以直接预览有道网页
### 6. 翻译结果上按 `⇧(Shift)` 可以直接预览有道网页

![screenshot_4](screenshot/screenshot_4.gif)

### 6. 双击 `option` 键可以翻译选中内容


## 二、下载使用
1. [Github 直接下载](https://github.com/wensonsmith/YoudaoTranslate/raw/master/YoudaoTranslate.alfredworkflow)
1. [百度网盘下载-YoudaoTransalte.alfredworkflow](https://pan.baidu.com/s/1gfu6mkj)
1. [GitHub Releases 直接下载](https://github.com/wensonsmith/YoudaoTranslate/releases)

下载解压后双击 `Youdao Translate.alfredworkflow` 导入即可使用。

1. 把 GitHub 项目中 src 目录内容下载到 `~/Library/Application Support/Alfred 3/Alfred.alfredpreferences/workflows` 目录
可用的一键脚本:

```bash
workflows="${HOME}/Library/Application Support/Alfred 3/Alfred.alfredpreferences/workflows/"
mkdir -p "${workflows}/YoudaoTranslate"
curl https://codeload.github.com/wensonsmith/YoudaoTranslate/tar.gz/master | \
tar -xz \
-C "${workflows}/YoudaoTranslate" \
--strip=2 YoudaoTranslate-master/src

```



下载后双击导入即可使用。

## 三、推荐设置

![](screenshot/suggestion_1.png)
Hotkey 设置为 `Double ⌥`

![](https://user-images.githubusercontent.com/2544185/32979442-4b17a476-cc90-11e7-934a-64b6d84b46df.png)

![](screenshot/suggestion.png)

## 四、 配置KEYS
## 四、 配置有道翻译 API KEYS

> 2017年9月3日更新
> 由于有道翻译 api 迁移到了有道智云,所以大家需要去[有道智云](http://ai.youdao.com/)进行注册然后创建应用了。步骤如下:

1. 注册有道智云帐号
2. 创建一个自然语言翻译服务
3. 创建一个应用并绑定第二步创建的服务
1. 注册[有道智云](https://ai.youdao.com/)帐号

2. 创建一个[自然语言翻译服务](https://ai.youdao.com/fanyi-services.s)

3. 创建一个[有道云应用](https://ai.youdao.com/appmgr.s)并绑定第二步创建的服务

4. 这样就可以获得应用(appKey)和密钥(secret)了

![screenshot_5](screenshot/screenshot_5.png)
[应用](https://ai.youdao.com/appmgr.s) - 应用详情 - 应用ID appKey, 应用密钥 secret

5. 把变量填入 workflow 右上角的 [X] 点开后的配置框中


![var-config-step-1](screenshot/var-config-step-1.png)

![var-config-step-2](screenshot/var-config-step-2.png)

![screenshot_6](screenshot/screenshot_6.png)


## 五、更新日志

- 2019年11月12日

- 修复有道 Api 更新造成的没有单词字典详细释义的问题
- 更新 Readme (修复文案按键、增加下载命令)

- 2019年8月27日

- 增加发音快捷键 (``)、优化单词复制过滤正则 (如 ~【数】【动】等)

- 2019年8月23日

- 使用 [alfred 自带 variables](https://www.alfredapp.com/help/workflows/advanced/variables/) 功能配置有道 API Keys

- 2019年8月22日

- 修复中译英时,每项选中 Enter 时直接复制内容为对应不同项翻译,而非固定第一项翻译

- 英译中时,固定第一项 选中内容 为英语原文,cmd + Enter 可以直接发音

- 2017年11月19日
- 优化发音,现在可以按住 `cmd` + `回车` 进行发音 (#17
- 增加最近查询记录功能, 输入 `yd *` 可以列出最近查询的 9 个单词 (#10#16


- 优化发音,现在可以按住 ``+`↩︎` 进行发音 (#17)

- 增加最近查询记录功能, 输入 `yd *` 可以列出最近查询的 9 个单词 (#10, #16)

- 2017年9月3日

- 更新 api 为有道智云(thanks @newle)#12
- 优化发音,添加了线上发音
- 添加了双击翻译选中文字的热键

- 2017年1月13日

- 更新到Alfred3
Expand All @@ -76,4 +130,5 @@ YoudaoTranslate | 有道翻译
### 六、 使用库和参考资料

- https://github.com/joetannenbaum/alfred-workflow
- https://www.alfredapp.com/help/workflows/inputs/
- https://www.alfredapp.com/help/workflows/inputs/
- https://www.alfredapp.com/help/workflows/advanced/variables/
Binary file removed YoudaoTranslate.alfredworkflow
Binary file not shown.
Binary file modified screenshot/screenshot_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified screenshot/screenshot_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed screenshot/screenshot_5.png
Binary file not shown.
Binary file removed screenshot/screenshot_6.png
Binary file not shown.
Binary file removed screenshot/screenshot_7.png
Binary file not shown.
Binary file removed screenshot/suggestion.png
Binary file not shown.
Binary file removed screenshot/suggestion_1.png
Binary file not shown.
Binary file added screenshot/var-config-step-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added screenshot/var-config-step-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 15 additions & 2 deletions src/YoudaoTranslate.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

class YoudaoTranslate
{

private $workflow;
private $keys;
private $result;
Expand Down Expand Up @@ -124,6 +123,7 @@ private function parseWeb($web)
*function:检测字符串是否由纯英文,纯中文,中英文混合组成
*param string
*return 1:纯英文;2:纯中文;3:中英文混合
*return true: 有中文; false: 无中文
*/
private function isChinese($str){
$m=mb_strlen($str,'utf-8');
Expand Down Expand Up @@ -291,16 +291,29 @@ private function startsWith($haystack, $needle)
/**
* 组装网易智云请求地址
* @return String
*
* https://ai.youdao.com/DOCSIRMA/html/自然语言翻译/API文档/文本翻译服务/文本翻译服务-API文档.html
*/
private function getOpenQueryUrl($query)
{
$api = 'https://openapi.youdao.com/api?from=auto&to=auto&';

$api = 'https://openapi.youdao.com/api?';

$key = $this->keys[array_rand($this->keys)];
$key['q'] = $query;
$key['salt'] = strval(rand(1,100000));
$key['sign'] = md5($key['appKey'] . $key['q'] . $key['salt'] . $key['secret']);

// 有道新版 api 只有当 from 和 to 的值都在{zh-CHS, en}范围内时,
// 才有单词字典翻译信息,当两个都是 auto 时则没有
if($this->isChinese($query)){
$key['from'] = 'auto';
$key['to'] = 'en';
} else {
$key['from'] = 'auto';
$key['to'] = 'zh-CHS';
}

return $api.http_build_query($key);
}
}
Loading

0 comments on commit b84a5fb

Please sign in to comment.