#!/usr/bin/python import feedparser import dbus import time import sys # These must be 8 chars: headerAlert = "********" newItemAlert = "NEW ITEM" waitingAlert = "Nokia " try: rssRefresh = float(sys.argv[1]) rdsRefresh = float(sys.argv[2]) url = sys.argv[3] except: print "Usage: rssrds.py [RSS refresh in sec] [RDS update in sec] [rss feed url]" sys.exit(1) system_bus = dbus.SystemBus() fmtx = system_bus.get_object('com.nokia.FMTx', '/com/nokia/fmtx/default', False) fmtx_iface = dbus.Interface(fmtx, dbus_interface='org.freedesktop.DBus.Properties') mce = system_bus.get_object('com.nokia.mce', '/com/nokia/mce/request', False) try: scrollRun = 0 lastItem = '' while 1 == 1: time.sleep(rssRefresh) rss = feedparser.parse(url) if rss['entries'][0]['title'] != lastItem: lastItem = rss['entries'][0]['title'] itemTitle = lastItem mce.req_vibrator_pattern_activate(u'PatternIncomingMessage') fmtx_iface.Set("com.nokia.FMTx.Device", "rds_ps", dbus.String(u'%s' % headerAlert, variant_level=1)) print headerAlert time.sleep(rdsRefresh) fmtx_iface.Set("com.nokia.FMTx.Device", "rds_ps", dbus.String(u'%s' % newItemAlert, variant_level=1)) print newItemAlert time.sleep(rdsRefresh) mce.req_vibrator_pattern_deactivate(u'PatternIncomingMessage') if len(itemTitle) > 8: scrollCount = 7 while scrollCount <= len(itemTitle): nowPart = itemTitle[(scrollCount - 7):scrollCount] fmtx_iface.Set("com.nokia.FMTx.Device", "rds_ps", dbus.String(u'%s' % nowPart, variant_level=1)) print nowPart time.sleep(rdsRefresh) scrollCount = scrollCount + 1 elif len(itemTitle) == 8: fmtx_iface.Set("com.nokia.FMTx.Device", "rds_ps", dbus.String(u'%s' % itemTitle, variant_level=1)) print itemTitle time.sleep(rdsRefresh) elif len(itemTitle) < 8: padding = 8-len(itemTitle); while padding > 0: itemTitle = itemTitle + " " padding = padding - 1 fmtx_iface.Set("com.nokia.FMTx.Device", "rds_ps", dbus.String(u'%s' % itemTitle, variant_level=1)) print itemTitle time.sleep(rdsRefresh) fmtx_iface.Set("com.nokia.FMTx.Device", "rds_ps", dbus.String(u'%s' % waitingAlert, variant_level=1)) print waitingAlert except: mce.req_vibrator_pattern_deactivate(u'PatternIncomingMessage') fmtx_iface.Set("com.nokia.FMTx.Device", "rds_ps", dbus.String(u"ERROR ", variant_level=1)) print "Error: Invalid feed or could not fetch URL." time.sleep(4) fmtx_iface.Set("com.nokia.FMTx.Device", "rds_ps", dbus.String(u'%s' % waitingAlert, variant_level=1)) sys.exit(2) # END