[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:

Konsolowo:

Graficznie:

Ź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


50 komentarzy

  1. 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[...]

  2. 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 :)

  3. 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.

  4. Jeszcze do Orange poproszę ;-)

  5. No to pomyślimy, pomyślimy. Podobno z Orange się da, gorzej z Erą...

  6. Można do tego dodać książkę adresową i już robi się ciekawie. :)

  7. 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. :-)

  8. 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ć.

  9. Olać, nie Twoja wina. :-)

  10. „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ć ;).

  11. aaaa… kompresuj grafiki :o skrypcik wyborny :)

  12. Nie chciało mi się tak samo jak Tobie :).

  13. ja kompresuję grafiki :D

  14. Ostatnie 2 screeny nie ;). Ja też zawsze kompresuje, ale teraz wyjątkowo mi się nie chciało.

  15. no nie porównuj mojego ma.rio.us’a do powaznego, technicznego bloga ;]

  16. Skrypcik bardzo przydatny – dziekuje :)

  17. 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.

  18. 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!

  19. Znacie program smssend?

  20. Nie znacie.

  21. 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.

  22. @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 :-)

  23. Czym robiłeś UI? ręcznie czy jakiś magiczny program typu Glade?

  24. 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.

  25. 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

  26. Tak, to generuje pliki .glade. Musisz importować:

    import gtk
    import gtk.glade

  27. @D4rky: Qt Designera lepiej sobie odpuść, to ma stabilność na poziomie Windows z 10 wirusami na pokładzie.

  28. No, brawo, świetnie i szybko działa (v. konsolowa pod windows)

  29. [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.

  30. O! Ja nic z tego nie rozumiem. Albo i czekaj, rozumiem… jaka masz wersje Pythona? Starsza niz 2.5?

  31. Używasz pythona w wersji starszej niż 2.5, to dlatego

  32. 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ł.

  33. No jak to nie ma? Co to za distro jest?

  34. [ktos@leia ~]$ sudo yum upgrade python
    Setting up Upgrade Process
    Setting up repositories
    Reading repository metadata in from local files
    Could not find update match for python
    No Packages marked for Update/Obsoletion
    

    A odnośnie drugiego pytania:

    [ktos@leia ~]$ cat /etc/redhat-release
    CentOS release 4.5 (Final)
    
  35. 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.

  36. nie znam centa, ale może python 2.5 istnieje „obok” pythona w tej wersji, na przyklad jako python25?

  37. Mógłbyś coś takiego napisać dla bramki sms.orange.pl z uwzględniemie „kapcia”?

  38. @Ktoś:

    yum upgrade służy raczej do skoku wersji systemu.
    Wersję systemu łatwiej sprawdzić poprzez rpm -q <dyst>-release

  39. 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 :).

  40. Nie wiem jak z innymi bramkami, ale oficjalna oferuje wiele w zamian za kapcia.

  41. Dekodowanie captcha to nie na moje nerwy :).

  42. Ale to chyba tylko „pars[k]nięcie” libxml-em-2 i wyświetlenie PixBufa.

  43. Ach, sugerujesz, żeby popierało tę captchę i wyświetłało użytkownikowi, aby mógł ją „przeczytać”, tak?

  44. Tak.

  45. No to jest z pewnością do zrobienia. Tylko kiedy ja znajdę na to czas i ochotę...

  46. Ja nie mam ochoty na gimnazjum, a pomimo to odwiedzam tę kompletnie idiotyczną placówkę.

  47. 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?

  48. ale luski juz nie ma na GG

  49. 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

  50. siema krowo.............

Zostaw komentarz: