# Inspirated

May 10, 2009

## SMS Inbox statistics for Series 60 mobile phones

Filed under: Blog — krkhan @ 8:03 pm

Update: New version

Self-indulgence is what I do best. It usually results in me trying to figure out random statistics about my personal life; e.g., graphs about which hours of day I’m mostly awake on and pie-charts about my bathroom habits. Such stuff doesn’t only make me feel more important than I actually am, but also polishes my fundamental math skills which were lost while trying to calculate average number of viruses a Windows user is hit by on an yearly basis.

Texting is what I do second best. Combine the two of my most productive practices and the need emerges of having a way to produce useless statistics about my cell phone’s inbox. This is where PyS60 comes to the rescue. In my previous post I praised Python’s s** appeal. Here’s the demonstration:

• Total time spent with Python: Less than a week
• Total time spent with PyS60: Less than a minute
• Total time spent with Symbian development: Less than never

And still, even a total n00b like me could easily accomplish what he wanted to, using only the library reference manual and 70 lines of understandable code:

inboxstats.py

```1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 """Script for printing trivial statistics about inbox, such as: Number of texts Number of unique contacts who sent the texts Number of texts sent by respective contacts """   __author__ = "Kamran Riaz Khan <krkhan@inspirated.com>" __version__ = "\$Revision: 0.1 \$" __date__ = "\$Date: 2009/05/10 15:30:00 \$" __copyright__ = "Copyright (c) 2009 Kamran Riaz Khan" __license__ = "Python"   import appuifw import e32 import inbox   def exit_key_handler(): "Release app_lock." app_lock.signal()   def inbox_stats(): """Parse the inbox statistics, Returns the dictionary: sms-count : Number of texts sms-contacts: Dictionary with the pairs: contact-name : Number of texts from contact""" cur_inbox = inbox.Inbox() messages = cur_inbox.sms_messages() contacts = {}   for i in messages: address = cur_inbox.address(i) if contacts.has_key(address): contacts[address] = contacts[address] + 1 else: contacts[address] = 1   return { "sms-count" : len(messages), "sms-contacts" : contacts }   if __name__ == "__main__": content = appuifw.Text() appuifw.app.title = u'Inbox Stats' appuifw.app.body = content appuifw.app.exit_key_handler = exit_key_handler   stats = inbox_stats() statsmap = ( (u"SMS Count", unicode(stats["sms-count"])), (u"Unique Contacts", unicode(len(stats["sms-contacts"]))), )   for i in statsmap: content.style = appuifw.STYLE_BOLD content.add(i[0] + u": ") content.style = 0 content.add(i[1] + u"n")   content.add(u"n") for k, v in stats["sms-contacts"].iteritems(): content.style = appuifw.STYLE_BOLD content.add(k + u": ") content.style = 0 content.add(unicode(v) + u"n")   app_lock = e32.Ao_lock() app_lock.wait()```

Which gives me:

Tags: , , , , , , , , , , ,

1. I see some familiar names…:p

Comment by Haali — May 10, 2009 @ 8:36 pm

2. I blurred out the first names exactly because of people like you :P .

Comment by krkhan — May 10, 2009 @ 9:11 pm

3. o_O!!!

Comment by JF-17 thunder... — May 10, 2009 @ 9:16 pm

4. […] Previous version hung up while calculating the statistics. The new version dispatches a thread for the dirty work and keeps the user interface responsive with a “Processing” notification. […]

Pingback by SMS Inbox statistics for Series 60 mobiles phones v0.2 | Inspirated — May 12, 2009 @ 7:04 pm