100 lines
2.6 KiB
Markdown
100 lines
2.6 KiB
Markdown
---
|
|
title: Vag klokke
|
|
author: james
|
|
type: post
|
|
date: 2012-11-13T22:02:16+00:00
|
|
url: /2012/11/vag-klokke/
|
|
dsq_thread_id:
|
|
- 926740377
|
|
categories:
|
|
- Hacks
|
|
- Norsk
|
|
|
|
---
|
|
I localised my awesome fuzzyclock.py script to Norwegian language and, uh, regional time-reading standards. Behold the glory of vagklokke.py! A little terminal in the top right of my screen now proudly proclaims:
|
|
|
|
`<br />
|
|
Datoen er 2012-11-13<br />
|
|
Klokka er fem på elleve<br />
|
|
`
|
|
|
|
It was fun to work out how to handle “x på/over halv” without too many horrible range conditions. I haven’t bothered to remove stale things like ‘tjuefem’ from the minute list, because it ain’t broke. Now you, too, can have the power of a clock that isn’t very accurate. Now with added date!
|
|
|
|
<pre class="font:droid-sans-mono lang:python decode:true " title="vagklokke.py" >#!/usr/bin/env python
|
|
# vim: set fileencoding=utf8 :
|
|
# Norwegian port of fuzzyclock
|
|
from datetime import datetime, time
|
|
from time import sleep
|
|
import sys
|
|
|
|
hours = [
|
|
'tolv',
|
|
'ett',
|
|
'to',
|
|
'tre',
|
|
'fire',
|
|
'fem',
|
|
'seks',
|
|
'sju',
|
|
'åtte',
|
|
'ni',
|
|
'ti',
|
|
'elleve',
|
|
]
|
|
|
|
minutes = [
|
|
'null',
|
|
'fem',
|
|
'ti',
|
|
'kvart',
|
|
'tjue',
|
|
'tjuefem',
|
|
'halv'
|
|
]
|
|
|
|
def fuzzyclock(time=None):
|
|
if time is None:
|
|
time = datetime.now()
|
|
hour = time.hour
|
|
minute = int(round(time.minute/5.0))
|
|
if (minute >= 4 and minute < 6) or minute >= 9:
|
|
past='på'
|
|
else:
|
|
past='over'
|
|
|
|
if minute >= 4:
|
|
hour += 1
|
|
if minute < 9:
|
|
past = '%s halv' % (past)
|
|
|
|
# Adjust the minute to be in the first half of the hour
|
|
if minute > 6:
|
|
minute = 12 - minute
|
|
|
|
# Handle på/over halv in the same way
|
|
if minute > 3 and minute < 6:
|
|
minute = 6-minute
|
|
|
|
minute = minutes[minute]
|
|
hour = hours[hour%12]
|
|
|
|
if minute=='null':
|
|
return "%s" % (hour)
|
|
if minute=='halv':
|
|
return "halv %s" % (hour)
|
|
return "%s %s %s" % (minute, past, hour)
|
|
|
|
if __name__=='__main__':
|
|
if len(sys.argv) > 1 and sys.argv[1] == '-t':
|
|
for x in xrange(0,60,5):
|
|
print "Klokka er %s" % fuzzyclock(datetime(2012,01,01,9,x,0))
|
|
else:
|
|
# By default, print the time every 10 seconds
|
|
while True:
|
|
print "Datoen er %s" % datetime.now().date()
|
|
print "Klokka er %-23s" % (fuzzyclock()),
|
|
sys.stdout.flush()
|
|
sleep(10)
|
|
# Go up a line and CR, if the terminal lets you
|
|
print "\x1b[1F\r",
|
|
</pre> |