bash google 翻译

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

bash google 翻译

#1

帖子 O_O_BOT » 2009-08-31 17:57

bash google 翻译

代码: 全选

#!/bin/bash
text=${1:-$(xsel -o)}
word=$(echo "$text" | wc -w)
if echo "$text" | enca | grep -q 'ASCII';then
    tran="auto%7Czh-CN"
    if ((word == 1));then
        espeak "$text" &
    fi
else
    tran="zh-CN%7Cen"
fi
enc=$(echo "$text" | uni2ascii -a J)
url="http://translate.google.com/translate_a/t?client=firefox-a&text=${enc}&langpair=${tran}&ie=UTF-8&oe=UTF-8"
AGENT="User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030814 Iceweasel/3.0.9 (Debian-3.0.91)"
get=$(wget --user-agent="$AGENT" "$url" -O - )
#notify-send -i gtk-info -t 10000 "$text is:" "$get"
tips 5 '<span foreground="blue" background="#0ff" font_desc="11">'"$get"'</span>'
tips 鼠标位置显示提示 没找到 拿个工具是 用gtk扯了一个

代码: 全选

#include    <gtk/gtk.h>
#include    <stdio.h>
#include    <stdlib.h>
gint leave(GtkWidget *widget, GdkEvent *event, gpointer data)
{
    gtk_main_quit();
    return FALSE;
}
gboolean cb_timeout(gpointer data)
{
    gtk_main_quit();
    return FALSE;
}
int main(int argc, char *argv[]) 
{
    GdkWindow *root;
    GtkWidget *window;
    GtkWidget *lable;
    gint x,y;
    guint timeout;
    gtk_init(&argc, &argv);
    if (argc < 3) {
        fprintf(stderr, "%s timeout/s text ", argv[0]);
        exit(1);
    }
    timeout = atoi(argv[1]);
    if (timeout == 0) {
        fprintf(stderr, "Timeout/s error!");
        exit(1);
    }
    window = gtk_window_new(GTK_WINDOW_POPUP);
    gtk_widget_set_events(window,GDK_BUTTON_PRESS_MASK);
    g_signal_connect(G_OBJECT(window),"delete_event",
                     G_CALLBACK(leave), NULL);
    g_signal_connect(G_OBJECT(window),"button_press_event",
                     G_CALLBACK(leave), NULL);
    lable = gtk_label_new(NULL);
    gtk_label_set_markup(GTK_LABEL(lable), argv[2]);
    gtk_label_set_line_wrap(GTK_LABEL(lable), TRUE);
    gtk_container_add(GTK_CONTAINER(window), lable);
    root = gdk_get_default_root_window();
    gdk_window_get_pointer(root, &x, &y, NULL);
    gtk_window_move(GTK_WINDOW(window), x, y);
    g_timeout_add_seconds(timeout, cb_timeout, NULL);
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}
上次由 O_O_BOT 在 2009-09-01 7:20,总共编辑 1 次。
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
onelynx
帖子: 817
注册时间: 2008-11-13 16:03

Re: bash google 翻译

#2

帖子 onelynx » 2009-08-31 18:11

可以划线取词吗?
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: bash google 翻译

#3

帖子 xiooli » 2009-08-31 18:23

fzq5012 写了:可以划线取词吗?

代码: 全选

#!/bin/bash
trans() {
text=${1:-$(xsel)}
word=$(echo "$text" | wc -w)
if ((word == 1));then
    espeak "$text"
fi
if echo "$text" | enca | grep -q 'ASCII';then
    tran="auto%7Czh-CN"
else
    tran="zh-CN%7Cen"
fi
enc=$(echo "$text" | uni2ascii -a J)
url="http://translate.google.com/translate_a/t?client=firefox-a&text=${enc}&langpair=${tran}&ie=UTF-8&oe=UTF-8"
AGENT="User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.7) Gecko/2009030814 Iceweasel/3.0.9 (Debian-3.0.91)"
get=$(wget --user-agent="$AGENT" "$url" -O - )
[ "$get" ] && xsel -b <<< "$get" && notify-send -i gtk-info -t 10000 "$text is:" "$get"
}
while :; do [ "`xsel`" ] && trans && echo | xsel; sleep 2;done
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: bash google 翻译

#4

帖子 xiooli » 2009-08-31 18:42

不错:
附件
8.png
头像
xzap
帖子: 256
注册时间: 2006-08-24 21:25

Re: bash google 翻译

#5

帖子 xzap » 2009-08-31 21:02

不错,不错,顶起,我平时用的是这个

代码: 全选

#!/bin/bash
w3m -dump -no-cookie http://dict.cn/mini.php?q=$1

受到启发把这个常用的改下,改成也可以滑词的。谢谢,又学到了。

代码: 全选

#!/bin/bash
while :
do
xx=`xsel -o`
if [ ! -z "$xx" ];then
IFS="\n" 
yy=$(w3m -dump -no-cookie http://dict.cn/mini.php?q="$xx")
yy=`echo $yy|sed '/加入生词本/d'`
echo $yy| zenity --text-info --title "http://dict.cn上\"$xx\"的翻译" 
wait
xsel -c
fi
sleep 2
done
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

Re: bash google 翻译

#6

帖子 O_O_BOT » 2009-09-01 7:16

:em06
上次由 O_O_BOT 在 2009-09-08 15:16,总共编辑 1 次。
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
yunpengwu
帖子: 294
注册时间: 2007-08-26 10:35
来自: 上海
联系:

Re: bash google 翻译

#7

帖子 yunpengwu » 2009-09-08 14:20

我也改了一把,用sdcv来查英文,忽略中文的干扰:

代码: 全选

#!/bin/bash
trans() {
    text=${1:-$(xsel)}
    if echo "$text" | enca | grep -q 'ASCII';then
        word=$(echo "$text" | wc -w)
        if ((word == 1));then
            espeak "$text"
        fi
        get=$(sdcv -n -u 懒虫简明英汉词典 $text)
        [ "$get" ] && xsel -b <<< "$get" && notify-send -u critical -i '~/picture/logo/ubuntu.png' 'stardict翻译' "$get"
    fi
}

while :; do [ "`xsel`" ] && trans && echo | xsel; sleep 2;done
cocoready
帖子: 15
注册时间: 2009-08-13 12:11

Re: bash google 翻译

#8

帖子 cocoready » 2009-09-16 13:47

这个需要在什么环境下运行。。。?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: bash google 翻译

#9

帖子 eexpress » 2009-09-16 14:08

又折腾,我从bash换到perl的,都发过了。

xsel -o
● 鸣学
回复