#!/usr/bin/python # -*- coding: UTF-8 -*- import dbus import sys import time import re #constants CONTACTS_BUSNAME = 'org.freesmartphone.ogsmd' CONTACTS_OBJECTPATH = '/org/freesmartphone/GSM/Device' CONTACTS_INTERFACE = 'org.freesmartphone.GSM.SIM' SMS_BUSNAME = 'org.freesmartphone.ogsmd' SMS_OBJECTPATH = '/org/freesmartphone/GSM/Device' SMS_INTERFACE = 'org.freesmartphone.GSM.SMS' def get_number(name): global contacts for contact in contacts: if (contact[1].lower() == name.lower()): return contact[2] return "" def getDbusObject (bus, busname , objectpath , interface): dbusObject = bus.get_object(busname, objectpath) return dbus.Interface(dbusObject, dbus_interface=interface) def getContactsObject (bus, busname = CONTACTS_BUSNAME, objectpath = CONTACTS_OBJECTPATH, interface = CONTACTS_INTERFACE): return getDbusObject (bus, busname , objectpath , interface) def getSMSObject (bus, busname = SMS_BUSNAME, objectpath = SMS_OBJECTPATH, interface = SMS_INTERFACE): return getDbusObject (bus, busname , objectpath , interface) def createSMSArray(smstext): if (smstext > 160): maxlen = 140 smslen = len (smstext) startchar = 0 endchar = maxlen sms_parts = (smslen / maxlen) + 1 #in teoria il risultato dovrebbe essere integer if (sms_parts < 10): txt_sms_parts = "0" + str(sms_parts) else: txt_sms_parts = str(sms_parts) array_sms = [] for i in range(sms_parts): if (i<10): sms_part = "0" + str(i) else: sms_part = str(i) array_sms.append(smstext[startchar:endchar] + "# Part " + sms_part + " of " + txt_sms_parts + " #") startchar = startchar + maxlen endchar = endchar + maxlen else: array_sms = [smstext] return array_sms def send_sms(sms, recipient): global smsObject messages = createSMSArray(sms) for message in messages: smsObject.SendMessage(recipient, message, []) time.sleep(10) systemBus = dbus.SystemBus() smsObject = getSMSObject(systemBus) #retrieve contacts contactsObject = getContactsObject(systemBus) contacts = contactsObject.RetrievePhonebook("contacts") recipients = sys.argv[2:] for recipient in recipients: if (re.match("^[+0-9]*$", recipient)): print "Sending: " + sys.argv[1] print "To: " + recipient send_sms(sys.argv[1], recipient) else: recipient_number = get_number(recipient) if (len(recipient_number) > 0): print "Sending: " + sys.argv[1] print "To: " + recipient + "<" + str(recipient_number) + ">" send_sms(sys.argv[1], recipient) else: print "Error: '" + recipient + "' not found"