View Single Post
Posts: 58 | Thanked: 19 times | Joined on Jan 2012 @ Finland
#1014
Originally Posted by slarti View Post
EDIT 6:

One probably has to install python and python-dbus (apt-get install python python-dbus) to use this.

EDIT 3: Works as it should now. Finds even 'No alarms'

After a lot of trial and error, I managed to write this horrible mess based on thp's script to find out the next enabled alarm. It's ugly but it works:

Code:
#!/usr/bin/python
# List upcoming alarms on MeeGo 1.2 Harmattan
# Thanks to slarti on TMO for figuring out the D-Bus methods
# Thomas Perl <thp.io/about>; 2012-06-13
# Horribly mangled by slarti to find only the next alarm
# (set from clock application); 2012-06-19

import dbus
from datetime import datetime, timedelta
import time

bus = dbus.SystemBus()

time_obj = bus.get_object('com.nokia.time', '/com/nokia/time')
time_intf = dbus.Interface(time_obj, 'com.nokia.time')

cookies = time_intf.get_cookies_by_attributes({'enabled': '1'})
today = datetime.now()
tomorrow = today + timedelta(days=1)

def list_queued_alarms():
    for cookie in cookies:
        attributes = time_intf.query_attributes(cookie)
        alarmtime = attributes['alarmtime']
        if attributes['STATE'] == 'QUEUED':
            if 'recurrence' in attributes:
                days = tuple(attributes['recurrence'])
            else:
                if datetime.time(datetime.strptime(alarmtime, ("%H:%M"))) > datetime.time(datetime.now()):
                    days = time.strftime("%w")
                else:
                    days = tomorrow.strftime("%w")
            weekdays = dict([(day, time.strptime((day + " " + alarmtime),'%w %H:%M' )) for day in days])
            for day in days:
                yield ' '.join((day,time.strftime('%a %H:%M',weekdays[day]),attributes['TITLE']))


findme_list = [' '.join((time.strftime('%w %a %H:%M'),'findme'))]
L = list(list_queued_alarms()) + findme_list
L.sort()
findme_string = ' '.join((time.strftime('%w %a %H:%M'),'findme'))
findme_int = L.index(findme_string)
if len(L) == 1:
    next_alarm = 'xxNo alarms'
else:
    if findme_int == (len(L) - 1):
        next_alarm = L[0]
    else:
        next_alarm = L[findme_int + 1]

print next_alarm[2:].encode('utf-8')
I got excited about python, so I made a "script" to show the week number, too.

Code:
import time

print ' '.join(['Week',time.strftime("%W")])
Edit 4:

Add .encode('latin1') to the last line in the text file to show for example letters צהו.

Has to do with this: http://talk.maemo.org/showpost.php?p...&postcount=293

Edit 5:

Change back to UTF-8 once Billboard 1.0.7 is out.
Is there a way of localizing day names, or is the output always in english like "Mon" ,"Tue" etc. ?