Видео смотреть бесплатно

Смотреть с сюжетом видео

Официальный сайт welinux 24/7/365

Смотреть видео бесплатно

13.08.09 11:40 evgenyl

PythonGoogle переводчик

Захотелось поддержать блог о питоне, накидал простой пример переводчика используя сервис google translate.

Все очень просто, в трее висит иконка, по нажатию на нее появляется окно, пишем в нем текст на английском, enter и в нем же видим перевод на русском языке.

Жмем еще раз по иконке окно исчезает, правая кнопка по иконке выход.

Это всего лиш пример того что можно делать на питоне.

Исходный код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161


#!/usr/bin/python



import pygtk

pygtk.require("2.0")



import gtk

import gobject

import sys, os, re

import pango

import urllib2

import urllib



user_agent='Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.0.4) Gecko/2008120916 Gentoo Firefox/3.0.4'



def g_trans(f,t,text):

        url = 'http://translate.google.com/translate_a/t?client=t&text=%s&sl=%s&tl=%s' % ( urllib.quote(text),f,t )

        req = urllib2.Request(url)

        req.add_header('User-Agent',user_agent)

        res = urllib2.urlopen(req).read()

        try:

                res=eval(res)

        except:

                pass

        if isinstance(res,list):

                return res[0]+'\n'+'\n'.join( [ i for i in res[1][0] if i!='noun'] )

        return res



class App:

        def __init__(self):

                # - UI --------------------

                self.win = gtk.Window(gtk.WINDOW_TOPLEVEL)

                self.win.resize(400,200)

                self.win.move(200,100)

                self.win.set_deletable(False)

                self.win.set_title('Google Translate')

                self.text_buf = gtk.TextBuffer()

                self.text = gtk.TextView(self.text_buf)

                self.text.modify_font( pango.FontDescription('sans normal 12' ) )

                self.text.connect('key_press_event',self.text_key_press)

                self.text.set_wrap_mode(gtk.WRAP_WORD)

                self.win.add(self.text)

                self.win.set_border_width(3)

                # - menu ------------------

                self.menu = gtk.Menu()

                self.menu_quit = gtk.ImageMenuItem(gtk.STOCK_QUIT)

                self.menu_quit.connect('activate', self.quit)

                self.menu.append(self.menu_quit)

                # - tray ------------------

                self.tray = gtk.StatusIcon()

                self.tray.set_from_stock(gtk.STOCK_REFRESH)

                self.tray.set_tooltip('Google Translate')

                self.tray.connect('activate',self.show_win)

                self.tray.connect('popup-menu', self.popup, self.menu)

                # - init ------------------

                self.desktop = gtk.gdk.get_default_root_window()



        def popup(self, widget, button, time, data = None):

                if button==3 and data:

                        data.show_all()

                        data.popup(None, None, None, 3, time)



        def quit(self,widget):

                gtk.main_quit()



        def show_win(self,widget):

                if self.win.get_property('visible'):

                        self.win.hide()

                else:

                        self.win.show_all()



        def text_key_press(self,w,p):

                if p.string=='\r':

                        text=self.text_buf.get_text(self.text_buf.get_start_iter(),self.text_buf.get_end_iter())

                        self.text_buf.set_text('')

                        self.text_buf.set_text(unicode( g_trans('en','ru',text)))



if __name__ == "__main__":

        app = App()

        gtk.main()

 



mistako 13.08.09 12:41 # +1
Мужчина, человеческое спасибо тебе!
squ1b3r 13.08.09 12:44 # +0
Хы ) вчера сидел и думал, что надо бы что-то такое накидать, а то надоедает каждый раз в браузер залить :) спасибо тебе огромное!
evgenyl 13.08.09 13:49 # +0
Всегда пожалуйста!
exelens 13.08.09 13:53 # +0
А скомпилить можешь? Чтобы просто тыкать и оно работало?
evgenyl 13.08.09 13:56 # +0
поставь pygtk (вероятно уже стоит)
сохрани исходный код в trans.py дай права на запуск и все тыкай :)
exelens 13.08.09 14:01 # +0
=))) Прикольная штука! Пасиб
mistako 13.08.09 15:34 # +0
Могу ли попросить вас о версии для python 3+
evgenyl 13.08.09 15:42 # +0
он же ещё не стабилен ???
какую ошибку выдает когда запускаеш ?
monolith 13.08.09 16:31 # +0
Третья ветка давно стабильна:

…Python 2.6 and 3.1 are considered stable production releases…

http://python.org/download/
evgenyl 13.08.09 16:34 # +0
да я особо не слежу за ним, у меня в генте ещё не стабильный :)
drujebober 23.08.09 20:34 # +0
стабильность тут не причем, pygtk нету еще под 3-й
evgenyl 13.08.09 14:02 # +0
Добавил исходник.
predator 13.08.09 16:27 # +0
круто, чувак =) большой плюс
Kraplax 14.08.09 07:35 # +0
А для тех, кому хочется того же, только для KDE4 - плагин KRunner для перевода в Google translate :D
or10n 14.08.09 15:00 # +0
классненько было бы еще обратный перевод, т.е. пишешь слово на русском, и получаешь перевод на английском.
saturn721 14.08.09 20:05 # +0
а вы в строке self.text_buf.set_text(unicode( g_trans('en','ru',text))) 'ru' с 'en' местами поменяйте и будет вам счастье.
or10n 16.08.09 15:28 # +0
мне хотелось бы что скрипт сам определял что я ввел, и сам выбирал направление перевода.
а то что у меня значек в трее в виде стрелочки, как будет ребута система хочет, это нормально ?
evgenyl 23.08.09 17:29 # +0
Простите уезжал, можно дописать, да я первый понравившийся значек из стоков взял.
VGusev2007 15.08.09 00:29 # +0
Отлично работает! Главное очень аскетично! Нет ничего лишнего. Буду всегда теперь испольовать.
exelens 24.08.09 23:00 # +0
http://habrahabr.ru/blogs/PyGTK/67668/ почти как твоё, да?
evgenyl 27.08.09 09:34 # +0
угу :)

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 103)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 2078 из 158 городов)
            Топ пользователей Топ блогов
            welinux.ru

            Смотреть онлайн бесплатно

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн