百度翻译收藏单词能导出么
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度翻译收藏单词能导出么相关的知识,希望对你有一定的参考价值。
能导出的话,求发下截图步骤,谢谢各位大神
百词斩的PC版本(浏览器直接访问)经常无法打开。 手机app上的单词列表也没有提供导出功能。不过懂一些编程知识的话, 还是可以破解百词斩的管理办法, 进而将百词斩的单词列表导出, 存为excel (或者其它文档), 根据需要自己打印。
有编程能力的朋友应该不难看懂:
1: 百词斩(最新版本6.2.14 )安卓版本, 在手机上运行时, 数据会存在类似以下目录中:
/data/media/0/android/data/com.jiongji.andriod.card/files/baicizhan
具体路径有可能会不完全一样, 但是用关键字"jiongji"或者"baicizhan"查找应该能找到
2:该路径下有几个关键文件:
lookup.db : 所有单词都存放在这个数据库文件中, 每个单词都会有一个唯一的word id.
roadmap/road_map_xxx.baicizhan 要背的每一本书都会在此目录下有一个这样的文件。 该文件是文本文件, 其中用"wid":xxxx 定义若干个word id.
只要根据word id找到对应的单词即可。
但是不可能手工去一个一个地查询每个单词, 每本书都可能对应着几千个单词呢。所以接下来就要自己写程序了。
3:用python或者其它工具自己写个程序, 将想要的书对对应的.baicizhan文件中的word id全部导出, 并且从lookup.db中查询到对应的单词, 最终将所有的单词都输出到一个文件中, 就得到了自己想要的单词列表了。
实在需要单词列表而又不会自己编程搞定的朋友可以发邮件给我:285256453@qq.com 参考技术A 可以的 我用的是网页版的百度翻译
登录上账号后 点击右上角的收藏夹 打开后有两个标识 再点第一个 也就是 导出 就可以啦 参考技术B APP菜单上没有看到有导出功能。
Android应用记录一:有道翻译API调用
因为某些原因,我需要记单词,而且讨厌广告,所以就想着自己写个能够查自己不认识的单词并且以后可以随时查看的APP。
首先我需要调用一个翻译API,中文翻译比较好用的API有有道翻译API,百度翻译API等,因为先期用过百度地图API,觉得很好用,所以我先查阅了百度翻译API
觉得还不错,因为我写的APP是给自己用的,所以这肯定够用,然后我就申请了一个API接口,当我看了文档之后,百度为了安全的原因,在现版本的接口中加入了签名,通过一定的输入序列形成MD5序列,而这个感觉有点麻烦,虽然我后来试了下,可以用的,但是当时觉得时间不多,就转而使用了有道翻译API
首先要做的肯定是申请key,然后看了下API接入文档,发现有道的API很简单粗暴,其数据接口为:
http://fanyi.youdao.com/openapi.do?keyfrom=&key=&type=data&doctype=&version=1.1&q=要翻译的文本
官方说明
版本:1.1,请求方式:get,编码方式:utf-8
主要功能:中英互译,同时获得有道翻译结果和有道词典结果(可能没有)
参数说明:
type - 返回结果的类型,固定为data
doctype - 返回结果的数据格式,xml或json或jsonp
version - 版本,当前最新版本为1.1
q - 要翻译的文本,必须是UTF-8编码,字符长度不能超过200个字符,需要进行urlencode编码
only - 可选参数,dict表示只获取词典数据,translate表示只获取翻译数据,默认为都获取
注: 词典结果只支持中英互译,翻译结果支持英日韩法俄西到中文的翻译以及中文到英语的翻译
errorCode:
0 - 正常
20 - 要翻译的文本过长
30 - 无法进行有效的翻译
40 - 不支持的语言类型
50 - 无效的key
60 - 无词典结果,仅在获取词典结果生效
http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=json&version=1.1&q=good { "errorCode":0 "query":"good", "translation":["好"], // 有道翻译 "basic":{ // 有道词典-基本词典 "phonetic":"gʊd" "uk-phonetic":"gʊd" //英式发音 "us-phonetic":"ɡʊd" //美式发音 "explains":[ "好处", "好的" "好" ] }, "web":[ // 有道词典-网络释义 { "key":"good", "value":["良好","善","美好"] }, {...} ] }
其中我需要就更改q也就是需要查询的对象就可以了,其他可以通过Java写入String中
我的思路就是通过发送HTTP请求返回所需要的翻译结果数据,然后对返回来的JSON进行解析就可以了,以下是我所使用的代码
private void SentInquire(String q) { HttpClient httpClient = new DefaultHttpClient(); String ServerUrl = urlString + q; String data_backString = ""; HttpPost httpRequst = new HttpPost(ServerUrl); try { HttpResponse response = httpClient.execute(httpRequst); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { data_backString = EntityUtils.toString(response.getEntity());//接收返回的数据 System.out.println(data_backString); Log.i(TAG, "result = " + data_backString); //以下为JSON数据解析 try { // JSONArray jsonArray = new JSONArray(data_backString); JSONObject jsonObject2 = new JSONObject(data_backString); // String string=jsonObject2.getString("translation"); // receiveString=string; // JSONObject jsonObject3=new // JSONObject(jsonObject2.getString("basic")); JSONObject jsonObject3 = (JSONObject) jsonObject2 .get("basic"); receiveString = jsonObject3.getString("explains"); JSONArray jsonArray1 = new JSONArray(receiveString); receiveString = ""; for (int i = 0; i < jsonArray1.length(); i++) { receiveString += jsonArray1.getString(i) + "\\n"; } // String[] strarray=receiveString.split(","); /* * for (int i = 0; i < strarray.length; i++) { //String * mytemp * =strarray[i].substring(strarray[i].indexOf("\'"),strarray * [i].indexOf("\'")); receiveString+=mytemp+"\\n"; } */ JSONArray jsonArray = jsonObject2.getJSONArray("web"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObjectSon = (JSONObject) jsonArray .opt(i); receiveString += jsonObjectSon.getString("key"); receiveString += ":"; // String valueTemp=jsonObjectSon.getString("value"); JSONArray valueArray = new JSONArray( jsonObjectSon.getString("value")); for (int j = 0; j < valueArray.length(); j++) { receiveString += valueArray.getString(j); } receiveString += "\\n"; } mHandler.sendEmptyMessage(0); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); System.out.println("-----出现异常------"); } } } catch (Exception e) { // TODO: handle exception } }
测试程序中返回来的JSON数据
{“translation”:[“帮助”],”basic”:{“us-phonetic”:”hɛlp”,”phonetic”:”help”,”uk-phonetic”:”help”,”explains”:[“n. 帮助;补救办法;帮忙者;有益的东西”,”vt. 帮助;促进;治疗;补救”,”vi. 帮助;有用;招待”,”n. (Help)人名;(芬)海尔普”]},”query”:”help”,”errorCode”:0,”web”:[{“value”:[“帮助”,”帮忙”,”帮助文档”],”key”:”Help”},{“value”:[“自取所需”,”自用”,”自己动手”],”key”:”help oneself”},{“value”:[“帮帮忙”,”帮个大忙”,”帮助解决问题”],”key”:”Help out”}]}
解析JSON数据部分我从CSDN大神那儿学习的
特别注意一点,发送网络请求不能在主线程中进行,这是很多博客没有说明的,我们只需要开辟一个新的线程就可以了
还有不能在该线程中直接对view进行修改,需要通过handler发送修改view例如在textview中显示
这样我应用的核心部分完成了
完整代码下载地址
以上是关于百度翻译收藏单词能导出么的主要内容,如果未能解决你的问题,请参考以下文章