openKylin论坛

 找回密码

百度翻译 [复制链接]

今天偶然看到百度开放平台,发现上面还有一个百度翻译的API接口。
于是就写了一个简单的词典程序。代码如下。

#include <libsoup/soup.h>
#include <json-glib/json-glib.h>

#define CLIENT_ID        "WOkykfPXheIbcGE2UvqRSU1f"

#define TARGET_URL        "http://openapi.baidu.com/public/2.0/bmt/translate?"\
        "from=auto&to=auto&client_id=" CLIENT_ID "&q=%s"

int main(int argc, char *argv[])
{
        if(argc!=2)
           return;

        gchar *q=argv[1];

        SoupSession *session=soup_session_new();

        gchar *target=g_strdup_printf(TARGET_URL,q);

        SoupMessage *msg=soup_message_new("GET",target);
        if(msg==NULL){
                g_error("Fail to create HTTP message 'GET %s'",target);
        }

        guint status;
        status=soup_session_send_message(session,msg);
        if(status!=SOUP_STATUS_OK){
                g_error("HTTP response %d",status);
        }

        SoupMessageBody *body=NULL;
        g_object_get(msg,"response-body",&body,NULL);

        JsonParser *parser=json_parser_new();
        if(json_parser_load_from_data(parser,body->data,body->length,NULL)
                                ==FALSE){
                g_error("Invalid HTTP response\n%s",body->data);
        }       

        JsonNode *root_node=json_parser_get_root(parser);
        JsonObject *root_obj=json_node_get_object(root_node);
        const gchar *from=json_object_get_string_member(root_obj,"from");
        const gchar *to=json_object_get_string_member(root_obj,"to");
        JsonArray *results=json_object_get_array_member(root_obj,"trans_result");
        g_printf("%s ==> %s\n",from,to);
        gint i,len=json_array_get_length(results);
        for (i = 0; i < len; i++) {
                JsonObject *res=json_array_get_object_element(results,i);
                const gchar *src=json_object_get_string_member(res,"src");
                const gchar *dst=json_object_get_string_member(res,"dst");
                g_printf("\t%s : %s\n",src,dst);
        }


        g_object_unref(parser);
        g_object_unref(msg);
        g_object_unref(session);

        return 0;
}


保存后编译
gcc a.c `pkg-config --libs --cflags libsoup-2.4 json-glib-1.0`
其中 CLIENT_ID是注册百度开放平台开发者帐号后拿到的一个ID。
楼主
发表于 2014-4-5 20:09:43
回复

使用道具 举报

百度翻译 [复制链接]

wiiiky 发表于 2014-4-5 20:15
我想是不是可以依据这个写一个简单的百度翻译的客户端。

可以呀,能否在Dash中实现呢,这样翻译就方便了
推荐
发表于 2014-4-5 20:40:19
回复

使用道具 举报

百度翻译 [复制链接]

运行结果如图所示



沙发
 楼主| 发表于 2014-4-5 20:14:13
回复

使用道具 举报

百度翻译 [复制链接]

我想是不是可以依据这个写一个简单的百度翻译的客户端。
板凳
 楼主| 发表于 2014-4-5 20:15:32
回复

使用道具 举报

百度翻译 [复制链接]

bunny 发表于 2014-4-5 20:40
可以呀,能否在Dash中实现呢,这样翻译就方便了

可以一试,可是我找不到任何关于创建dash的文档。
我搞不清楚这几个东西的概念与关系,
dash, unity-len,scope,
5#
 楼主| 发表于 2014-4-7 16:39:11
回复

使用道具 举报

百度翻译 [复制链接]

本帖最后由 bunny 于 2014-4-7 17:11 编辑
wiiiky 发表于 2014-4-7 16:39
可以一试,可是我找不到任何关于创建dash的文档。
我搞不清楚这几个东西的概念与关系,
dash, unity-le ...

点击左上角的 图标,显示的是Dash , 可以进行搜索。

在Dash面板底部,如图,为lens,包括音乐,文件,视频,图片等等。

scope可以看成是后台。
那视频搜索为例,Scope主要是从优库上获得数据,按照一定规则进行处理,将搜索结果显示在Dash面板上。





6#
发表于 2014-4-7 17:08:26
回复

使用道具 举报

百度翻译 [复制链接]

wiiiky 发表于 2014-4-7 16:39
可以一试,可是我找不到任何关于创建dash的文档。
我搞不清楚这几个东西的概念与关系,
dash, unity-le ...

如果你感兴趣,可以看下源码
下面是视频搜索的在LP上的地址,可以下载源码
https://launchpad.net/unity-china-video-scope
7#
发表于 2014-4-7 17:11:08
回复

使用道具 举报

百度翻译 [复制链接]

bunny 发表于 2014-4-7 17:11
如果你感兴趣,可以看下源码
下面是视频搜索的在LP上的地址,可以下载源码
https://launchpad.net/unit ...

我去看看的
8#
 楼主| 发表于 2014-4-7 18:48:34
回复

使用道具 举报

百度翻译 [复制链接]

bunny 发表于 2014-4-7 17:11
如果你感兴趣,可以看下源码
下面是视频搜索的在LP上的地址,可以下载源码
https://launchpad.net/unit ...

没法看,用vala写的也就算了。
可是没有一点注释,文档说明
9#
 楼主| 发表于 2014-4-7 22:09:00
回复

使用道具 举报

百度翻译 [复制链接]

wiiiky 发表于 2014-4-7 22:09
没法看,用vala写的也就算了。
可是没有一点注释,文档说明

这是开发文档,http://developer.ubuntu.com/scopes/overview/
中文资料暂时没发现,等你翻译了。
10#
发表于 2014-4-8 09:22:18
回复

使用道具 举报

openKylin

GMT+8, 2024-6-1 17:29 , Processed in 0.026171 second(s), 21 queries , Gzip On.

Copyright ©2022 openKylin. All Rights Reserved .

ICP No. 15002470-12 Tianjin

快速回复 返回顶部 返回列表