GithubHelp home page GithubHelp logo

whyliam / whyliam.workflows.youdao Goto Github PK

View Code? Open in Web Editor NEW
1.1K 25.0 132.0 18.92 MB

使用有道翻译你想知道的单词和语句

Home Page: http://blog.naaln.com/2015/05/repeat-create-the-wheel-alfred-plugin-youdao/

License: MIT License

Python 100.00%
alfred workflows youdao translation python alfred-workflow

whyliam.workflows.youdao's Introduction

whyliam.workflows.youdao

有道翻译 workflow v3.1.0

默认快捷键 yd,查看翻译结果。

  1. 英译中
  2. 中译英
  3. 翻译短语句子
  4. 打开有道翻译页面,查看详细内容
  5. 直接在打出翻译结果
  6. 显示历史查询记录
  7. 同步单词到有道在线单词本

功能

  1. 回车 复制
  2. Control ⌃+回车 打开有道翻译页面
  3. Command ⌘+回车 直接在打出翻译结果
  4. Shift ⇧+回车 直接发音
  5. 选中文字 双击Option ⌥进行翻译(需要另行设置)
  6. yd * 显示历史查询记录
  7. Alt+回车, 同步单词到有道在线单词本

下载

Python 3 版本 - 感谢 Pid

使用说明

使用说明

演示

英译中

中译英

翻译短语

发音 - 按Shift ⇧+回车

打开有道翻译页面 - 按Control ⌃+回车

直接在打出翻译结果 - 按Command ⌘+回车

双击快速翻译 - 双击Option ⌥

同步单词到有道在线单词本 - Alt+回车

分别在username, password中输入有道的用户名和密码。

filepath中输入有道单词本离线保存的位置,默认在~/Documents中。

查询单词后按 Alt+回车 将单词保存到有道词典的单词本,在保存失败的时候单词将保存在离线单词本中。

其他配置

关键字 说明 默认
username 有道在线单词本用户名
password 有道在线单词本密码
filepath 有道离线单词本保存位置 ~/Documents/Alfred-youdao-wordbook.xml
youdao_key 老版有道翻译Key
youdao_keyfrom 老版有道翻译Keyfrom
zhiyun_id 有道智云ID
zhiyun_key 有道智云Key

问题说明

1 . macOS Catalina 需要在 系统设置-安全性与隐私-辅助功能,重新授权Alfred 4权限。

更多

更多问题参见Alfred 有道翻译简介


The MIT License (MIT)

Copyright (c) 2015

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

whyliam.workflows.youdao's People

Contributors

ctgnauh avatar graycreate avatar kaijun avatar muyunyun avatar twodogegg avatar whyliam avatar zhugexiaobo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

whyliam.workflows.youdao's Issues

发现一个crash错误

删除这个workflow 再重装还是出错,重启了Alfred也无效。

错误提示:
no json object could be decoded

debug:
[ERROR: alfred.workflow.input.scriptfilter] Code 1: 21:23:27 workflow.py:1972 DEBUG Workflow version : 1.2.1
21:23:27 workflow.py:1387 DEBUG Reading settings from /Users/MYUSERNAME/Library/Application Support/Alfred 2/Workflow Data/com.whyliam.workflows.youdao/settings.json ...
21:23:27 workflow.py:1990 ERROR No JSON object could be decoded
Traceback (most recent call last):
File "/Users/MYUSERNAME/Library/Application Support/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.249D703A-80E4-4F44-91AC-A25CCEBAEB8F/workflow/workflow.py", line 1980, in run
self.check_update()
File "/Users/MYUSERNAME/Library/Application Support/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.249D703A-80E4-4F44-91AC-A25CCEBAEB8F/workflow/workflow.py", line 2207, in check_update
if not force and not self.settings.get('workflow_autoupdate', True):
File "/Users/MYUSERNAME/Library/Application Support/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.249D703A-80E4-4F44-91AC-A25CCEBAEB8F/workflow/workflow.py", line 1389, in settings
self._default_settings)
File "/Users/MYUSERNAME/Library/Application Support/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.249D703A-80E4-4F44-91AC-A25CCEBAEB8F/workflow/workflow.py", line 814, in __init

self._load()
File "/Users/MYUSERNAME/Library/Application Support/Alfred 2/Alfred.alfredpreferences/workflows/user.workflow.249D703A-80E4-4F44-91AC-A25CCEBAEB8F/workflow/workflow.py", line 825, in _load
for key, value in json.load(file_obj, encoding='utf-8').items():
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 290, in load
*_kw)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 351, in loads
return cls(encoding=encoding, *_kw).decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 365, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 383, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
21:23:27 workflow.py:2008 DEBUG Workflow finished in 0.002 seconds.

关于使用说明

默认现在呼出翻译是d,而不是yd。建议更改下readme的doc说明

有道API已经更新了.

请求URL已经有所变更,,目前不能申请到老式的key了.新的key在目前的api url里面无法使用的

查词失败,显示timeout

如题,试了几个不同的有道alfred workflow都有同样的问题,是因为我在海外的缘故么?

查询截取逻辑有问题

翻译下面中文:
在保存失败的时候单词将保存在离线单词本中

报错: UnicodeDecodeError: 'utf8' codec can't decode byte 0xe5 in position 37: invalid continuation byte

这段生截query造成的,为什么要这样做?

def truncate(q):
if q is None:
return None
size = len(q)
return q if size <= 20 else q[0:10] + str(size) + q[size - 10:size]

同步到单词本报503,请问是网易同步服务的问题吗?

10:56:09 workflow.py:2055 DEBUG ---------- Youdao (2.2.0) ----------
10:56:09 workflow.py:2074 ERROR HTTP Error 503: Service Unavailable
Traceback (most recent call last):
File "/xxxxxx/Alfred 3/Alfred.alfredpreferences/workflows/user.workflow.328FE708-5DB7-48E4-9DC5-D458497F7D6F/workflow/workflow.py", line 2067, in run
func(self)
File "saveword.py", line 117, in save
if self.syncToYoudao() or (self.loginToYoudao() and self.syncToYoudao()):
File "saveword.py", line 53, in loginToYoudao
first_page = self.opener.open('http://account.youdao.com/login?back_url=http://dict.youdao.com&service=dict')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 437, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 550, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 469, in error
result = self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 656, in http_error_302
return self.parent.open(new, timeout=req.timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 437, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 550, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 475, in error
return self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 558, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 503: Service Unavailable
10:56:09 workflow.py:2097 DEBUG ---------- finished in 0.203s ----------

查询次数太多

问题描述

非常好用的插件,但是由于alfred每次键入字母的时候都会启动一个查询,而有道查询API反应并不是很迅速,导致查询结果显示非常慢

希望能够在键入全部查询文本后再进行查询

改进建议

  • 在Script Filter,语言那一行中有一个运行行为(run behaviour),在这里可以设置
    • 调度模式(queue mode)
      • 上一脚本结束后执行(FIFO,默认)
      • 终止上次查询:效果会很好,但是可能会在短时间内创建关闭很多次socket
    • 延时调度(queue delay)
      • 每字母后立刻执行(默认)
      • 默认延时(用来等待用户停止输入)
      • 订制延时
  • youdao.py脚本中我增加了两行用于判断最后一个字母是否是空格,如果是则执行查询,否则结束脚本,我用空格作为查询结束符
    • 使用这种方式不用让用户等待延时,也不会创建太多的socket
    • 缺点是需要通知用户查询必须以空格结尾,否则无法正常查询

非常感谢你们做了这么好的插件

Error: No JSON object could be decoded

Alfred version : 3.1.1[737]
OS : macOS 10.12.1

this my debug log, Please help to solve, thank you!

Starting debug for 'Youdao'

[2016-10-27 09:40:44][ERROR: input.scriptfilter] Code 1: 09:40:44 workflow.py:2156 DEBUG Workflow version : 1.2.4
09:40:44 workflow.py:1568 DEBUG Reading settings from /Users/vincent/Library/Application Support/Alfred 3/Workflow Data/whyliam.workflows.youdao/settings.json ...
09:40:44 workflow.py:2174 ERROR No JSON object could be decoded
Traceback (most recent call last):
File "/Users/vincent/OneDrive/Backup/Alfred.alfredpreferences/workflows/user.workflow.1C3925FB-34A3-4901-98C7-200434A10A4B/workflow/workflow.py", line 2164, in run
self.check_update()
File "/Users/vincent/OneDrive/Backup/Alfred.alfredpreferences/workflows/user.workflow.1C3925FB-34A3-4901-98C7-200434A10A4B/workflow/workflow.py", line 2409, in check_update
if not force and not self.settings.get('workflow_autoupdate', True):
File "/Users/vincent/OneDrive/Backup/Alfred.alfredpreferences/workflows/user.workflow.1C3925FB-34A3-4901-98C7-200434A10A4B/workflow/workflow.py", line 1570, in settings
self._default_settings)
File "/Users/vincent/OneDrive/Backup/Alfred.alfredpreferences/workflows/user.workflow.1C3925FB-34A3-4901-98C7-200434A10A4B/workflow/workflow.py", line 978, in __init

self._load()
File "/Users/vincent/OneDrive/Backup/Alfred.alfredpreferences/workflows/user.workflow.1C3925FB-34A3-4901-98C7-200434A10A4B/workflow/workflow.py", line 989, in _load
for key, value in json.load(file_obj, encoding='utf-8').items():
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 290, in load
*_kw)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 351, in loads
return cls(encoding=encoding, *_kw).decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
09:40:44 workflow.py:2194 DEBUG Workflow finished in 0.005 seconds.
[2016-10-27 09:40:45][ERROR: input.scriptfilter] Code 1: 09:40:45 workflow.py:2156 DEBUG Workflow version : 1.2.4
09:40:45 workflow.py:1568 DEBUG Reading settings from /Users/vincent/Library/Application Support/Alfred 3/Workflow Data/whyliam.workflows.youdao/settings.json ...
09:40:45 workflow.py:2174 ERROR No JSON object could be decoded
Traceback (most recent call last):
File "/Users/vincent/OneDrive/Backup/Alfred.alfredpreferences/workflows/user.workflow.1C3925FB-34A3-4901-98C7-200434A10A4B/workflow/workflow.py", line 2164, in run
self.check_update()
File "/Users/vincent/OneDrive/Backup/Alfred.alfredpreferences/workflows/user.workflow.1C3925FB-34A3-4901-98C7-200434A10A4B/workflow/workflow.py", line 2409, in check_update
if not force and not self.settings.get('__workflow_autoupdate', True):
File "/Users/vincent/OneDrive/Backup/Alfred.alfredpreferences/workflows/user.workflow.1C3925FB-34A3-4901-98C7-200434A10A4B/workflow/workflow.py", line 1570, in settings
self._default_settings)
File "/Users/vincent/OneDrive/Backup/Alfred.alfredpreferences/workflows/user.workflow.1C3925FB-34A3-4901-98C7-200434A10A4B/workflow/workflow.py", line 978, in init
self._load()
File "/Users/vincent/OneDrive/Backup/Alfred.alfredpreferences/workflows/user.workflow.1C3925FB-34A3-4901-98C7-200434A10A4B/workflow/workflow.py", line 989, in _load
for key, value in json.load(file_obj, encoding='utf-8').items():
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 290, in load
*_kw)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 351, in loads
return cls(encoding=encoding, *_kw).decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
09:40:45 workflow.py:2194 DEBUG Workflow finished in 0.004 seconds.

no JSON object could be decoded

for some reason Couchpotato could not snatch movies form Torrentday below is the log

[edia._base.providers.base] Failed to parsing TorrentDay: Traceback (most recent call last): File "/share/CACHEDEV1_DATA/.qpkg/CouchPotato2/CouchPotato2/couchpotato/core/media/_base/providers/base.py", line 84, in getJsonData return json.loads(data) File "/share/CACHEDEV1_DATA/.qpkg/Python/lib/python2.7/json/init.py", line 338, in loads return _default_decoder.decode(s) File "/share/CACHEDEV1_DATA/.qpkg/Python/lib/python2.7/json/decoder.py", line 366, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/share/CACHEDEV1_DATA/.qpkg/Python/lib/python2.7/json/decoder.py", line 384, in raw_decode raise ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded

No JSON object could be decoded

突然用不了
尝试删除 whyliam.workflows.youdao 之后
还是提示 No JSON object could be decoded

试着删除重新安装,还是一样的问题

有道查询api返回有变动,导致返回结果解释报错

日志如下,有空看看
[2019-01-30 17:13:17][ERROR: input.scriptfilter] Code 1: .
17:13:17 workflow.py:2055 DEBUG ---------- Youdao (2.2.0) ----------
17:13:17 workflow.py:1462 DEBUG reading settings from /Users/xxx/Library/Application Support/Alfred 3/Workflow Data/whyliam.workflows.youdao/settings.json
17:13:17 workflow.py:2339 DEBUG update check not due
17:13:17 workflow.py:2074 ERROR 'NoneType' object has no attribute 'get'
Traceback (most recent call last):
File "/Users/xxx/Library/Application Support/Alfred 3/Alfred.alfredpreferences/workflows/user.workflow.xxx/workflow/workflow.py", line 2067, in run
func(self)
File "youdao.py", line 250, in main
get_phonetic(query, isEnglish, rt)
File "youdao.py", line 173, in get_phonetic
if rt["basic"].get("phonetic"):
AttributeError: 'NoneType' object has no attribute 'get'
17:13:17 workflow.py:2097 DEBUG ---------- finished in 0.183s ----------

更新2.1.0版本, 无法翻译, 显示'有道也翻译不出来了'

按照readme添加了有道云的key和secret, 下面是debug日志.

[2017-08-21 09:25:43][STDERR: input.scriptfilter] 09:25:42 workflow.py:2249 DEBUG    workflow version: 2.1.0
09:25:42 workflow.py:1657 DEBUG    reading settings from /Users/yqrashawn/Library/Application Support/Alfred 3/Workflow Data/whyliam.workflows.youdao/settings.json
09:25:42 workflow.py:2532 DEBUG    Update check not due
09:25:42 workflow.py:2441 DEBUG    set last run version: 2.1.0
09:25:42 workflow.py:2290 DEBUG    workflow finished in 0.109 seconds
[2017-08-21 09:25:43][input.scriptfilter] {"items": [{"arg": "apple$% $% $% ", "valid": true, "subtitle": "\u5c1d\u8bd5\u4e00\u4e0b\u53bb\u7f51\u7ad9\u641c\u7d22", "icon": {"path": "icon.png"}, "title": "\u6709\u9053\u4e5f\u7ffb\u8bd1\u4e0d\u51fa\u6765\u4e86"}]}

按回车复制、按Command+回车复制,输出的复制结果是一样的。

按回车复制的列出的翻译结果条目,但是按 ⌘+回车 复制,输出的复制结果也是和前者一样。
splitargs.pydef getargs(wf) 添加一个 else 条件:

def getargs(wf):
    # .....
    if part == 1:
        # .....
    elif part == 2:
        # .....
    else:
        sys.stdout.write(query[2].strip())
    return 0

然后在 workflow 的 cmd 脚本中修改为非 1 和 2,我改为 3:/usr/bin/python splitargs.py "{query}" 3

才能 ⌘+回车 直接复制输入的 {query}

可否考虑添加自动发音和查词历史功能

可否考虑使用热键查词时,也就是诸如双击 Option 查询已选中单词,添加自动发音功能。

另外的,可否增加一个查看查词历史的功能,方便用户将将最近的单词查询记录导出至特定位置,或者直接将查询历史保存到用户指定文件中。

谢谢,这个查单词 workflow 真的很好用

能否添加支持导出到有道单词本的功能

实现机制可以类似这样:
1、用户可以自己设置文件导出的路径
2、当搜索一个新词后,按住 alt 键可以把当前 query 的单词,追加至上述文件中
3、用户可以在有道单词本中,导入以上由 alfred 生成的单词本格式文件

很棒的功能,有个小小建议。

使用功能后,希望搜索框不要自动退出,可以根据需要重新查看复制或者发音的内容,很舒服的。谢谢大大的功能插件,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.