Import
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
---
|
||||
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>
|
||||
Reference in New Issue
Block a user