SMS Inbox statistics for Series 60 mobile phones
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:
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: Code, Inbox, Inbox Stats, Nokia, Open Source, PyS60, Python, Series 60, SMS, Statistics, Symbian, Technology
I see some familiar names…:p
Comment by Haali — May 10, 2009 @ 8:36 pm
I blurred out the first names exactly because of people like you :P .
Comment by krkhan — May 10, 2009 @ 9:11 pm
o_O!!!
Comment by JF-17 thunder... — May 10, 2009 @ 9:16 pm
[…] 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