ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin

quick_link Babylon ב-Awesome, ובכלל

מעבר לעמוד הקודם  1, 2, 3  הבא
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
bjesusלא בפורום כעת ת.הצטרפות: 12/04/2002 · הודעות: 287 · מיקום: נאות הכיכר
 

הודעה פורסם: 13/02/2009 - 00:46
נושא ההודעה:

אממ... יכול להיות ש
קוד:
/usr/bin/env python
לא עונה כמו שצריך אצלך? מה הפלט שלו?
בנוסף, ווידאת שלסקריפט יש הרשאות ריצה, נכון?

בגדול השורה הראשונה בסקריפט אמורה להגיד ל-shell שלך למי לתת להריץ אותו, ובמקום פייתון הוא מעביר אותו ל-sh (נראה לי). בטוח שהעתקת את השורה הראשונה כמו שהיא?

זה כל מה שאני יכול לחשוב עליו... כך-או-כך זה עניין של ה-shell, לא של הסקריפט עצמו. אבל זה גם לא נורא, רק כמה תווים יותר בהקלדה Wink

_________________
קוד:
<erno> hm. I've lost a machine.. literally _lost_. it responds to ping, it works completely, I just can't figure out where in my apartment it is.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
bjesusלא בפורום כעת ת.הצטרפות: 12/04/2002 · הודעות: 287 · מיקום: נאות הכיכר
 

הודעה פורסם: 13/02/2009 - 02:49
נושא ההודעה:

אהלן, עוד עדכון.
מעכשו הסקריפט מזהה טקסט גם בערבית, ולא משתמש יותר בביטויים רוגלרים.

אם יש בעיות דווחו לי בבקשה, נראה לי אבל שזיהוי השפה טוב יותר ככה (זה פועל על התו הראשון במחרוזת).

קוד:
#!/usr/bin/env python
# -*- coding: utf-8 -
#
# Pytrans is a frontend to babylon
# Version 1.1
from urllib2 import urlopen
from urllib import urlencode
from sys import argv

base_url = "http://translation.babylon.com/post_post.php"

def strip(s):
    intag = [False]
    def chk(c):
        if intag[0]:
            intag[0] = (c != '>')
            return False
        elif c == '<':
            intag[0] = True
            return False
        return True
    return ''.join(c for c in s if chk(c))

def translate(term):
    if term[0] == '\xd7':
        params = urlencode(dict(lps=14, lpt=0, mytextarea1=term))
    elif term[0] in ['\xd9','\xd8']:
        params = urlencode(dict(lps=15, lpt=14, mytextarea1=term))
    else:
        params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))
    page = urlopen(base_url, params).read()
    return strip(page).replace("\n", '').replace("&nbsp;", "\n").replace("  ", "")
   
if __name__ == "__main__":
    if len(argv) == 1:
        print "What do you want to translate?"
        exit()
    term = " ".join(argv[1:])
    output = translate(term)
    print term
    print output

_________________
קוד:
<erno> hm. I've lost a machine.. literally _lost_. it responds to ping, it works completely, I just can't figure out where in my apartment it is.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
חמוס_במשקפייםלא בפורום כעת ת.הצטרפות: 07/02/2009 · הודעות: 97 ·
 

הודעה פורסם: 13/02/2009 - 04:18
נושא ההודעה:

עובד נהדר! איזה כיף!
עוד משאלות:
1. משום מה, כאשר מקבלים תרגום מערבית לעברית דרך libnotify, הן הכותרת הערבית והן ההגדרה העברית מיושרות לשמאל דווקא. הבעייה הזו לא קיימת בתרגום מאנגלית לעברית ולהיפך - שם תמיד העברית מיושרת לימין והאנגלית לשמאל, לא משנה מי בכותרת ומי בהגדרה. אולי צריך להכניס איזה תו בקרה לפני המחרוזת שמתקבלת מהמילון הערבי?
2. אפשר גם רוסית? מן הסתם גם לשפה זו יש מרווח תווים משלה. אני לא יודע, בעצם - יש לבבילון מילון רוסי?
3. יהיה נחמד לשלוט על שפת היעד הראשית של הסקריפט דרך פרמטר חיצוני. ככה אחמד מדמשק יוכל לכוון את הסקריפט לתרגם לו מאנגלית ומעברית לערבית, ומערבית לאנגלית, בלי לנבור בתוכו פנימה.
יש מצב?
(איזה מגניב זה קוד פתוח!)


נערך לאחרונה על-ידי חמוס_במשקפיים בתאריך 13/02/2009 - 17:19, סך-הכל נערך פעם אחת
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 13/02/2009 - 15:01
נושא ההודעה:

סקריפט מדהים.
אני משתמש בסביבה של GNOME ומצאתי דרך לשלוף את הטקסט המסומן דרך הסקריפט, עם הקטע קוד הבא.

קוד:

import gtk

clipboard = gtk.clipboard_get(selection = "PRIMARY")
    term = clipboard.wait_for_text()


אלי
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
ypלא בפורום כעת ת.הצטרפות: 21/08/2007 · הודעות: 826 · מיקום: ירושלים
 

הודעה פורסם: 14/02/2009 - 20:37
נושא ההודעה:

תודה...מה שקרה זה שהיה שורה רווח בתחילת הקוד
כנראה מקופי פסט שעשיתי מהאתר ,לא חשבתי שזה יכול לגרום לבעיות ,איזה ילד אני Embarassed
השלב הבא זה לנסות למצוא פעולה יותר נוחה להפעלת הסקריפט ,חשבתי משו עם העכבר
שוב תודה ,באמת סקריפט מוצלח ,ועובד מהר בצורה די מפתיעה
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
חמוס_במשקפייםלא בפורום כעת ת.הצטרפות: 07/02/2009 · הודעות: 97 ·
 

הודעה פורסם: 14/02/2009 - 20:49
נושא ההודעה:

yp :
תודה...מה שקרה זה שהיה שורה רווח בתחילת הקוד
כנראה מקופי פסט שעשיתי מהאתר ,לא חשבתי שזה יכול לגרום לבעיות ,איזה ילד אני Embarassed
השלב הבא זה לנסות למצוא פעולה יותר נוחה להפעלת הסקריפט ,חשבתי משו עם העכבר
שוב תודה ,באמת סקריפט מוצלח ,ועובד מהר בצורה די מפתיעה

אם אתה משתמש בקומפיז אין בעיה להגדיר הרצה בעזרת הזזת העכבר אל אחת מפינות המסך.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
Ddordaלא בפורום כעת ת.הצטרפות: 21/03/2008 · הודעות: 276 ·
 

הודעה פורסם: 14/02/2009 - 23:01
נושא ההודעה:

באמת אם כבר עוסקים בבאבילון, אולי כדאי כבר לפתח יישום פתוח לשימוש מלא בבאבילון? (נמאס לעבוד עם סטארדיקט)
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
iceman23לא בפורום כעת ת.הצטרפות: 28/10/2006 · הודעות: 59 ·
 

הודעה פורסם: 14/02/2009 - 23:04
נושא ההודעה:

חמוס_במשקפיים :
אוקיי - יש! האח הידד!

צריך להשתמש בגירסה 0.11 ומעלה של xclip כדי שהתרגום מעברית יעבוד, ואין צורך בשום פרמטר נוסף. אנשי פדורה החביבים העלו פאץ' שמומש, סוף סוף, באפסטרים. ניתן להוריד מכאן: http://sourceforge.net/projects/xclip ולהדר. צריך להתקין את חבילות הפיתוח של xorg.

באובונטו, למרבית הצער, גירסת xclip אינה עולה 0.8. אני אנסה לבקש יפה בפורומים שלהם לייבא את הגירסה החדשה לפחות לג'אונטי.


אפשר בבקשה הסבר לאיך להתקין xclip 0.11 הורדתי והסתבכתי..
אחרי
קוד:
./configure

אני לא מצליח לעשות לא make ולא make install
אני יודע שאני מפספס משהו..

תודה Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 15/02/2009 - 03:46
נושא ההודעה:

iceman23 :
חמוס_במשקפיים :
אוקיי - יש! האח הידד!

צריך להשתמש בגירסה 0.11 ומעלה של xclip כדי שהתרגום מעברית יעבוד, ואין צורך בשום פרמטר נוסף. אנשי פדורה החביבים העלו פאץ' שמומש, סוף סוף, באפסטרים. ניתן להוריד מכאן: http://sourceforge.net/projects/xclip ולהדר. צריך להתקין את חבילות הפיתוח של xorg.

באובונטו, למרבית הצער, גירסת xclip אינה עולה 0.8. אני אנסה לבקש יפה בפורומים שלהם לייבא את הגירסה החדשה לפחות לג'אונטי.


אפשר בבקשה הסבר לאיך להתקין xclip 0.11 הורדתי והסתבכתי..
אחרי
קוד:
./configure

אני לא מצליח לעשות לא make ולא make install
אני יודע שאני מפספס משהו..

תודה Smile


צריך את הפלט של ./configure בכדי לעזור לך.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
חמוס_במשקפייםלא בפורום כעת ת.הצטרפות: 07/02/2009 · הודעות: 97 ·
 

הודעה פורסם: 15/02/2009 - 06:25
נושא ההודעה:

iceman23 :
חמוס_במשקפיים :
אוקיי - יש! האח הידד!

צריך להשתמש בגירסה 0.11 ומעלה של xclip כדי שהתרגום מעברית יעבוד, ואין צורך בשום פרמטר נוסף. אנשי פדורה החביבים העלו פאץ' שמומש, סוף סוף, באפסטרים. ניתן להוריד מכאן: http://sourceforge.net/projects/xclip ולהדר. צריך להתקין את חבילות הפיתוח של xorg.

באובונטו, למרבית הצער, גירסת xclip אינה עולה 0.8. אני אנסה לבקש יפה בפורומים שלהם לייבא את הגירסה החדשה לפחות לג'אונטי.


אפשר בבקשה הסבר לאיך להתקין xclip 0.11 הורדתי והסתבכתי..
אחרי
קוד:
./configure

אני לא מצליח לעשות לא make ולא make install
אני יודע שאני מפספס משהו..

תודה Smile

אייסמן, ככל הנראה חסרה לך החבילה xorg-dev. כמו כן וודא שמותקנת אצלך החבילה build-essentials.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
iceman23לא בפורום כעת ת.הצטרפות: 28/10/2006 · הודעות: 59 ·
 

הודעה פורסם: 15/02/2009 - 11:57
נושא ההודעה:

חמוס_במשקפיים :

אייסמן, ככל הנראה חסרה לך החבילה xorg-dev. כמו כן וודא שמותקנת אצלך החבילה build-essentials.


זה מה שפיספסתי תודה.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
MBDלא בפורום כעתSite Moderator ת.הצטרפות: 27/09/2004 · הודעות: 4161 ·
 

הודעה פורסם: 15/02/2009 - 21:45
נושא ההודעה:

ראיתי היום את
http://www.tirgumit.co.il/Translate.asp
ואני חושב שהוא די חדש. מישהו מרים את הכפפה להתממשקות אליו? מצטער, אבל פשוט אני ממש עסוק לאחרונה...

_________________
מערכת: GNU/Linux Ubuntu גרסה: 14.04
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
bjesusלא בפורום כעת ת.הצטרפות: 12/04/2002 · הודעות: 287 · מיקום: נאות הכיכר
 

הודעה פורסם: 16/02/2009 - 02:05
נושא ההודעה:

זה לא אמור להיות מסובך בכלל, אבל - למה? מה הוא מציע שאין בממשק של בבילון?

_________________
קוד:
<erno> hm. I've lost a machine.. literally _lost_. it responds to ping, it works completely, I just can't figure out where in my apartment it is.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
Ddordaלא בפורום כעת ת.הצטרפות: 21/03/2008 · הודעות: 276 ·
 

הודעה פורסם: 17/02/2009 - 19:26
נושא ההודעה:

bjesus :
זה לא אמור להיות מסובך בכלל, אבל - למה? מה הוא מציע שאין בממשק של בבילון?
יש בבילון ללינוקס?
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
חמוס_במשקפייםלא בפורום כעת ת.הצטרפות: 07/02/2009 · הודעות: 97 ·
 

הודעה פורסם: 18/02/2009 - 00:47
נושא ההודעה:

Ddorda :
bjesus :
זה לא אמור להיות מסובך בכלל, אבל - למה? מה הוא מציע שאין בממשק של בבילון?
יש בבילון ללינוקס?

עכשיו, בזכות הסקריפט הזה, יש.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
MBDלא בפורום כעתSite Moderator ת.הצטרפות: 27/09/2004 · הודעות: 4161 ·
 

הודעה פורסם: 19/02/2009 - 20:42
נושא ההודעה:

bjesus :
זה לא אמור להיות מסובך בכלל, אבל - למה? מה הוא מציע שאין בממשק של בבילון?

זה נקרא "אי תלות בספק יחיד"

_________________
מערכת: GNU/Linux Ubuntu גרסה: 14.04
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
Ddordaלא בפורום כעת ת.הצטרפות: 21/03/2008 · הודעות: 276 ·
 

הודעה פורסם: 20/02/2009 - 23:45
נושא ההודעה:

אולי אפשר לבנות לזה GUI, כדי שנוכל להשתמש בזה כתוכנה לכל דבר?
ובכלל אני בעד שיהיה כבר תחליף הולם לתוכנת באבילון בעולם הקוד הפתוח, ואם אלה יהיו ישראלים שיבנו את התוכנית - כבוד לנו Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
חמוס_במשקפייםלא בפורום כעת ת.הצטרפות: 07/02/2009 · הודעות: 97 ·
 

הודעה פורסם: 02/03/2009 - 20:37
נושא ההודעה:

שלום bjesus,

שוב תודה רבה על הסקריפט. אני משתמש בו בעזרת שורת ההפעלה שניסחת:

xclip -o | xargs -I $ ~/Software/scripts/pytrans.py $ | xargs -0I 1 notify-send 1

באובונטו ג'אונטי יש בעיה: היא מיישמת מערכת הודעות חדשה. במערכת הזו, כותרת ההודעה מקוצצת כדי להתאים לגודל התיבה. גוף ההודעה (שנכתב בפונט קטן יותר) יכול להיות ארוך הרבה יותר. הפעולה המתבקשת היא להציב את המונח לתרגום בשדה הכותרת (Summary) ואת התרגום בשדה הגוף (Body). למרבית המזל, notify-send תומכת בזה מצוין: הארגומנט הראשון שלה מעביר טקסט לכותרת, והשני - לגוף. את הסקריפט שכתבת כמעט אין צורך לשנות: יש רק להסיר את print term לפני הסוף. עם זאת, עם שורת ההפעלה אני מסתבך. אני פשוט לא מתמצא מספיק בדקויות של פייפינג ואקס-ארגס. האם אוכל לבקש ממך לשנות את השורה הזו כך שתעביר לנוטיפיי-סנד את הפלט של xclip -o בתור ארגומנט ראשון ואת הפלט של pytrans.py (שקיבל גם הוא את xclip -o כקלט) בתור ארגומנט שני?

בתודה מראש,
יותם
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 03/03/2009 - 10:51
נושא ההודעה:

נו בערך עוד אפשר לעבוד על זה:

קוד:

import pygtk
pygtk.require('2.0')
import gtk, gobject
import urllib2
from urllib import urlencode
import re

base_url = "http://translation.babylon.com/post_post.php"

def strip(s):
    intag = [False]
    def chk(c):
        if intag[0]:
            intag[0] = (c != '>')
            return False
        elif c == '<':
            intag[0] = True
            return False
        return True

    return ''.join(c for c in s if chk(c))


class gtranslator:
    def translate(self,term):
        if term[0] == '\xd7':
            params = urlencode(dict(lps=14, lpt=0, mytextarea1=term))
        elif term[0] in ['\xd9','\xd8']:
            params = urlencode(dict(lps=15, lpt=14, mytextarea1=term))
        else:
            params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))

        page = urllib2.urlopen(base_url, params).read()
        return strip(page).replace("\n", '').replace("&nbsp;", "\n").replace("  ", "")

    def fetch_clipboard_info(self):
        self.clipboard.request_text(self.clipboard_text_received)
        return True
   
    def clipboard_text_received(self, clipboard, text, data):
   if not text or text == '':
            return
        if self.term==text:
            return

   self.textentry.set_text (text)   
   t=self.translate (text)
   self.textbuffer.set_text (t)
        self.term=text

    def enter_callback (self, widget, entry):
   term=entry.get_text ()
   if term=='':
      return         
   t=self.translate (term)
   self.textbuffer.set_text (t)
        self.term=term
   
    def __init__(self):
        self.window = gtk.Window()
        self.window.set_title("Babylon")
        self.window.connect("destroy", lambda w: gtk.main_quit())

        vbox = gtk.VBox()
        vbox.show()
   self.textentry = gtk.Entry()
   self.textentry.connect("activate", self.enter_callback, self.textentry)
   self.textentry.show()
   vbox.pack_start(self.textentry)

   scrolledwin = gtk.ScrolledWindow()
        scrolledwin.show()

        self.textview = gtk.TextView()
        self.textview.show()
        self.textview.set_size_request(275,150)
        self.textview.set_wrap_mode(gtk.WRAP_CHAR)
        self.textbuffer = self.textview.get_buffer()
   scrolledwin.add(self.textview)

   vbox.pack_start(scrolledwin)
        self.window.add(vbox)
        self.window.show()

   self.clipboard = gtk.Clipboard(display=gtk.gdk.display_get_default(), selection="PRIMARY")
        self.clipboard.request_text(self.clipboard_text_received)
   self.term = ''
        self.clipboard.wait_for_text()

def main():
    gtrans = gtranslator ()
    gtk.main()
    return 0

if __name__ == '__main__':
    main()
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
חמוס_במשקפייםלא בפורום כעת ת.הצטרפות: 07/02/2009 · הודעות: 97 ·
 

הודעה פורסם: 03/03/2009 - 15:33
נושא ההודעה:

תודה רבה על העבודה!
הקוד החדש לא עובד לי. כשאני מריץ אותו מהטרמינל עם "test" כארגומנט אני מקבל:
קוד:

/home/yotam/Software/scripts/pytrans.py: line 2: syntax error near unexpected token `'2.0''
/home/yotam/Software/scripts/pytrans.py: line 2: `pygtk.require('2.0')'


אני מניח שמדובר בתלות שאינני מבין.

מה השיפורים בקוד החדש? מהצצה של בור עושה רושם שהוא משתמש עכשיו בתיבות טקסט של gtk. זה דווקא מאוד בלתי-רצוי מבחינתי. השימוש בהודעות מערכת הוא הרבה יותר קליל ואלגנטי, גם בגלל הפורטביליות וגם משום שהודעות מערכת נסגרות בעצמן, לא גונבות פוקוס מחלונות אחרים וכן הלאה. מעבר לכך, אני רואה שהסקריפט החדש משתמש ב-clipboard של gtk. אם פירוש הדבר הוא שצריך עכשיו לגזור או להעתיק את הטקסט לפני תרגומו, הרי שגם זו נסיגה בשימושיות. עם xclip צריך רק לסמן את הטקסט.

בכל אופן, הבעיה שלי אינה נעוצה בסקריפט כי אם בשורת ההפעלה שלו (ר' מעלה), שאמורה לעשות אינטגרציה עם xclip ועם notify-send. אני צריך להשתמש בפלט של xclip -o פעמיים, פעם כארגומנט עבור הסקריפט עצמו ופעם כארגומנט ראשון עבור notify-send (כשאת הארגומנט השני מספק הסקריפט).

אולי אפשר יהיה להכין גירסה של הסקריפט שתשלב בתוכה את הקריאות ל-xclip (כדי לשאובאת המונח\ים לתרגום) ול-notify-send (כדי לשלוח את המונח ואת הגדרתו כפלטים), כך שלא יהיה צריך לתחזק שורות הפעלה מסובכות? מבחינתי זה יהיה בדיוק מה שאני צריך.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
queencyלא בפורום כעת ת.הצטרפות: 13/11/2008 · הודעות: 2111 ·
 

הודעה פורסם: 03/03/2009 - 20:55
נושא ההודעה:

אחלה סקריפט (המקורי כמובן) עובד בלי בעחות באובונטו
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
חמוס_במשקפייםלא בפורום כעת ת.הצטרפות: 07/02/2009 · הודעות: 97 ·
 

הודעה פורסם: 04/03/2009 - 01:07
נושא ההודעה:

יש התקדמות!
חבר'ה, אתם מכריחים אותי ללמוד פייתון! Very Happy

הגירסה הנוכחית של הסקריפט שולחת את הפלט כהודעת מערכת דרך פייתון, כך שהיא לא זקוקה לחבילה libnotify-bin. המונח לתרגום מופיע ככותרת באותיות גדולות, והתרגום -בקטנות. עם זאת, יש צורך (במפתיע) בחבילה python-notify. זו גירסה די מלוכלכת (אין הפרדה בין הקריאה מבבילון ובין משלוח הודעת המערכת, וכמובן שאין מימוש של מחלקות - פעם ראשונה שאני נוגע בפייתון), אבל עובדת. אם מישהו רוצה לנקות, תבוא עליו הברכה.

מכיוון שאין כבר צורך בפקודה החיצונית notify-send, פקודת ההפעלה של הסקריפט פשוטה יותר:
קוד:
xclip -o | xargs -I $ ./pytrans.py $


והנה הסקריפט עצמו:

קוד:
#!/usr/bin/env python
# -*- coding: utf-8 -
#
# Pytrans is a frontend to babylon
# Version 1.2
# Change from 1.1: using pynotify to send a system notification instead of just printing the result. Requires pynotify

from urllib2 import urlopen
from urllib import urlencode
from sys import argv
import pynotify

base_url = "http://translation.babylon.com/post_post.php"

def strip(s):
    intag = [False]
    def chk(c):
        if intag[0]:
            intag[0] = (c != '>')
            return False
        elif c == '<':
            intag[0] = True
            return False
        return True
    return ''.join(c for c in s if chk(c))

def translate(term):
    if term[0] == '\xd7':
        params = urlencode(dict(lps=14, lpt=0, mytextarea1=term))
    elif term[0] in ['\xd9','\xd8']:
        params = urlencode(dict(lps=15, lpt=14, mytextarea1=term))
    else:
        params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))
    page = urlopen(base_url, params).read()
    return strip(page).replace("\n", '').replace("&nbsp;", "\n").replace("  ", "")

if __name__ == "__main__":
    if len(argv) == 1:
        print "What do you want to translate?"
        exit()
    term = str(" ".join(argv[1:]))
    translation = str(translate(term))
    if not pynotify.init("Basics"):
        sys.exit(1)
    n = pynotify.Notification(term, '\n' + translation)
    if not n.show():
        print "Failed to send notification"
        sys.exit(1)


לצערי, עוד לא הצלחתי לגשת לקליפבורד של x כדי לחלץ ממנו את הטקסט הנבחר דרך פייתון. אין טעם להריץ את הפקודה xclip או xsel מתוך הסקריפט בעזרת Popen או Pexpect, מפני שהיא רצה בקונטקסט פנימי ואין לה גישה ל-x שמסביבה. הדרך הנכונה לעשות זאת היא במסגרת הצימודים של פייתון ל-x, מה שנקרא python-xlib, אבל אני עדיין לא סגור על הדרך שבה עושים את זה. שוב, כל הצעה תקבל בברכה.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
queencyלא בפורום כעת ת.הצטרפות: 13/11/2008 · הודעות: 2111 ·
 

הודעה פורסם: 04/03/2009 - 10:56
נושא ההודעה:

אשמח לקבל הסבר מה זה בדיוק הפקודה הבאה
xclip -o | xargs -I $ ./pytrans.py $
זה דוגמת הרצה בווינדוס ? או דוגמת הרצה דרך X ?
אם זה דרך X איך עושים את זה ?

אצלי אני מריץ דרך טרמינל BASH רושם PYTHON ואת שם הקובץ וארגומנט
עכשיו עם הודעת המערכת הוא גם סידר לי מימין לשמאל שלא מסודר בטרמינל
לא רע אפילו מGNUV
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
חמוס_במשקפייםלא בפורום כעת ת.הצטרפות: 07/02/2009 · הודעות: 97 ·
 

הודעה פורסם: 04/03/2009 - 12:56
נושא ההודעה:

queency :
אשמח לקבל הסבר מה זה בדיוק הפקודה הבאה
xclip -o | xargs -I $ ./pytrans.py $
זה דוגמת הרצה בווינדוס ? או דוגמת הרצה דרך X ?
אם זה דרך X איך עושים את זה ?

אצלי אני מריץ דרך טרמינל BASH רושם PYTHON ואת שם הקובץ וארגומנט
עכשיו עם הודעת המערכת הוא גם סידר לי מימין לשמאל שלא מסודר בטרמינל
לא רע אפילו מGNUV


הפקודה הזו עובדת רק עם x, והיא משתמשת בתוכנה xclip. אם אתה על אובונטו צריך להוריד ולהדר את xclip מסורספורג', כי הגרסה שבאה עם אובונטו ישנה ולא תומכת ביוניקוד.

הפקודה xclip -o נותנת את הטקסט המסומן כרגע, המצוי תמיד בזכרון המטמון של x. אותו מעבירים בעזרת pipe אל הסקריפט, והסקריפט מתרגם אותו ושולח את התוצאה כהודעת מערכת. אם אתה משתמש בשורת ההפעלה שציינתי למעלה אתה לא צריך להעביר ארגומנט לתרגום; הטקסט המסומן הוא הטקסט שיתורגם.
מאוד שימושי להגדיר את השורה הזו כפעולה של צירוף מקשים ברמת מטאסיטי או קומפיז. אני משתמש ב-ctrl+D.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 09/03/2009 - 04:10
נושא ההודעה: גירסה חדשה

במזל טוב, גירסה חדשה ל-pytrans.
שינויים מהגירסה הקודמת:
1. בוטלה התלות ב-xclip ובמקומה יש להתקין את xsel. היתרון הוא בכך ש-xsel תומכת ביוניקוד גם בגרסאותיה היציבות, ולא צריך לקמפל אותה באובונטו - מספיק להתקין מהמאגרים.
2. נוספה הודעת שגיאה למקרה ששום טקסט לא נבחר.
3. חשוב מכל: קריאת הטקסט הנבחר עבור הקלט מתבצעת כעת בתוך הסקריפט. פירוש הדבר שאין עוד צורך בקלט חיצוני: מספיק להריץ את הסקריפט, והוא יוציא הודעת מערכת גרפית נאה עם תרגום הטקסט הנבחר.

הוראות שימוש:
1. התקינו את החבילות xsel, python-notify
2. צרו קובץ בשם ~/.pytrans.py והעתיקו לתוכו את הסקריפט
3. הצמידו את הפקודה ~/.pytrans.py לצירוף מקשים (כגון Ctrl+d) בהגדרות מנהל החלונות שלכם (קומפיז, מטסיטי וכו')
4. ומכאן ניתן לסמן כל מילה בעברית, אנגלית וערבית ולתרגמה בהנפת מקש.

ושוב תודה ל-bjesus על העבודה החשובה!

קוד:
#!/usr/bin/env python
# -*- coding: utf-8 -
#
# Pytrans is a frontend to babylon
# Version 1.3
# Change from 1.1: using pynotify to send a system notification instead of just printing the result. Requires pynotify
# Change from 1.2: using xsel in-line so no need for complex activation line - just run the script. also added notification when no text is selected.

from urllib2 import urlopen
from urllib import urlencode
import pynotify
import subprocess

base_url = "http://translation.babylon.com/post_post.php"

def strip(s):
    intag = [False]
    def chk(c):
        if intag[0]:
            intag[0] = (c != '>')
            return False
        elif c == '<':
            intag[0] = True
            return False
        return True
    return ''.join(c for c in s if chk(c))

def translate(term):
    if term[0] == '\xd7':
        params = urlencode(dict(lps=14, lpt=0, mytextarea1=term))
    elif term[0] in ['\xd9','\xd8']:
        params = urlencode(dict(lps=15, lpt=14, mytextarea1=term))
    else:
        params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))
    page = urlopen(base_url, params).read()
    return strip(page).replace("\n", '').replace("&nbsp;", "\n").replace("  ", "")

def get_x_selection():
    """Get X selection"""
    proc = subprocess.Popen(['xsel', ], stdout=subprocess.PIPE)
    x_selection = proc.stdout.read()
    proc.stdout.close()
    proc.wait()
    return x_selection

if __name__ == "__main__":

    if not pynotify.init("Basics"):
        sys.exit(1)

    term = str(get_x_selection())
    if len(term) < 1:
        n = pynotify.Notification('No text selected', '')
    else:
   translation = translate(term)
        n = pynotify.Notification(term, '\n' + translation)

    if not n.show():
        print "Failed to send notification"
        sys.exit(1)
[/code]
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
ZooZלא בפורום כעת ת.הצטרפות: 21/11/2004 · הודעות: 1209 ·
 

הודעה פורסם: 09/03/2009 - 12:37
נושא ההודעה:

תיקון לשגיאת הזחה:

קוד:

#!/usr/bin/env python
# -*- coding: utf-8 -
#
# Pytrans is a frontend to babylon
# Version 1.3
# Change from 1.1: using pynotify to send a system notification instead of just printing the result. Requires pynotify
# Change from 1.2: using xsel in-line so no need for complex activation line - just run the script. also added notification when no text is selected.

from urllib2 import urlopen
from urllib import urlencode
import pynotify
import subprocess

base_url = "http://translation.babylon.com/post_post.php"

def strip(s):
    intag = [False]
    def chk(c):
        if intag[0]:
            intag[0] = (c != '>')
            return False
        elif c == '<':
            intag[0] = True
            return False
        return True
    return ''.join(c for c in s if chk(c))

def translate(term):
    if term[0] == '\xd7':
        params = urlencode(dict(lps=14, lpt=0, mytextarea1=term))
    elif term[0] in ['\xd9','\xd8']:
        params = urlencode(dict(lps=15, lpt=14, mytextarea1=term))
    else:
        params = urlencode(dict(lps=0, lpt=14, mytextarea1=term))
    page = urlopen(base_url, params).read()
    return strip(page).replace("\n", '').replace("&nbsp;", "\n").replace("  ", "")

def get_x_selection():
    """Get X selection"""
    proc = subprocess.Popen(['xsel', ], stdout=subprocess.PIPE)
    x_selection = proc.stdout.read()
    proc.stdout.close()
    proc.wait()
    return x_selection

if __name__ == "__main__":

    if not pynotify.init("Basics"):
        sys.exit(1)

    term = str(get_x_selection())
    if len(term) < 1:
        n = pynotify.Notification('No text selected', '')
    else:
        translation = translate(term)
        n = pynotify.Notification(term, '\n' + translation)

    if not n.show():
        print "Failed to send notification"
        sys.exit(1)

_________________
G-math מתמטיקה לכל
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 20/03/2009 - 09:35
נושא ההודעה:

אפשר בבקשה הסבר לזה: Embarassed

ציטוט:
. הצמידו את הפקודה ~/.pytrans.py לצירוף מקשים (כגון Ctrl+d) בהגדרות מנהל החלונות שלכם (קומפיז, מטסיטי וכו')

איך עושים את זה באבונטו 8.10?
תודה
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
חמוס_במשקפייםלא בפורום כעת ת.הצטרפות: 07/02/2009 · הודעות: 97 ·
 

הודעה פורסם: 20/03/2009 - 17:39
נושא ההודעה:

Anonymous :
אפשר בבקשה הסבר לזה: Embarassed

ציטוט:
. הצמידו את הפקודה ~/.pytrans.py לצירוף מקשים (כגון Ctrl+d) בהגדרות מנהל החלונות שלכם (קומפיז, מטסיטי וכו')

איך עושים את זה באבונטו 8.10?
תודה

אם אתה משתמש בקומפיז (אפקטי תלת מימד):
1. התקן את החבילה compizconfig-setting-manager והפעל אותה דרך preferences.
2. לחץ על Commands (מימין למעלה). בשדה Command Line 0 הזן:
קוד:
~/.pytrans.py

3. עבור ללשונית Key Binding. בשדה Run Command 0 לחץ על הכפתור disabled, שנה הגדרה ל-enabled, לחץ על Grab key combination ואז על ctrl+d.
4. צא, וזה אמור לעבוד.
אם אתה משתמש במטסיטי:
1. מתפריט preferences בחר keyboard shortcuts.
2. בחר Add. בשדה name הזן Babylon translation, או מה שבא לך. בשדה command הזן
קוד:
~/.pytrans.py
ולחץ על apply.
3. לחץ על הכיתוב disabled מימין לצירוף החדש ולחץ על ctrl+d.
4. צא, וזה אמור לעבוד.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 20/03/2009 - 20:22
נושא ההודעה:

תודה חמוס, אבל זהו שאין לי קומפיז, אני על גנום נקי Smile
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
חמוס_במשקפייםלא בפורום כעת ת.הצטרפות: 07/02/2009 · הודעות: 97 ·
 

הודעה פורסם: 20/03/2009 - 20:39
נושא ההודעה:

אם כך השתמש בהוראות למטסיטי (מנהל החלונות הילידי של גנום) שהובאו בחלקה השני של ההודעה.
נ.ב. אם זה לא עובד נסה להזין כפקודה:
קוד:
python ~/.pytrans.py
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח [bjesus]
  2. אורח
  3. אורח [bjesus]
  4. bjesus
  5. משה
  6. bjesus
  7. bjesus
  8. bjesus
  9. bjesus
  10. אורח
  11. אורח [אחד שמתחיל]
  12. אורח
  13. אורח
  14. אורח
  15. אורח
  16. bjesus
  17. אורח
  18. אורח [חמוס במשקפיים]
  19. אורח
  20. אורח
  21. חמוס_במשקפיים
  22. אורח
  23. bjesus
  24. חמוס_במשקפיים
  25. bjesus
  26. חמוס_במשקפיים
  27. חמוס_במשקפיים
  28. bjesus
  29. bjesus
  30. yp
  31. bjesus
  32. bjesus
  33. חמוס_במשקפיים
  34. אורח
  35. yp
  36. חמוס_במשקפיים
  37. Ddorda
  38. iceman23
  39. אורח
  40. חמוס_במשקפיים
  41. iceman23
  42. MBD
  43. bjesus
  44. Ddorda
  45. חמוס_במשקפיים
  46. MBD
  47. Ddorda
  48. חמוס_במשקפיים
  49. אורח
  50. חמוס_במשקפיים
  51. queency
  52. חמוס_במשקפיים
  53. queency
  54. חמוס_במשקפיים
  55. אורח
  56. ZooZ
  57. אורח
  58. חמוס_במשקפיים
  59. אורח
  60. חמוס_במשקפיים
  61. אורח
  62. אורח [יוחאי]