[Python] Wysyłanie SMS do Plusa
Podpatrzywszy u Dandysa wersję konsolową napisaną w C++, postanowiłem napisać swoją - także dla nauki, ale w Pythonie.
Kod, zdecydowanie mniejszy, jak to zazwyczaj w Pythonie bywa, i przyjemniejszy (czytelniejszy). Spełnia tę samą rolę. Wyskrobanie tego nie trwało długo, a trwałoby zawrotnie szybko, gdybym tylko znał na pamięć potrzebne mi moduły :).
Jednak rano, po obudzeniu, wpadłem na pomysł, aby napisać także wersję z graficznym interfejsem, bo przecież to nie jest wcale tak dużo roboty przy takiej małej aplikacji. Więc wersja graficzna też jest.
Screeny:
Źródła:
Na Windowsie nie sprawdzałem wersji graficznej, aczkolwiek istnieje wysokie prawdopodobieństwo, że działa (tylko trzeba mieć GTK zainstalowane). Postaram się jednak niedługo stworzyć .exe dla okienek.
EDIT 27.08.2007r:
Do wersji na Linuxa, na prośbę Ktosia została dodana opcja wysyłania z pomocą argumentów. Uwaga! Jeśli decydujemy się na skorzystanie z tej opcji, musimy podać wszystkie argumenty! Przykład:
./sms.py 123456789 Walker Wiadomosc
Napisane 17 sierpnia 2007 o 16:05:43
W kategorii
Linux
|
Programowanie
|
Techblog
| 50 komentarzy »


procmail czyli oszczędzanie sobie pracy
Czy e-mail nie jest jednym z najważniejszych narzędzi używanych do kontaktu? U mnie tak, chociaż jego rolę bardzo przejęły komunikatory internetowe odkąd się pojawiły. Niemniej e-mail pozostaje ważny - ja bardzo często z jego użyciem wy[...]
Wygląda na to że działa, sprawdzałem wersję konsolową dla Windows, i sms poszedł, chociaż nie wiem czemu w okienku programu miałem zamienione „y” z „z” :) No i przydaloby sie jakieś na końcu umożliwienie albo wysłania następnego sms, albo wyjścia, bo w tej chwili wyrzuca tak prędko, że nie wiadomo czy właściwie wszystko było ok :)
Zamiana „y” na „z” to pewnie dlatego, że locale interpretera Pythona był ustawiony na en_us albo coś w tym rodzaju. Nie mniej jednak, pretensje do Bigfuna :). A co do wyrzucania, to też nie pomogę, bo pod Windowsem nie testowałem.
Jeszcze do Orange poproszę ;-)
No to pomyślimy, pomyślimy. Podobno z Orange się da, gorzej z Erą...
Można do tego dodać książkę adresową i już robi się ciekawie. :)
Pod Windą w sumie działa. SMS’y wysła, jednakże ko wysłaniu konsola zamyka się, ale prces nie znika. Ale to żaden problem. :-)
No nie wiem za bardzo jak Wam pomóc, ja to pisałem z myślą głownie o Linuxie, a Bigfun to jedynie dał do EXEka. Nie używam Windowsa, więc cięzko mi pomóc, aczkolwiek postaram się coś zrobić.
Olać, nie Twoja wina. :-)
„Podobno z Orange się da, gorzej z Erą...”
Z Erą to pikuś, udostępniają API, i wszystko gra. Z Orange to trochę zabawy jest, np. tokeny – jeśli chodzi o darmową. Nie wiem jak to w Pythonie, ale ja w C++ trochę musiałem z nią bawić ;).
aaaa… kompresuj grafiki :o skrypcik wyborny :)
Nie chciało mi się tak samo jak Tobie :).
ja kompresuję grafiki :D
Ostatnie 2 screeny nie ;). Ja też zawsze kompresuje, ale teraz wyjątkowo mi się nie chciało.
no nie porównuj mojego ma.rio.us’a do powaznego, technicznego bloga ;]
Skrypcik bardzo przydatny – dziekuje :)
Pokazałbym prostszą wersję, ale jak na złość, nikt jeszcze nie napisał modułu Perla do obsługi braki Plusa. Na zachodnie można jednolinijkowcem q ;, a i pewnie niedużo koztowałoby dopisanie takiego modułu na istniejącym frameworku.
A u mnie coś nie działa – choć przypuszczam, że to moja wina…
Przy próbie uruchomienia otrzymuję takie błędy:
‘/home/grzegorz/Desktop/plussms.tar.gz_FILES/plussms_gui.py’
import: unable to read X window image `’.
import: missing an image filename `sys’.
/home/grzegorz/Desktop/plussms.tar.gz_FILES/plussms_gui.py: 14: try:: not found
import: unable to read X window image `’.
import: missing an image filename `pygtk’.
/home/grzegorz/Desktop/plussms.tar.gz_FILES/plussms_gui.py: 16: Syntax error: word unexpected (expecting „)”)
‘/home/grzegorz/Desktop/plussms.tar.gz_FILES/plussms_gui.py’
(plussms_gui.py:16768): libglade-WARNING **: could not find glade file ‘plussms.glade’
Traceback (most recent call last): File „/home/grzegorz/Desktop/plussms.tar.gz_FILES/plussms_gui.py”, line 80, in <module> plussms = PlusSMS File „/home/grzegorz/Desktop/plussms.tar.gz_FILES/plussms_gui.py”, line 32, in init self.wTree = gtk.glade.XML
RuntimeError: could not create GladeXML object
EDIT: Już działa ;D Trzeb ręcznie wskazać aktualny katalog, a dopiero potem uruchomić z niego skrypt. Dzięki!
Znacie program smssend?
Nie znacie.
Niestety eix pokazuje brak strony, ale źródła są na mirrorach: http://tnij.org/8oa
Do Plusa wysyłasz tak:
smssend plus „tresc” XXX YYYZZZ podpis
Koniecznie spacja po trzech pierwszych cyfrach.
@Walker: hehe, jak tylko przeczytalem wpis Dandysa, o któ¶ym mówisz, wpadłem na dokładnie taki sam pomysł – napisanie tego w Pythonie (25 razy czytelniej i krócej :-)
Czym robiłeś UI? ręcznie czy jakiś magiczny program typu Glade?
PicasaUploader robiliśmy ręcznie, ale mwi mówił mi o Glade, więc chciałem i tego spróbować i ten programik jest właśnie za pomocą Glade.
Walker, a czy Glade nie wymaga przypadkiem libglade do dzialania? To chyba generuje plik .glade, ktory potem sie przydziela do pliku ? Jak to wyglada z poziomu Pythona?
Pytam, bo zaczynam nauke Pythona i waham sie miedzy GTK z Glade a QT z QT Designerem
Tak, to generuje pliki .glade. Musisz importować:
import gtk
import gtk.glade
@D4rky: Qt Designera lepiej sobie odpuść, to ma stabilność na poziomie Windows z 10 wirusami na pokładzie.
No, brawo, świetnie i szybko działa (v. konsolowa pod windows)
[ktos@leia ~]$ ./sms.py === Bramka SMS dla Plusa === Numer (9 cyfr): 693289137 Twoj podpis: Ktos Tresc wiadomosci: [ciach] Traceback (most recent call last): File "./sms.py", line 40, in ? print "=== %s ===" % response.read().partition("<title>")[2].partition("</title>")[0] AttributeError: 'str' object has no attribute 'partition' [ktos@leia ~]$Ale wysłało.
O! Ja nic z tego nie rozumiem. Albo i czekaj, rozumiem… jaka masz wersje Pythona? Starsza niz 2.5?
Używasz pythona w wersji starszej niż 2.5, to dlatego
No to już widzę problem – mam 2.3.4. Cholernie aktualna jak widzę ;-)
Skądinąd nowszej wersji w repo używanej dystrybucji nie ma (!).
Ale ważne, że działa. Jeszcze mógłby po parametrach przyjmować po prostu treść, autora i telefon, to bym do informowania o kłopotach z serwerem użył.
No jak to nie ma? Co to za distro jest?
A odnośnie drugiego pytania:
Ja Ciebie nie chce martwić, ale 2.3.4 wyszło w marcu 2004. A co do wysylania z podaniem argumentów to zaraz napisze.
nie znam centa, ale może python 2.5 istnieje „obok” pythona w tej wersji, na przyklad jako python25?
Mógłbyś coś takiego napisać dla bramki sms.orange.pl z uwzględniemie „kapcia”?
@Ktoś:
yum upgrade służy raczej do skoku wersji systemu.
Wersję systemu łatwiej sprawdzić poprzez rpm -q <dyst>-release
Obiecałem, że napiszę, zarówno dla ery jak i dla orange, ale jak widać nic jeszcze nie zrobiłem, przez moje wielkie lenistwo :). Mam rozumieć, że aby wysłać sms-a do orange, trzeba przebić się przez captcha? Ciężka sprawa, za dużo zachodu :).
Nie wiem jak z innymi bramkami, ale oficjalna oferuje wiele w zamian za kapcia.
Dekodowanie captcha to nie na moje nerwy :).
Ale to chyba tylko „pars[k]nięcie” libxml-em-2 i wyświetlenie PixBufa.
Ach, sugerujesz, żeby popierało tę captchę i wyświetłało użytkownikowi, aby mógł ją „przeczytać”, tak?
Tak.
No to jest z pewnością do zrobienia. Tylko kiedy ja znajdę na to czas i ochotę...
Ja nie mam ochoty na gimnazjum, a pomimo to odwiedzam tę kompletnie idiotyczną placówkę.
Tak, tylko że szkoła to Twój obowiązek, a programowanie, w tym przypadku, powinno być przyjemnością. Rozróżniasz te dwie rzeczy, prawda?
ale luski juz nie ma na GG
czesc szymon nie wiem czemu tak wczoraj bylo i nie wiem czemu miales wczoraj dola chcialam popisac z toba na gg ale nie bylo cie
siema krowo.............