C#导入有道词典单词本到扇贝
由于扇贝查词没有有道方便,所以很多时候添加生词都是在使用有道词典,然后顺手就保存到了有道单词本,不过在扇贝记单词可以打卡,记单词更方便,进入扇贝页面后发现扇贝单词批量导入居然一次只支持10个,查了扇贝API是可以导入生词的,于是想着何不利用c#批量导入单词?说干就干!
准备工作
获取扇贝token
首先需要扇贝账号(这不废话么),然后需要在扇贝上创建自己的应用,进入http://www.shanbay.com/developer/wiki/intro/,点击我的应用创建扇贝应用,具体配置如下

注意回调地址
创建完应用后需要获取token

client_id就是你的appkey,进入这个地址后会提示授权(先登录自己的用户),然后同意授权后会跳转到一个网址,你会看到access_token,复制下来备用。
导出有道词典
打开有道词典->单词本->浏览选项卡->管理->导出到文件->所有分类->导出为xml文件,备用。

开始编程
思路
1) 扇贝单词插入方法有两个接口:一个是根据单词获取id,另一个根据ID添加单词
2) 由于扇贝有单人账户导入限制(单用户单app 200个/小时),如果导入单词过多会被禁止访问,所以需要加个定时器自动添加剩余单词
核心代码如下:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; namespace ImportNewWordsToShanbay
{
public class ShanbayImportHelper
{
public static int GetShanbayWordID(string word, string access_token)
{
try
{
var result = HttpHelper.HttpGet("https://api.shanbay.com/bdc/search/", "word=" + word + "&access_token=" + access_token);
JObject json = JObject.Parse(result);
if (json.Property("status_code").Value.ToString() == "")
{
var wordId = JObject.Parse(json.Property("data").Value.ToString()).Property("id").Value.ToString();
return int.Parse(wordId);
}
else
return -;
}
catch (Exception ex)
{
return ;
}
} public static bool AddNewWordToShanbay( int wordId,string access_token)
{
try
{
var data = "{\"id\":" + wordId + "}";
var postResult = HttpHelper.HttpPost("https://api.shanbay.com/bdc/learning/", access_token, data);
JObject postJsonResult = JObject.Parse(postResult);
if (postJsonResult.Property("msg").Value.ToString().ToUpper() == "SUCCESS")
{
return true;
}
}
catch (Exception ex)
{ }
return false;
}
}
}
Http帮助类
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Text;
using System.Threading.Tasks; namespace ImportNewWordsToShanbay
{
public class HttpHelper
{
public static string HttpPost(string Url, string token, string postDataStr)
{
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.ProtocolVersion = HttpVersion.Version11;
request.Method = "POST";
request.Headers.Add("Authorization", string.Format("Bearer {0}", token));
request.ContentType = "application/json";
request.Referer = null;
request.AllowAutoRedirect = true;
request.Accept = "*/*";
byte[] buffer = encoding.GetBytes(postDataStr);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, , buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
} public static string HttpGet(string Url, string postDataStr)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close(); return retString;
}
}
}
导入设置界面

导入状态查看(定时自动导入剩余未导入单词)

所有导入完成后查看扇贝单词本,所有的单词都加进去了。
Enjoy!
C#导入有道词典单词本到扇贝的更多相关文章
- Mac上的欧路词典单词本迁移到有道词典 #node.js
摘要 有道词典提供了柯林斯和朗文辞典,加上最近在背单词且Mac版的屏幕取词也够用了,为了云单词本的同步,决定抛弃Mac上的欧路词典.单词欧路上的单词本也存了一百多个单词.怎样迁移到有道呢? 关键词:n ...
- php 生成bing词典能导入的xml(有道词典->bing词典)
编程以来一直用网易有道词典查单词.翻译:最近一直在看英文方面的资料,于是越来越对有道词典(划词.广告,本来想转灵格斯的,但灵格斯没有android版)不满意,一番试用后决定转bing词典,于是想把有道 ...
- Teamwork-Week2真对必应词典和有道词典的软件分析和用户需求调查(桌面版)
经调查,现在有道词典在该领域拥有很大程度的市场占有率,所以我们将有道词典与必应词典进行对比. 核心功能一:单词本 有道词典中的单词本都只能是由用户手动添加不会的单词,而必应词典中的单词 不仅可以被自己 ...
- bing词典vs有道词典对比测试报告——功能篇之细节与用户体验
之所以将细节与用户体验放在一起讨论,是因为两者是那么的密不可分.所谓“细节决定成败”,在细节上让用户感受方便.舒适.不费心而且温馨,多一些人文理念,多一些情怀,做出来的产品自然比其他呆板的产品更受欢迎 ...
- 必应词典手机版(IOS版)与有道词典(IOS版)之软件分析【功能篇】【用户体验篇】
1.序言: 随着手机功能的不断更新和推广,手机应用市场的竞争变得愈发激烈.这次我们选择必应词典和有道词典的苹果客户端作对比,进一步分析这两款词典的客户端在功能和用户体验方面的利弊.这次测评的主要评测人 ...
- 【应用】_有道词典客户端一个后缀名为sql的数据库。
[缘起] 在清理电脑磁盘的时候,看一看各安装文件夹有占用了多大容量,发现有道词典居然达140MB了,于是进去看看. 发现个有趣的文件:XXX.sql. 首先我们看一看它的安装文件夹的结构: Dict ...
- 基于pygtk的linux有道词典
基于pygtk的linux有道词典 一.桌面词典设计 想把Linux用作桌面系统,其中一部分障碍就是Linux上没有像有道一样简单易用的词典.其实我们完全可以自己开发一款桌面词典, 而且开发一款桌面词 ...
- ubuntu14.04 下安装有道词典
安装步骤 1.ubuntu14.04.1版本下是不能直接安装有道词典的,首先需要把14.04.版升级为14.04.2版. 在终端窗口中输入以下命令: sudo apt-get update sudo ...
- 在Ubuntu上安装有道词典
4月20日,由有道词典和Deepin团队共同完成的有道词典Linux版终于上线了,首先 推出Deepin和Ubuntu两个系统版本及其他版本的二进制包,估计以后还会有RPM 等版本.有道Linux版界 ...
随机推荐
- 网络编程-TCP连接-length
在使用readLine方式时,常常会遇到因为没有结束标记,而导致阻塞现象. 如果不想使用结束标记,这里可以使用一个固定长度的byte[],来获取流. server package com.net.tc ...
- OPENGL_三角形带GL_TRIANGLE_STRIP详解
使用三角形带原因:减少顶点传递,渲染时api向显卡传输数据量是瓶颈,用较好的传递方法传递一个三角形最少可以少于一个点. 点的顺序根据奇数,偶数不一样的原因:保持所有三角形法线在同一方向. 原文:htt ...
- 洛谷P4869 albus就是要第一个出场(线性基)
传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 线性基居然有这性质我还不知道orz 假设$n$个数的线性基中有$k$个数,那么显然共有$2^k$个不同的异或和,而其中每一个异或和的出现次数都是$2 ...
- [Xcode 实际操作]八、网络与多线程-(5)使用UIApplication对象发送邮件
目录:[Swift]Xcode实际操作 本文将演示如何使用应用程序单例对象,发送邮件的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 注:需要使用真机进行测 ...
- spark 1.1.0 单机与yarn部署
环境:ubuntu 14.04, jdk 1.6, scala 2.11.4, spark 1.1.0, hadoop 2.5.1 一 spark 单机模式 部分操作参考:http://www.cnb ...
- Windows下SVN的下载、安装
SVN全称Subversion,是一款优秀的版本控制工具. SVN分为服务器.客户端两部分,服务器和客户端版本很多,有的是收费的,有的需要注册.我们选择免费.不用注册的. 以VisualSVN作为服务 ...
- Bootstrap Table 从新InsertRow 刷新表格 数据的问题处理方案
1.第一步获取数据源 var rows = { //要插入的数据,这里要和table列名一致SkuCode: data.rows[i].SkuCode,BarCode: data.rows[i].Ba ...
- mongodb-CURD
插入 import pymongo conn = pymongo.MongoClient('mongodb://192.168.10.10:27017') mydb = conn['myDB'] my ...
- ztr loves lucky numbers 傻逼的我来了个大模拟
http://acm.hdu.edu.cn/showproblem.php?pid=5676 这题的正解因该是dfs的,但是有18个位,然后我一算,全排列的话,有18!个啊,那不是很大?但是有很多是相 ...
- Nodejs 文件修改自动重启扩展
使用 supervisor: 安装: # 全局安装 npm -g install supervisor 启动: supervisor app.js